新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的多功能數字鐘系統設計與分析

        基于單片機的多功能數字鐘系統設計與分析

        作者: 時間:2012-08-09 來源:網絡 收藏

        摘要:文章簡述了各模塊方案的論證與選擇的相關內容。文中在對本的各個模塊的方案進行論證與實際應用相比較的基礎上,最終方案選用AT89C52作為主控制來控制時鐘的準時運轉,采用獨立式按鍵控制本系統將要實現的全部功能,選用LCD液晶動態掃描來顯示時間。并對系統的硬件與實現進行,同時,對系統的軟件進行
        關鍵詞:;I/O口;鐘;模塊

        0 引言
        隨著科技的發展,電子技術也在不斷地向前飛速發展。本設計是制作一款鐘,其具有顯示年、月、日,時、分、秒、星期及鬧鐘功能,而且秒、分、時、日、月、年可自動關聯進位。秒具備清零功能,分、時、日、月、年可自動修改、手動設置等功能。它是以一塊AT89S52芯片作為主控模塊,采用DS1302作為定時來源的鐘。多功能數字鐘結構較簡單,因此便于操作使用。它具有高度的智能化和集成化,是現代人辦公、生活、學習的好幫手,具有廣闊的市場前景。同時,它具有鬧鈴和播放音樂等功能,由于這些完善的功能,它必將越來越受到社會各界人士的歡迎。

        1 系統方案的論證與選擇
        1.1 各模塊方案的論證與選擇
        1.1.1 主控模塊的論證與選擇
        方案一:采用8031芯片。8031芯片內部無ROM,需要外擴程序存儲器,由此造成電路焊接的困難,況且使用8031還需要另外購買其他的芯片,從而造成成本較高,性價比低。
        方案二:采用89C51芯片。80C51芯片內部有ROM,且片內ROM全部采用Flash ROM,它能在3V的超低壓工作,與MCS-51系列完全兼容,但是其不具備ISP在線編程技術,需把程序編寫好以后再放到編程器中燒寫,才可以進行硬件電路的調試,倘若程序編寫出現問題,調試電路就較麻煩,而且其芯片內存也只有4kB。
        方案三:采用AT89S52芯片。該芯片內部既有Flash ROM,又與MCS-51兼容,而且ISP在線編程技術適用于AT89S52芯片,這樣既降低了成本也無需反復插拔芯片,可避免損壞芯片;而且它的性能穩定,且內存達8kB。
        經過三種方案的比較,方案三主要容量較大,具有成本低的優點。因此主模塊采用AT89S52。
        1.1.2 顯示模塊的論證與選擇
        方案一:點陣顯示。是由八行八列的LED管集成在一塊電路上組成,主要用來顯示漢字,同時也能顯示數字和少量圖象,但它的焊接較麻煩,價格高,鑒于所設計的內容要求用它不切實際,所以排除此方案。
        方案二:LED數碼管靜態顯示。此方案電路容易理解且驅動的程序簡單,但需多片七段譯碼器驅動顯示,這不僅增加了成本,還占用多個I/O口,也給電路的焊接帶來一定的困難,因此不選用此方案。
        方案三:采用LED數碼管動態掃描顯示。此方案價格低廉,不僅減少了對I/O口的浪費,而且能夠同時驅動多個數碼管。但其驅動程序不容易編寫和理解。
        方案四:采用LCD液晶顯示。由ks0108驅動,能顯示大量數據、文字、圖形,顯示的位數多,字體清晰多樣、美觀,而且外部接線較簡單。
        經過四種方案的比較,本設計主要顯示字體較多,因此,最后選擇了方案四。
        1.1.3 控制按鍵的論證與選擇
        方案一:選取陣列式按鍵,減少了I/O口的使用,且掃描M×N個按鍵只需占用M+N個I/O口即可實現,但給編程帶來了一定的困難,雖然節省了很多的口線,降低了成本,但在此設計中所用的按鍵要盡量少,因此排除此方案。
        方案二:獨立式按鍵,每個按鍵實現一個功能,易于控制且編寫程序簡單,容易理解,雖然會占用一定的單片機I/O口資源,但是題目中要求使用的按鍵要盡量少。
        通過以上兩種方案比較,采用方案二。
        1.2 系統各模塊的最終方案
        經過以上對本系統各模塊的方案進行論證與實際應用相比較,本設計電路最終選用AT89C52作為主控系統來控制時鐘的準時運轉,采用獨立試按鍵控制本設計系統將要實現的全部功能,選用LCD動態掃描來顯示時間。本設計選擇最優的方案,并設計出如圖1所示的系統框圖。

        本文引用地址:http://www.104case.com/article/171057.htm

        b.JPG


        如圖1所示,系統的整個控制流程是:由單片機AT89C52的內部程序定時控制LCD使之顯示出本文所要實現的效果,當計時到整點時單片機發出一條命令去控制喇叭進行整點報時,若出現特殊狀況,比如突然斷電則單片機將會停止工作,從而會造成時間的不準確,所以加一組鍵盤便于隨時修正時間使時間能夠準時計時。此外,為了使所設計的數字鐘秒表更為準確,本系統電路又添加了時鐘芯片DS1302,此芯片計時精度非常高,一個星期誤差只有3s。添加了此芯片使本系統更具實用性。

        2 系統的硬件設計與實現
        本設計的多功能時鐘主要由四個模塊組成,其核心元件是一塊單片機AT89C52,并采用了誤差小的時鐘芯片DS1302作時鐘定時,它一星期的誤差只有為3s。
        系統主要通過單片機AT89C52對各個模塊進行實時控制,其中P3.1\P3.1\P3.2用來接獨矩陣式按鍵,此模塊用于控制電路以便于實現預期要實現的各個功能:P1和P2口用來接LCD進行動態顯示,利用AT89C52單片機直接控制LCD來實現對LCD的動態掃描顯示,其中驅動LCD用芯片KS0108;P2.0\P2.1\P2.2還接了時鐘芯片DS1302的第5、7、6腳作定時用;本系統還有一部分是鬧鈴,鬧鈴用普通蜂鳴器即可,外加三極管電阻對其聲音進行放大。
        2.1 主控制模塊電路的設計
        主控模塊電路的電路如圖2所示。

        c.JPG


        如圖2所示,本次設計的多功能數字鐘采用一塊AT89C52作為主控模塊,還用到了轉換芯片DS1302,主要是對實現定時電路進行信號交換。在單片機工作之前,我們必須給它一個電源(5V)和連接一些需要連接的地方。比如第18、19引腳之間要給它接上一個12MHz的晶振和兩個33pF的電容。第31引腳要接上電源,第9引腳要接上復位電路。第20引腳要接地,第40引腳要接上電源。DS1302芯片主要用于電路的轉換。單片機剩下的P0口、P3口、和P2口分別用于其他功能。同時要指出的是在使用P0口時要給它接上上拉電阻,這樣單片機的驅動能力就會大大增強。P3口是復用功能,可以用做數據的傳輸和地址線。特別要強調的是這里只能用高8位做數據線。P2口內部已經具備了上拉電阻,因此不用再加上拉電阻了。這些都是上電之前要做好的一些前提條件,如果忽視了哪一點,都可能使單片機不能正常工作,或者說容易燒壞單片機。
        2.2 LCD顯示模塊電路的設計
        顯示電路圖如圖3所示。從圖3中可以觀察到,單片機P1口連接LCD的D0-D7, LCD的第1、2腳分別接電源和地,然后由單片機AT89C52載入程序用以控制LCD,由此來顯示相應的文字。

        a1.jpg


        為了線路的簡便,本顯示模塊只用到一塊LCD(128×64)的液晶顯示器。另外,為了使程序更簡單,還使用了一塊液晶的控制器芯片KS0108來驅動LCD,這樣當編寫程序時就省去了編寫LCD的驅動程序,大大減少了設計的時間段,這樣既省時間又不會使電路變復雜。
        2.3 鬧鈴與按鍵模塊電路的設計
        鬧鈴電路如圖4所示。本電路比較簡單,只用普通的蜂鳴器接至AT89C52由它進行控制,從圖4可以看出單片機P3.0口接喇叭的正極,為了使蜂鳴器的聲音大些,P3.0口信號輸出端接上一個電阻和一個三極管用于放大聲音信號,蜂鳴器的負極直接接地,按鍵模塊用到了三個按鈕和三個電阻。單片機的P3.1\P3.2\P3.3與三個按鈕相連。按鈕的另一端接喇叭的 負極。其中按鈕的功能是隨時調整時間以及調
        整鬧鐘。

        a.JPG


        2.4 DS1302時鐘模塊的設計
        2.4.1 引腳功能及結構
        圖5所示為DS1302的引腳圖。其中Vcc1為后備電源,Vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1正0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數據傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節或多字節數據的傳送手段。當RST為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數據傳送,I/O引腳變為高阻態。上電運行時,在Vcc大于或等于2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數據輸入輸出端(雙向),后面有詳細說明。SCLK始終是輸入端。

        d.JPG


        2.4.2 DS1302與CPU的連接
        DS1302與CPU的連接電路如圖6所示。DS1302與CPU的連接需要三條線,即SCLK(7)、I/O(6)、RST(5)。時鐘的顯示用LCD。實際上,在調試程序時可以不加電容器,只加一個32.768kHz的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大(還可以在上面的電路中加入DS18 B20,同時顯示實時溫度)。只要占用CPU一個口線即可。LCD還可以換成LED,因為LED無法顯示較復雜的字符而本設計有用到字符顯示,因此系統選用LCD,其特點是可顯示任意字段筆劃(比如星期)而且顯示清晰。

        e.JPG


        為了初始化任何數據的傳輸,d1.jpg引腳信號應由低變高,并且應將具有地址和控制信息的8位數據(控制字節)裝入芯片的移位寄存器內,數據的讀寫可以用單字節或多字節的突發模式方式進行。所有的數據應在時鐘的下降沿變化,而在時鐘的上升沿,芯片或與之相連的設備進行輸入。

        3 系統的軟件設計
        3.1 系統軟件概述
        3.1.1 DS1302的命令字節
        命令字節的格式如圖7所示,每次數據的傳輸都是由命令字節開始的,這里的最高有效位必須是1。D6是RAM(為1)或時鐘/日歷(為0)的標識位。D1~D5定義片內寄存器的地址。最低有效位(D0)定義了寫操作(為0時)或讀操作(為1時)。命令字節的傳輸始終從最低有效位開始。

        f.JPG


        3.1.2 DS1302的控制字節
        DS1302的控制字節如圖7所示。控制字節的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入DS1302中,位6如果為0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節總是從最低位開始輸出。

        i1.jpg


        (1)數據的寫入或讀出。對芯片的所有寫入或讀出操作都是由命令字節為引導的。每次僅寫入或讀出1B數據的操作稱為單字節操作。每次對時鐘/日歷的8B或31個RAM字節進行全體寫入或讀出稱為多字節突發模式操作。包括命令字節在內,對于單字節操作,每次需要16個時鐘;對于時鐘/日歷多字節突發模式操作,每次需要72個時鐘;而對于RAM多字節突發模式操作,每次則需要多達256個時鐘。單字節傳送操作格式如圖8所示。多字節突發模式操作格式如圖9所示。

        g.JPG


        (2)時鐘/日歷寄存器數據格式及功能定義。訪問DS1302片內各寄存器數據格式如表1所示。表中x表示任意,可為0或1。
        3.2 流程圖
        3.2.1 主程序流程圖

        i.JPG


        3.2.2 子程序的設計

        j.JPG



        4 結語
        本多功能數字鐘系統電路主要是由數字集成芯片DS1302和單片機AT89C52實現的,具有年、月、曰及星期的顯示及設定功能,同時,具有時、分、秒的顯示及進位功能。可設定中斷按鍵,即設定鬧鈴按鍵和調整時間的按鍵以及其它功能的按鍵。能顯示當前的時間、星期及年、月、日,同一時刻可以設置鬧鐘。當輸入的時間與設定的時間一致時,蜂鳴器就會發出報警聲,還可以播放音樂即為鬧鐘的鈴聲。它有很強的實用性和較廣泛的推廣應用前景。

        電容器相關文章:電容器原理


        手機電池相關文章:手機電池修復


        51單片機相關文章:51單片機教程


        單片機相關文章:單片機教程


        單片機相關文章:單片機視頻教程


        單片機相關文章:單片機工作原理


        蜂鳴器相關文章:蜂鳴器原理
        上拉電阻相關文章:上拉電阻原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 阿图什市| 安仁县| 灵璧县| 延寿县| 丹寨县| 田林县| 洪洞县| 广汉市| 西贡区| 博爱县| 尼木县| 比如县| 宾川县| 太保市| 阳高县| 泸溪县| 崇阳县| 邵东县| 柳江县| 罗平县| 钦州市| 井冈山市| 许昌县| 通化县| 乾安县| 太原市| 彭阳县| 新宁县| 思茅市| 曲阜市| 新干县| 黎城县| 公安县| 柯坪县| 卫辉市| 盐边县| 平定县| 鹰潭市| 云梦县| 云龙县| 敦煌市|