中易网

单片机怎么从lcd1602读取数据?

答案:5  悬赏:70  
解决时间 2021-01-19 22:28
  • 提问者网友:鐵馬踏冰河
  • 2021-01-18 23:53
单片机怎么从lcd1602读取数据?
最佳答案
  • 二级知识专家网友:忘川信使
  • 2021-01-19 01:05
首先延时函数不能忘 那么你说加了延时也不行,回头看看你的代码。那么问题来了,你P0端如果全是低电平他怎么发送数据,单片机接收的都是全被拉低的数据吧,也就是还是低电平,加一个P0=0xff看看;还有一个问题就是你的代码里面e引脚多了一条(个人建议)e为底电平的时候才读高电平就不读 所以byte = P0;return byte;这两条要紧跟在在e=0后面。不然一旦e=1 P0就不是读出来的数据了。 头一次认真回答问题,也刚研究1602这个功能,帮助到你的话希望采纳下,谢谢
unsigned char Read_Lcd_Data()
{
unsigned char byte;
Busy_Test();
P0 = 0xff;       //防止低电平干扰拉低数据位
Lcd_RW = 1;
Lcd_RS = 1;
delay();        //写个延时程序 为什么加延时请看时序图
Lcd_E = 0;
byte = P0;
return byte;
Lcd_E = 1;

}
全部回答
  • 1楼网友:你可爱的野爹
  • 2021-01-19 05:14
加我QQ!采纳!我给你发好使的程序!876081368追问可以告诉我这个为什么不对吗?
  • 2楼网友:归鹤鸣
  • 2021-01-19 04:10
读取时是不是应该加延时?追问怎么延时?加在哪里?
  • 3楼网友:夜余生
  • 2021-01-19 03:51
每两条语句间加一个1us延时。再试试?追问没用的。追答你让LCD显示一个字符,能正常显示吗?追问可以,写数据没问题,就是读不了。追答你的LCD是接在P0口上的吗?追问对追答把程序第3行改为unsigned char byte = 0x00;追问没用。追答这个函数返回了什么?
你让LCD显示一个‘A’,再调用这个函数,返回了什么?追问一个奇怪的符号,用串口显示是0,怎么会这样?
  • 4楼网友:我住北渡口
  • 2021-01-19 02:27
程序语句之间要加延时的,不然Lcd_E高低跳变的太快,无法正常执行。自己写一个us级别的延时函数delayms(),代码改下试试(具体延时多少,需要参考1602的读操作时序图)
Lcd_E = 0;
Lcd_RW = 1;
Lcd_RS = 1;
delayus(100);
Lcd_E = 1;
delayus(100);
Lcd_E = 0;追问还是没用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息