12864屏幕闪烁 和 总是忙状态

2019-07-16 04:13发布

求助 高人
小弟前几天使用12864做了个测试,发现12864在显示的时候第一行的字会很清晰,第四行的内容可能是因为最后写上去的闪的很厉害,要是打开背光的话 几乎看不清最后一行的内容(1T单片机比12T单片机严重),我无奈只能在main的while循环里加延时函数,加多少也不知道怎么算,就是凭着感觉蒙,希望群里的高人给指点一下;
还有个问题就是12864我用读忙状态的方式写程序,12864总忙,也不知道为啥,后来放弃读忙改用一条指令一延时就好了,忙状态真检测不了吗?我用的是12864 并行方式数据传输,谢谢!
没加延时闪的时候.jpg
加延时之后也闪 但是基本看不出来 加延时之后也闪 但是基本看不出来
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
wubingqp
1楼-- · 2019-07-16 04:16
程序提出来看看吧
moro024
2楼-- · 2019-07-16 09:55
检测忙程序:
bit lcd12864_busy()
{
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delaynop();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
}
请帮忙看下!
moro024
3楼-- · 2019-07-16 11:33
 精彩回答 2  元偷偷看……
lovezjf234
4楼-- · 2019-07-16 11:37
给一点小建议给你,一是在LCD读写的时候,在数据发送的时候最好有个小延时,保证数据接发送结束,第二就是保证不需要持续更改的显示老是动态更改,比如说你里面的中文字,只要在改温度的地址上改变温度就行了。
moro024
5楼-- · 2019-07-16 14:18
感谢您的建议
我在发指令的时候 在每条指令的后面都加延时函数了 延时那部分放在发送指令子函数里了
根据12864的PDF 每条指令的发送时间不能小于73us 我就延时了75us,清屏函数单独写的,要求是不能低于1.6ms 我延时是2ms
版主 您的意思是让我将
uchar code dis1[] = {"客厅:        度"};
uchar code dis2[] = {"主卧:        度"};
uchar code dis3[] = {"厨房:        度"};
uchar code dis4[] = {"卫生间:      度"};
这部分数组 放在main以外 当成静态显示的内容 ,我while函数里 只写
Read_Temperature(0);
Disp_Temperature(0);  //(设定温度显示地址的代码在这个函数里,我之前忘记说了)
谢谢您的指点 我试试 然后将结果贴出来 供大家参考
moro024
6楼-- · 2019-07-16 14:46
刚查了 一下12864的文档
12864一般的指令是执行时间72us,清除指令1.6ms
上面写成73us了 更正一下 别误导了大家

一周热门 更多>