數(shù)字時鐘設(shè)計_第1頁
數(shù)字時鐘設(shè)計_第2頁
數(shù)字時鐘設(shè)計_第3頁
數(shù)字時鐘設(shè)計_第4頁
數(shù)字時鐘設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 課程設(shè)計(論文)說明書題 目: 數(shù)字時鐘設(shè)計 院 (系): * 專 業(yè): * 學(xué)生姓名: * 學(xué) 號: * 指導(dǎo)教師: * 職 稱: 副教授 摘 要時鐘的工作原理很簡單,由秒,分,時三位構(gòu)成。進(jìn)行六十秒進(jìn)一分,六十分進(jìn)一小時,二十四小時為一個大的系統(tǒng)工作周期,即為一天。在進(jìn)位的問題上可考慮對本位采用反饋清零法,秒,分十位周期為六,作為進(jìn)位周期。主要問題是秒信號的選擇上,采用晶振分頻的方法得到穩(wěn)定高精度的秒脈沖信號,本系統(tǒng)的門電路全部采用低功耗,穩(wěn)定性好的TTL門電路,從而使整個系統(tǒng)的精度得到提高。校時和報時電路分別由STC89C53和DS1302定時正當(dāng)系統(tǒng)構(gòu)成,校時電路采用手動脈沖校時法,

2、報時電路的報時信號由分十位進(jìn)位信號提供。關(guān)鍵詞:TTL;STC89C32;DS1302;LCD1602 。Abstract:The working principle of the clock is very simple, by seconds, minutes, when the three pose. Carried out in a sub-60 seconds, six very into one hour, round-the-clock system for a large duty cycle, which is one day. In the binary may consi

3、der the issue of feedback on the use of zero-based method, seconds, 10 cycles at six, as a binary cycle. The main problem in choosing the second signal, using the method of crystal frequency stable high-precision pulse signal, the gate circuit, so that the accuracy of the entire system be improved.

4、Time and STC89C53, respectively, and DS1302 from time to time constitutes a legitimate system, school fast circuit law school, the newspaper of the time signals from the circuit 10 minutes into the digital signal to provide.Keywords:TTL,STC89C32,DS1302,LCD1602.引言41 設(shè)計方案41.1 數(shù)字時鐘設(shè)計分析41.2 設(shè)計要求52 硬件電路設(shè)

5、計52.1 STC單片機(jī)主控電路52.1.1 STC89C52RC單片機(jī)介紹52.1.2 STC89C5管腳說明62.1. 主系統(tǒng)電路圖92.2 DS1302時鐘源9 DS1302的結(jié)構(gòu)及工作原理102.2.2 引腳功能及結(jié)構(gòu)102.2.3 DS1302的控制字節(jié)112.2.4 數(shù)據(jù)輸入輸出(I/O)11 DS1302的寄存器11 DS1302與CPU的連接122.2.7 DS1302硬件電路122.3 LCD1602顯示電路132.3.1 管腳功能132.3.2 LCD1602的特性132.3.3 指令集132.3.4 LCD1602特性及應(yīng)用142.3.5 LCD1602操作控制142.3

