基于單片機的多功能電子鐘課程設計說明書_第1頁
基于單片機的多功能電子鐘課程設計說明書_第2頁
基于單片機的多功能電子鐘課程設計說明書_第3頁
基于單片機的多功能電子鐘課程設計說明書_第4頁
基于單片機的多功能電子鐘課程設計說明書_第5頁
免費預覽已結束,剩余38頁可下載查看

下載本文檔

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

文檔簡介

1、課程設計說明書題目基于單片機的多功能電子鐘課程:單片機原理及應用 B 課程設計山東建筑大學信息與電氣工程學院課程設計說明書I目錄摘要. II1 設計目的. 12 設計要求. 23 設計內容. 33.1 電子時鐘的工作原理 . 33.2 系統(tǒng)硬件電路設計及元件. 43.2.1 AT89C51 芯片. 43.2.2 DS1302 芯片. 83.2.3 LCD1602 液晶顯示. 123.3 系統(tǒng)軟件電路設計 . 153.3.1 系統(tǒng)流程圖及源代碼設計 . 15總結與致謝. 18參考文獻. 19附錄一 . 20山東建筑大學信息與電氣工程學院課程設計說明書II摘要單片機,是集 CPU ,RAM ,RO

2、M ,定時器,計數(shù)器和多種接口于一體 的微控制器。自 20 世紀 70 年代問世以來,以其極高的性能價格比,受 到人們的重視和關注。它體積小、重量輕、抗干擾能力強、環(huán)境要求不高、 價格低廉、可靠性高、靈活性好、開發(fā)較為容易,廣泛應用于智能生產(chǎn)和 工業(yè)自動化上。本系統(tǒng)為基于 DS1302 的多功能電子鐘, 以 AT89C51單片機作為主 控芯,采用實時時鐘芯片 DS1302 使用 1602 液晶作為顯示輸出。該系 統(tǒng)走時精確,具有鬧鐘設置,時間模式切換,秒表以及可同時顯示時間、 日期等多種功能。本文將詳細介紹 AT89C5 仲片機和 DS1302 時鐘芯片的 基本原理,從軟件和硬件電路的實現(xiàn)兩大

3、方面進行分析。關鍵詞:AT89C51 單片機;液晶屏;時鐘芯片;蜂鳴器山東建筑大學信息與電氣工程學院課程設計說明書11 設計目的基于 51 單片機設計一個能夠支持年、月、日、星期、時、分、秒的 電子時鐘。并且支持鬧鐘功能,及整點報時功能。在設計過程中,學習利 用 DXP軟件進行硬件電路設計或者利用仿真軟件進行仿真,進行單片機的 軟件編程。學習芯片的選擇及方案選擇,熟悉單片機的 I/O 口原理;掌握 LCD 顯示的原理;掌握定時計數(shù)器的使用;要求設計出程序流程圖和程序。山東建筑大學信息與電氣工程學院課程設計說明書22 設計要求1 設計能支持年、月、日、星期、時、分、秒的時鐘,時鐘有時間 調整功能

4、及鬧鐘功能;2 時鐘具有裝卸電池時掉電保護功能,保護時間大于5 分鐘;3.時鐘功耗小于 0.5MA/5V。4能夠提供生日提醒指示;能夠每天提供 3 個時間點的鬧鐘報時功5.非易失定時鬧鈴6.整點報時山東建筑大學信息與電氣工程學院課程設計說明書33 設計內容3.1 電子時鐘的工作原理本次設計時鐘電路,使用了 AT89C51 單片機芯片控制電路,單片機控 制電路簡單且省去了很多復雜的線路, 使得電路簡明易懂,用 C 語言程序 來控制整個時鐘的顯示,使得編程變得更容易,這樣通過五個模塊:芯片、 顯示屏、看門狗、電源、時鐘即可滿足設計要求。此設計原理圖框圖如圖 3.1 所示,此電路包括以下五個部分:單

