單片機課程設計說明書,秒表,ds1302_第1頁
單片機課程設計說明書,秒表,ds1302_第2頁
單片機課程設計說明書,秒表,ds1302_第3頁
單片機課程設計說明書,秒表,ds1302_第4頁
單片機課程設計說明書,秒表,ds1302_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、唐 山 學 院單片微機原理與應用課 程 設 計 題 目 數字電子鐘 系 (部) 機電工程系 班 級 11測控2班 姓 名 孟凡濤 學 號 4110107216 指導教師 田紅霞 王墨琦 2014 年 2 月 24 日至 3 月 7 日 共 2 周2014年 3 月 7 日目 錄1 引 言12 核心芯片簡介22.1 DS1302簡介22.1.1 DS1302引腳功能與內部結構22.1.2 DS1302的控制字32.1.3 DS1302的復位引腳32.1.4 DS1302的數據輸入輸出42.1.5 DS1302的寄存器42.2 AT89C52簡介42.2.1 AT89C52芯片的引腳及特點52.2

2、.2 AT89S51的主要性能參數:72.3 74LS245簡介83 方案設計與論證94 軟硬件設計104.1 硬件電路設計104.1.1 單片機AT89C52外圍電路設計104.1.2 DS1302與單片機的接口設計114.1.3 顯示設計114.2 軟件實現124.2.1 程序流程124.2.2 DS1302流程125 結 論146 參 考 文 獻157 附 錄16附錄一:設計電路仿真圖:16附錄二:源程序16附錄三:DS1302.H25 課程設計說明書 1 引 言從古代的滴漏更鼓到近代的機械鐘,從電子表到目前的數字時鐘,為了準確的測量和記錄時間,人們一直在努力改進著計時工具。鐘表的數字化

3、,大力推動了計時的精確性和可靠性。在單片機構成的裝置中,實時時鐘是必不可少的部件。目前常用的實時時鐘,很多采用單片機的中斷服務來實現,這種方式一方面需要采用計數器,占用硬件資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且某些測控系統(tǒng)可能不允許;有的則使用并行接口的時鐘芯片,如MC146818、DS12887等,它們雖然能滿足單片機系統(tǒng)對實時時鐘的要求,但是這些芯片與單片機接口復雜,占用地址、數據總線多,芯片體積大,占用空間多,給其它設計帶來諸多不便。本設計選取串行接口時鐘芯片DS1302與單片機同步通信構成數字時鐘電路。其簡單的三線接口能為單片機節(jié)省大量資源,DS1302的后背電

4、源及對后背電源進行涓細電流充電的能力保證電路斷電后仍能保存時間和數據信息等。這些優(yōu)點解決了目前常用的實時時鐘所無法解決的問題。該時鐘電路強大的功能和優(yōu)越的性能,在很多領域的應用中,尤其是某些自動化控制、長時間無人看守的測控系統(tǒng)等對時鐘精確性和可靠性有較高要求的場合,具有很高的使用價值。2 核心芯片簡介2.1 DS1302簡介DS13021是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘芯片,它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償功能,工作電壓寬達2.55.5V。時鐘可工作在24小時格式或12小時(AM/PM)格式。 DS1302與單片機的接口使用同步串行

5、通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€字節(jié)或突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數據。DS1302內部有一個31×8的用于臨時性存放數據的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。2.1.1 DS1302引腳功能與內部結構 DS1302的引腳功能如表1所示,外形及內部結構如圖1所示:表1 DS1302引腳功能表引腳號引腳名稱功能1VCC2主電源2、3X1、X2振蕩源,外接32768Hz晶振4GND地線5RST復位/片選線6I/O串行數據輸入/輸出端(雙向)7SCL

6、K串行時鐘輸入端8VCC1后備電源 圖1 DS1302管腳圖及內部結構圖2.1.2 DS1302的控制字DS1302的控制字節(jié)如圖2所示: 7 6 5 4 3 2 1 01RAMA4A3A2A1A0RD W圖2 DS1302控制字節(jié)的含義控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數據寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數據,為1表示存取RAM數據;位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。2.1.3 DS1302的復位引腳通過把RST從低電平變成高電平啟動一次數據傳輸過程。 輸

