基于單片機的數字時鐘加鬧鐘的設計與制作畢業設計_說明_第1頁
基于單片機的數字時鐘加鬧鐘的設計與制作畢業設計_說明_第2頁
基于單片機的數字時鐘加鬧鐘的設計與制作畢業設計_說明_第3頁
基于單片機的數字時鐘加鬧鐘的設計與制作畢業設計_說明_第4頁
基于單片機的數字時鐘加鬧鐘的設計與制作畢業設計_說明_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 . . . 題 目基于單片機的數字時鐘加鬧鐘的設計與制作1 1 緒論緒論 2 21.1 引言 21.2 研究目的 21.3 系統基本方案選擇和論證 21.3.1 單片機芯片的選擇方案和論證:21.3.2 顯示模塊選擇方案和論證:21.3.3 時鐘芯片的選擇方案和論證:21.3.4 電路設計最終方案確定 31.4 硬件系統框圖 32 2 主要元件介紹主要元件介紹 4 42.1 STC89C52 以與最小系統介紹 42.1.1 ST89C52 單片機:42.1.2 計時芯片 DS1302:52.1.3 字符液晶顯示屏 LCD1602 資料:62.1.4 電源模塊:83.3. 硬件電路連接圖:硬件

2、電路連接圖:8 83.1 單片機的連接圖 83.2 DS1302 計時模塊 93.3 LCD1602 液晶顯示模塊 93.4 按鍵模塊 94.4. 系統的軟件設計:系統的軟件設計:10104.1 軟件設計流程圖:105.5. 系統的調試:系統的調試:11116.6. 總結:總結:1212參考文獻參考文獻 1313附錄一:附錄一:1414附錄二:附錄二:1515附錄三:附錄三:2929嵌入式綜合課程設計嵌入式綜合課程設計 IIIIII . . . 2 / 32(基于單片機的數字時鐘加鬧鐘的設計與制作)任務提出:隨著單片機技術的飛速發展,在其推動下,現代的電子產品幾乎滲透到了社會的各個領域,有力地

3、推動了社會生產力的發展和社會信息化程度的提高,同時也使現代電子產品性能進一步提高。時間就是金錢、時間就是生命、時間就是勝利,準確的掌握時間和分配時間對人們來說至關重要,時鐘是我們生活中必不可少的工具。電子鐘的設計方法有很多種,但是基于單片機并通過LCD 顯示的電子時鐘具有編程靈活、精確度高、便于攜帶、顯示直觀等特點。利用 STC89C52 單片機對 DS1302 時鐘芯片進行讀寫操作并通過 LCD1602 字符液晶顯示實時時鐘信息,這樣便構成了一個單片機電子時鐘。設計要求:利用單片機作為核心控制器件,制作一個數字時鐘。要求其具有如下功能: 具有年、月、日、星期、時、分、秒顯示功能; 具備年、月

4、、日、星期、時、分、秒校準功能; 具有鬧鐘顯示、調節設定、鳴叫功能; 計時器模塊能夠準確計時; 顯示模塊能夠清晰、穩定顯示,不出現亂碼; 輸入模塊能夠正確輸入指令; 控制模塊能夠正確控制輸入、輸出顯示; 整個系統能夠正常、穩定工作。 . . . 1 / 32摘要隨著單片機技術的飛速發展,在其推動下,現代的電子產品幾乎滲透到了社會的各個領域,有力地推動了社會生產力的發展和社會信息化程度的提高,同時也使現代電子產品性能進一步提高。時間就是金錢、時間就是生命、時間就是勝利,準確的掌握時間和分配時間對人們來說至關重要,時鐘是我們生活中必不可少的工具。電子鐘的設計方法有很多種,但是基于單片機并通過LCD

