數(shù)字溫度計設計報告11_第1頁
數(shù)字溫度計設計報告11_第2頁
數(shù)字溫度計設計報告11_第3頁
數(shù)字溫度計設計報告11_第4頁
數(shù)字溫度計設計報告11_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)字溫度計設計報告學校: 常州大學院系: 信息與電子工程系班級: 自動化141姓名: 肖磊 蔣金林指導老師: 鄭劍鋒時間: 2016年12月1日摘要隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活、工作、科研 、各 個領域,已經(jīng)成為一種比較成熟的技術(shù) , 本文主要介紹了一個基于 89S51 單片機 的測溫系統(tǒng),詳細描述了利用數(shù)字溫度傳感器 DS18B20和時鐘芯片DS1302 開發(fā)測溫系統(tǒng)和時間系統(tǒng)的過程 ,并且通過芯片AT24C02進行數(shù)據(jù)掉電保存。重點對傳感器在單片機下的硬件連接 

2、;,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分 析,特別是數(shù)字溫度傳感器 DS18B20和時鐘芯片DS1302 的數(shù)據(jù)采集過程 。對各部分的電路也一一進 行了介紹,該系統(tǒng)可以方便的實現(xiàn)實現(xiàn)溫度采集和時間顯示,并可根據(jù)需要任意設定 上下限報警溫度 ,更改當前時間。它們使用起來相當方便 ,具有精度高、量程寬、靈敏度高、體積 小、功耗低等優(yōu)點 ,適合于我們?nèi)粘I詈凸?#160;、農(nóng)業(yè)生產(chǎn)中的溫度測量 ,也可以 當作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。 DS

3、18B20 、DS1302與 AT89C51 結(jié)合實現(xiàn)最簡溫度,時間檢測系統(tǒng) ,該系統(tǒng)結(jié)構(gòu)簡單 ,抗干擾能力強 ,適合于 惡劣環(huán)境下進行現(xiàn)場溫度時間測量,有廣泛的應用前景。關(guān)鍵詞: 單片機 DS18B20 溫度傳感器  時鐘芯片DS1302 AT24C02 AT89S52目錄 1 概述.4 1.1 課程設計的意義 .4 1.2 設計的任務和要求 .4 2 系統(tǒng)總體方案及硬件設計 .5&#

4、160;2.1 數(shù)字溫度計設計方案論證 .5 2.1.1 方案一.5 2.1.2 方案二.5 2.2 系統(tǒng)總體設計 .6 2.3 系統(tǒng)模塊.7 2.3.1 主控制器.7 2.3.2 顯示電路.8 2.3.3 溫度傳感器.8 2.3.4時鐘芯片 .2.3.5掉電數(shù)據(jù)保存電路.2.3.6報警溫度調(diào)整按鍵 .9 3 系統(tǒng)軟件算法分析 .10 3.1 主程

5、序流程圖 .10 3.2 讀出溫度子程序 .10 3.3 溫度轉(zhuǎn)換命令子程序 .113.4 計算溫度子程序 .11 3.5 顯示數(shù)據(jù)刷新子程序 .11 3.6 按鍵掃描處理子程序 .12 4 實驗仿真.13 5 總結(jié)與體會.14 參考文獻 .15附 1 源程序代碼 .16 1 概述1.1數(shù)字溫度計基本功能1、 能數(shù)字顯示被測溫度,測量溫度范圍010

6、0;2、 分辨率不低于0.53、 帶有計時和時間顯示功能;4、 至少有高、低兩路限溫控制輸出接口控制外部電路,實際制作時可以發(fā)光二極管模擬顯示其控制狀態(tài)輸出;5、 高、低兩路限溫控制點可在0100范圍內(nèi)任意獨立設置;6、 當溫度達到高、低限溫控制點發(fā)出聲光報警。擴展部分1、提高溫度測量精度,使分辨率不低于0.1;2、自動順時測量(測量間隔時間可調(diào))并保存溫度值和測量時間;3、可以查詢、回顯存儲器中自動測量的溫度值和測量時刻;4、多路溫度巡檢(至少兩路)和多路溫度、時間保存。 數(shù)字溫度計框圖   2 理論分析與計算  2.1 