6、.6 LCD1602電路142.4 蜂鳴器報時電路152.5 按鍵電路153 整體電路圖154 程序設(shè)計164.1 程序設(shè)計內(nèi)容164.2 程序流程圖164.3 C語言源程序175 結(jié)論17謝 辭18參考文獻(xiàn)19附 錄 一20附 錄 二20引言時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時鐘更好的為人民服務(wù),這就要求人們不斷設(shè)計出新型時鐘?,F(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成

7、電路計時時,譯碼代替機(jī)械式傳動,用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進(jìn)行時和分的校對,片選的靈活性好。時鐘電路在計算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機(jī)應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機(jī)內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度

8、要求很高的情況下,通常采用這種方法??紤]到精度所需和上電自動同步時間,設(shè)計中用到了專門的時鐘芯片DS1302。STC單片機(jī)上電后,不停讀取DS1302,獲得時間信息,控制LCD1602顯示出來。時間設(shè)置時,當(dāng)按下確定的時刻,單片機(jī)寫DS1302,修改DS1302的當(dāng)前時間,完成時間設(shè)置。1 設(shè)計方案1.1 數(shù)字時鐘設(shè)計分析采用STC單片機(jī)內(nèi)部定時器定時產(chǎn)生時分秒,程序簡單,電路結(jié)構(gòu)簡單,但是精度太低,同時,精度會受到環(huán)境的影響嚴(yán)重。同時,每次開機(jī)時間都會復(fù)位,就算加上外部存儲器,時時存儲當(dāng)前時間,開機(jī)后讀到的是關(guān)機(jī)時的時間,因此,不實用,電路也變得復(fù)雜了。因此,選擇專門的時鐘芯片更加合理。時間

9、顯示部分用數(shù)碼管顯示,原理簡單,價格低廉,但是PCB布線復(fù)雜,同時顯示內(nèi)容受到很大限制,用LCD1602液晶顯示,可實現(xiàn)顯示的多樣化和人性化。同時,用LCD1602液晶顯示可以提升電路系統(tǒng)的檔次。1.2 設(shè)計要求 設(shè)計一個數(shù)字時鐘,能顯示時分秒,并且能夠修改設(shè)定時間,同時具有整點報時功能。STC單片機(jī)做為系統(tǒng)核心模塊,控制LCD1602液晶顯示、讀寫時鐘源芯片、報警電路,并能支持按鍵。LCD1602液晶能夠清晰準(zhǔn)確的顯示時間,不能閃爍,亂碼和出現(xiàn)鬼影。DS1302時鐘源產(chǎn)生的時間必須得準(zhǔn)確,讀取時鐘信息時,不能出現(xiàn)亂碼,當(dāng)然也不能出現(xiàn)錯誤。電調(diào)后,時鐘源應(yīng)該能夠保持時間更新,開機(jī)后能自動顯示更

10、新的時間,并且掉電保持時間應(yīng)該盡可能的長久。整點報時要準(zhǔn)確,報時時蜂鳴器聲音要足夠響亮,并且能人工終止報時。按鍵要靈敏,按鍵消抖要做得比較好,不能出現(xiàn)連續(xù)按的情況。程序下載要穩(wěn)定,以便調(diào)試程序,同時電路布局要合理大方,元件布局要美觀。對于程序,代碼要簡短,但是容易讀懂,最好標(biāo)寫好注釋,軟件實現(xiàn)的功能要齊全,同時要模塊化,方便調(diào)試和移植。2 硬件電路設(shè)計本課題主要分個模塊:STC單片機(jī)主控電路、DS1302時鐘源、LCD1602時間顯示、蜂鳴器報時電路、按鍵電路以及串口等電路。下面將依次對各個模塊進(jìn)行說明。2.1 STC單片機(jī)主控電路 STC89C52RC單片機(jī)介紹STC89C52RC單片機(jī)是宏

11、晶科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時鐘/機(jī)器周期和6時鐘/機(jī)器周期可以任意選擇。主要特征:1. 增強(qiáng)型8051單片機(jī),6時鐘/機(jī)器周期和12時鐘/機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051.2. 工作電壓:5.5V3.3V(5V單片機(jī))/3.8V2.0V(3V單片機(jī))3. 工作頻率范圍:040MHz,相當(dāng)于普通8051的080MHz,實際工作頻率可達(dá)48MHz4. 用戶應(yīng)用程序空間為8K字節(jié)5. 片上集成512字節(jié)RAM6. 通用I/O口(32個),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉,P0口是漏極開路輸出,作為總

12、線擴(kuò)展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片8. 具有EEPROM功能9. 具有看門狗功能10. 共3個16位定時器/計數(shù)器。即定時器T0、T1、T211. 外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒12. 通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART13. 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級)14. PDIP封裝2.1.