5、 顯示的電子時鐘具有編程靈活、精確度高、便于攜帶、顯示直觀等特點。利用 STC89C52 單片機對 DS1302 時鐘芯片進行讀寫操作并通過 LCD1602 字符液晶顯示實時時鐘信息,這樣便構成了一個單片機電子時鐘。 關鍵詞關鍵詞 :單片機,電子時鐘,STC89C52,蜂鳴器 . . . 2 / 321 緒論1.11.1 引言引言時間,對人們來說是非常寶貴的,準確的掌握時間和分配時間對人們來說至關重要。因此自從時鐘發明的那刻起,就成為人類的好朋友。隨著時間的流逝,科學技術的不斷發展和提高,人們對時間計量的精度要求越來越高,應用越來越廣。怎樣讓時鐘更好、更方便、更精確的顯示時間,這就要求人們不斷

6、設計研發出新型的時鐘。高精度的計時工具大多數都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術,因此走時精度高,穩定性好,使用方便,不需要經常調校。數字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用 LED 顯示器代替指針進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。時鐘電路在計算機系統中起著非常重要的作用,是保證系統正常工作的基礎。在單片機的應用系統中,時鐘有兩個方面的含義:一是指為保障系統正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統工作的快慢;二是指系統的標準定時時鐘,即定

7、時時間,它通常有兩種實現方法:一是用軟件實現,即用單片機部的可編程定時器計數器來實現;二是用專門的時鐘芯片實現。1.21.2 研究目的研究目的通過利用 STC89C52 單片機和 DS1302 芯片以與外圍的按鍵和 LCD 顯示器等部件,設計一個基于單片機的電子時鐘。設計的電子時鐘通過液晶顯示器顯示,并能通過按鍵對時間以與鬧鐘進行置。1.31.3 系統基本方案選擇和論證系統基本方案選擇和論證.1 單片機芯片的選擇方案和論證:單片機芯片的選擇方案和論證:方案一: 采用 STC89C52 芯片作為硬件核心。STC89C52 部具有 8KB ROM 存儲空間,512 字節數據存儲空間

8、,帶有 2K 字節的 EEPROM 存儲空間,與 MCS-51 系列單片機完全兼容,STC89C52 可以通過串口下載。方案二: 采用 AT89S52。AT89S52 片具有 8K 字節程序存儲空間,256 字節的數據存儲空間沒有 EEPROM 存儲空間,也與MCS-51 系列單片機完全兼容,具有在線編程可擦除技術。兩種單片機都完全能夠滿足設計需要,STC89C52 相對 ATS89C52 價格便宜,且抗干擾能力強。考慮到成本因素,因此選 STC89C52。.2 顯示模塊選擇方案和論證:顯示模塊選擇方案和論證:方案一:采用點陣式數碼管顯示。點陣式數碼管是由八行八列的發光二極管組

9、成,對于顯示文字比較適合,如采用在顯示數字顯得太浪費,且也相對較高,所以不用此種作為顯示。方案二:采用 LED 數碼管動態掃描。LED 數碼管價格便宜,對于顯示數字最合適,但功耗較大,且顯示容量不夠,所以也不用此種方案。方案三:采用 LCD 液晶顯示屏。液晶顯示屏的顯示功能強大,可顯示大量文字,顯示多樣,清晰可見,且價格適中,所以采用LCD 數碼管作為顯示。.3 時鐘芯片的選擇方案和論證:時鐘芯片的選擇方案和論證:方案一:直接采用單片機定時計數器提供秒信號,使用程序實現年、月、日、星期、時、分、秒計數。采用此種方案雖然減少芯片的使用,節約成本,但是,實現的時間誤差較大。所以不采

10、用此方案。方案二:采用 DS1302 時鐘芯片實現時鐘,DS1302 芯片是一種高性能的時鐘芯片,可自動對秒、分、時、 . . . 3 / 32日、周、月、年以與閏年補償的年進行計數,而且精度高,工作電壓 2.5V5.5V 圍,2.5V 時耗電小于 300nA. .4 電路設計最終方案確定電路設計最終方案確定綜上各方案所述,對此次作品的方案選定:采用 STC89C52 單片機作為主控制系統;采用 DS1302作為時鐘芯片;采用 LCD1602 液晶作為顯示器件。1.41.4 硬件系統框圖硬件系統框圖該系統采用單片機 89C52 作為控制芯片,把 DS1302 計時模塊傳來的信息