5、片機、 時鐘電路、看門狗、液晶屏、電源模塊、時鐘振蕩電路。圖 3.1 主電路設計框圖本設計采用 C 語言程序設計,使單片機控制液晶顯示年、月、日、時、 分、秒,當秒計數(shù)滿 60 時就向分進位,分計數(shù)器計滿 60 后向時計數(shù)器進 位,小時計數(shù)器按“ 23 翻 0”規(guī)律計數(shù)。時、分、秒的計數(shù)結果經(jīng)過數(shù)據(jù) 處理可直接送顯示器顯示。當計時發(fā)生誤差的時候可以用校時電路進行校 正。設計采用的是時、分、秒顯示,單片機對數(shù)據(jù)進行處理同時在LCD 上顯示。山東建筑大學信息與電氣工程學院課程設計說明書43.2 系統(tǒng)硬件電路設計及元件321 AT89C51 芯片AT89C51 是美國 ATMEL 公司生產(chǎn)的 8 位

6、 Flash ROM 單片機。其最突出的優(yōu)點是片內 ROM 為 Flash ROM 可擦寫 1000 次以上,應用并不復雜的通 用ROM 寫入器就能方便的擦寫,讀取也很方便,價格低廉,具有片程序 ROM 二級保密系統(tǒng)。因此可靈活應用于各種控制領域。AT89C51 包含以下一些功能部件:(1) 一個 8 位 CPU;(2) 一個片內振蕩器和時鐘電路;(3) 4KB Flash ROM ;(4) 128B 內 RAM(5) 可尋址 64KB 的外 ROM 和夕卜 RAM 控制電路;(6) 兩個 16 位定時/計數(shù)器;(7) 21 個特殊功能寄存器;(8) 4 個 8 位并行 I/O 口;(9) 一

7、個可編程全雙工串行口;(10)5 個中斷源,可設置成 2 個優(yōu)先級。AT89C51 單片機一般采用雙列直插 DIP 封裝,共 40 個引腳,圖 3.2 為 其引腳排列圖。40 個引腳大致可分為 4 類:電源、時鐘、控制各 I/O 引 腳。山東建筑大學信息與電氣工程學院課程設計說明書5(1)控制線控制線共有 4 根,其中 3 根是復用線。所謂復用線是指具有兩種功 能,正常使用時是一種功能,在某種條件下是另一種功能。1、ALE/ PROG地址鎖存允許/片內 EPROM程脈沖。(1) ALE 功能:用來鎖存 P0 口送出的低八位地址。AT89C51 在并行擴展外存儲器時,P0 口用于分時傳送低 8

8、位地址和 數(shù)據(jù)信號,且均為二進制數(shù)。當 ALE 信號有效時,P0 口傳送的是低 8 位 地址信號;ALE 信號無效時,P0 口傳送的是低 8 位地址信號。在 ALE 信 號的下降沿,鎖定 P0 口傳送的內容,即低 8 位地址信號。需要指出的是,當 CPU 不執(zhí)行訪問外 RAM 指令,ALE 以時鐘振蕩頻 率 1/6的固定頻率輸出, 因此 ALE 信號也可作為外部芯片 CLK 時鐘或其 他需要。 但是,當 CPU 執(zhí)行 MOVXt 令時,ALE 將跳過一個 ALE 脈沖。(2) PROG 功能:片內 EPROM 勺芯片,在 EPROMS 程期間,此引腳 輸入編程脈沖。2、PSEN外 ROM 讀選

9、通信號89C51 讀外 ROM 時,每個機器周期內 PSEN 兩次有效輸出。PSEN 可 作山東建筑大學信息與電氣工程學院課程設計說明書6為外 ROM 芯片輸出允許 OE 的選通信號。在讀內 ROM 或讀外 RAM 時,PSEN無效。3、RST/VPD 復位/備用電源。(1)正常工作時,RST 端為復位信號輸入端,只要在該引腳上連續(xù) 保持兩個機器周期以上高電平,AT89C51 芯片即實現(xiàn)復位操作,復位后一 切從頭開始,CPU 從 0000H 開始執(zhí)行指令。(2)VPD 功能:在 VCC 掉電情況下,該引腳可接上備用電源,由 VPD向片內 RAM 供電,以保持片內 RAM 中的數(shù)據(jù)不丟失。4、E

