標(biāo)題: 基于LCD 1602的電子多功能萬年歷 [打印本頁]

作者: 打死大四多    時間: 2017-4-9 13:43
標(biāo)題: 基于LCD 1602的電子多功能萬年歷
花了10天連寫帶調(diào)試到?jīng)]有BUG,一個51的單片機多功能電子鐘,不僅具有萬年歷的功能,還具有很多有用的其他功能,注意我用的是定時器加軟件補償,但是加了斷電后開機傻瓜調(diào)節(jié)時間法,沒有用1302但是軟件補償后調(diào)試日誤差可以小于1秒。
該電子中具有以下的功能:
1.萬年歷,自動換算大小月自動算星期,任何時候都不會出現(xiàn)超出天數(shù)范圍的情況
2.溫度顯示,精確到小數(shù)點后1位
3.電子鬧鐘,可以設(shè)置打開或關(guān)閉,光標(biāo)調(diào)節(jié)時間,默認(rèn)為OFF關(guān)閉
4.兩種調(diào)時方法,一種是斷電后的傻瓜調(diào)節(jié),一次只調(diào)一個參數(shù),一種是主界面后的移動光標(biāo)調(diào)節(jié)。
5.溫度報警,可以設(shè)置 單開上限或者下限或者上下限或者關(guān)閉,溫度調(diào)節(jié)自己設(shè)置為0-50度,可改范圍,默認(rèn)為NO-NO關(guān)閉。
6.秒表 可以選擇秒表打開,暫停,計次,清零,秒表范圍9999秒,精度到10MS,自己對著IPHONE優(yōu)化調(diào)試后誤差在0.00-0.02之間,做一般的秒表沒問題。
7.所有模塊的開啟或者關(guān)閉都沒有沖突與BUG,比如秒表與走時可以同時打開沒有沖突等,所以設(shè)置帶記憶功能
8.按鍵手感優(yōu)化調(diào)試后,也沒有BUG,不會出錯速度也比較舒服。
需要的硬件很簡單,只要一個有源(無源亦可)蜂鳴器+單片機最小系統(tǒng)+18B20溫度傳感器+4個按鍵就好了,這樣可以滿足多功能的電子鐘還是很劃算的,為什么不用1302是因為我在軟件補償后發(fā)現(xiàn)日誤差可以達(dá)到一個很高的精度,而實測在室內(nèi)溫度飄移的影響幾乎沒有發(fā)現(xiàn),只用了一個定時器0就可以滿足所有模塊的計時要求而且不會沖突,精度日誤差補償后可以小于1秒,如果用1302還得買單獨的電池焊接,懶得弄了。
本人是新手,學(xué)了剛好一個月,由于只花了幾天時間匆匆寫的肯定還有很多不夠精簡的地方,代碼不完善之處還請大神輕噴,代碼寫的比較長但是都是經(jīng)過測試后沒有什么發(fā)現(xiàn)問題的,歡迎大家在自己板子上調(diào)試一下,發(fā)出來僅供大家互相學(xué)習(xí)。

說明一下 ,K1鍵為選擇位減,K2加鍵,K3減鍵,K4確定鍵,所有參數(shù)調(diào)節(jié)到最大或者最小后都會自動復(fù)位最小或最大,方便調(diào)節(jié),但是比如K3鍵還有清零等其他功能大家可以自己摸索出來。



作者: admin    時間: 2017-4-9 14:52
只學(xué)一個月就達(dá)到這這樣的程度,也是很難得的了,樓主能分享一下源碼和原理圖嗎?傳個附件
作者: lxa0    時間: 2017-4-9 22:00
支持不用1302做數(shù)字表!
作者: le51    時間: 2017-4-9 22:19
求源代碼
作者: 打死大四多    時間: 2017-4-15 12:43
本帖最后由 打死大四多 于 2017-4-17 20:46 編輯

抱歉來晚了,第一次玩論壇,前幾天新加了I/O口控制背光自動熄滅,還有一些小細(xì)節(jié)就不說了。
自己焊了硬件調(diào)試了一周了,沒有發(fā)現(xiàn)有BUG,誤差也很小,秒表的精度也非常高
源代碼在下面,寫的程序邏輯較多,大神見笑了


多功能電子萬年歷.zip (5.94 KB, 下載次數(shù): 79)

這個是沒帶注釋版本的,詳細(xì)帶注釋版和原理圖+仿真的在19樓

作者: 打死大四多    時間: 2017-4-15 12:52
本帖最后由 打死大四多 于 2017-4-15 17:05 編輯

代碼在附件里,還有注意事項
作者: 打死大四多    時間: 2017-4-15 12:54
admin 發(fā)表于 2017-4-9 14:52
只學(xué)一個月就達(dá)到這這樣的程度,也是很難得的了,樓主能分享一下源碼和原理圖嗎?傳個附件

源代碼發(fā)了,在樓下好像還在審核,不知道為什么沒有顯示
原理圖我沒有畫,因為用到的東西太少了,我是直接焊接的
作者: 打死大四多    時間: 2017-4-15 12:55
le51 發(fā)表于 2017-4-9 22:19
求源代碼