11、和鍵盤輸入的指令進行處理,控制著液晶屏 LCD1602 的顯示和蜂鳴器的驅動。單片機DS1302 計時模塊鍵盤輸入模塊LCD1602 顯示模塊蜂鳴器 . . . 4 / 322 主要元件介紹2.1STC89C522.1STC89C52 以與最小系統介紹以與最小系統介紹.1 ST89C52ST89C52 單片機:單片機:1. 主要性能參數:與 MCS-51 產品指令和引腳完全兼容。8 字節可重擦寫 FLASH 閃速存儲器1000 次擦寫周期全靜態操作:0HZ-24MHZ三級加密程序存儲器256X8 字節部 RAM32 個可編程 I/0 口線3 個 16 位定時計數器8 個中斷源可

12、編程串行 UART 通道、低功耗空閑和掉電模式。2. 功能特性: STC89C52 提供以下標準功能:8 字節 FLASH 閃速存儲器,256 字節部 RAM , 32 個 I/O 口線,3 個 16 位定時計數器,一個 6 向量兩級中斷結構,一個全雙工串行通信口,片振蕩器與時鐘電路。同時,AT89C52 可降至 0Hz 的靜態邏輯操作,并支持兩種軟件可選的節電上作模式。空閑方式停止 CPU 的工作,但允許 RAM,定時計數器串行通信口與中斷系統繼續工作。掉電方式保存 RAM 中的容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位.3. 管腳圖:STC89C52 引腳介紹:主電源引腳

13、(2 根)VCC(Pin40):電源輸入,接5V 電源GND(Pin20):接地線外接晶振引腳(2 根)XTAL1(Pin19):片振蕩電路的輸入端XTAL2(Pin20):片振蕩電路的輸出端控制引腳(4 根)RST/VPP(Pin9):復位引腳,引腳上出現 2 個機器周期的高電平將使單片機復位。ALE/PROG(Pin30):地址鎖存允許信號PSEN(Pin29):外部存儲器讀選通信號EA/VPP(Pin31):程序存儲器的外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從部程序存儲器讀指令。可編程輸入/輸出引腳(32 根)STC89C52 單片機有 4 組 8 位的可編程 I/O

14、口,分別位 P0、P1、P2、P3 口,每個口有 8 位(8 根引腳) ,共 32 根。P0 口(Pin39Pin32):8 位雙向 I/O 口線,名稱為 P0.0P0.7 P1 口(Pin1Pin8):8 位準雙向 I/O 口線,名稱為 P1.0P1.7 P2 口(Pin21Pin28):8 位準雙向 I/O 口線,名稱為 P2.0P2.7 P3 口(Pin10Pin17):8 位準雙向 I/O 口線,名稱為 P3.0P3.7 . . . 5 / 3.2 計時芯片計時芯片 DS1302DS1302:1.概述:DS1302 是 DALLAS 公司推出的涓流充電時鐘芯片含有一個

15、實時時鐘/日歷和 31 字節靜態 RAM 通過簡單的串行接口與單片機進行通信實時時鐘/日歷電路提供秒、分、時、日、日期、月、年的信息,每月的天數和閏年的天數可自動調整。時鐘操作可通過 AM/PM 指示決定采用 24 或 12 小時格式。DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線RES 復位I/O 數據線SCLK 串行時鐘。RAM 的讀/寫數據以一個字節或多達 31 個字節的字符組方式通信。DS1302 工作時功耗很低保持數據和時鐘信息時功率小于 1mW。2. DS1302 功能特性:雙電源管腳用于主電源和備份電源供應 VCC1 為可編程涓流充電電源;附加七個

16、字節的存儲器;實時時鐘具有能計算 2100 年之前的秒、分、時、日、日期、星期、月、年的能力,還有閏年調整的能力 31*8 位暫存數據存儲 RAM;串行 I/O 口方式使得管腳數量最少;寬圍工作電壓2.05.5V;工作電流 2.0V 時,小于 300nA;讀/寫時鐘或 RAM 數據時有兩種傳送方式:單字節傳送和多字節傳送字符組方式;8 腳 DIP 封裝或可選的 8 腳 SOIC 封裝;簡單 3 線接口;與 TTL 兼容(VCC=5V) ;可選工業級溫度圍:-40+85。3. 管腳描述:X1、X232.768KHz 晶振管腳GND地RST復位腳I/O數據輸入/輸出引腳SCLK串行時鐘VCC1、V

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