7、入有兩種功能:首先, 接通控制邏輯,允許地址命令序列送入移位寄存器;其次, 提供了終止單字節(jié)或多字節(jié)數據的傳送手段。當 為高電平時,所有的數據傳送被初始化,允許對DS1302進行操作。如果在傳送過程中置 為低電平,則會終止此次數據傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前, 必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。2.1.4 DS1302的數據輸入輸出在控制指令字輸入后的下一個SCLK時鐘的上升沿時數據被寫入DS1302,數據輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數據,讀出數據時從低位0

8、位至高位7,數據讀寫時序如圖3所示:圖3 數據讀寫時序2.1.5 DS1302的寄存器DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式。其日歷、時間寄存器及其控制字見表2。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內容。 DS1302與RAM相關的寄存器分為兩類,一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H-FDH,其中奇數為讀操作,偶數為寫操作;再一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所

9、有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。表2 DS1302的日歷、時鐘寄存器及其控制字寄存器名命令字取值范圍各位內容寫操作讀操作76543210秒寄存器 80H81H00-59CH10SECSEC3時寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH27周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR2.2 AT89C52簡介AT89C52是美國Atmel公司生產的低電壓、高性能CMOS

10、 8位單片機,片內含8KB的可反復檫寫的程序存儲器和12B的隨機存取數據存儲器(RAM),器件采用Atmel公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內配置通用8位中央處理器(CPU)和Flash存儲單元,功能強大的AT89C52單片機可靈活應用于各種控制領域。AT89C52單片機屬于AT89C51單片機的增強型,與Intel公司的80C52在引腳排列、硬件組成、工作特點和指令系統(tǒng)等方面兼容。2.2.1 AT89C52芯片的引腳及特點 圖4 AT89S51引腳圖(1)功能特性概括:AT89S51提供以下標準功能:40個引腳、4K Bytes Flash片內程序存儲器、

11、128 Bytes的隨機存取數據存儲器(RAM)、32個外部雙向輸入/輸出(I/O)口、5個中斷優(yōu)先級2層中斷嵌套中斷、2個數據指針、2個16位可編程定時/計數器、2個全雙工串行通信口、看門狗(WDT)電路、片內振蕩器及時鐘電路。此外,AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e模式下,CPU暫停工作,而RAM、定時/計數器、串行通信口、外中斷系統(tǒng)可繼續(xù)工作。掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。(2)管腳說明:VCC:供電電壓。GND

12、:接地。P0口:P0口為一個8位漏級開路雙向I/O口,也即地址/數據總線復用口。作為輸出口用時,能驅動8個TTL邏輯門電路。對端口寫“1”時,被定義為高阻輸入。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。P1口:P1口是一個帶內部上拉電阻的8位雙向I/O口,P1口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(I )。P2 口:P2 是一個帶有內部上拉電阻的8 位雙向I/O

13、口,P2 的輸出緩沖級可驅動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口P2 寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16 位地址的外部數據存儲器(例如執(zhí)行MOVX DPTR 指令)時,P2 口送出高8 位地址數據。在訪問8 位地址的外部數據存儲器(如執(zhí)行MOVX RI 指令)時,P2 口輸出P2 鎖存器的內容。P3口: P3口是一個帶有內部上拉電阻的雙向8位I/O口, P3口的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們

14、被內部的上拉電阻拉高并可作為輸入端口。作輸入口使用時,被外部信號拉低的P3口將用上拉電阻輸出電流(I )。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表3所示:P3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。表3 P3口引腳第二功能端口引腳第二功能P3.0RXD (串行輸入口)P3.1TXD (串行輸出口)P3.2 (外中斷0)P3.3 (外中斷1)P3.4 T0 (定時/計數器0)P3.5 T1 (定時/計數器1)P3.6 (外部數據存儲器寫選通)P3.7 (外部數據存儲器讀選通)RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上的高電平時