7、數(shù)字溫度計設計方案論證  2.1 單片機的選擇:方案1:采用傳統(tǒng)的STC89C52RC作為電機的控制核心。單片機算術(shù)運算功能強,軟件編程靈活、自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點,使其在各個領域應用廣泛。方案2:采用STM32F103ZET6微控制器(ARM cortexM3內(nèi)核),還帶有非易失性512k Flash程序存儲器。它是一種高性能、低功耗的32位CMOS微處理芯片,市場應用最多。其主要特點如下:512KB Flash ROM,72M的主頻,片內(nèi)集成AD、DA, 以及具有DMA、SPI總線。方案3:采用MS

8、P430單片機,MSP430系列單片機是一個16位的單片機,采用了精簡指令集(RISC)結(jié)構(gòu),具有豐富的尋址方式(7 種源操作數(shù)尋址、4 種目的操作數(shù)尋址)、簡潔的 27 條內(nèi)核指令以及大量的模擬指令;大量的寄存器以及片內(nèi)數(shù)據(jù)存儲器都可參加多種運算;還有高效的查表處理指令。這些特點保證了可編制出高效率的源程序。由于本系統(tǒng)對CPU運算速度要求不高,不需要執(zhí)行很復雜的運算,加上成本上和隊員各自的技術(shù)特點考慮,綜合起來選STC89C52RC較適合本系統(tǒng)的要求。2.2.溫度傳感器的選擇2.21. 方案一 由于本設計是測溫電路 ,可以使用熱敏電阻之類的器件利用其感溫效應&#

9、160;,在將隨被測溫 度變化的電壓或電流采集過來 ,進行 A/D 轉(zhuǎn)換后,就可以用單片機進行數(shù)據(jù)的處理 ,在顯示 電路上,就可以將被測溫度顯示出來 ,這種設計需要用到 A/D 轉(zhuǎn)換電路,其中還涉及到電阻 與溫度的對應值的計算,感溫電路比較麻煩 。而且在對采集的信號進行放大時容易受溫度的 影響出現(xiàn)較大的偏差。  2.2 2 .方案二 進而考慮到用溫度傳感器 ,在單片機電路設計中 ,大多都是使用傳感器

10、0;,所以這是非常 容易想到的,所以可以采用一只溫度傳感器 DS18B20,此傳感器,可以很容易直接讀取被測 溫度值,進行轉(zhuǎn)換,電路簡單,精度高,軟硬件都以實現(xiàn),而且使用單片機的接口便于系統(tǒng) 的再擴展,滿足設計要求。2.2方案選擇 從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費用較低,可靠性高,軟件設 計也比較簡單,故采用了方案二。2.3 溫度時間顯示模塊:2.31. 方案1:使用液晶顯示屏顯示時間溫度數(shù)字。 液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險,平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好

11、,分辨率高,抗干擾能力強等特點,但是液晶顯示屏使用的溫度范圍很窄,正常工作溫度范圍為0+55,存儲溫度范圍-2060。2.32. 方案2:使用傳統(tǒng)的LED數(shù)碼管顯示。 數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護,同時其精度比較高,稱重輕,精確可靠,操作簡單。但顯示效果很差。方案3:使用彩屏(TFT)顯示時間溫度數(shù)字,彩屏顯示屏幕較大,所需代碼冗長,處理不方便。由于試題上說明顯示只能采用數(shù)碼管顯示,故采用傳統(tǒng)的LED數(shù)碼管顯示。三 鍵盤模塊: 方案1:使用獨立式鍵盤。獨立式鍵盤是指直接用I/O口線構(gòu)成的單個按鍵電路。獨立式按鍵電路

12、配置靈活,軟件結(jié)構(gòu)簡單。 方案2:使用矩陣式鍵盤。矩陣式鍵盤是由行線和列線組成,按鍵位于行、列的交叉點上,行線、列線分別連接到按鍵開關(guān)的兩端。其特點是簡單且不增加成本,這種鍵盤適合按鍵數(shù)量較多的場合。由于考慮到本系統(tǒng)所需的按鍵的不多,并且為了簡化程序,選擇獨立式按鍵。 電路與程序設計主控制器STC89C52RC STC89C52RC單片機是宏晶科技推出的新一代高速、低功耗、超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時鐘、機器周期和6時鐘、機器周期可以任意選擇。 主要特性如下: 增強型8051單片機,6時鐘、機器周期和12時鐘、機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051