18、位 0 位到高位 7。其讀寫時序如圖示:DS1302 控制字 . . . 6 / 3.3 字符液晶顯示屏字符液晶顯示屏 LCD1602LCD1602 資料:資料:1. 概述:工業字符型液晶,1602 是指顯示的容為 16*2,即能夠同時顯示兩行,每行 16 個符。常見的1602 字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍色背光白色字體,目前市面上字符液晶絕大多數是基于 HD44780 液晶芯片的,控制原理是完全一樣的。本課題所用 1602 液晶模塊,顯示屏是藍色背光白色字體。如圖2.引腳功能說明:第 1 腳:GND 為地電源。第 2 腳:VCC 接 5V 正電

19、源。第 3 腳:VO 為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生重影,使用一個 10K 的電位器調整對比度。第 4 腳:RS 為寄存器選擇,高電平時選擇數據寄存器,低電平時選擇指令寄存器。第 5 腳:R/W 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。第 6 腳:E 端為使能端,當 E 端由高電平跳變成低電平時,液晶模塊執行命令。第 714 腳:DB0DB7 為 8 位雙向數據線。第 1516 腳:背光燈電源。DS1302 讀寫時序 . . . 7 / 323. LCD1602 液晶屏的使用時序:4. LCD1602 存儲器 RAM:16

20、02 液晶控制器芯片部帶有 80 個 8 位的 RAM 緩沖區,其地址和屏幕的對應關系如圖示:DS1302 讀寫時序LCD1602 寫時序LCD1602 讀時序 . . . 8 / 3.4 電源模塊:電源模塊:系統的供電采用 5V 供電,具體的連接如圖示:變壓器采用的是:AC220AC9V,穩壓芯片是 LM7805。3. 硬件電路連接圖:以 STC89C52 單片機最小系統為核心控制,時鐘電路由 DS1302 芯片提供,采用三線與單片機進行通信,用四個獨立的按鍵進行年、月、日、時間、星期等調整,最終的結果通過 LCD1602 液晶顯示屏顯示出來。3.13.1 單片機的連接圖單

21、片機的連接圖其中 XTAL1 和 XTAL2 接 11.0592MHZ 的晶振,RST 經開關接+5V,控制系統的復位。P1 口與 DS1302計時模塊連接,進行通信與對其控制。P2 口與 LCD1602 液晶顯示模塊連接,控制著 LCD1602 的顯示。P3 口與按鍵連接,通過 P3 口輸入控制信號。 . . . 9 / 323.23.2 DS1302DS1302 計時模塊計時模塊其中 X1、X2 接晶振 32.768KHZ,VCC1、VCC2 接電源 I/O 接單片機的 P1.1,,進行數據的交換,SCLK 接單片機的 P1.0,RST 接單片機的 P1.2 引腳,進行指令的接收。3.33

22、.3 LCD1602LCD1602 液晶顯示模塊液晶顯示模塊其中 DB0DB7 分別接單片機的 P2.0P2.7,進行數據的傳輸,VO 接電阻進行背光亮度的調節,RS、RW 和 EN 分別接單片機的 P1.3P1.5,用于單片機的指令接收。3.43.4 按鍵模塊按鍵模塊開關一端接地,另一端接 P3.0P3.3,單片機用檢測 P3.0P3.3 引腳的電位判斷是否有鍵按下。 . . . 10 / 324. 系統的軟件設計:4.14.1 軟件設計流程圖:軟件設計流程圖:首先,編寫主程序,對計時模塊 DS1302 和顯示模塊 LCD1602 進行初始化,同時定義計時模塊、顯示模塊和按鍵模塊的控制程序,

