找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2997|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

無(wú)字庫(kù)lcd12864電子鐘小問(wèn)題的解決(單片機(jī)程序+仿真)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
前幾天看到了這個(gè)電子鐘的帖子  原帖:單片機(jī)+ds1302+dht11+無(wú)字庫(kù)12864帶溫濕度的電子鐘(程序+仿真)
仿真后發(fā)現(xiàn)有點(diǎn)小問(wèn)題,正想問(wèn)怎么解決,才看到帖子的作者已經(jīng)把存在問(wèn)題提出了。。。于是自己嘗試了一下@ ai58520



最終效果


原有的問(wèn)題的解決,最主要的兩點(diǎn)
1.字符顯示的小錯(cuò)亂


首先我的解決思路是:既然是顯是的問(wèn)題,那么就是有顯示的代碼錯(cuò)了,
我通過(guò)將其注釋掉的方法,想定位到出錯(cuò)的地方,結(jié)果失敗
我通過(guò)多次嘗試發(fā)現(xiàn),錯(cuò)亂的地方會(huì)根據(jù)代碼的不同而改變
最終確定是定時(shí)器中斷的問(wèn)題
  1. void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant
  2. {  
  3.     uchar i;
  4.         [color=#9932cc]TR0=0;[/color]
  5.         if(L<64)
  6.                   {
  7.                     CS1=1;
  8.                 CS2=0;
  9.                         Write_Byte_To_LCD(LCD_PAGE+P);
  10.                         Write_Byte_To_LCD(LCD_COL+L);
  11.                         if(L+W<64)
  12.                           {
  13.                             for(i=0;i<W;i++)
  14.                                    Write_Data_To_LCD(r[i]);
  15.                           }
  16.                         else
  17.                           {
  18.                             for(i=0;i<64-L;i++)
  19.                                           Write_Data_To_LCD(r[i]);
  20.                                 CS1=0;
  21.                     CS2=1;
  22.                                 Write_Byte_To_LCD(LCD_PAGE+P);
  23.                             Write_Byte_To_LCD(LCD_COL);
  24.                                 for(i=64-L;i<W;i++)
  25.                                           Write_Data_To_LCD(r[i]);
  26.                           }
  27.                    }
  28.         else
  29.         {
  30.                     CS1=0;
  31.             CS2=1;
  32.                         Write_Byte_To_LCD(LCD_PAGE+P);
  33.                     Write_Byte_To_LCD(LCD_COL+L-64);
  34.                         for(i=0;i<W;i++)
  35.                                   Write_Data_To_LCD(r[i]);
  36.         }
  37.         TR0=1;
  38. }//添加代碼
復(fù)制代碼
2.秒時(shí)間變換的不準(zhǔn)確
因?yàn)橹袛嘀写a放多了,恰巧lcd屏幕顯示的運(yùn)算量不小,


我在中斷中只留下了秒,其他轉(zhuǎn)移到main()中

按鍵部分DTH11溫度還沒(méi)還得及研究

最后用了我喜歡的喜歡的字體,布局顯示界面
無(wú)字庫(kù)12864 ds1302_小清新版.7z (120.89 KB, 下載次數(shù): 50)



動(dòng)態(tài)效果可以在https://www.bilibili.com/video/av81812478/查看

評(píng)分

參與人數(shù) 2黑幣 +80 收起 理由
星星x + 30 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:400245 發(fā)表于 2020-4-26 16:20 | 只看該作者
很不錯(cuò)!
回復(fù)

使用道具 舉報(bào)

板凳
ID:661407 發(fā)表于 2020-6-1 20:54 來(lái)自手機(jī) | 只看該作者
你的顯示屏是12641
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表