13、單片機。 工作電壓:5.5V3.3V 工作頻率范圍:044MHz。 用戶應用程序空間為8K字節(jié) 片上集成512字節(jié)RAM 通用I/O口32個,復位后為:P1/P2/P3/P4是準雙向口/弱上位,P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。 ISP(在系統(tǒng)可編程)/IAP(再應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RXD/P3.0,TXD/P3.1 )直接下載用戶程序,數(shù)秒即可完成一片。 具有EEPROM功能 具有看門狗功能 共3個16位定時器/計數(shù)器。及定時器T0、T1、T2 外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power D

14、own模式可由外部中斷低電平觸發(fā)中斷方式喚醒 通用異步串行口(UART),還可用定時器實現(xiàn)多個UART 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級) PDIP封裝 主控制器STC89C52RC電路圖溫度探測單元: DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟。DALLAS 半導體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55+125 攝氏度,可編程為9位12 位轉(zhuǎn)換精度,測溫分辨率可達0.0625攝氏度,

15、分辨率設定參數(shù)以及用戶設定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也可以采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。 DS18B20 的性能特點如下: 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理

16、器與DS18B20的雙向通訊 DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫 DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi) 適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)據(jù)線供電 測溫范圍55125,精度為±0.5 零待機功耗 測量結(jié)果直接輸出數(shù)字信號,以“一線總線”穿行傳送給CPU,同時可傳送CRC校驗位,具有極強的抗干擾糾錯能力 負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作&

17、#160;以上特點使DS18B20非常適用與多點、遠距離溫度檢測系統(tǒng)。以上特點使DS18B20非常適用與多點、遠距離溫度檢測系統(tǒng)。 DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 4.2 所示,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。2DS18B20溫度傳感器接線圖外部時鐘電路:系統(tǒng)采用DS1302時鐘芯片,DS1

18、302是美國DALLAS公司推出的具有涓細電流充電功能的低功耗實時時鐘芯片,它可以對年、月、日、星期、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;數(shù)字顯示是采用的液晶顯示屏來顯示,可以同時顯示年、月、日、星期、時、分、秒和溫度等信息。此外,該電子時鐘還具有時間校準等功能。DS1302的性能特性: 實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪赀M行比較; 用于高速數(shù)據(jù)暫存的31*8位RAM; 最少引腳的串行I/O; 2.55.5V電壓工作范圍; 2.5V時耗小于300nA; 用于時鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡單

19、的三線接口。 時鐘芯片DS1302與外圍電路的連接:與MCS-51單片機的接口是由3條線來完成的,MCS-51單片機的P1.0與時鐘芯片的數(shù)據(jù)傳輸端I/O相連,P1.1用來作為DS1302輸入時鐘SCLK控制端,P1.2控制DS1302的復位輸入端RST。DS1302的X1和X2管腳外接標DS1302的復位引腳通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。 RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址命令序列送入移位寄存器;其次,RST提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過

20、程中置RST為低電平,則會終止此次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。外部DS1302時鐘電路接線圖外部存儲電路:系統(tǒng)兼有時間溫度顯示功能,對工作數(shù)據(jù)要進行掉電保護,并需要再硬件上增加掉電檢測電路,但存在電池不可靠及拓展存儲芯片占用單片機過多口線的缺點。采用具有I2C總線接口的串行EEPROM器件可很好的解決掉電數(shù)據(jù)保護問題。系統(tǒng)采用AT24C01數(shù)據(jù)存儲芯片。AT24C01性能特征:1、與400KHz I2C 總線兼容; 2、1.8 到6.0 伏工作電壓范圍; 3、低功耗CMOS 技術(shù);