15、間將使單片機復位。WDT溢出將使該引腳輸出高電平,設置SFR AUXR的DISRTO位(地址8EH)可打開或關閉該功能。 DISRTO位缺省為RESET輸出高電平打開狀態(tài)。ALE/ :當訪問外部存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部寄存器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。值得注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖( )。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位

16、后,只要一條MOVX和MOVC指令才會激活ALE。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE無效:程序存儲允許( )輸出是外部程序存儲器的讀選通信號,當AT89S51由外部程序存儲器取指令(或數據)時,每個機器周期兩次 有效,即輸出兩個脈沖。當訪問外部數據存儲器時,沒有兩次有效的 信號。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端保持高電平(接VCC端),CPU則執(zhí)行內部程序存儲器中的指令。Flash存儲器編程期間,該引腳用于

17、施加+12V編程電壓(VPP)。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入端。XTAL2:反向振蕩放大器器的輸出端。(3)晶體振蕩器特性: AT89C52中有一個用于構成內部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放大器的輸入端和輸出端。這個反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構成自激振蕩器。 外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構成并聯振蕩電路。對外接電容C1、C2雖然沒有十分嚴格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,電容應該使用

18、30pF10pF。 還可以使用外部時鐘。這種情況下,外部時鐘脈沖接XTAL1端,即內部時鐘發(fā)生器的輸入端, XTAL2應懸空。 由于外部時鐘信號是通過一個2分頻觸發(fā)器后作為內部時鐘信號的,所以外部時鐘信號的占空比沒有特殊要求,但最小高電平持續(xù)時間和最大低電平持續(xù)時間應符合產品技術條件的要求。2.2.2 AT89S51的主要性能參數:1) 與Mcs-51產品指令和引腳完全兼容。2) 8字節(jié)可重擦寫FLASH閃速存儲器3) 1000 次擦寫周期4) 全靜態(tài)操作:0HZ-24MHZ5) 三級加密程序存儲器6) 256X8字節(jié)內部RAM7) 32個可編程I/0口線8) 3個16 位定時計數器9) 8個

19、中斷源10) 可編程串行UART通道11) 低功耗空閑和掉電模式2.3 74LS245簡介74LS245是我們常用的芯片,用來驅動LED或者其他的設備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數據。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數據。當89C52單片機的P0口總線負載達到或超過P0最大負載能力時,必須接入74LS245等總線驅動器。當片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當/CE為高電平時,A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端/1G和

20、/2G接地,P2口與驅動器輸入線對應相連。P0口與74LS245輸入端相連,/E端接地,保證數據現暢通。8051的/RD和/PSEN相與后接DIR,使得/RD或/PSEN有效時,74LS245輸入(P0.iDi),其它時間處于輸出(P0.iDi)。圖5 74LS245引腳圖3 方案設計與論證該設計雖然能完成所要求的任務,綜合性能也較好,但其并行接口方式占用大量接口資源,給其它設計帶來諸多不便。使用串行接口時鐘芯片DS1302設計時鐘電路。該設計方案以單片機AT89S51為主控芯片,以串行時鐘芯片DS1302為核心計時芯片,組成數字時鐘電路。該電路不但能準確地計時、附加其它功能,而且,其三線接口

21、可以節(jié)省接口資源,在斷電后不丟失時間和數據信息。該設計方案的接口電路如圖6所示: 圖6 DS1302與CPU接口通過以上兩種設計方案的比較,我們可以看到,設計方案二接口簡單,計時可靠,綜合性能良好。4 軟硬件設計4.1 硬件電路設計該設計的硬件電路由主控部分(單片機AT89C52)、計時部分(實時時鐘芯片DS1302)、顯示部分(七段數碼管)3個部分組成。各部分之間相互協(xié)作,構成一個統(tǒng)一的有機整體,實現數字時鐘的功能。各部分的硬件電路設計如下。設計總電路圖見附錄一。4.1.1 單片機AT89C52外圍電路設計單片機AT89C52作為主控芯片,控制整個電路的運行。單片機外圍需要一個復位電路,復位