13、2 STC89C5管腳說明圖1 STC管腳分布圖VCC(40引腳):電源電壓VSS(20引腳):接地P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負(fù)載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復(fù)用總線。此時,P0口內(nèi)部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸

14、收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流(IIL)。此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術(shù)輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表1。表1 P1.0和P1.1引腳復(fù)用功能引腳號功能特性P1.0T2(定時器/計數(shù)器2外部計數(shù)輸入),時鐘輸出P1.1T2EX(定時器/計數(shù)器2捕獲/重裝觸發(fā)和方向控制)在對Flash ROM編程和程序校驗時,P1接收低8位地址。P2端口(P2.0P2.7,21

15、28引腳):P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流(IIL)。在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX DPTR”指令)時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX R1”指令)時,P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變。在對Flash ROM編程和程序校驗期間,P2

16、也接收高位地址和一些控制信號。P3端口(P3.0P3.7,1017引腳):P3是一個帶內(nèi)部上拉電阻的8位雙向I/O端口。P3的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4個TTL輸入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流(IIL)。在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。P3口除作為一般I/O口外,還有其他一些復(fù)用功能,如表2所示:表2 P3口引腳復(fù)用功能引腳號復(fù)用功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中

17、斷1)P3.4T0(定時器0的外部輸入)P3.5T1(定時器1的外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)RST(9引腳):復(fù)位輸入。當(dāng)輸入連續(xù)兩個機(jī)器周期以上高電平時為有效,用來完成單片機(jī)單片機(jī)的復(fù)位初始化操作。看門狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。ALE/PROG(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE以晶振

18、六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址位8EH的SFR的第0位置“1”,ALE操作將無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOV指令時有效。否則,ALE將被微弱拉高。這個ALE使能標(biāo)志位(地址位8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。當(dāng)AT89C51RC從外部程序存儲器執(zhí)行外部代碼時,在每個機(jī)器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,將不被激活。/VPP(31引腳):訪問外部程序存儲器控制信號

19、。為使能從0000H到FFFFH的外部程序存儲器讀取指令,必須接GND。注意加密方式1時,將內(nèi)部鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接收12伏VPP電壓。XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。2.1. 主系統(tǒng)電路圖圖2為單片機(jī)主系統(tǒng)電路圖,圖中接口J5為串行下載口。CRY1為晶體振蕩器,與C6、C7構(gòu)成單片機(jī)的時鐘電路;R2和C3為單片機(jī)的上電復(fù)位電路;同時除了單片機(jī)電源管腳(40腳和20腳)接上電源以外,第31腳也必須接上正電源,否則單片機(jī)不能工作。因此,圖2也稱之為單片

20、機(jī)最小系統(tǒng),只有滿足圖2電路條件后,單片機(jī)才能工作。圖2主系統(tǒng)電路圖2.2 DS1302時鐘源DS1302時鐘芯片是DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實時時鐘電路、DS1302的結(jié)構(gòu)、工作原理及其在實時顯示時間中的應(yīng)用。它可以對年、月、日、周、日、時、分、秒進(jìn)行計時,且具有閏年補(bǔ)償?shù)榷喾N功能。 DS1302的結(jié)構(gòu)及工作原理DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RA

21、M數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳, 同時提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。 引腳功能及結(jié)構(gòu) DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把

22、RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。SCLK為時鐘輸入端。圖3為DS1302的引腳功能圖。圖3 DS1302的引腳圖 DS1302的控制字節(jié)DS

23、1302 的控制字如圖4所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。圖4 DS1302控制字節(jié)圖 數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。圖5、圖6分別為DS1302的讀寫控

24、制時序圖。圖5 DS1302讀時序圖6 DS1302寫時序 DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個

25、字節(jié),命令控制字為FEH(寫)、FFH(讀)。 DS1302與CPU的連接實際上,在調(diào)試程序時可以不加電容器,只加一個32.768kHz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即可。 LCD還可以換成LED,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產(chǎn)的10位多功能8段液晶顯示模塊LCM101,內(nèi)含看門狗(WDT)/時鐘發(fā)生器及兩種頻率的蜂鳴器驅(qū)動電路,并有內(nèi)置顯示RAM,可顯示任意字段筆劃,具有34線串行接口,可與任何單片機(jī)、IC接口。功耗低,顯示狀態(tài)時電流為2A (典型值),省電模式時小于1A,

26、工作電壓為2.4V3.3V,顯示清晰。 DS1302硬件電路圖7為DS1302工作電路圖,CRY2為32.768K的晶體振蕩器。國產(chǎn)DS1302的SCLK、I/O、RST管腳與單片機(jī)I/O相連接時,必須加上上拉電阻才可以,否則數(shù)據(jù)讀取不穩(wěn)定,接法如圖8所示。 圖7DS1302電 圖8DS1302I/O上拉電阻2.3 LCD1602顯示電路LCD1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如

27、此所以它不能很好地顯示圖形。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊。 管腳功能 標(biāo)準(zhǔn)16教接口,其中: 第1腳:VSS為電源地; 第2腳:VCC接5V電源正極;第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器;第5腳:RW為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作;第6腳:E(或EN)端為使能(enable)端;第714腳:D0D7為8位雙向數(shù)據(jù)端;

28、第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。 LCD1602的特性+3.3V電壓,對比度可調(diào);內(nèi)含復(fù)位電路;提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能;有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM;內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM;8個可由用戶自定義的5X7的字符發(fā)生器CGRAM。2.3.3 指令集 1602通過D0D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設(shè)置: 0x38 設(shè)置16×2顯示,5×7點陣,8位數(shù)據(jù)接口; 顯示開關(guān)及光標(biāo)設(shè)置:1DCB D顯示(1有效)、C光標(biāo)顯示(1有效)、B光標(biāo)閃爍(1有效);0000 01

29、NS N=1(讀或?qū)懸粋€字符后地址指針加1 &光標(biāo)加1),N=0(讀或?qū)懸粋€字符后地址指針減1 &光標(biāo)減1),S=1 且 N=1 (當(dāng)寫一個字符后,整屏顯示左移)s=0 當(dāng)寫一個字符后,整屏顯示不移動;數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)。 LCD1602特性及應(yīng)用微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。在日常生活中,我們對液晶顯示器并不陌生,液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品例如在電飯煲、電磁爐、功放、攝像機(jī)中都可以看到,顯示的主要是數(shù)