21、 4、寫保護功能當WP 為高電平時進入寫保護狀態(tài); 5、頁寫緩沖器; 6、自定時擦寫周期; 7、1,000,000 編程/擦除周期; 8、可保存數(shù)據(jù)100 年; 外部AT24C01存儲電路接線圖顯示電路設計主要使用數(shù)碼管功能實現(xiàn),顯示部分硬件用8只數(shù)碼管為顯示管。前四個顯示溫度,后四個顯示溫度。這些數(shù)碼管的共陰相連在一起通過在數(shù)碼管的陽極加+5V電壓或0V電壓數(shù)碼管形成不同的數(shù)字。數(shù)碼管性能特征:1、 低功耗CMOS 技術(shù);2、 ap數(shù)碼管段選;3、 AD數(shù)碼管位選;4、 低功耗CMOS 技術(shù);數(shù)碼管連線圖聲光報警電路接線圖:按鍵功能:A:溫度,高溫報警,低溫報警切換。B:報警值加一;C:報警

22、值減一;D:返回到當前溫度;E:時分之間切換;F:時分加一;G:時分減一;系統(tǒng)軟件設計數(shù)字溫度計的測量溫度程序主要包括5個方面的內(nèi)容:一是單片機從DS1302中讀取數(shù)據(jù)進行計數(shù),二是利用按鍵進行時間溫度上下限的調(diào)整,三是單片機中讀取DS1302,EEPROM中的和DS18B20采集的數(shù)據(jù)在數(shù)碼管上顯示時間溫度。主程序流程圖 主程序的主要功能是負責溫度,時間的實時顯示 、讀出并處理 DS18B20 的測量的當前溫度值,DS1302的時間。  初始化 讀取溫度,時間 讀出溫度值溫度,時鐘時間,計算處理顯示數(shù)據(jù)刷新 發(fā)溫度,時間轉(zhuǎn)換開始 命令 調(diào)試顯

23、示子程序 結(jié)束 主程序流程圖3.2讀出溫度子程序 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其流程圖如圖所示 發(fā)DS18B20的復位命令 發(fā)跳過ROM命令 發(fā)讀取溫度命令 讀取操作,CRC校驗 Y 9字節(jié)完 N Y CRC N 校驗正 移入溫度暫存器 結(jié)束 讀溫度流程圖溫度超出報警讀出溫度超過上限值時,發(fā)出警報,讀出溫度低于下限值時,發(fā)出警報,通過按鍵更改溫度上下限。開始控制鍵有效,進入溫度上下限設置報警溫度上限設置溫度超出溫度正常溫度下限設置溫度正常溫度超出報警讀出DS1302時鐘芯片的時間,在數(shù)碼管上顯示出來 4.測試方案與測

24、試結(jié)果4.1 測試儀器數(shù)字萬用表、秒表、電吹風。數(shù)字萬用表主要用來測試分立元件的電阻、壓降、漏電流、截止、導通狀態(tài)等參數(shù)。秒表用來測試時間的準確度。電吹風用來測試溫度的變化。4.2 測試方法:先是硬件調(diào)試,溫度傳感器DS18B20能否正常工作,讀出溫度;時鐘芯片能否正常計時,接著軟件調(diào)試,最后是軟硬件調(diào)試。調(diào)試時可以采用逐個調(diào)試,先調(diào)試溫度傳感器,接著是時鐘芯片,最后在整體調(diào)試。4.3 測試數(shù)據(jù)及結(jié)果分析測試溫度(ºC)實際溫度(ºC)2524.33030.84041.26061.3測試時間(t)實際時間(t)6060120120180180240240結(jié)果分析:測試溫度與

25、實際溫度存在著一定誤差,誤差不是很大。猜測是周圍環(huán)境對測得溫度產(chǎn)生了影響,但是影響不是很大,可以忽略不計。測試時間與實際時間之間不存在誤差,達到了我們的要求。5問題分析與解決方法1 問題: 進行硬件調(diào)試時,數(shù)碼管顯示的數(shù)字基本錯誤。 解決方法: 用萬用表檢查接線,發(fā)現(xiàn)數(shù)碼管的8個段選,接錯4位,重新焊接后顯示無誤。2 問題: 測溫度時,數(shù)碼管上顯示亂碼。 解決方法: 先用萬用表檢查接線,檢查無誤;接著檢查程序,發(fā)現(xiàn)DS18B20管腳定義錯誤,經(jīng)過改正后,能夠正常顯示溫度。3 問題: 整體調(diào)試時,兩個數(shù)碼管雖能準確顯示溫度和時間,但是數(shù)碼管不停的閃爍,在逐個調(diào)試時沒有這個問題。解決方法: 先是檢