22、電路的功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤消復位信號。為可靠起見,電源穩(wěn)定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。該設計采用含有二極管的復位電路,復位電路可以有效的解決電源毛刺和電源緩慢下降(電池電壓不足)等引起的問題,在電源電壓瞬間下降時可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復位。復位電路的設計圖如圖7示: 圖7 單片機復位電路圖AT89S51具有在系統(tǒng)可編程功能,可以很方便的改寫單片機存儲器內的程序不需要把芯片中從工作環(huán)境中剝離,把AT89S ISP下載口接入電路,可使電路實現該功能。AT89S51需要接入一

23、個普通12MHz晶振,為其提供穩(wěn)定的時鐘脈沖。該設計中有6個八段數碼顯示管LED,所以,在單片機AT89S51外圍需要接入6個三極管來驅動數碼顯示管。此外,單片機外圍需要接入3個開關,用來調整時鐘。單片機外圍電路的設計圖如圖8示:圖8 AT89S52外圍電路圖4.1.2 DS1302與單片機的接口設計時鐘芯片DS1302與單片機AT89S51的接口是由3條線來完成的,單片機AT89S51的P1.0與時鐘芯片的數據傳輸端相連,P1.1用來作為DS1302輸入時鐘SCLK控制端,P1.2控制DS1302的復位輸入端。DS1302接標準32.768KHz石英晶振。DS1302與單片機的接口電路如圖9

24、所示:圖9 DS1302與AT89c52連接圖4.1.3 顯示設計八段數碼顯示管有兩種,一種是共陽數碼管,其內部是由八個陽極相連接的發(fā)光二極管組成;另一種是共陰數碼管,其內部是由八個陰極相連接的發(fā)光二極管組成。二者原理不同但功能相同。本設計的時間顯示選用6個共陰八段數碼管LED,其外形和內部結構如圖10所示: 圖10 八段共陰數碼管LED4.2 軟件實現4.2.1 程序流程圖11 主程序流程圖4.2.2 DS1302流程單片機AT89C52對時鐘芯片DS1302的控制需要通過程序驅動來實現,程序主要完成兩個方面的任務:利用單片機實現對DS1302寄存器的地址定義和控制字的寫入,實現對DS130

25、2的數據讀取。初始化DS1302要求 為低電平,SCLK為低電平。 被設置為高電平就啟動了一個數據傳送的過程。SCLK的16個方波完成一次數據傳送,前8個方波用于輸入命令字節(jié),后8個方波用于數據的輸出(讀DS1302)或數據的輸入(寫DS1302)。在SCLK的上升沿,I/O線上的數據被送入DS1302;在SCLK的下降沿,DS1302輸出數據在I/O線上。寫和讀各需要一個程序,寫DS1302程序流程圖如圖12所示,讀DS1302程序流程圖如圖12所示??偝绦蛞姼戒浂幼x數據字節(jié)一位復位端變高啟動一次數據傳送工作結束SCLK發(fā)脈沖復位端變低SCLK發(fā)脈沖寫命令字節(jié)一位夠8次嗎?夠8次嗎?NY

26、YN啟動寫數據字節(jié)一位復位端變高啟動一次數據傳送工作結束SCLK發(fā)脈沖復位端變低SCLK發(fā)脈沖寫命令字節(jié)一位夠8次嗎?夠8次嗎?NYYN 寫DS1302流程圖 讀DS1302流程圖圖12 DS1302時間流程圖5 結 論通過本次設計,使我們對單片機的了解有了更加深一步,我發(fā)現只有動手做才會孰能技巧,還有對材料的整理和理解。這次設計運用到的知識很多方面,尤其是單片機,像AT89C52,引腳多,硬件內部線路接通,所以用起來很方便,還有ds1302芯片與單片機之間的連接,以及如入使用ds1302芯片。當然也要對這些元器件作相應調查。主要就是電路原理圖,還有對引腳的作用熟悉。對于軟件方面則是靈活運用單