在樓下面,正在審核不知道為什么不顯示
作者: lingle96    時間: 2017-4-15 20:30
我也是新人,學(xué)一個月能獨立寫出萬年歷已經(jīng)很厲害了
作者: sum    時間: 2017-4-16 09:49
能不能看一下原理圖?
作者: sum    時間: 2017-4-16 09:49
能不能看一下原理圖?
作者: sum    時間: 2017-4-16 09:55
樓主,你的程序里
sbit DQ=P3^6;
sbit bg=P2^7;
DQ,bg分別是什么意思?
作者: 打死大四多    時間: 2017-4-16 15:23
sum 發(fā)表于 2017-4-16 09:55
樓主,你的程序里
sbit DQ=P3^6;
sbit bg=P2^7;

原理圖我沒有畫,我直接焊接的,過兩天畫一個,很簡單的可以說沒有什么硬件,最近在弄霍爾傳感器測速。
bg是指背光變量,你把1602的背光k極連到bg就行了,自動控制背光,這樣省電很多
DQ是18b20的數(shù)據(jù)傳輸位


作者: lids    時間: 2017-4-17 12:13
本帖最后由 lids 于 2017-4-17 14:17 編輯

仿真了一下,不能實時顯示溫度值,一直顯示15.9℃,用手摸18B20溫度值不變,其他都正常
作者: lids    時間: 2017-4-17 14:47
本帖最后由 lids 于 2017-4-17 15:58 編輯

static u16 i;               
    TH0=(65535-923)/256;        
        TL0=(65535-923)%256;        
        i++;
        beiguangpd();
        if(mbflag==1)
        {
         mbw++;
         if(mbw==10)
         {
         mbw=0;
         MB1++;
         }
        }
        if(i==1000)
        {
    k++;
        if(beiguang<60)
        beiguang++;
         i=0;buchang++;        
         temper=ReadTemperature();
    }        
        if(k==60)
        {
          k=0;
      e++;
        }
        if(buchang==5000)                                     //精度補償部分,不一定適合你的晶振
        {
     buchang=0;k+=1;
         }
         if(e==60)
    {
           e=0;
           d++;
         }
         if(d==24)
         {
           d=0;
樓主用的是11.0592MHz的晶振嗎?923*1.085us=1001us,我的實驗板上是11.0592MHz的晶振,實際測試時間太慢了,10分鐘過后就慢了2分鐘。
一句注釋都沒有,過段時間可能樓主自己都不知道那些代碼的意思了

作者: xjh272935444    時間: 2017-4-17 14:56
哪位大神幫幫忙啊,紅外遙控的畢設(shè)啊�。。。�
作者: 打死大四多    時間: 2017-4-17 17:11
本帖最后由 打死大四多 于 2017-4-17 17:20 編輯
lids 發(fā)表于 2017-4-17 14:47
static u16 i;               
    TH0=(65535-923)/256;        
        TL0=(65535-923)%256;        ...

不好意思,仿真沒調(diào)試過是因為我是直接KEIL做的,proteus仿真里的18B20溫度時序圖要求比較嚴(yán)格,有很多情況是實物沒問題仿真卻出問題了,你可以在實物上試試肯定沒問題的,想要仿真沒問題就把18B20里的時序圖程序重新嚴(yán)格寫一下就好了,我用的是12M晶振的不是11.05,如果你用11.05的話就改一下中斷里的923,通過KEIL算一下每一步的時間然后實際調(diào)試一下再改buchang就好了,肯定是沒問題的,程序沒注釋確實是疏忽了,最近在玩霍爾測速比較忙,我再搞個注釋版和原理圖給大家吧。
作者: lids    時間: 2017-4-17 17:20
打死大四多 發(fā)表于 2017-4-17 17:11
仿真沒調(diào)試過是因為我是直接KEIL做的,仿真18B20溫度時序圖可能比較嚴(yán)格,但是實物絕對沒有問題,我用的 ...

期待樓主的詳細(xì)注釋版
作者: 打死大四多    時間: 2017-4-17 19:46
花了兩個小時搞了一下注釋
下面是詳細(xì)注釋版+原理圖+仿真
  大家要注意你的晶振,因為我手頭沒有11.05M的晶振只有12M的所以11.05M晶振的朋友請根據(jù)KEIL仿真或者實物測速修改中斷里的923這個值就可以了,剩下的注意事項我都在程序里寫了,感謝支持!
源程序(注釋版)帶仿真原理圖.zip (441.8 KB, 下載次數(shù): 104)


作者: 打死大四多    時間: 2017-4-17 19:48
lids 發(fā)表于 2017-4-17 17:20
期待樓主的詳細(xì)注釋版

已經(jīng)發(fā)了,帶原理圖帶仿真帶注釋程序 審核中。。。
作者: fanguohao    時間: 2017-4-19 13:49
樓主厲害,我最近也在做  感謝樓主的程序
作者: 詩和遠(yuǎn)方    時間: 2017-7-11 09:47
點贊,點贊,點贊!
作者: 鳥蛤    時間: 2017-10-29 11:30
樓主我的1602是51板子,接口默認(rèn)是P0  但是我換了你的1602接口接上去沒反應(yīng)
作者: xff5201314    時間: 2020-2-17 21:37
非常好  感謝樓主
作者: joyb    時間: 2023-5-19 15:00
獨立按鍵消抖如何處理




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1