26、查軟件有沒有弄錯,檢查無誤,查閱資料才弄清原因。因為數(shù)碼管顯示是通過人眼視覺暫留效果,得不停的刷新人眼才無法辨別出來,閃爍是因為刷新的速度比較慢,說明程序在一個周期里面執(zhí)行的代碼時間過長。經(jīng)過一些調(diào)整,只能進行優(yōu)化,而不能徹底解決這個問題。5 心得體會     通過本次設計,使我們對單片機的了解有了更加深一步,我發(fā)現(xiàn)只有動手做才會孰能技巧,還有對材料的整理和理解。這次設計運用到的知識很多方面,尤其是單片機,像AT89C52,引腳多,硬件內(nèi)部線路接通,所以用起來很方便,還有ds1302芯片與單片機之間的連接,以及如入使用ds1302,d

27、s12b20芯片。當然也要對這些元器件作相應調(diào)查。主要就是電路原理圖,還有對引腳的作用熟悉。對于軟件方面則是靈活運用單片機有關(guān)的程序語言,還有很多擴展功能,由于知識匱乏,但是理論知識還是比較詳細的。我們最大的成功之處是在這整個過程,動腦尋求解決一個一個問題的辦法,對程序是不斷思索,務必寫出很簡單的程序來,使得數(shù)字溫度計能做成功!附錄代碼#include<reg52.h>#include<stdio.h>#define uchar unsigned char #define uint unsigned intsbit ds=P22;sbit wela=P12;sbit d

28、ula=P10;sbit shidula=P11; /段選 sbit led=P20;sbit beep=P23;sbit k1=P25;sbit k2=P26;sbit k3=P27;sbit k4=P24;sbit T_RST=P37;/ds1302-5sbit T_IO=P36;/ds1302-6sbit T_CLK=P35;/ds1302-7sbit ACC0=ACC0;sbit ACC7=ACC7;/累加器A 51單片機原理中有介紹sbit up=P32;sbit down=P33;sbit set=P34;sbit shangxian=P17;/溫度上限指示燈sbit xiaxia

29、n=P16;/溫度下限指示燈sbit zhengwen=P15;sbit fuwen=P14;sbit baojing=P13;uint temp1;float f_temp;int alarmH=310;int alarmL=100;uchar a,b,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg;int hour,mie,sei;uchar clk_time3; /秒,分,時寄存器初始值code uchar ledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40

30、;/數(shù)碼管段碼 unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;void key_to1();void key_to2();void key();/*DS1302:寫入操作(上升沿)*/ void write_byte(uchar da) uchar i; ACC=da; for(i=8;i>0;i-) T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>

31、;1; /*DS1302:讀取操作(下降沿)*/uchar read_byte(void) uchar i; for(i=0;i<8;i+) ACC=ACC>>1; T_CLK = 1; T_CLK = 0; ACC7 = T_IO; return(ACC);/*DS1302:寫入數(shù)據(jù)(先送地址,再寫數(shù)據(jù))*/ void write_1302(uchar addr,uchar da) T_RST=0; /停止工作 T_CLK=0; T_RST=1; /重新工作 write_byte(addr); /寫入地址 write_byte(da); T_RST=0; T_CLK=1;/

32、*DS1302:讀取數(shù)據(jù)(先送地址,再讀數(shù)據(jù))*/uchar read_1302(uchar addr) uchar temp; T_RST=0; /停止工作 T_CLK=0; T_RST=1; /重新工作 write_byte(addr); /寫入地址 temp=read_byte(); T_RST=0; T_CLK=1; /停止工作 return(temp);/*延時程序=a*1ms*/void delay(uchar a) uchar i; while(a- !=0) / led_disp(); for(i=0;i<125;i+); /*顯示程序*/* DS1302秒,分,時寄存器