10、A /VPP內夕卜 ROM 選擇/片內 EPROMS 程電源。(1) EA 功能:正常工作時,EA 為內外 ROM 選擇端。AT89C51 單 片機 ROM 尋址范圍為 64KB 其中 4KB 在片內,60KB 在片外。當 EA 保持 高電平時, 先訪問內 ROM 但當 PC 值超過 4KB 時, 將自動轉向執(zhí)行外 ROM 中的程序。當 EA 保持低電平時,則只訪問外 ROM 不管芯片內有否內 ROM(2)VPP 功能:片內有 EPROM 勺芯片,在 EPROM程期間,此引腳用于施加編程電源。I/O 引腳AT89C51 有 P0 P1、P2、P3 4 個 8 位并行 I/O 端口,共 32 個

11、引腳。P0 口是一組 8 位漏級開路型雙向 I/O 口,也即地址/數(shù)據(jù)總線復用 口。作為輸出口用時,每位能以吸收電流的方式驅動8 個 TTL 邏輯門電路,對端口寫 1 時,又可作高阻抗輸入端用。在訪問外部程序和數(shù)據(jù)存 儲器時,它是分時多路轉換的地址(低 8 位)/數(shù)據(jù)總線,在訪問期間激 活了內部的上拉電阻。在 Flash 編程時,P0 端口接收指令字節(jié);而在驗 證程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。P1 口是帶內部上拉電阻的雙向 I/O 口,向 P1 口寫入 1 時 P1 口被內部 上山東建筑大學信息與電氣工程學院課程設計說明書7拉為高電平,可用作輸入口。當作為輸入腳時被外部信號

12、拉低的P1 口會因為內部上拉而輸出一個電流。Flash 編程和程序校驗期間,P1 接收低 8 位地址。P2 口是帶內部上拉電阻的雙向 I/O 口,向 P2 口寫入 1 時 P2 口被內部 上拉為高電平可用作輸入口,當作為輸入腳時被外部拉低的P2 口會因為內部上拉而輸出電流。在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVX DP令)時,P2 口送出高 8 位地址數(shù)據(jù),當使用8 位尋址方式(MOVXRJ 問外部數(shù)據(jù)存儲器時,P2 口發(fā)送 P2 特殊功能寄 存器的內容,在整個訪問期間不改變。Flash 編程和程序校驗時,P2 也接 收高位地址和一些控制信號。P3 口是帶內部上拉

13、電阻的雙向 I/O 口,向 P3 口寫入 1 時 P3 口被內部 上拉為高電平可用作輸入口,當作為輸入腳時被外部拉低的P3 口會因為內部上拉而輸出電流。P3 口除了作為一般的 I/O 口線外,更重要的是它 的第二功能,如表 3-1 所示:表 3-1 P3 端口的特殊功能端口引腳兼用功能P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2/INT0外部中斷 0P3.3/INT1外部中斷 1P3.4T0定時器 0 的外部輸入P3.5T1定時器 1 的外部輸入P3.6/WR外部數(shù)據(jù)存儲器寫選通P3.7/RD外部數(shù)據(jù)存儲器讀選通山東建筑大學信息與電氣工程學院課程設計說明書8322 DS1302 芯

14、片DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實時時鐘日 歷芯片,附加 31 字節(jié)靜態(tài) RAM 采用 SPI 三線接口與 CPU 進行同步通信, 并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM 數(shù)據(jù)。實時時鐘可提供秒、分、時、日、星期、月和年,一個月小于 31 天時可以自動調整, 且具有閏年補償功能。工作電壓寬達 2.55.5V。采用雙電源供電(主電 源和備用電源),可設置備用電源充電方式,提供了對后備電源進行涓細 電流充電的能力。有主電源和備份電源雙引腳,而且備份電源可由大容量 電容( 1F)來替代。需要強調的是,DS1302 需要使用 32.768KHZ 的晶 振

15、。DS1302 包含以下一些功能部件:(1) 實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪?進行計數(shù);(2) 用于高速數(shù)據(jù)暫存的 31X8 位 RAM(3) 最少引腳的串行 I/O ;(4) 2.55.5V 電壓工作范圍;(5) 2.5V 時耗電小于 300nA(6) 用于時鐘或 RAM 數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù) 傳送方式;(7) 簡單的 3 線接口;(8) 可選的慢速充電(至 VCC1 的能力。(1) DS1302 數(shù)據(jù)操作原理DS1302 在任何數(shù)據(jù)傳送時必須先初始化, 把 RST 腳置為高電平,然后 把8 位地址和命令字裝入移位寄存器,數(shù)據(jù)在 SCLK 勺上升

16、沿被輸入。無 論是讀周期還是寫周期,開始 8 位指定 40 個寄存器中哪個被訪問到。在 開始 8 個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在 讀操作時輸出數(shù)據(jù),山東建筑大學信息與電氣工程學院課程設計說明書9在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式 下為 8 加 8,在多字節(jié)方式下為 8 加字節(jié)數(shù),最大可達 248 字節(jié)數(shù)。DS1302 的內部結構圖如圖 3.3 所示。AD BUS圖 3.3 DS1302 內部結構圖DS1302 的引腳圖及功能DS1302 的引腳圖如圖 3.4 所示圖 3.4 DS1302 引腳圖DS1302 各引腳功能:Vcc1:主電源;Vcc2:備份電

17、源。當 Vcc2Vcc1+0.2V 時,由 Vcc2 向 DS1302 供 電, 當Vcc2 Vcc1 時,由 Vcc1 向 DS1302 供電。SCLK 串行時鐘,輸入,控制數(shù)據(jù)的輸入與輸出;I/O :三線接口時的雙向數(shù)據(jù)線;CE 輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能: 第一,CE 開始控制字訪問移位寄存器的控制邏輯;其次 CE 提供結束單字 節(jié)或多字節(jié)山東建筑大學信息與電氣工程學院課程設計說明書10數(shù)據(jù)傳輸?shù)姆椒?。引腳功能如表3-2 所示:表 3-2 DS1302 引腳功能說明引腳號名稱功能1VCC1備份電源輸入2X132.768KHZ 晶振輸入3X232.768KHZ