30、字、專用符號和圖形。在單片機(jī)的人機(jī)交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單,在前面章節(jié)已經(jīng)介紹過,在此不作介紹,本章重點介紹字符型液晶顯示器的應(yīng)用。 LCD1602操作控制1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。因為1602識別的是ASCII

31、碼,試驗可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如A。  圖9 1602的16進(jìn)制ASCII碼表地址2.3.6 LCD1602電路圖10是LCD1602模塊的電路圖,J100是接口,LCD數(shù)據(jù)位為P00至P07,控制腳分別為RS、RW、LCDEN。圖10 LCD1602電路2.4 蜂鳴器報時電路 蜂鳴器報時電路如圖11,由一個8050NPN型三極管和一個蜂鳴器組成。三極管放大電流,驅(qū)動蜂鳴器。蜂鳴器為有源蜂鳴器,上電后由其內(nèi)部震蕩器產(chǎn)生一定頻率,發(fā)出聲音。 圖11 蜂鳴器電路 圖12獨立按鍵2.5 按鍵電路電路有四個獨立按鍵:加、減、確定、退

32、出,用來調(diào)節(jié)時間和日期,電路如圖12所示。3 整體電路圖整體電路圖如圖13,U1為STC單片機(jī),J5為單片機(jī)下載口,S1為按鍵開關(guān)。此系統(tǒng)用5V供電,工作電流不超過10mA.圖13數(shù)字時鐘整體電路圖4 程序設(shè)計4.1 程序設(shè)計內(nèi)容程序分三個模塊,分別是:主程序模塊、LCD1026液晶顯示模塊、DS1302時鐘源模塊。結(jié)束按鍵檢測寫LCD1602讀取DS1302啟動、初始化4.2 程序流程圖寫DS1302修改時間圖14程序流程圖程序開始時,設(shè)置液晶LCD1602顯示模式,進(jìn)入主循環(huán);讀取DS1302,獲得時間,立即由LCD162顯示出來,同時檢測按鍵,完成一個周期。如果有按鍵按下,則進(jìn)入時間修改

