- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LCD12864显示函数
#include reg52.h
#includeintrins.h //头文件
#includestdlib.h
#define uint unsigned int
#define uchar unsigned char
sbit rs=P3^5; //数据命令选择端
sbit wr=P3^6; //读写选择端
sbit psb=P3^7; //串、并方式控制
sbit en=P3^4; //使能端
uchar t[10];
uchar code a[]=; //定义的数组
uchar code b[]=一米阳光;
uchar code c[]=yimi23;
void delay(uint x) //延时函数
{ uint i,j;
for(i=0;ix;i++)
for(j=0;j115;j++); //延时x*ms
}
void write_com(uchar com) //写命令函数
{ rs=0; //选择命令端
wr=0; //选择写命令
en=0; //将数据送入P0口
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_data(uchar dat) //写数据函数
{ rs=1; //选择数据端
wr=0;
en=0;
P0=dat; //将所要发送的数据送到P0口
delay(5);
en=1;
delay(5);
en=1;
}
void lcdpos(uchar x,uchar y) //设定显示位置
{ uchar pos;
if(x==0){x=0x80;}
else if(x==1){x=0x90;}
else if(x==2){ x=0x88; }
else if(x==3){ x=0x88;}
pos=x+y;
write_com(pos); //显示地址
}
void makerand() //随机函数
{ uint ran;
ran=rand();
t[0]=ran/10000+0x30;
t[1]=ran%10000/1000+0x30;
t[2]=ran%1000/100+0x30;
t[3]=ran%100/10+0x30;
t[4]=ran%10+0x30;
ran=rand();
t[5]=ran/10000+0x30;
t[6]=ran%10000/1000+0x30;
t[7]=ran%1000/100+0x30;
t[8]=ran%100/10+0x30;
t[9]=ran%10+0x30;
}
void init() //LCD初始化函数
{ psb=1; //选择并行方式
write_com(0x30); //基本指令操作
delay(5);
write_com(0x0c); //显示打开,关光标
delay(5);
write_com(0x01); //清除LCD显示的内容
delay(5);
}
void main()
{uchar i;
delay(10); //延时
init();
lcdpos(1,0); //第二行第一个字符
i=0;
while(a[i]!=\0)
{ write_data(a[i]); //显示的字符
i++;
}
lcdpos(2,0); //第三行第一个字符
i=0;
while(b[i]!=\0)
{ write_data(b[i]); //显示的字符
i++;
}
lcdpos(3,0); //第四行第一个字符
i=0;
while(c[i]!=\0) //显示的字符
{ write_data(c[i]);
i++;
}
while(1)
{ lcdpos(0,0); //第一行第一个字符
makerand();
for(i=0;i10;i++)
{ write_data(t[i]);
}
}
}
文档评论(0)