18、晶振輸出4GND地5RST控制移位寄存器/復位6I/O數(shù)據(jù)輸入/輸出7SCLK串行時鐘8VCC2主電源輸入DS1302 的控制字DS1302 的控制字如表 3-3 所示:表 3-3 控制字(即地址及命令字節(jié))765432101RAMA4A3A2A1A0RDCKWR控制字的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。位 6:如果為 0,則表示存取日歷時鐘數(shù)據(jù),為 1 表示存取 RAM 數(shù)據(jù);位 5 至位 1 (A4A0):指示操作單元的地址;位 0 (最低有效位):如為 0,表示要進行寫操作,為 1 表示進行讀操 作??刂谱挚偸菑淖畹臀婚_始輸出。在控制

19、字指令輸入后的下一個 SCLK 時鐘的山東建筑大學信息與電氣工程學院課程設計說明書11上升沿時,數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入從最低位(0 位)開始。 同樣,在緊跟 8 位的控制字指令后的下一個 SCLK 脈沖的下降沿,讀出 DS1302 的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。DS1302 時序CE 輸入驅動高啟動所有的數(shù)據(jù)傳輸。CE 輸入有兩個功能。首先,CE 打開控制邏輯,允許訪問的移位寄存器的地址/命令序列。其次,CE 提供 了一個終止單字節(jié)或多字節(jié)數(shù)據(jù)傳輸方法。一個時鐘周期是由一個下降沿之后的上升沿序列。對于數(shù)據(jù)傳輸而 言,數(shù)據(jù)必須在有效的時鐘的上升沿輸入,在時鐘的下降沿輸出。如