27、片機有關的程序語言,還有很多擴展功能,由于知識匱乏,但是理論知識還是比較詳細的。我們最大的成功之處是在這整個過程,動腦尋求解決一個一個問題的辦法,對程序是不斷思索,務必寫出很簡單的程序來,使得電子時鐘能做成功。本設計是在指導老師田紅霞的悉心指導下完成的。從設計的選題,相關資料的查尋,到論文的撰寫這一整個過程中,田老師以其廣博的知識、豐富的經驗 、清晰的思路,自始至終給我以指導,使我能夠順利完成設計,他嚴謹的治學態(tài)度,精益求精的工作作風和孜孜不倦的求學精神令我受益匪淺。在此設計完成之際,對田老師表示衷心的感謝!6 參 考 文 獻1.李群芳,肖看.單片機原理、接口及應用.清華大學出版社,2005.

28、32.丁元杰.單片微機原理及應用(第二版).機械工業(yè)出版社,2005.3.張有德,趙志英.單片微型機原理、應用于實驗.復旦大學出版社,2000.7 附 錄附錄一:設計電路仿真圖:圖13 總電路圖附錄二:源程序 #include<reg52.h>#include<intrins.h>unsigned char a,miao,shi,shi1,shi2,fen,fen1,fen2,x,key1n,temp,j=0,mmiao=0,mfen=0;#include<DS1302.h>unsigned char code dispcode=0xc0,0xf9,0xa4

29、,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;unsigned char code point=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /帶小數點數的代碼sbit qiehuan=P30;sbit key1=P31;sbit key2=P32;sbit key3=P33;sbit SD=P34;sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;sbit LED4=P23;sbit LED5=P24;sbit LED6=P25;sbit POT =P07;void

