没正确利用 |
1秒不准,是因为你的延时函数延时太长,没正在利用定时器 |
修改后的显示 |
IMG_20201113_205340.jpg (2.29 MB, 下载次数: 94)
在初始化1602里加入 RW=0; ///////////新加入的两条 EN=0; ////////////// 新加入的两条 即可显示两行 去掉就只显示一行了 |
#include <REGX51.H> #include <string.h> #define uint unsigned int #define uchar unsigned char sbit RS=P1^0; sbit RW=P1^1; sbit EN=P1^2; #define Port P2 unsigned char i,q=0,w=0,e=0,x=0,c=41; unsigned char xuehao1[]="LGL1605230139 "; unsigned char xuehao2[]="ZCY1605230140 "; unsigned char xuehao3[]="SGJ1605230126 "; unsigned char xuehao4[]=" "; unsigned char code num[]="0123456789"; uchar flag=0; void delay(int n) |
对C语言不熟悉,num是强制类型转换的?把 disp_LCD 函数改成下面看看效果 void disp_LCD(uint c) { LCD1602_write_cmd(0xC0); LCD1602_write_Data(0X30+c/10); LCD1602_write_cmd(0XC1); LCD1602_write_Data(0X30+c%10); } |
是程序的问题,你可能有个时候把输入数据中的“”RS”和“RW”同时改成了0,也就是输入数据变成了输入指令 |
检查液晶显示器引脚是否存在接触问题,或拿别处试看是否正常 程序也一样在别的板子上试看 把第一行改发第二行察看液晶是否有问题 |
xianfajushi 发表于 2019-6-18 09:16 这个是倒计时完毕就让它停止了啊 |
yzwzfyz 发表于 2019-6-18 08:13 我试了一下把前面的信息显示关掉,让它在第二行只显示一个1,可是开发板上的第二行还是没反应,背光都不亮.这是怎么回事啊,在proteus里头都是好着的啊 |
void main() { timer0(); LCD1602_init(); while(1) { disp_XXLCD(); disp_LCD(c); if(c==0) while(1); //**************到此死循环了 } } |
先设法证明第二行全部是OK的。例如:显示一行完整的信息。然后再找自己的原因。 |