20、果 CE 為低,所有的 I/O 引腳變?yōu)楦咦杩範顟B(tài),數(shù)據(jù)傳輸終止。對于數(shù)據(jù)輸入:開始的 8 個 SCLK 周期,輸入寫命令字節(jié),數(shù)據(jù)字節(jié) 在后 8個 SCLK 周期的上升沿輸入。數(shù)據(jù)輸入位 0 開始。對于數(shù)據(jù)輸出:開始的 8 個 SCLK 周期,輸入一個讀命令字節(jié),數(shù)據(jù) 字節(jié)在后 8 個 SCLK 周期的下降沿輸出。注意,第一個數(shù)據(jù)字節(jié)的第一個 下降沿發(fā)生后,命令字的最后一位被寫入,命令字節(jié)的最后一位被寫入。 當 CE 仍為高時。如果還有額外的 SCLK 周期,DS1302 將重新發(fā)送數(shù)據(jù)字 節(jié),這使 DS1302具有連續(xù)突發(fā)讀取的能力。DS1302 數(shù)據(jù)讀寫時序如圖 3.5 所示:單宇節(jié)讀n

21、nmmirLmRrummn_AO AI A2 A3 A4 R/C t U DO DI D2 D3 D4 I DS D6 D7-車宇節(jié)寫rmHnnHnHnHrurinnmiRWA0A23 A4D1D203D405D607 山東建筑大學信息與電氣工程學院課程設計說明書12圖 3.5 數(shù)據(jù)讀寫時序3.2.3 LCD1602 液晶顯示LCD1602 是一種用 5x7 點陣圖形來顯示字符的液晶顯示器模塊,它顯 示的容量為 2 行 16 個字共 32 個字符。它由若干個 5X7 或者 5X11 點陣 字符位組成,每個點陣字符位都可以顯示一個字符。模塊采用數(shù)字式接口, 能夠方便地與單片機等控制類芯片進行通信

22、。由于其具有體積小、重量輕、 顯示質量高、功耗低等諸多優(yōu)點而被廣泛用于智能化儀器儀表的顯示器 件。(1)LCD1602 引腳及功能LCD1602 的引腳如圖 3.6 所示:1VSS 電源地。2VDD 接電源正極。3VL:液晶顯示偏壓信號。4RS 數(shù)據(jù)/命令選擇端(H/L )。5RW:讀/寫選擇端(H/L)山東建筑大學信息與電氣工程學院課程設計說明書136E:使能端。當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。7D1D8: 8 位雙向數(shù)據(jù)線。8BLA 背光源正極;9BLK 背光源負極。LCD 1602Nu硏占 一小忖寸 49 尸QC二圖 3.6 LCD1602 引腳圖LCD1602 引腳

23、功能表如下表 3-4 所示:表 3-4 LCD1602 引腳功能表編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定 要確認模塊的忙標志位是不是為低電平,是低電平則表示不忙,否則 此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊 在哪里顯示字符。表 3-5 為 LCD1602 的內部顯示地址。山東建筑大學信息與電氣工程學

24、院課程設計說明書14表 3-5 LCD1602 的內部顯示地址123141516第一行80H81H82H8DH8EH8FH第二行0C0H0C1H0C2H0CDH0CEH0CFH山東建筑大學信息與電氣工程學院課程設計說明書153.3系統(tǒng)軟件電路設計331 系統(tǒng)流程圖及源代碼設計(1)主程序流程圖設計3.7 主程序流程圖山東建筑大學信息與電氣工程學院課程設計說明書16(2)子程序流程圖設計圖 3.8 DS1302 中斷流程圖山東建筑大學信息與電氣工程學院課程設計說明書17程序主要實現(xiàn)對 DS1302 寫保護、充電,對年、月、日、時、分、秒 等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關中斷指令,

25、因為在串行通信時對時序要求比較高,而且在此是用 I/O 口軟件模擬串行時鐘脈 沖,所以在通信過程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷,如圖3.8所示。2、LCD1602 流程圖程序主要實現(xiàn)對信息的顯示,包括年、月、日、時、分、秒等信息, 在這里要注意它的讀寫控制指令。其流程圖如圖3.9 所示。開始圖 3.9 LCD1602 初始化流程圖山東建筑大學信息與電氣工程學院課程設計說明書18總結與致謝通過這次對基于單片機的電子時鐘設計的設計與制作過程, 加強了我們動手、思考和解決問題的能力。在設計過程中我們利用 Altium 軟件進行原理圖及 PCB 圖的繪制, 最后再利仿真軟件進行檢查,看程序是否能

