|
前幾天看到了這個(gè)電子鐘的帖子 原帖:單片機(jī)+ds1302+dht11+無(wú)字庫(kù)12864帶溫濕度的電子鐘(程序+仿真)
仿真后發(fā)現(xiàn)有點(diǎn)小問(wèn)題,正想問(wèn)怎么解決,才看到帖子的作者已經(jīng)把存在問(wèn)題提出了。。。于是自己嘗試了一下@ ai58520
最終效果
211338.jpg (106.96 KB, 下載次數(shù): 51)
下載附件
2020-1-3 09:46 上傳
原有的問(wèn)題的解決,最主要的兩點(diǎn)
1.字符顯示的小錯(cuò)亂
sss.png (194.49 KB, 下載次數(shù): 56)
下載附件
2020-1-3 10:36 上傳
首先我的解決思路是:既然是顯是的問(wèn)題,那么就是有顯示的代碼錯(cuò)了,
我通過(guò)將其注釋掉的方法,想定位到出錯(cuò)的地方,結(jié)果失敗
我通過(guò)多次嘗試發(fā)現(xiàn),錯(cuò)亂的地方會(huì)根據(jù)代碼的不同而改變
最終確定是定時(shí)器中斷的問(wèn)題
- void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant
- {
- uchar i;
- [color=#9932cc]TR0=0;[/color]
- if(L<64)
- {
- CS1=1;
- CS2=0;
- Write_Byte_To_LCD(LCD_PAGE+P);
- Write_Byte_To_LCD(LCD_COL+L);
- if(L+W<64)
- {
- for(i=0;i<W;i++)
- Write_Data_To_LCD(r[i]);
- }
- else
- {
- for(i=0;i<64-L;i++)
- Write_Data_To_LCD(r[i]);
- CS1=0;
- CS2=1;
- Write_Byte_To_LCD(LCD_PAGE+P);
- Write_Byte_To_LCD(LCD_COL);
- for(i=64-L;i<W;i++)
- Write_Data_To_LCD(r[i]);
- }
- }
- else
- {
- CS1=0;
- CS2=1;
- Write_Byte_To_LCD(LCD_PAGE+P);
- Write_Byte_To_LCD(LCD_COL+L-64);
- for(i=0;i<W;i++)
- Write_Data_To_LCD(r[i]);
- }
- TR0=1;
- }//添加代碼
復(fù)制代碼 2.秒時(shí)間變換的不準(zhǔn)確
因?yàn)橹袛嘀写a放多了,恰巧lcd屏幕顯示的運(yùn)算量不小,
aaa.png (179.96 KB, 下載次數(shù): 61)
下載附件
2020-1-3 10:36 上傳
我在中斷中只留下了秒,其他轉(zhuǎn)移到main()中
按鍵部分和DTH11溫度還沒(méi)還得及研究
最后用了我喜歡的喜歡的字體,布局顯示界面
無(wú)字庫(kù)12864 ds1302_小清新版.7z
(120.89 KB, 下載次數(shù): 50)
2020-1-3 10:47 上傳
點(diǎn)擊文件名下載附件
無(wú)字庫(kù)12864+ds1302_小清新版.7z 下載積分: 黑幣 -5
Inkedssssss_LI.jpg (2.22 MB, 下載次數(shù): 49)
下載附件
2020-1-3 10:52 上傳
動(dòng)態(tài)效果可以在https://www.bilibili.com/video/av81812478/查看
|
評(píng)分
-
查看全部評(píng)分
|