当前位置:首页 > 周记百科 > 百科中心 > 正文内容

lcd1602程序「lcd1602程序流程图描述」

更新时间:2026-07-22 18:00:26 周记网3年前 (2023-07-22)百科中心40

你这个程序写的乱七八糟的最起码要包含reg52h,要不所有51单片机的寄存器都不能用还有sfr是定义特殊寄存器的,你用sfr定义了一个DBPort给定了输出值,可是之后看你DBPort的用法又是当输入用的另外,sfr DBPort。

你的P1口是接1602的7根数据线加一个FB位,FB位接P1^7,整个lcd_bz函数的功能就是读1602忙信号FB位,若忙,则FB=1,result=1若不忙,则FB=0,result=0。

lcd1602程序「lcd1602程序流程图描述」

include ltreg51h define uchar unsigned char define uint unsigned int define lcd_ports P1 **it lcdrs=P3^5**it lcdrw=P3^3**it lcde=P3^4void delayuint z延迟子程序 uchar i,jfori=zi。

ltreg51h define uchar unsigned char define uint unsigned int uchar xpos ,ypos**it key=P2^0**it rs=P3^0**it rw=P3^1**it e=P3^2void nop void delayuint z延时 uint x,yforx。

fori=0ilt16i++showcharl++,*ptr+i ***ptr类型声明有问题吧,还有showchar两个参数之间要用逗号,要全小写,跟上面的保持一致,指针变量ptr要明确声明unsigned char *ptr,还有,如果你的字符串不够16个。

lcd1602_init lcd1602_display_str0,1,table以上是工作程序显示字符串,注意的是LCD一行最多16个字符,而且不支持中文,这是在第一列第二行输出的Hello,World,包括空格,一共16个字符如果是STC89C52的话。

=0试试在程序中P0^7并不代表是P0寄存器的第7位,而是P0寄存器的值与7的按位异或运算形如P0^7只有在加上quot**itquot关键词后才代表P0的最高位,这是C51的扩展语法在程序代码中符号quot^quot就只是按位异或运算符,这点。

你这程序中有两个程序注释掉了,也不能倒计时了给你的程序进行简化,修改如下,增加了写字符串和变量的子程序和语句你可以参考这个程序写出倒计时的程序includeltreg51h unsigned int num=123void delayunsigned。

呵呵,这个就是个地址问题,1602是自带的控制芯片决定了你要输入什么样的指令来写入读出字符这里的0x80是第一行的第一个字符的地址,0xc0也就是第二行的地址我这里有份资料你可以看一下也许对你有帮助。

标签: lcd1602程序

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。