26、顯示其功能。在設計過程 中讓我進一步深刻的學習各種軟件的利用以及各種軟件給我們帶來 的便利。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只 有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起 來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際 動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是 困難重重,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn) 了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不 夠牢固。這次課程設計終于順利完成了,在設計中遇到了很多專業(yè)知識問 題,最后在老師的辛勤指導下,終于游逆而解。同時,在老師的身上 我們學也到很多

27、實用的知識,在次我們表示感謝!同時,對給過我?guī)?助的所有同學和各位指導老師再次表示忠心的感謝!山東建筑大學信息與電氣工程學院課程設計說明書19參考文獻1馬潮.AVR 單片機嵌入式系統(tǒng)原理與應用實踐M.北京:北京航空航天大學出版社,2007.2楊欣,王玉鳳,劉湘黔 51 單片機應用從零開始M.北京:清華大學出版社,2008.3陳在平.現(xiàn)場總線及工業(yè)控制網(wǎng)絡技術M.北京:電子工業(yè)出版社,2008.4沈建華,楊艷琴.MSP430 系列 16 位超低功耗單片機原理與實踐M.北北京航空航天大學出版社,2008.張成偉基于嵌入式 Linix 的 GSM/GPR 無線通信模塊的設計與實現(xiàn)D.華中科技大學趙亮

28、 GPRS 無線網(wǎng)絡在遠程數(shù)據(jù)采集中的應用計算機工程與設計.2005. 26(9).7馬忠梅.單片機的 C 語言應用程序設計M.北京:北京航空航天大學出版社,2003.8胡漢才.單片機原理及其接口技術M.北京:清華大學出版社,2004.9雷霖.現(xiàn)場總線及工業(yè)控制網(wǎng)絡技術M.北京:電子工業(yè)出版社,2004.10 許洪華.現(xiàn)場總線與工業(yè)以太網(wǎng)技術M.北京:電子工業(yè)出版社,2007.山東建筑大學信息與電氣工程學院課程設計說明書20附錄一#in elude #i nclude/*#defi ne uchar un sig ned char#defi ne uint un sig ned int#def

29、i ne TIME (0X10000-50000)#defi ne FLAG 0XEF鬧鐘標志/*II 引腳連接圖sbit CLK=P1A2;sbit DAT=P3;sbit RST=P1A4;sbit RS=P1A5;sbit RW=P1A6;sbit E=P1A7;sbit P33=P3A3;sbit KEY1 = P2A0;sbit KEY2 =卩2人1;sbit KEY3 =卩2人2;sbit KEY4 =卩2人3;/*/II 全局變量及常量定義uchar i=20,j;uchar DataBuf16 = ;/ 日期uchar TimeBuf16 = ;/ 時間uchar alarm2

30、,time3;uchar code Day=31,28,31,30,31,30,31,31,30,31,30,31;/12個月的最大日期(非閏年)II 閏年月星期表const un sig ned char WeekTab = (3 5) + 31,/1 月(6 5) + 29,/2 月(0 5) + 31,/3 月(3 5) + 30,/4 月(5 5) + 31,/5 月(1 5) + 30,/6 月山東建筑大學信息與電氣工程學院課程設計說明書21(3 5) + 31,117 月(6 5) + 31,/8 月(1 5) + 30,/9 月(4 5) + 31,/10 月(0 5) + 30