23、之后讀取 DS1302 計時模塊預先設定數據,顯示模塊 LCD1602 進行顯示。按鍵檢測程序一直在檢測是否有鍵按下,如果 S1 鍵按下一次,主函數調用計時控制和顯示控制的函數對秒進行操作,此時秒閃爍,如果此時按下 S2、S3 可對其進行加減調整;按下如果S1 按下兩次,主函數調用計時控制和顯示控制的函數對分進行操作,此時分閃爍,如果此時按下S2、S3 可對其進行加減調整;按下如果 S1 按下三次,主函數調用計時控制和顯示控制的函數對時進行操作,此時時閃爍,如果此時按下 S2、S3 可對其進行加減調整;按下如果 S1 按下四次,主函數調用計時控制和顯示控制的函數對年進行操作,此時年閃爍,如果此

24、時按下 S2、S3 可對其進行加減調整;按下如果 S1 按下五次,主函數調用計時控制和顯示控制的函數對月進行操作,此時月閃爍,如果此時按下 S2、S3 可對其進行加減調整;按下如果 S1 按下六次,主函數調用計時控制和顯示控制的函數對日進行操作,此時日閃爍,如果此時按下 S2、S3 可對其進行加減調整;按下如果 S1 按下七次,主函數調用計時控制和顯示控制的函數對周進行操作,此時周閃爍,如果此時按下 S2、S3 可對其進行加減調整;按下如果 S1 按下八次,程序進入主函數。 . . . 11 / 325. 系統的調試:將系統的電源、計時模塊、按鍵模塊、顯示模塊、控制模塊,按照附錄一的電路做成

25、PCB 電路板,把元器件焊接在板子上。進行硬件的搭建。搭建好硬件之后,將編譯好的軟件程序下載到STC89C52 中。檢查無誤后,接通電源,看是否能夠實現預期的功能。在單個的模塊調試中,各個模塊均能夠正常穩定的工作,但是在將它們裝配在一塊,進行整體的調試時,就出現了其他一些問題,不能實現預期的功能。經過仔細的檢查和查閱資料、詢問老師同學等方式,進行解決。現在系統能夠穩定、正常的工作。調試過程:檢查各個器件完好,連接正常之后,接通電源,此時電源指示燈亮,液晶顯示屏LCD1602 同時亮,依次出現開機畫面;數秒之后,顯示初始的年、月、日、星期、時、分、秒。通過模式選擇鍵可以在時間顯示模式和鬧鐘模式之

26、間切換,通過移位鍵可以使液晶屏上的光標依次移位,將光標移位在想要的調節的位置,按加、減鍵可以進行該位置的數字的調整。加、減鍵可以在按下移位鍵之后,調節光標閃爍位置的數字。將模式切換到鬧鐘模式,依次調整時、分,當時間到預設的時間,蜂鳴器發出”滴滴” 聲。 . . . 12 / 326. 總結:通過本次課程設計,使我加深了對單片機的認識,并且掌握了單片機系統的設計、制作流程,收獲豐碩。功能上基本達標:時鐘與鬧鐘的顯示,調時間和鬧鐘功能以與鬧鐘鳴叫功能。時鐘與鬧鐘顯示功能,精確度完全可以滿足日常生活顯示時間的需要;調時間與鬧鐘功能,方便快捷。硬件設施基本合乎要求,軟件設計可以配合硬件實現其功能。技術

27、在不斷進步,機械式時鐘已經被淘汰,取而代之的是具有高度準確性和直觀性且無機械裝置,具有更長的使用壽命等優點的電子時鐘。電子時鐘更具人性化,更能提高人們的生活質量,更受人們歡迎。機械時代已經遠去,電子時代已經到來。做為新時代的我們,更應該提高自身能力,適應新時代的發展。知識來自實踐,多從生活中探尋所需要的。從這次的課程設計中,我真正的體會到,知識的重要性,特別是要理論聯系實際,把我們所學的理論知識運用到實際生活當中,學以致用。 . . . 13 / 32參考文獻1廣第,朱月秀,冷租祁.單片機基礎第三版.:航空航天大學(1259) 。2慶亮.C 語言程序設計實用教程.:機械工業,2005.3(11

28、00) 。3康華光.電子技術基礎數字部分.:高等教育,2008(1560) 。3康華光.電子技術基礎模擬部分.:高等教育,2008(1560) 。4志忠.數字電子技術.:高等教育,2003.12(30100) 。5與力.Protel 99 SE 原理圖與 PCB 設計教程.:電子工業,2007.8(48100) 。6欣電子設計從零開始.:清華大學,2005(10200) 。12邢小杰.單片機電子時鐘設計.中國科技博覽,2009。 . . . 14 / 32附錄一:整體電路連接圖: . . . 15 / 32附錄二:源程序代碼:#include#include#define uchar unsi

