- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
lcd1602C语言驱动
lcd1602C语言驱动
PAGE1/NUMPAGES3
lcd1602C语言驱动
/*LCD1602驱动程序*/
/*程序用法:1、按行显示:display(行号,数据指针)
2、定位显示:displayUser(行号,列号,字符/字符串)
3、动态显示:Ddisplay(行号、列号、字符/字符串)
4、闪烁显示:Fldisplay(行号、列号、字符/字符串)
*/
/*
声明代码(放工程中需要包含的自定义头文件中):
voiddelay(unsignedcharn);
voidinit();
voiddisplay(unsignedchara,unsignedchartable[]);
voidwrite_date(uchar);
voidwrite_command(uchar);
voiddisplayUser(unsignedcharhang,unsignedlie,unsignedchartable[]);
voidDdisplay(unsignedcharhang,unsignedlie,unsignedchartable[]);
voidFldisplay(unsignedcharhang,unsignedlie,unsignedchartable[]);
*/
#includereg51.h
#defineucharunsignedchar
sbitrs=P2^4;
sbitrw=P2^5;
sbite=P2^6;
ucharbusyc,line;
voiddelay(ucharn)
{
ucharx,y;
for(x=n;x0;x--)
for(y=110;y0;y--);
}
voidbusy(ucharbusyc)
{
rs=0;
rw=1;e=1;
delay(1);
busyc=P0;
e=0;
}
voidwrite_command(ucharcommand)
{
busy(busyc);
while(busyc);//判断LCD是否忙碌
rs=0;
rw=0;
e=1;
P0=command;
delay(10);
e=0;
}
voidwrite_date(uchardate)
{
busy(busyc);
while(busyc);//判断LCD是否忙碌
rs=1;
rw=0;
e=1;
P0=date;
delay(10);
e=0;}
voidinit()
{
e=0;
write_command(0x38);
delay(15);
write_command(0x0c);
write_command(0x06);
write_command(0x01);
}
voiddisplay(unsignedinta,unsignedchar*table)
{
uchari;
if(a==1)
{
write_command(0x80);//设置显示位置(第一行开头)
for(i=0;i16;i++)
write_date(*(table+i));//显示字符
}
if(a==2)
{
write_command(0xc0);//设置显示位置(第二行开头)
for(i=0;i16;i++)
write_date(*(table+i));//显示字符
}
}
voiddisplayUser(unsignedcharhang,unsignedlie,unsignedchartable[]) //定位显示,定位行号和列号
{
unsignedcharadd,i;
if(hang==1)
{add=0x80+lie-1;}
if(hang==2)
{add=0xc0+lie-1;}
write_command(add);
for(i=0;i(add%15);i++)
write_date(table[i]);//显示字符
}
voidDdisplay(unsignedcharhang,unsignedlie,unsignedchartable[]) //动态、定位显示,定位行号和列号
{
unsignedcharadd,i,m;
if(hang==1)
{add=0x80+lie-1;}
if(hang==2)
{add=0xc0+lie-1;}
write_command(add);
for(i=0;i(add%15);i++)
{
write_dat
文档评论(0)