31、,/11 月(2 5) + 31 /12 月;/音律表uint code table1=64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217;/發(fā)聲部分的延時時間uchar code table2=0 x82,1,0 x81,0 xf4,0 xd4,0 xb4,0 xa4,0 x94,0 xe2,1,0 xe1,0 xd4,0 xb4,0 xc4,0 xb4,4,0;/鬧鐘中用的全局變量uchar th1,tl1;/*/延時 1ms 函數(shù)delay1ms(uchar t

32、ime)uchar i,j;for(i=0;itime;i+)for(j=0;j250;j+);/*/LCD 控制函數(shù)En able()RS=0;RW=0;E=0;delay1ms(3);E=1;山東建筑大學信息與電氣工程學院課程設計說明書22/*/LCD1602 寫入字符函數(shù)LCD1602_WriteSChr(uchar i)P0=i;RS=1;RW=0;E=0;delay1ms(2);E=1;/*/LCD1602 寫入字符串函數(shù)/入口函數(shù)/uchar data *address :寫入數(shù)據(jù)首地址/ucharm:寫入字節(jié)數(shù)LCD1602_WriteStr(uchar *address,uch

33、ar m)uchar i,j;for(i=0;im;i+,address+)j=*address;LCD1602_WriteSChr(j);/*/LCD 顯示void LCDShow(void)P0=0XC;/顯示器開、光標關En able();P0=0 x80;/寫入顯示起始地址/E nable();LCD1602_WriteStr(DataBuf,16); / 寫入日期顯示緩存P0=0 xc1;/寫入顯示起始地址En able();山東建筑大學信息與電氣工程學院課程設計說明書23LCD1602_WriteStr(TimeBuf,16);/ 寫入時間顯示緩存/*/DS1302 寫入子程序vo

34、id DS1302_Write(uchar temp)uchar i;CLK=0; /將 DS1320 時鐘脈沖拉低_n op_();延時一指令周期RST=1; /RST 置高電平_n op_();延時一指令周期for(i=0;i=1;/ 右移一位CLK=0;/拉低時鐘脈沖/*/DS1302 讀取子程序uchar DS1302_Read()uchar i,j=0;for(i=0;i=1;/右移一位_n op_(); /延時一指令周期CLK=0;/拉低時鐘脈沖_n op_(); /延時一指令周期if(DA T) 判斷接收該位數(shù)據(jù)是否為1j|=0 x80; 該位置 1_n op_(); /延時一指

35、令周期CLK=1;/拉高時鐘脈沖山東建筑大學信息與電氣工程學院課程設計說明書24return(j);/返回數(shù)值/*/部分顯示數(shù)據(jù)初始化TimeStart()TimeBuf0=TimeBuf8=TimeBuf9=TimeBuf10=0 x20; / 不顯示字符TimeBuf2=TimeBuf5=:; / 時間分隔顯示DS1302_Write(0 xc1);alarm0=DS1302_Read();RST=0;DS1302_Write(0 xc3);alarm1=DS1302_Read();RST=0;DS1302_Write(0 xc5);DataBuf0=DS1302_Read();RST=0

36、;/*/讀取時間ReadTime()uchar i,m ,n;for(m=0,i=0,n=0 x85;i7;i+=3,n-=2,m+)/ 連續(xù)讀取時,分,秒DS1302_Write( n);/寫入讀取寄存器指令timem=DS1302_Read();/ 讀取數(shù)據(jù)RST=0;/將 RST 電平拉低,停止傳輸TimeBufi=timem/16+0 x30;/將兩位數(shù)據(jù)的十位轉為字符格式TimeBufi+1=timem%16+0 x30; 將兩位數(shù)據(jù)的個位轉為字符格式/*/功能選擇超時定時器time0() in terrupt 1 using 1山東建筑大學信息與電氣工程學院課程設計說明書25山東建

37、筑大學信息與電氣工程學院課程設計說明書26I-;if(i=O)if(j!=0)j-;i=20;TH0=TIME/256,TL0=TIME%256;/*/產(chǎn)生鬧鈴音調in time1() in terrupt 3TH1=th1,TL1=tl1;P32=!P32;/*/鬧鐘顯示void AlarmShow(void)uchar i,j,a,b ,n;ET1=1;for(j=0;j=4;if(a=0)TR1=0;goto D1;山東建筑大學信息與電氣工程學院課程設計說明書27a=(-a)1)/2;TH 仁 th 仁 table1a/256,TL 仁 tl 仁 table1a%256; TR1=1;D

38、1:dob-; for(n=0;n0 xc5)i=0 xc2;else if(KEY2 = 1)year=(DataBuf4&0 xf)*10+(DataBuf5 &0 xf);/ 將字符格式的年份轉換為數(shù)值格式mo nth=(DataBuf7&0 xf)*10+(DataBuf8&0 xf);/ 將字符格式的月份轉換為數(shù)值格式day=(DataBuf10&0 xf)*10+(DataBuf11&0 xf);/ 將字符格式的日數(shù)轉換為數(shù)值格式if(i=0 x85)/ 設置年份year+;if(year99)year=0;if(year%4)!=0

39、)if(mo nth=2&day=29)day=28;山東建筑大學信息與電氣工程學院課程設計說明書29else if(i=0 x88)設置月份山東建筑大學信息與電氣工程學院課程設計說明書30mon th+;if(mo nth12)mon th=1;if(dayDaymo nth-1)day=Day mon th-1;if(mo nth=2&( year%4)=0) / 計算是否閏年 day=29;else if(i=0 x8b) / 設置日期day+;if(dayDaymo nth-1)if(mo nth=2&( year%4)=0) / 計算是否閏年if(day29)