33、程序,若要修改時間,設(shè)置好時間后,按確認(rèn)鍵即可將新的時間寫入DS1302,完成修改時間。4.3 C語言源程序C語言源程序主要分三個模塊,分別如下:1.#include<reg52.h>:主函數(shù)模塊; 2.#include "lcd1602.h":LCD1602顯示模塊;3.#include "ds1302.h":DS1302時鐘源模塊。詳細(xì)程序見附錄二5 結(jié)論完成了數(shù)字時鐘的設(shè)計,學(xué)會了使用DS1302芯片,國產(chǎn)的DS1302時鐘芯片不管用單片機(jī)的哪個IO口,都需要加上上拉電阻,否則讀到的數(shù)據(jù)是一連串的“85”。同時,學(xué)會了查找資料,整個過程

34、使用了Altium Designer軟件進(jìn)行畫圖和仿真,并用KeilC單片機(jī)知識進(jìn)行編程以完成設(shè)計要求的功能。我已經(jīng)盡了自己的最大努力,也從中學(xué)到了很多知識,獲益匪淺。謝 辭感謝學(xué)院給我們提供這樣的實踐動手機(jī)會,并通過課程設(shè)計使我們能夠有機(jī)會將書本上學(xué)到的知識運用到的實際中去。感謝李老師監(jiān)督我及時完成了本次課程設(shè)計,在此特別感謝李老師和給予我?guī)椭耐瑢W(xué)。參考文獻(xiàn)1 劉文濤. MCS-51單片機(jī)培訓(xùn)教程(C51)版.電子工業(yè)出版社, 2005.8.2 王宜懷.單片機(jī)原理及其嵌入式應(yīng)用教程.北京希望電子出版社, 2002.8.3 邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法.清華大學(xué)出版社, 2006.

35、3.4 白駒珩,雷曉平編.單片計算機(jī)及其應(yīng)用.電子科技大學(xué)出版社,1994.55 Jean J.Labrosse 著. 嵌入式系統(tǒng)構(gòu)件.袁勤勇等譯.北京:機(jī)械工業(yè)出版社, 2002.6 譚浩強(qiáng).C程序設(shè)計程序設(shè)計程序設(shè)計程序設(shè)計7 賈振國:DS18B20 及高精度溫度測量的實現(xiàn),電子技術(shù)應(yīng)用,2000.1,P9-P148 偉 正:單線數(shù)字溫度傳感器的原理與應(yīng)用,電子技術(shù)應(yīng)用,2000.6,P23-P319 周月霞、孫傳友:DS18B20 硬件連接及軟件編程,傳感器世界,2001.8,P13-P2110 8051系列單片機(jī)C程序設(shè)計完全手冊,人民郵電出版社,1996.3,P25-P29附 錄 一

36、 PCB版圖附 錄 二C語言源程序:頂層模塊:#include<reg52.h> /包含單片機(jī)寄存器的頭文件#include "lcd1602.h"#include "ds1302.h"/*以下是DS1302芯片的操作程序*/unsigned char code digit10="0123456789" /定義字符數(shù)組顯示數(shù)字char second,minute,hour,day,month,year;bit flag=0; /*sbit set =P02;sbit cancel=P01;sbit left =P03;sb