30、display(uchar x);void miaobiaoxianshi();void shengdian();uchar m=0,m1=0,m2=0,m3=0,m4=0;void delayms(uint x) uchar j;while(x-) for(j=0;j<123;j+);void ReadTime() miao = BCD_Decimal(read_1302(0x81); fen = BCD_Decimal(read_1302(0x83); shi = BCD_Decimal(read_1302(0x85); / ri = BCD_Decimal(read_1302(0x

31、87);/ yue = BCD_Decimal(read_1302(0x89);/ nian=BCD_Decimal(read_1302(0x8d); / week=BCD_Decimal(read_1302(0x8b)-1;uchar key1scan()if(key1=0)/-key1為功能鍵(設置鍵)- delayms(10);/延時,用于消抖動 if(key1=0)/延時后再次確認按鍵按下 m+; if(m=5)m=0; while(1) display(m);if(key1=1)break; return m;void key2scan(uchar n)if(n!=0)/當key1按

32、下以下。再按以下鍵才有效(按鍵次數不等于零) if(key2=0) /上調鍵 delayms(10); if(key2=0) while(1)display(m);if(key2=1)break; switch(n) case 1:shi1=shi/10; shi1+; if(shi1=3)shi1=0; temp=shi1*16+(shi)%10;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x84,temp);/向DS1302內寫小時寄存器84H寫入調整后的小時數據BCD碼 write_1302(0x8e

33、,0x80);/打開寫保護 break; case 2:shi2=shi%10; shi2+; if(shi/10=2) if(shi2=5)shi2=0; else if(shi2=10)shi2=0; temp=shi/10*16+shi2;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x84,temp);/向DS1302內寫小時寄存器84H寫入調整后的小時數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; case 3:fen1=fen/10; fen1+;if(fen

34、1=6)fen1=0; temp=fen1*16+(fen)%10;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x82,temp);/向DS1302內寫分寄存器82H寫入調整后的分數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; case 4:fen2=fen%10; fen2+; if(fen2=10) fen2=0; temp=fen/10*16+fen2;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 wr

35、ite_1302(0x82,temp);/向DS1302內寫分寄存器82H寫入調整后的分數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; void key3scan(uchar n)if(n!=0)/當key1按下以下。再按以下鍵才有效(按鍵次數不等于零) if(key3=0) /上調鍵 delayms(10); if(key3=0) while(1)display(m);if(key3=1)break; switch(n) case 1:shi1=shi/10; shi1-; if(shi1=(0-1)shi1=2; temp=shi1*16+(shi)%

36、10;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x84,temp);/向DS1302內寫小時寄存器84H寫入調整后的小時數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; case 2:shi2=shi%10; shi2-; if(shi/10=2) if(shi2=(0-1)shi2=4; else if(shi2=(0-1)shi2=9; temp=shi/10*16+shi2;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允

37、許寫,禁止寫保護 write_1302(0x84,temp);/向DS1302內寫小時寄存器84H寫入調整后的小時數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; case 3:fen1=fen/10; fen1-;if(fen1=(0-1)fen1=5; temp=fen1*16+(fen)%10;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x82,temp);/向DS1302內寫分寄存器82H寫入調整后的分數據BCD碼 write_1302(0x8e,0x80);/打

38、開寫保護 break; case 4:fen2=fen%10; fen2-; if(fen2=(0-1) fen2=9; temp=fen/10*16+fen2;/十進制轉換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護 write_1302(0x82,temp);/向DS1302內寫分寄存器82H寫入調整后的分數據BCD碼 write_1302(0x8e,0x80);/打開寫保護 break; void display(uchar x) ReadTime(); P0=0xff; P0=dispcodeshi/10; if(x=1)m1+;if(

39、m1=200)m1=0;if(x!=1)m1=0;LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;if(m1%40=0)delayms(1); P0=0xff; P0=dispcodeshi%10; if(x=2)m2+;if(m2=200)m2=0;if(x!=2)m2=0;LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;if(m2%40=0)delayms(1); P0=0xff; P0=dispcodefen/10; if(x=3)m3+;if(m3=200)m3=0;if(x!=3)m3=0;LED1=

40、0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;if(m3%40=0)delayms(1); P0=0xff; P0=dispcodefen%10; if(x=4)m4+;if(m4=200)m4=0;if(x!=4)m4=0;LED1=0;LED2=0;LED3=0;LED4=1;LED5=0;LED6=0;POT=0;if(m4%40=0)delayms(1); P0=0xff; P0=dispcodemiao/10; LED1=0;LED2=0;LED3=0;LED4=0;LED5=1;LED6=0;delayms(1); P0=0xff; P0=dispcod

41、emiao%10; LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;LED6=1;delayms(1); void miaobiao() if(qiehuan=0) delayms(10);if(qiehuan=0) while(!qiehuan);L02:while(1) P0=0xff; P0=dispcode0; LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;del

42、ayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=1;LED5=0;LED6=0;POT=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=0;LED5=1;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=0;LED

43、5=0;LED6=1;delayms(1); shengdian(); if(qiehuan=0) delayms(10); if(qiehuan=0)while(!qiehuan);goto L01; if(key2=0) delayms(10); if(key2=0) break; L00: while(1) delayms(10); j+; if(j=100)j=0;mmiao+;if(mmiao=60)mmiao=0;mfen+;miaobiaoxianshi();if(key3=0) delayms(10);if(key3=0) while(1) miaobiaoxianshi();

44、if(key2=0) delayms(10); if(key2=0)goto L00; if(qiehuan=0) delayms(10); if(qiehuan=0) while(!qiehuan); goto L01; if(key1=0) delayms(10); if(key1=0) j=0;mfen=0;mmiao=0; goto L02;if(qiehuan=0) delayms(10); if(qiehuan=0) while(!qiehuan); goto L01; L01: _nop_(); void miaobiaoxianshi() P0=0xff; P0=dispcod

45、emfen/10; if(x=1)m1+;if(m1=200)m1=0;if(x!=1)m1=0;LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;if(m1%40=0)delayms(1);P0=0xff; P0=dispcodemfen%10; if(x=2)m2+;if(m2=200)m2=0;if(x!=2)m2=0;LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;if(m2%40=0)delayms(1);P0=0xff; P0=dispcodemmiao/10; if(x=3)m3+;if(m3=200)m3=0;if(x!=3)m3=0;LED1=0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;if(m3%40=0)delayms(1

溫馨提示

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

評論

0/150

提交評論