40、day=1;if(mo nth!=2)day=1;else if(i=0 xc2) / 設置小時n=(TimeBuf0&0 xf)*10+(TimeBuf1&Oxf);n+;if(n 23)n=0;TimeBuf0=n/10+0 x30;TimeBuf1=n%10+0 x30;else/設置分鐘n=(TimeBuf3&0 xf)*10+(TimeBuf4&0 xf);n+;if(n 59)山東建筑大學信息與電氣工程學院課程設計說明書31n=0;TimeBuf3=n/10+0 x30;TimeBuf4=n%10+0 x30;DataBuf4=year/10+0 x

41、30;將數(shù)值格式的日期轉換為字符形式DataBuf5=year%10+0 x30;DataBuf7=m on th/10+0 x30;DataBuf8=m on th%10+0 x30;DataBuf10=day/10+0 x30;DataBuf11=day%10+0 x30;LCDShow();else if(KEY3 = 1)/按保存退出鍵后,向 DS1302 寫入設置后的日期時間DS1302_Write(0 x8c);DS1302_Write(DataBuf4&0 xf)*16+(DataBuf5&0 xf);RST=0;DS1302_Write(0 x8a);DS130

42、2_Write(SetWeek();RST=0;for(i=7, n=0 x88;i11;i+=3, n-=2)DS1302_Write( n);DS1302_Write(DataBufi&0 xf)*16+(DataBufi+1&0 xf);RST=0;for(i=0;i7;i+=3, n-=2)DS1302_Write( n);DS1302_Write(TimeBufi&0 xf)*16+(TimeBufi+1&0 xf);RST=0;TR0=0;return;elseTR0=0;山東建筑大學信息與電氣工程學院課程設計說明書32return;山東建筑大學信息

43、與電氣工程學院課程設計說明書33if(j=0)TRO=O;return;/*/設置鬧鐘void SetAlarm(void)uchar i,n;for(i=1;i0 xc5)i=0 xc2;else if(KEY2 = 1)if(i=0 xc2)n=(TimeBufO&0 xf)*10+(TimeBuf1&Oxf);n+;if(n 23)n=0;TimeBuf0=n/10+0 x30;TimeBuf1=n%10+0 x30;elsen=(TimeBuf3&0 xf)*10+(TimeBuf4&0 xf);n+;if(n 59)n=0;TimeBuf3=n/10+

44、0 x30;TimeBuf4=n%10+0 x30;LCDShow();else if(KEY3 = 1)DS1302_Write(0 xc0);DS1302_Write(TimeBuf0&0 xf)*16+(TimeBuf1&0 xf);RST=0;DS1302_Write(0 xc2);DS1302_Write(TimeBuf3&0 xf)*16+(TimeBuf4&0 xf);RST=0;DataBuf0=FLAG;DS1302_Write(0 xc4);山東建筑大學信息與電氣工程學院課程設計說明書35DS1302_Write(DataBuf0);RST=O;TRO=O;TimeStart(); return;elseTR0=0;TimeStart(); return;if(j=0)TR0=0;

溫馨提示

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

最新文檔

評論

0/150

提交評論