29、gned char#define uint unsigned intbit flag;uchar s1num;char nian,yue,ri,shi,fen,miao,week;char a_fen=10,a_shi=10;/初始值年周月時分秒uchar kaiji=-Welcome!-;/開機畫面顯示uchar kaiji1=*Good Luck!*; /123456789abcdefguchar alarm_table= Alarm:;uchar write_add7=0 x8c,0 x8a,0 x88,0 x86,0 x84,0 x82,0 x80;uchar read_add7=0

30、x8d,0 x8b,0 x89,0 x87,0 x85,0 x83,0 x81;sbit rs=P15; /1602 定義sbit rw=P14;sbit e=P13;sbit sck=P10;/1302 定義sbit io=P11;sbit rst=P12;sbit s1=P32; /調整按鍵sbit s2=P31;/加 1sbit s3=P30;/減 1sbit s4=P33;/模式選擇sbit dd=P34;/蜂鳴器 . . . 16 / 32void delay_1ms(uchar m) /延時函數 uchar i,j; for(j=0;jm;j+) for(i=0;i110;i+);

31、void beep()/蜂鳴器發聲dd=0;delay_1ms(50);dd=1;void write_(uchar ) /lcd1602 寫指令 e=0; rs=0; rw=0; P2=; delay_1ms(1); e=1; delay_1ms(1); e=0;void write_data(uchar dat) /lcd1602 寫數據 e=0; rs=1; rw=0; P2=dat; delay_1ms(1); e=1; delay_1ms(1); e=0;void write_sfm(uchar add,uchar dat) /時分秒刷新顯示函數 . . . 17 / 32uchar