33、是BCD碼形式: 用16求商和余進行"高4位"和"低4位"分離 */*/ void led_disp() uchar cant1,cant2; if(b=0) cant1=0;cant2=0;clock_ms=clk_time0/ 16; clock_mg=clk_time0%16;sei=clock_ms*10+clock_mg;clock_fs=clk_time1/ 16; clock_fg=clk_time1%16;mie=clock_fs*10+ clock_fg;clock_ss=clk_time2/ 16; clock_sg=clk_time

34、2%16;/BCD*to*10hour=clock_ss*10+ clock_sg; /用16求商和余進行"高4位"和"低4位"分離 if(b=1) cant1+; cant2=0;clock_ss=hour/ 10; clock_sg=hour%10;clock_fs=mie/ 10; clock_fg=mie%10;clock_ms=sei/10; clock_mg=sei%10; if(b=2) cant1=0; cant2+;clock_ss=hour/ 10; clock_sg=hour%10;clock_fs=mie/ 10; clock_f

35、g=mie%10;clock_ms=sei/10; clock_mg=sei%10; if(cant1<=3) /*P2=0;P0=ledmapclock_ss;delay(1);P0=0X00;P2=1;P0=ledmapclock_sg;/時個位delay(1);P0=0X00;*/wela=1;P0=0xef;wela=0; shidula=1; P0=ledmapclock_ss; shidula=0;delay(1);P0=0xff;wela=1;P0=0xdf;wela=0;shidula=1;P0=ledmapclock_sg;/時個位shidula=0;delay(1);

36、P0=0xff; if(cant1=5) cant1=0; /*P2=2;P0=ledmap10;/顯示"-"數(shù)組里的 0x40delay(1);P0=0X00;*/ if(cant2<=3) /*P2=3;P0=ledmapclock_fs;/分十位delay(1); P0=0X00;P2=4;P0=ledmapclock_fg;/時個位delay(1);P0=0X00;*/wela=1;P0=0xbf;wela=0;shidula=1;P0=ledmapclock_fs;/分十位shidula=0;delay(1);P0=0xff;wela=1;P0=0x7f;w

37、ela=0;shidula=1;P0=ledmapclock_fg;/時個位shidula=0;delay(1);P0=0xff; if(cant2=5) cant2=0; /* P2=5;P0=ledmap10;/顯示"-"數(shù)組里的 0x40delay(1);P0=0X00; P2=6;P0=ledmapclock_ms;/秒十位delay(1); P0=0X00;P2=7;P0=ledmapclock_mg;delay(1);P0=0X00;*/wela=1;P0=0xbf;wela=0;shidula=1;P0=ledmapclock_fs;/分十位shidula=0

38、;delay(1);P0=0xff;wela=1;P0=0x7f;wela=0;shidula=1;P0=ledmapclock_fg;/時個位shidula=0;delay(1);P0=0xff; /*按鍵延時程序=a*1ms*/void delayAJ(uchar a) uchar i; while(a-) for(i=0;i<125;i+);led_disp(); void key() uchar clock_s1, clock_s2, clock_f1, clock_f2; delayAJ(5); if(set=0) delayAJ(5);/消抖 if(set=0) b+; de

39、layAJ(5); while(!set) delayAJ(5); if(b!=0)/時分設定 if(up=0) delayAJ(5);/消抖 if(up=0) if(b=1) hour+; if(hour>=24) hour=0;delayAJ(10);if(b=2) mie+;if(mie>=60) mie=0;delayAJ(10); /以上時鐘+設定 if(down=0) delayAJ(5);/消抖 if(down=0) delayAJ(5); if(b=1) hour-; if(hour<0) hour=23; delayAJ(10); if(b=2) mie-;

40、 if(mie<0) mie=59; delayAJ(10); /以上時鐘-設定 /*以下是轉(zhuǎn)BCD碼的程序 DS1302認BCD碼 clock_s1=hour/10;clock_s2=hour%10;clock_s1=clock_s1&0xff;clock_s2=clock_s2&0xff;clock_s1<<=4;clock_s1=clock_s1|clock_s2;/ 10to16clock_f1=mie/10;clock_f2=mie%10;clock_f1=clock_f1&0xff; /全1出1 與運算clock_f2=clock_f2&0xff;clock_f1<<=4;clock_f1=clock_f1|clock_f

溫馨提示

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

評論

0/150

提交評論