37、it right =P00;*/sbit left =P34;sbit right =P35;sbit set =P36;sbit cancel=P37;sbit sound =P20;/*函數(shù)功能:延時若干微秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i; for(i=0;i<n;i+) ;void dlay()unsigned char i,j,k;for(i=0;i<30;i+)for(j=0;j<i;j+)for(k=0;k<j;k+);/*函數(shù)功能:顯示秒入口參數(shù):x*/ void Displa

38、ySecond(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /WriteAddress(0x49); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(digiti); /將百位數(shù)字的字符常量寫入LCDWriteData(digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件一點反應(yīng)時間 /*函數(shù)功能:顯示分鐘入口參數(shù):x*/ void DisplayMinute(unsigned char x) unsigned char i,j;

39、/j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /WriteAddress(0x46); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(digiti); /將百位數(shù)字的字符常量寫入LCDWriteData(digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件一點反應(yīng)時間 /*函數(shù)功能:顯示小時入口參數(shù):x*/ void DisplayHour(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /W

40、riteAddress(0x43); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(digiti); /將百位數(shù)字的字符常量寫入LCDWriteData(digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件一點反應(yīng)時間 /*函數(shù)功能:顯示日入口參數(shù):x*/ void DisplayDay(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /WriteAddress(0x0c); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(di

41、giti); /將百位數(shù)字的字符常量寫入LCDWriteData(digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件一點反應(yīng)時間 /day_temp=j; /*函數(shù)功能:顯示月入口參數(shù):x*/ void DisplayMonth(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /WriteAddress(0x09); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(digiti); /將百位數(shù)字的字符常量寫入LCDWriteData(

42、digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件一點反應(yīng)時間 /*函數(shù)功能:顯示年入口參數(shù):x*/ void DisplayYear(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /WriteAddress(0x06); /寫顯示地址,將在第行第列開始顯示W(wǎng)riteData(digiti); /將百位數(shù)字的字符常量寫入LCDWriteData(digitj); /將十位數(shù)字的字符常量寫入LCDdelaynms(50); /延時ms給硬件

43、一點反應(yīng)時間 /時間設(shè)定/ 時間設(shè)定/void TimeSet()/char S_year,char S_month,char S_day,char S_hour,char S_minute,char S_secondunsigned char h;h=1;while(flag)if(h=1)WriteAddress(0x02);print("_");dlay();WriteAddress(0x02);DisplayHour(hour); /顯示小時dlay();if(!left) delaynms(10); while(!left);hour-;if(hour<0)

44、hour=23;if(!right) delaynms(10); while(!right);hour+;if(hour>23)hour=0;if(!set) delaynms(10); while(!set);h+;/if(h>7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=2)WriteAddress(0x05);print("_");dlay();WriteAddress(0x05);DisplayMinute(minute); /顯示分dlay();if(!left) del

45、aynms(10); while(!left);minute-;if(minute<0)minute=59;if(!right) delaynms(10); while(!right);minute+;if(minute>59)minute=0;if(!set) delaynms(10); while(!set);h+;/if(h>7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=3)WriteAddress(0x08);print("_");dlay();WriteAddres

46、s(0x08);DisplaySecond(second); /顯示秒dlay();if(!left) delaynms(10); while(!left);second-;if(second<0)second=59;if(!right) delaynms(10); while(!right);second+;if(second>59)second=0;if(!set) delaynms(10); while(!set);h+;/if(h>7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=4)WriteAddress(0x42);print("_");dlay();WriteAddress(0x42);DisplayYear(year); /顯示年dlay();if(!left) delaynms(10); while(!left);year-;if(year<0)year=99;if(!right) delaynms(10); while(!right);year+;if(year>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論