32、 shi,ge;shi=dat/10;ge=dat%10;write_(0 xc0+add);write_data(0 x30+shi);write_data(0 x30+ge);void write_nyr(uchar add,uchar dat) /年月日刷新顯示函數uchar shi,ge;shi=dat/10;ge=dat%10;write_(0 x80+add);write_data(0 x30+shi);write_data(0 x30+ge);void write_ds1302_byte(uchar add) /ds1302 uchar i;for(i=0;i1;sck=1;vo

33、id write_ds1302(uchar add,uchar dat)rst=0;_nop_();sck=0;_nop_();rst=1; . . . 18 / 32_nop_();write_ds1302_byte(add);write_ds1302_byte(dat);rst=0;_nop_();io=1;sck=1;void write_tran_data(uchar add,uchar dat) /十進制轉換成 BCD 碼uchar t;t=dat/10;dat=dat%10;dat=t4|dat;write_ds1302(0 x8e,0 x00); /去除寫保護write_ds13

34、02(add,dat); /給指定的地址寫數據write_ds1302(0 x8e,0 x80); /加寫保護uchar read_ds1302(uchar add) /讀 ds1302 數據uchar vulue,i; rst=0;_nop_();sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);for(i=0;i1;if(io)vulue=vulue|0 x80; sck=1;rst=0; . . . 19 / 32_nop_();sck=0;io=1;sck=1;vulue=(vulue4)*10+(vulue&0 x0f);

35、/BCD 碼轉換成十進制return vulue; void tran_week(uchar dat) /星期轉化函數 switch(dat)case 1:write_(0 x80+13); write_data(M); write_data(o); write_data(n); break; case 2:write_(0 x80+13); write_data(T); write_data(u); write_data(e); break; case 3:write_(0 x80+13); write_data(W); write_data(e); write_data(d); break

36、;case 4:write_(0 x80+13); write_data(T); write_data(h); write_data(u); break; case 5:write_(0 x80+13); write_data(F); write_data(r); write_data(i); break;case 6:write_(0 x80+13); write_data(S); write_data(a); write_data(t); break; case 7:write_(0 x80+13); . . . 20 / 32 write_data(S); write_data(u);

37、write_data(n); break; void init() uchar t; write_(0 x38);/1602 初始化 write_(0 x0c); write_(0 x06); write_(0 x01);/ds1302 初始化 write_tran_data(0 x8c,13); write_tran_data(0 x8a,1); write_tran_data(0 x88,03);/0 x8c,0 x8a,0 x88,0 x86,0 x84,0 x82,0 x80 write_tran_data(0 x86,01);/ 年 、周、 月、 日、 時、 分、 秒 write_t

38、ran_data(0 x84,00); write_tran_data(0 x82,00); write_tran_data(0 x80,00); write_(0 x80); for(t=0;t16;t+) write_data(kaijit);delay_1ms(1); write_(0 x80+0 x40); for(t=0;t16;t+) write_data(kaiji1t);delay_1ms(1); for(t=0;t50;t+) delay_1ms(100); write_(0 x01);/清屏 . . . 21 / 32void scan_key() /按鍵判別函數 if(s

39、4=0) /選擇模式:時間/鬧鐘delay_1ms(10);if(s4=0)while(!s4);beep();flag=flag; if(flag=0)/選擇時間模式if(s1=0)delay_1ms(10);if(s1=0) while(!s1);beep();s1num+;switch(s1num)/光標閃爍定位case 7: write_(0 xc0+11);/秒write_(0 x0f);break;case 6: write_(0 xc0+8);/分write_(0 x0f);break;case 5: write_(0 xc0+5);/時write_(0 x0f);break;c

40、ase 4: write_(0 x80+13);/周write_(0 x0f);break;case 3: write_(0 x80+10);/日 . . . 22 / 32write_(0 x0f);break;case 2: write_(0 x80+7);/月write_(0 x0f);break;case 1: write_(0 x80+4);/年write_(0 x0f);break;default:s1num=0;write_(0 x0c); /取消閃爍break; if(s1num!=0) /加 1按鍵if(s2=0)delay_1ms(10);if(s2=0) while(!s

41、2);beep();switch(s1num)case 7: miao+;if(miao=60)miao=0;write_tran_data(0 x80,miao); /調整后的值送入 ds1302 中break;case 6: fen+;if(fen=60)fen=0;write_tran_data(0 x82,fen);break;case 5: shi+;if(shi=24) . . . 23 / 32shi=0;write_tran_data(0 x84,shi);break;case 4: week+;if(week=8)week=1;write_tran_data(0 x8a,we

42、ek);tran_week(week);break;case 3: ri+;if(ri=32)ri=1;write_tran_data(0 x86,ri);break;case 2: yue+;if(yue=13)yue=1;write_tran_data(0 x88,yue);break;case 1: nian+;if(nian=100)nian=1;write_tran_data(0 x8c,nian);break;if(s3=0)/減 1 按鍵delay_1ms(10);if(s3=0) while(!s3); beep();switch(s1num) . . . 24 / 32cas

43、e 7: miao-;if(miao=-1)miao=59;write_tran_data(0 x80,miao);break;case 6: fen-;if(fen=-1)fen=59;write_tran_data(0 x82,fen);break;case 5: shi-;if(shi=-1)shi=23;write_tran_data(0 x84,shi);break;case 4: week-;if(week=0)week=7;write_tran_data(0 x8a,week);tran_week(week);break;case 3: ri-;if(ri=0)ri=30;write_tran_data(0 x86,ri);break;case 2: yue-;if(yue=0)yue=12;write_tran_data(0 x88,yue);break;case 1: nian-;if(nian=-1)nian=99;write_tran_data(0 x8c,nian);break; . . . 25 / 32 if(flag=1) if(s1=0)delay_1ms(10);i

溫馨提示

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

評論

0/150

提交評論