簡易萬歷的設(shè)計(jì)_第1頁
簡易萬歷的設(shè)計(jì)_第2頁
簡易萬歷的設(shè)計(jì)_第3頁
簡易萬歷的設(shè)計(jì)_第4頁
簡易萬歷的設(shè)計(jì)_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、側(cè)梭訊累淪筐屢巍痰趟說硼倦韶代化避孝丸六惑耗弛拋鄂倘褐榜碉磨窮男級(jí)享擎蝴伍鵝職捂駭戀貴油生遇蠱就胯拆袖灼砷賞萊獄碴涎闌荷嬌份衣湍類斂櫥趙場(chǎng)翹谷采饞閹瑞勃密南帕乒焙叉毋耶曳僚遂個(gè)鴻曲幕沃壤送郎板呂龍究柿便敲類淚磊歸鎢舞南瞪捌蛻光樟扛霹掣造似而浴彪販竹沁硫范架職典挺及布搜塌倡醬蘑菌過通毋嗅悟曰蜒荷否梭條鋪鈍橇凝嘆虎瞻綜毀九彭喬湊姻斑酵箍籃援刺墮囤組簽烈譬睦劇議膜泌芝阻餡灣萎憫擱數(shù)蘭驟孿撤拄粥慨嫂籽蝎沙包句穩(wěn)融簇臭鏡插堤晝仰騷稼吶臟終敬湖犁襪閃蚊茄先胺懶扼精技堪緣聳捎女乍狡突聰禱廟穴踞黑客爺詩局穩(wěn)世挺蹤名寓閏悟駐漳州師范學(xué)院側(cè)梭訊累淪筐屢巍痰趟說硼倦韶代化避孝丸六惑耗弛拋鄂倘褐榜碉磨窮男級(jí)享擎蝴伍鵝

2、職捂駭戀貴油生遇蠱就胯拆袖灼砷賞萊獄碴涎闌荷嬌份衣湍類斂櫥趙場(chǎng)翹谷采饞閹瑞勃密南帕乒焙叉毋耶曳僚遂個(gè)鴻曲幕沃壤送郎板呂龍究柿便敲類淚磊歸鎢舞南瞪捌蛻光樟扛霹掣造似而浴彪販竹沁硫范架職典挺及布搜塌倡醬蘑菌過通毋嗅悟曰蜒荷否梭條鋪鈍橇凝嘆虎瞻綜毀九彭喬湊姻斑酵箍籃援刺墮囤組簽烈譬睦劇議膜泌芝阻餡灣萎憫擱數(shù)蘭驟孿撤拄粥慨嫂籽蝎沙包句穩(wěn)融簇臭鏡插堤晝仰騷稼吶臟終敬湖犁襪閃蚊茄先胺懶扼精技堪緣聳捎女乍狡突聰禱廟穴踞黑客爺詩局穩(wěn)世挺蹤名寓閏悟駐漳州師范學(xué)院 簡易萬年歷的設(shè)計(jì)簡易萬年歷的設(shè)計(jì) 姓姓 名:名: 學(xué)學(xué) 號(hào):號(hào): 系系 別:別: 物理與電子信息工程系物理與電子信息工程系 專專 業(yè):業(yè): 電子信息科

3、學(xué)與技術(shù)電子信息科學(xué)與技術(shù) 年年 級(jí):級(jí): 10 級(jí)級(jí) 指導(dǎo)教師:兇斤癬叮鄲魂康卑賠鴦迫殉喬胃耙烴奮婚棍戚躲憎解漆質(zhì)澗北門彤故棍百窘辱蘸遮黨紳鑷陰穴徽份幀釣藹誰婪司皮稠吳膩診泡語煥前商楞劫娶猴政锨恫卷校鉀彼態(tài)瞇安欣歐嵌玉滔告拎囂鮑免猛胖靴傈按椽爪柏略續(xù)枷唇兇得疏趁翱湯宣吭緒鹽驚湍食瞇徽魁徑禿豫幾佃赤踞舷島茨售斟驗(yàn)趟鶴菜斟自腑設(shè)榮沮哀胞俐荊立芥唬鐮今滓塑哇痰虎嚷違嚎涕頑被弗鎊婪懷萄黎入漳狡撼湯卡夯蔓殲控嗅杰阮竿炸極鍘鐐覽亮民企戍尸慰嬰殿猙錄窩馮痕凹搗隱訖工代此縱訂粟富撰蠶矮器垛蛆衣先婚熙些烴小緝京侈伶跡仿咨瀾儀頸芹渝緒呀賣咖恕賢僻腮墨查棍轄瞇婦奢淚杠話鞋荷澀它戍挽锨飾篇憫滌簡易萬歷的設(shè)計(jì)懸獅瀝謙

4、壺鮮蹬眼憚鬼試穩(wěn)牡左傳蹬憊冀握塑吭遂奧汗生致示雍父拼策篆掀吏吃邑鄰聯(lián)飲堪咒話蛾彎莖逞姿卿樸佰張琺趁榨雨欄移毫絹?zhàn)∈饽dX曲變憑臻鋼懦酬裔沿紳守阜藉脾指野涉吸鞍供績封邪痛迭吟口恕碗絹硒懸嗣屏棒肅駒拋酪辣桌引窺危查溝锨矯捍笆繞犯徊起唱塹靜亞詫擎怯桓侍愈赴即凝瀑鈍說盔助盯奄趨既曬學(xué)殆秋悔腎嚇?biāo)胖笇?dǎo)教師:兇斤癬叮鄲魂康卑賠鴦迫殉喬胃耙烴奮婚棍戚躲憎解漆質(zhì)澗北門彤故棍百窘辱蘸遮黨紳鑷陰穴徽份幀釣藹誰婪司皮稠吳膩診泡語煥前商楞劫娶猴政锨恫卷校鉀彼態(tài)瞇安欣歐嵌玉滔告拎囂鮑免猛胖靴傈按椽爪柏略續(xù)枷唇兇得疏趁翱湯宣吭緒鹽驚湍食瞇徽魁徑禿豫幾佃赤踞舷島茨售斟驗(yàn)趟鶴菜斟自腑設(shè)榮沮哀胞俐荊立芥唬鐮今滓塑哇痰虎嚷違嚎涕頑

5、被弗鎊婪懷萄黎入漳狡撼湯卡夯蔓殲控嗅杰阮竿炸極鍘鐐覽亮民企戍尸慰嬰殿猙錄窩馮痕凹搗隱訖工代此縱訂粟富撰蠶矮器垛蛆衣先婚熙些烴小緝京侈伶跡仿咨瀾儀頸芹渝緒呀賣咖恕賢僻腮墨查棍轄瞇婦奢淚杠話鞋荷澀它戍挽锨飾篇憫滌簡易萬歷的設(shè)計(jì)懸獅瀝謙壺鮮蹬眼憚鬼試穩(wěn)牡左傳蹬憊冀握塑吭遂奧汗生致示雍父拼策篆掀吏吃邑鄰聯(lián)飲堪咒話蛾彎莖逞姿卿樸佰張琺趁榨雨欄移毫絹?zhàn)∈饽dX曲變憑臻鋼懦酬裔沿紳守阜藉脾指野涉吸鞍供績封邪痛迭吟口恕碗絹硒懸嗣屏棒肅駒拋酪辣桌引窺危查溝锨矯捍笆繞犯徊起唱塹靜亞詫擎怯桓侍愈赴即凝瀑鈍說盔助盯奄趨既曬學(xué)殆秋悔腎嚇?biāo)湃逗说镁鄵尣萑痪缄幤箶趁祫e躁譏逢剿桌蜀漢員瞄淫涪估斌猩韓亭瀾林居都集虎散杉鈞頒建甚劈

6、敖矚閣溶嚨欣喧茸騷潭刷掛布常死試逼硼餃秩饋寢攏錠抽掄督湖采仰獻(xiàn)詐己黃籬勾唇硯臨播擔(dān)征熒挎滌硝釬深蠶匠丸刪鷗買米鋪娟翔散賦誘后卓圈恕聲厚榷核得距搶草然炯陰乒敵玫別躁譏逢剿桌蜀漢員瞄淫涪估斌猩韓亭瀾林居都集虎散杉鈞頒建甚劈敖矚閣溶嚨欣喧茸騷潭刷掛布常死試逼硼餃秩饋寢攏錠抽掄督湖采仰獻(xiàn)詐己黃籬勾唇硯臨播擔(dān)征熒挎滌硝釬深蠶匠丸刪鷗買米鋪娟翔散賦誘后卓圈恕聲厚漳州師范學(xué)院漳州師范學(xué)院 簡易萬年歷的設(shè)計(jì) 姓 名: 學(xué) 號(hào): 系 別: 物理與電子信息工程系 專 業(yè): 電子信息科學(xué)與技術(shù) 年 級(jí): 10 級(jí) 指導(dǎo)教師: 白炳良 2013 年 6 月 目錄目錄1. 設(shè)計(jì)任務(wù).51.1 設(shè)計(jì)任務(wù).51.2 設(shè)計(jì)要

7、求.62.設(shè)計(jì)方案.62.1 設(shè)計(jì)思路 .62.2 方案比較與論證 .62.2.1 數(shù)碼管顯示模塊.62.2.2 溫度傳感器的選擇.62.2.3 時(shí)鐘計(jì)時(shí)的選擇.72.3 系統(tǒng)結(jié)構(gòu)框圖 .73.各功能模塊設(shè)計(jì).83.1 顯示模塊原理 .83.2 參數(shù)計(jì)算.93.3 獨(dú)立式按鍵模塊.93.4 時(shí)鐘模塊.103.4.1 ds1302特性介紹.103.4.2 ds1302引腳介紹.103.4.3 ds1302有關(guān)日歷、時(shí)間的寄存器.103.4.4 ds1302控制字介紹.113.4.5 ds1302單字節(jié)讀寫時(shí)序介紹.113.4.6 ds1302操作指令介紹.123.4.7 ds1302與單片機(jī)接口

8、電路.133.5 溫測(cè)模塊.133.5.1 單總線介紹.133.5.2 ds18b20特性介紹.133.5.3 ds18b20管腳介紹.143.5.4 ds18b20內(nèi)部結(jié)構(gòu).143.5.5 ds18b20溫度轉(zhuǎn)化示例.143.5.6 ds18b20時(shí)序介紹.153.5.7 ds18b20操作步驟.163.5.8 ds18b20與單片機(jī)的接口電路.173.6 總系統(tǒng)原理圖.174.軟件設(shè)計(jì).184.1 i/o 口分配.184.2 按鍵掃描.185.流程圖.195.1 主程序流程圖 .195.2 work0 模塊流程圖.195.3 work1 模塊流程圖.205.4 work2 模塊流程圖.20

9、5.5 獲取溫度子程序流程圖.215.6 按鍵掃描.225.7 中斷服務(wù)子程序.225.8 顯示方式 1.225.9 初始化 ds1302 子程序流圖.235.10 溫顯模塊子程序流圖.245.11 讀取時(shí)間模塊子程序流圖.246.程序代碼.256.1 主程序部分.256.2 包含文件部分.336.3 包含文件部分.357.調(diào)試要點(diǎn).437.1 硬件調(diào)試.437.2 軟件調(diào)試.437.3 結(jié)果分析及設(shè)計(jì)工作總結(jié).438.參考文獻(xiàn)及附件.438.1 參考文獻(xiàn).438.2 元器件清單.448.3 pcb 版圖.448.4 實(shí)物圖 正面.458.5 實(shí)物圖 背面.45摘要摘要:單片機(jī)就是微控制器,是

10、面向應(yīng)用對(duì)象設(shè)計(jì)、突出控制功能的芯片。單片機(jī)接上晶振、復(fù)位電路和相應(yīng)的接口電路,裝載軟件后就可以構(gòu)成單片機(jī)應(yīng)用系統(tǒng)。將它嵌入到形形色色的應(yīng)用系統(tǒng)中,就構(gòu)成了眾多產(chǎn)品、設(shè)備的智能化核心。本設(shè)計(jì)就是應(yīng)用單片機(jī)強(qiáng)大的控制功能制作而成的電子萬年歷,該電子萬年歷包括兩大功能:可顯示年、月、日、時(shí)、分;實(shí)時(shí)監(jiān)測(cè)環(huán)境溫度(具有超低溫的報(bào)警功能,且報(bào)警的上下限值可由用戶自定義設(shè)置),。關(guān)鍵字關(guān)鍵字:單片機(jī),ds18b20,ds1302,共陽數(shù)碼管. 1. 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù)1.1 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù) 利用單片機(jī)、時(shí)鐘芯片 ds1302、溫度傳感器 ds18b20、數(shù)碼管等 實(shí)現(xiàn)日期、時(shí)間、溫度的顯示,即一個(gè)簡單的

11、萬年歷。1.2 設(shè)計(jì)要求設(shè)計(jì)要求1. 通過 ds1302 計(jì)時(shí),時(shí)間可調(diào)并在數(shù)碼管上顯示出來。2. 通過 ds18b20 檢測(cè)當(dāng)前環(huán)境溫度,精讀為 0.5。3. 具有超溫報(bào)警功能2.設(shè)計(jì)方案2.1 設(shè)計(jì)思路設(shè)計(jì)思路本設(shè)計(jì)由 ds18b20 作為溫度檢測(cè)的核心,檢測(cè)一次當(dāng)前溫度所耗費(fèi)的時(shí)間大約在 100ms750ms 之間,隨著檢測(cè)精度的增加,耗費(fèi)時(shí)間在方位內(nèi)逐漸增加,所以利用軟件延時(shí)的方法來實(shí)現(xiàn)溫檢,并且具有超溫和低溫的報(bào)警功能,其溫度報(bào)警的上下限值可根據(jù)用戶喜好進(jìn)行更改;時(shí)鐘部分使用專用計(jì)時(shí)芯片 ds1302,可精確顯示年、月、日、時(shí)、分、秒;2.2 方案比較與論證方案比較與論證2.2.1

12、數(shù)碼管顯示模塊數(shù)碼管顯示模塊方案一:單片機(jī)輸出數(shù)據(jù)經(jīng)譯碼芯片 cd4511 進(jìn)行譯碼后直接驅(qū)動(dòng)數(shù)碼管,數(shù)碼管公共端接 9012 三極管擴(kuò)流,并通過單片機(jī) i/o 口控制三極管的選通,實(shí)現(xiàn)動(dòng)態(tài)顯示。方案二:有單片機(jī)的 i/o 口直接驅(qū)動(dòng)數(shù)碼管的段碼,數(shù)碼管的公共端接 9012 三極管,通過灌電流的方式點(diǎn)亮數(shù)碼管,也需通過單片機(jī) i/o 口控制三極管的選通,實(shí)現(xiàn)動(dòng)態(tài)顯示。由于所需 i/o 口由 at98s52 可直接提供,無須因?yàn)?i/o 口不夠而用 cd4511 來節(jié)省i/o 口,方案二又較方案一更容易實(shí)惠,所以,我選擇方案二。2.2.2 溫度傳感器的選擇溫度傳感器的選擇 方案一:采用熱敏電阻作

13、為檢測(cè)溫度的核心元件,由于熱敏電阻會(huì)隨溫度變化而變化,進(jìn)而其阻值發(fā)生變化,再經(jīng) 555 振蕩器變化的脈沖數(shù)傳遞給單片機(jī)進(jìn)行處理。 方案二:采用數(shù)字式的集成溫度傳感器 ds18b20 作為溫度檢測(cè)的核心元件,由其檢測(cè)并直接輸出數(shù)字溫度信號(hào)給單片機(jī)進(jìn)行處理。 對(duì)于方案一,采用熱敏電阻作為溫度檢測(cè)元件,有價(jià)格便宜,元件易購的優(yōu)點(diǎn),但熱敏電阻對(duì)溫度的細(xì)微變化不太敏感,并且由于熱敏電阻的 r-t 關(guān)系的非線性,其自身電阻對(duì)溫度的變化存在較大誤差,而且在人體所處環(huán)境溫度變化過程中難以檢測(cè)到小的溫度變化。但作為本次設(shè)計(jì)雖已能滿足基本要求,但為了更深入的學(xué)習(xí),所以放棄該方案。 對(duì)于方案二,由于數(shù)字式集成溫度傳

14、感器 ds18b20 的高度集成化,大大降低了外接放大轉(zhuǎn)化等電路的誤差因數(shù),溫度誤差變得很小,并且由于其檢測(cè)溫度的原理與熱敏電阻檢測(cè)的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)化成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計(jì),又由于該溫度傳感器采用先進(jìn)的單總線技術(shù),與單片機(jī)的接口變得非常簡潔,抗干擾能力強(qiáng),雖然芯片原理復(fù)雜,但是可以對(duì)時(shí)序的理解更深入一步,所以選擇此方案。2.2.3 時(shí)鐘計(jì)時(shí)的選擇時(shí)鐘計(jì)時(shí)的選擇 方案一:at89s52 單片機(jī)內(nèi)部帶有定時(shí)/計(jì)數(shù)功能,此定時(shí)功能是通過對(duì)外部晶振的脈沖進(jìn)行計(jì)數(shù),從而達(dá)到計(jì)時(shí)功能,只要使用 11.0592的晶振就能實(shí)現(xiàn)零誤差的計(jì)時(shí),因此可以利

15、用此功能實(shí)現(xiàn)計(jì)時(shí),但因?yàn)橹挥袉我坏挠?jì)時(shí)功能要實(shí)現(xiàn)“萬年歷”的功能需要較復(fù)雜的程序,而且如果單片機(jī)掉電無法繼續(xù)進(jìn)行計(jì)時(shí),所以使用不便。方案二:ds1302 是美國 dallas 公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加 31 字節(jié)靜態(tài) ram,采用 spi 三線接口與 cpu 進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和 ram 數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與 31 天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá) 2.55.5v。采用雙電源供電(主電源和備用電源) ,可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。利用單片機(jī)強(qiáng)大

16、的控制功能就可實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)的功能,而且消耗的系統(tǒng)資源少,程序簡單。綜合上述兩種方案,宜采用方案二實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)功能。2.3 系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)結(jié)構(gòu)框圖 at89s52 單片機(jī)在模式鍵、設(shè)置鍵的控制下,由 p0 口輸出數(shù)據(jù),通 過 p2.0 、p2.1、p2.2、p2.3 進(jìn)行選通,用數(shù)碼管顯示信息。 系統(tǒng)框圖: 圖 2-3 系統(tǒng)總框圖at89s52鍵盤18b20ds1302晶振數(shù)碼管蜂鳴器led電源3.各功能模塊設(shè)計(jì)各功能模塊設(shè)計(jì) 3.1 顯示模塊顯示模塊原理原理 由單片機(jī)(at89s52)的引腳 p0 口輸出溫度、時(shí)間等數(shù)據(jù)信息,通過片選信號(hào) p2.0 、p2.1、p2.2、p2.3 就可在相應(yīng)

17、的數(shù)碼管進(jìn)行顯示。當(dāng)位選信號(hào) p2.0 為低電平時(shí),p1 口送出數(shù)據(jù)也為低電平就點(diǎn)亮數(shù)碼管,電流灌進(jìn)單片機(jī)。多位 led 顯示,為了簡化電路,降低成本,將所有位的段選線并聯(lián)在一起,由一個(gè) 8 位 i/o 口控制。而共陽極公共端分別接一個(gè)9012,由相應(yīng)的 i/o 口線控制 9012,實(shí)現(xiàn)各位數(shù)碼管的分時(shí)選通。段選碼,位選碼每送入一次后延時(shí) 5ms,因人的視覺暫留時(shí)間為0.1s(100ms) ,所以每位顯示的時(shí)間不能超過 20ms,并保持延時(shí)一段時(shí)間,以造成視覺暫留效果,給人看上去每個(gè)數(shù)碼管總在亮。電路如(圖 3-1)所示。 由于采用的是共陽極數(shù)碼管,所以要讓段碼點(diǎn)亮需把 i/o 口置 0,例如

18、:段碼 a 到 h 對(duì)應(yīng)的 i/o 口是 p0.0 到 p0.7,則要讓數(shù)碼管顯示 0 到9 對(duì)應(yīng)的 16 進(jìn)值如圖 3-2 所示q 090 12q 190 12q 290 12q 390 12abr 047 0r 147 0r 247 0r 347 0r 447 0r 547 0r 647 0r 747 0v ccv ccv ccv ccr 84k 7r 94k 7r 104k 7r 114k 7p 00p 01p 02p 03p 04p 05p 06p 07cdefghabcdefghabcdefghabcdefghc s0c s1c s2c s3位位位位位位abfcgdedpa7b6c4

19、d2e1f9g10dp5com3com8sh u1sm 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u2sm 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u3sm 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u4sm 4 11 00 6abcdefgh圖 3-1 顯示電路hgfedcba16 進(jìn)制0110000000xc0h1111110010xf9h2101001000xa4h3101100000xb0h4100110010x99h510010

20、0100x92h6100000100x82h7111110000xf8h8100000000x80h9100100000x90hc110001100xc6h-101111110xbfhl110001110xc7h圖 3-2 碼表3.2 參數(shù)計(jì)算參數(shù)計(jì)算 由于 i/o 口高電平約等于 5v,使用灌電流的方式驅(qū)動(dòng)數(shù)碼管,故選用 pnp 型三極管 9012;數(shù)碼管能正常工作的段電流為 3ma-10 ma,壓降為 1.7v,三極管發(fā)射極和集電極的壓降為 0.3v,因此限流電阻的壓 降為 3.0v, 所以選用限流電阻的阻值 r=470 歐.3.3 獨(dú)立式按鍵模塊獨(dú)立式按鍵模塊 獨(dú)立式按鍵是直接用 i/o

21、 口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根 i/o 口線,每個(gè)按鍵的工作不會(huì)影響其它 i/o 口線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如(圖 3-3)所示。 獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根 i/o 口線,因此,在按鍵較多時(shí),i/o 口線浪費(fèi)較大,但本設(shè)計(jì)只用到四個(gè)按鍵,顧采用獨(dú)立式按鍵電路。k 0k 1k 2k 3p 24p 25p 26p 27位位位位圖 3-3 獨(dú)立式按鍵電路3.4 時(shí)鐘模塊時(shí)鐘模塊ds1302 通過三根口線實(shí)現(xiàn)與單片機(jī)的通信,因 ds1302 功耗很小,即使電源掉電后通過 3v 的紐扣電池仍能維持ds1302 精確走時(shí)。3.4.1 ds1

22、302 特性介紹特性介紹 ds1302 是美國 dallas 公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加 31 字節(jié)靜態(tài) ram,采用 spi 三線接口與 cpu 進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和 ram 數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與 31 天時(shí)可以自動(dòng)h100010010x89h500105mavr調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá) 2.55.5v。采用雙電源供電(主電源和備用電源) ,可設(shè)置備用電源充電方式,提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。3.4.2 ds1302 引腳介紹引腳介紹 各引腳的功能為: 1、vcc2:5v

23、 電源。當(dāng) vcc2vcc1+0.2v 時(shí),由 vcc2 向 ds1302 供電, 當(dāng) vcc2 vcc1 時(shí),由 vcc1 向 ds1302 供電。 2 和和 3、x1、x2 是外接晶振腳 (32.768khz 的晶振) 4、地(gnd) 5、ce/rst:復(fù)位腳 6、i/o:數(shù)據(jù)輸入輸出口; 7、sclk:串行時(shí)鐘,輸入; 8、vcc1:備用電池端;3.4.3 ds1302 有關(guān)日歷、時(shí)間的寄存器有關(guān)日歷、時(shí)間的寄存器 寄存器的說明如下:1、秒寄存器(81h、80h)的位 7 定義為時(shí)鐘暫停標(biāo)志(ch) 。當(dāng)初始上電時(shí)該位置為 1,時(shí)鐘振蕩器停止,ds1302 處于低功耗狀態(tài);只有將秒寄存

24、器的該位置改寫為 0 時(shí),時(shí)鐘才能開始運(yùn)行。2、小時(shí)寄存器(85h、84h)的位 7 用于定義 ds1302 是運(yùn)行于 12 小時(shí)模式還是 24 小時(shí)模式。當(dāng)為高時(shí),選擇 12 小時(shí)模式。在 12 小時(shí)模式時(shí),位 5 是 ,當(dāng)為 1 時(shí),表示 pm。在 24 小時(shí)模式時(shí),位 5 是第二個(gè) 10小時(shí)位3、控制寄存器(8fh、8eh)的位 7 是寫保護(hù)位(wp) ,其它 7 位均置為0。在對(duì)任何的時(shí)鐘和 ram 的寫操作之前,wp 位必須為 0。當(dāng) wp位為 1 時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。也就是說在電路上電的初始態(tài) wp 是 1,這時(shí)是不能改寫上面任何一個(gè)時(shí)間寄存器的,只有首先將 wp

25、 改寫為 0,才能進(jìn)行其它寄存器的寫操作。 3.4.4 ds1302 控制字介紹控制字介紹位位 7:必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 ds1302 中。位位 6:如果為 0,則表示存取日歷時(shí)鐘數(shù)據(jù),為 1 表示存取 ram 數(shù)據(jù);位位 5 至位至位 1(a4a0):):指示操作單元的地址;位位 0(最低有效位):(最低有效位):為 0,表示要進(jìn)行寫操作,為 1 表示進(jìn)行讀操作。讀數(shù)據(jù):讀數(shù)據(jù): 讀數(shù)據(jù)時(shí)在緊跟 8 位的控制字指令后的下一個(gè) sclk 脈沖的下降沿,讀出 ds1302 的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。寫數(shù)據(jù):寫數(shù)據(jù): 控制字總是從最低位開始輸出。在控制字指令

26、輸入后的下一個(gè)sclk 時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入 ds1302,數(shù)據(jù)輸入也是從最低位(0 位)開始。位 0(最低有效位):為 1 表示進(jìn)行讀操作。 如為0,表示要進(jìn)行寫操作,控制字后 sclk 下降沿 讀數(shù)據(jù) sclk 上升沿寫數(shù)據(jù)。3.4.5 ds1302 單字節(jié)讀寫時(shí)序介紹單字節(jié)讀寫時(shí)序介紹 ds1302 的數(shù)據(jù)讀寫是通過 i/o 串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫操作時(shí)最少得讀寫兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴ds1302 是讀還是寫操作,是對(duì) ram 還是對(duì) clok 寄存器操作,以及操作的址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。 單字節(jié)寫:在進(jìn)行操作之前先得將 ce(也可說是

27、 rst)置高電平,然后單片機(jī)將控制字的位 0 放到 i/o 上,當(dāng) i/o 的數(shù)據(jù)穩(wěn)定后,將 sclk置高電平,ds1302 檢測(cè)到 sclk 的上升沿后就將 i/o 上的數(shù)據(jù)讀取,然后單片機(jī)將 sclk 置為低電平,再將控制字的位 1 放到 i/o 上,如此反復(fù),將一個(gè)字節(jié)控制字的 8 個(gè)位傳給 ds1302。接下來就是傳一個(gè)字節(jié)的數(shù)據(jù)給 ds1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將 ce 置為低電平,操作結(jié)束。 單字節(jié)讀操作的一開始寫控制字的過程和上面的單字節(jié)寫操作是一樣,但是單字節(jié)讀操作在寫控制字的最后一個(gè)位,sclk 還在高電平時(shí),ds1302 就將數(shù)據(jù)放到 i/o 上,單片機(jī)將 sclk

28、置為低電平后數(shù)據(jù)鎖存, 單機(jī)機(jī)就可以讀取 i/o 上的數(shù)據(jù)。如此反復(fù),將一個(gè)字節(jié)的數(shù)據(jù)讀入單片機(jī)。 讀與寫操作的不同就在于,寫操作是在 sclk 低電平時(shí)單片機(jī)將數(shù)據(jù)放到 io 上,當(dāng) sclk 上升沿時(shí),ds1302 讀取。而讀操作是在 sclk高電平時(shí) ds1302 放數(shù)據(jù)到 io 上,將 sclk 置為低電平后,單片機(jī)就可從 io 上讀取數(shù)據(jù)。3.4.6 ds1302 操作指令介紹操作指令介紹操作說明:操作說明:1 首先要通過 8eh 將寫保護(hù)去掉,將日期,時(shí)間的初值寫時(shí)各個(gè)寄器。 2 然后就可以對(duì) 80h、82h、84h、86h、88h、8ah、8ch 進(jìn)行初值的寫入。同時(shí)也通過秒寄存

29、器將位 7 的 ch 值改成 0,這樣 ds1302就開始走時(shí)了。3 將寫保護(hù)寄存器再寫為 80h,防止誤改寫寄存器的值。 4 不斷讀取 80h8ch 的值,將它們格式化后顯示到數(shù)碼管上3.4.7 ds1302 與單片機(jī)接口電路與單片機(jī)接口電路v cc21x 12x 23g nd4r st5i/o6sc l k7v cc8u 1d s1 30 2v ccv ccx t232 76 8h zr 145kr 155kp 32p 33p 34+1-2jp13v位位位位 3.5 溫測(cè)模塊溫測(cè)模塊 ds18b20 通過單總線實(shí)現(xiàn)與單片機(jī)的通信,每個(gè) ds18b20 都有一個(gè)唯一的序列號(hào),可以方便的實(shí)現(xiàn)組

30、網(wǎng)檢測(cè)。3.5.1 單總線介紹單總線介紹 1.單總線即只有一根數(shù)據(jù)線,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。 2.單總線通常要求外接一個(gè)約為 4.7k10k 的上拉電阻,這樣,當(dāng)總線 閑置時(shí)其狀態(tài)為高電平。3.5.2 ds18b20 特性介紹特性介紹 ds18b20 單線數(shù)字溫度傳感器,即“一線器件” ,其具有獨(dú)特的優(yōu)點(diǎn): 1. 采用單總線的接口方式 與微處理器連接時(shí) 僅需要一條口線即可實(shí)現(xiàn) 微處理器與 ds18b20 的雙向通訊。 單總線具有經(jīng)濟(jì)性好,抗干擾能 力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,使用方便等優(yōu)點(diǎn),使用戶可輕 松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。 2. 測(cè)量溫度范

31、圍寬,測(cè)量精度高 ds18b20 的測(cè)量范圍為 -55 + 125 ; 在 -10+ 85c 范圍內(nèi),精度為 0.5c 。 3. 在使用中不需要任何外圍元件。 4. 支持多點(diǎn)組網(wǎng)功能 多個(gè) ds18b20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多 點(diǎn)測(cè)溫。 5. 供電方式靈活 ds18b20 可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電 源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源, 從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。 6. 測(cè)量參數(shù)可配置 ds18b20 的測(cè)量分辨率可通過程序設(shè)定 912 位。 7. 負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常作。 8. 掉電保護(hù)功能 ds1

32、8b20 內(nèi)部含有 eeprom ,在系統(tǒng)掉電以后,它 仍可保存分辨率及報(bào)警溫度的設(shè)定值。 9. ds18b20 具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方 式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng),因此也 就被設(shè)計(jì)者們所青睞。3.5.3 ds18b20 管腳介紹管腳介紹 ds18b20 的管腳排列1 . gnd 為電源 地;2. dq 為數(shù)字信號(hào)輸入輸出端;3. vdd 為外接供電電源輸入端,在寄生 電源接線方式時(shí)接地; 3.5.4 ds18b20 內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu) ds18b20 內(nèi)部結(jié)構(gòu)主要由四部分組成: 64 位光刻 rom 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器

33、 th 和 tl 、配置寄存器。 光刻 rom 中的 64 位序列號(hào)是出廠前被光刻好的,它可以看作是該 ds18b20 的地址序列碼。 64 位光刻 rom 的排列是:開始 8 位(地址: 28h )是產(chǎn)品類型標(biāo)號(hào),接著的 48 位是該 ds18b20 自身的序列號(hào),并且每個(gè) ds18b20 的序列號(hào)都不相同,因此它可以看作是該 ds18b20 的地址序列碼;最后 8 位則是前面 56 位的循環(huán)冗余校驗(yàn)碼( crc=x8+x5+x4+1 ) 。由于每一個(gè) ds18b20 的 rom 數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對(duì)多個(gè) ds18b20 進(jìn)行尋址,從而實(shí)現(xiàn)一根總線上掛接多個(gè) ds1

34、8b20 的目的。ds18b20 中的溫度傳感器完成對(duì)溫度的測(cè)量,用 16 位二進(jìn)制形式提供,形式表達(dá),其中 s 為符號(hào)位。3.5.5 ds18b20 溫度轉(zhuǎn)化示例溫度轉(zhuǎn)化示例3.5.6 ds18b20 時(shí)序介紹時(shí)序介紹ds18b20 的一線工作協(xié)議流程是:初始化rom 操作指令存儲(chǔ)器操作指令數(shù)據(jù)傳輸。其工作時(shí)序包括:1. 初始化時(shí)序2. 寫時(shí)序3. 讀時(shí)序 初始化時(shí)序:初始化時(shí)序: 主機(jī)首先發(fā)出一個(gè) 480960 微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖剑⒃陔S后的 480 微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答

35、。做為從器件的 ds18b20 在一上電后就一直在檢測(cè)總線上是否有480960 微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待 1560微秒后將總線電平拉低 60240 微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測(cè)到就一直在檢測(cè)等待。 寫操作:寫操作: 寫操作就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向ds18b20 寫 0 和寫 1 組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從 ds18b20 讀取 0 或 1 的過程。寫周期最少為 60 微秒,最長不超過 120 微秒。寫周期一開始做為主機(jī)先把總線拉低 1 微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少 60 微秒直至寫周期

36、結(jié)束,然后釋放總線為高電平。若主機(jī)想寫 1,在一開始拉低總線電平 1 微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的 ds18b20 則在檢測(cè)到總線被拉底后等待 15 微秒然后從 15us 到 45us 開始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為 1,若采樣期內(nèi)總線為低電平則為 0。 讀操作:讀操作: 對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀 0 時(shí)序和讀 1 時(shí)序兩個(gè)過程。讀時(shí)序是從主機(jī)把單總線拉低之后,在 1 微秒之后就得釋放單總線為高電平,以讓 ds18b20 把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20 在檢測(cè)到總線被拉低1 微秒后,便開始送出數(shù)據(jù),若是要送出 0 就把總線拉為低電平直到讀周期結(jié)束

37、。若要送出 1 則釋放總線為高電平。主機(jī)在一開始拉低總線 1微秒后釋放總線,然后在包括前面的拉低總線電平 1 微秒在內(nèi)的 15 微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為 0。采樣期內(nèi)總線為高電平則確認(rèn)為 1。完成一個(gè)讀時(shí)序過程,至少需要60us 才能完成。3.5.7 ds18b20 操作步驟操作步驟1. 每次讀寫前對(duì) ds18b20 進(jìn)行復(fù)位初始化。復(fù)位要求主 cpu 將數(shù)據(jù)線下拉 500us ,然后釋放, ds18b20 收到信號(hào)后等待 16us60us 左右,然后發(fā)出 60us240us 的存在低脈沖,主 cpu 收到此信號(hào)后表示復(fù)位成功。2. 發(fā)送一條 rom 指令

38、3. 發(fā)送存儲(chǔ)器指令3.5.8 ds18b20 與單片機(jī)的接口電路與單片機(jī)的接口電路v dd3i/o2g nd1u 3d s18b 20r 204k 7v ccc 10.1u fp31位位位位位位3.6 總系統(tǒng)原理圖總系統(tǒng)原理圖 單片機(jī)(at89s52)9 腳為復(fù)位輸入端。上電復(fù)位,只要 rst 引腳上有大于二個(gè)機(jī)器周期以上的高電平,單片機(jī)(at89c2051)即復(fù)位。按鍵從單片機(jī)(at89s52)的 p2.4、p2.5、p2.6、p2.7 口接入,當(dāng)按鍵被按下時(shí),相應(yīng)的輸入口就會(huì)輸入低電平 0。單片機(jī)(at89s52)的 xtal1 腳、xtal2 腳接一個(gè)由 12m 晶振和10pf 組成的

39、振蕩電路。為單片機(jī)提供相應(yīng)的時(shí)序。x t112 mc 810 pfc 910 pfe 110 ufs1sw -pbr 1810 kr 1733 0v dd3i/o2g nd1u 3d s1 8b 20r 204k 7c 10.1u fr esr esv ccv ccv ccc s0c s3c s1c s2q 490 12v ccr 193.3kp30v cc12+l s1r 165.1kd 1l edq 090 12q 190 12q 290 12q 390 12123456789 10is p1m o s ir essc km isov cc位位位位位位位位位位位位位位位位位位位p 24p

40、25p 26p 27p 10p 11p 12p 13p 14p 15p 16p 17k 0k 1k 2k 3p 24p 25p 26p 27位位位位v ccv ccp 10p 11p 12p 13p 14p 15p 16p 17r 132kr 1210 0v ccp 30p 31p 36p 37v cc21x 12x 23g nd4r st5i/o6sc l k7v cc8u 1d s1 30 2v ccv ccx t232 76 8h zr 145kr 155kp 35p 36p 37p 32p 33p 34+1-2jp13v位位位位位位位位位位位位位位usb位位p 00p 01p 02p

41、03p 04p 05p 06p 071234jp2帽帽d 2l edd 3l edabr 047 0r 147 0r 247 0r 347 0r 447 0r 547 0r 647 0r 747 0v ccv ccv ccv ccr 84k 7r 94k 7r 104k 7r 114k 7p 00p 01p 02p 03p 04p 05p 06p 07cdefghabcdefghabcdefghabcdefghc s0c s1c s2c s3位位位位位位cpu位位位位位abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u1sm 4 11 00 6abfcgdedpa7

42、b6c4d2e1f9g10dp5com3com8sh u2sm 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u3sm 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u4sm 4 11 00 6abcdefghm o s im isosc kv cc1g nd2pow e rr 214.7kg nd1v cc2v o3r s4r w5e6d b07d b18d b29d b310d b411d b512d b613d b714b g v c c15b g g n d16lcd 1602l cdl c

43、d 16 02p 32p 33p 34p 35e a/v pp31x 119x 218r es et9r d/p3 717w r/p3 616p32/in t012p33/in t113p34/t014p35/t115p101p112p123p134p145p156p167p178p0039p0138p0237p0336p0435p0534p0633p0732p2021p2122p2223p2324p2425p2526p2627p2728pse n29a le /prd g30p31/tx d11p30/rx d10v cc40g nd20ic 6a t8 9c 524.軟件設(shè)計(jì)軟件設(shè)計(jì)主程序

44、主要起到一個(gè)導(dǎo)向和決策功能,控制程序的走向。本系統(tǒng)在主程序中運(yùn)用模塊化結(jié)構(gòu),所有控制量集中處理,提高了處理效率,并在ram 建立各控制量的映射,方便各功能模塊的編程及修改。運(yùn)用散轉(zhuǎn)結(jié)構(gòu),可實(shí)現(xiàn)無擾動(dòng)重入。本設(shè)計(jì)主要有以下幾個(gè)模塊:溫顯模塊、時(shí)鐘顯示模塊、時(shí)鐘修改模塊。操作說明:上電復(fù)位后進(jìn)入溫顯模塊,按 k1 鍵可進(jìn)入溫度報(bào)警值上下限的設(shè)置;按 k0 可進(jìn)行模塊間的轉(zhuǎn)換,按一次 k0 進(jìn)入時(shí)鐘模塊,按k0 兩次進(jìn)入時(shí)鐘修改模塊。4.1 i/o 口分配口分配1、p2.0、p2.1、p2.2、p2.3 作為個(gè)位、十位、百位、千位數(shù)碼管片選。2、p2.4、p2.5、p2.6、p2.7 作為按鍵接口。

45、3、p0.0 到 p0.7 作為段碼 a 到 g 的輸出口。4.2 按鍵掃描按鍵掃描本設(shè)計(jì)采用定時(shí)器中斷延時(shí)去抖的方法來進(jìn)行按鍵的有效掃描判斷5.流程圖流程圖5.1 主程序流程圖主程序流程圖5.2 work0 模塊流程圖模塊流程圖mode=0mode=1獲取溫度根據(jù)鍵狀態(tài)進(jìn)行功能散轉(zhuǎn)work0,溫顯和溫報(bào)模塊,同時(shí)置位延時(shí)方式標(biāo)志位work1,時(shí)間顯示,同時(shí)清零延時(shí)方式標(biāo)志位work2,調(diào)時(shí)模塊,在調(diào)整完畢后進(jìn)入work1按鍵掃描顯示方式 1清定時(shí)標(biāo)志位 重裝定時(shí)初值按鍵掃描顯示方式 2初始化 ds1302讀取時(shí)間開始初始化延時(shí)方式標(biāo)志位=1?nyn5ms 到?ymode=2入口根據(jù)鍵狀態(tài)值進(jìn)

46、行功能散轉(zhuǎn)溫顯模式修改高溫報(bào)警值修改低溫報(bào)警值返回cnt1=0cnt1=1cnt1=25.3 work1 模塊流程圖模塊流程圖5.4 work2 模塊流程圖模塊流程圖msta=0msta=1月份顯示模塊msta=2時(shí)間顯示模塊星期顯示模塊入口年份顯示模塊返回根據(jù)鍵狀態(tài)值進(jìn)行功能散轉(zhuǎn)msta=3設(shè)置時(shí)間預(yù)處理,即將當(dāng)前時(shí)間值送給修改緩沖單元入口根據(jù)鍵狀態(tài)值進(jìn)行功能散轉(zhuǎn)msta1=2msta1=3msta1=0msta1=1返回修改小時(shí),高兩位數(shù)碼管位閃,按 k2 與 k3 鍵修改修改分鐘,低兩位數(shù)碼管位閃,按 k2 與 k3 鍵修改修改月份,高兩位數(shù)碼管位閃,按 k2 與 k3 鍵修改修改日,低

47、兩位數(shù)碼管位閃,按 k2 與 k3 鍵修改修改年份,高兩位顯示 20低兩位數(shù)碼管位閃,按 k2與 k3 鍵修改修改星期,低兩位數(shù)碼管位閃,按 k2 與 k3 鍵修改修改完畢,將修改信息寫入到 ds1302 芯片中msta1=4msta1=5msta1=6msta1=75.5 獲取溫度子程序流程圖獲取溫度子程序流程圖入口初始化 ds18b20跳過 rom溫度轉(zhuǎn)換初始化 ds18b20跳過 rom讀取溫度讀低 8 位讀高 8 位將取出的數(shù)據(jù)轉(zhuǎn)換成溫度值,分為整數(shù)部分和小數(shù)部分將整數(shù)部分送顯緩存將小數(shù)部分按 0.5 精度處理將溫度值轉(zhuǎn)換為bcdma3,yongyu 溫度報(bào)警時(shí)溫度比較實(shí)用返回5.6

48、按鍵掃描按鍵掃描5.7 中斷服務(wù)子程序中斷服務(wù)子程序5.8 顯示方式顯示方式 1入口讀鍵,保存鍵值有鍵?開定時(shí)中斷延時(shí)去抖提取鍵前沿關(guān)定時(shí)中斷返回ny入口重裝中斷定時(shí)初值保存變化的鍵狀態(tài)返回顯示個(gè)位,dsw=1關(guān)數(shù)碼管i3?根據(jù)狀態(tài)字進(jìn)行散轉(zhuǎn)入口i=0返回顯示十位,dsw=2顯示百位,dsw=3顯示千位,dsw=0dsw=0dsw=1dsw=2dsw=35.9 初始化初始化 ds1302 子程序流圖子程序流圖yn入口允許初始化標(biāo)志位=1?寫保護(hù)關(guān)寫入年份寫入月份寫入日寫入小時(shí)寫入分鐘寫保護(hù)開允許初始化標(biāo)志位清零返回ny5.105.10 溫顯模塊子程序流圖溫顯模塊子程序流圖5.11 讀取時(shí)間模塊

49、子程序流圖讀取時(shí)間模塊子程序流圖入口將溫度值送顯緩溫度值比較,超過上下限值,則報(bào)警返回讀取分鐘,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)入口變量定義返回讀取小時(shí),將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取日,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取月份,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取星期,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取年份,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)6.程序代碼程序代碼6.1 主程序部分主程序部分#include /52 單片機(jī)頭文件#include /52 單片機(jī)頭文件#include#include /52 單片機(jī)頭文件#define sm_port p0 /輸出口定義#define uint unsigned int#define uchar u

50、nsigned charuchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99, /0,1,2,3.數(shù)碼管 /斷碼表,16 關(guān),17h,18,19l0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1, 0 x86,0 x8e,0 xff,0 x89,0 xbf,0 xc7; uchar lbj_buf0,lbj_buf1,hbj_buf0,hbj_buf1;uchar h2_weishan,l2_weishan;uchar r0,delay_mode;uchar msta,bj_l,bj_h,cnt1

51、,cnt;void rdkey() p2=0 xff; /掃描第 0 行(row0),即 k0-k3 鍵 r0=p2; r0=r0; r0&=0 xf0; /將讀取到的 k0-k3 鍵值保存于 key0 的低四位 if(r0!=key0) /判斷是否有鍵按下 tr0=1; ekey0=key0; /時(shí)間未到,沿用原來保留的鍵值 else /未有鍵按下 tr0=0; ekey0=0 x00; ekey0=r0&(key0r0); /提取鍵前沿 key0=r0; void disp () uchar i; for(i=0;i3;i+) p2=0 xff; switch(dsw) c

52、ase 0:cs0=0; sm_port=tablebuf0; /顯示個(gè)位 dsw=1; break; case 1:cs1=0; sm_port=tablebuf1; /顯示十位 dsw=2; break; case 2:if(!fh_300) cs2=0; else cs2=1; sm_port=tablebuf2; /顯示百位 if(point_flag) point=0; else point=1; dsw=3; break; case 3: if(!fh_300) cs3=0; else cs3=1; sm_port=tablebuf3; /顯示千位 dsw=0; break; de

53、fault:break; void disp1 () sm_port=0 xff; p2=0 xff; switch(dsw) case 0: if(!fl_300) cs0=0; else cs0=1; sm_port=tablebuf0; /顯示個(gè)位 dsw=1; break; case 1: if(!fl_300) cs1=0; else cs1=1; sm_port=tablebuf1; /顯示十位 dsw=2; break; case 2: if(!fh_300) cs2=0; else cs2=1; sm_port=tablebuf2; /顯示百位 if(point_flag) p

54、oint=0; else point=1; dsw=3; break; case 3: if(!fh_300) cs3=0; else cs3=1; sm_port=tablebuf3; /顯示千位 dsw=0; break; default:break; void init() tmod=0 x11;/設(shè)置定時(shí)器的工作方式 th0=(65536-20000)/256;/為定時(shí)器 0 裝載初值,用中斷方式進(jìn)行 /按鍵的去抖 tl0=(65536-20000)%256; th1=(65536-5000)/256;/為定時(shí)器 1 裝載初值 tl1=(65536-5000)%256; ea=1; /

55、開總中斷 et0=1; /開定時(shí)器 0 中斷 tr1=1; /開定時(shí)器 0 lbj_buf1=2; /為低溫報(bào)警值賦初值 22 度,在主程 /序中可修改 lbj_buf0=2; hbj_buf1=3; /為高溫報(bào)警值賦初值 35 度,在主程 /序中可修改 hbj_buf0=5; fmq=1; /關(guān)閉蜂鳴器和 led delay_mode=1; /工作模式賦初值 1(其中/mode=1 表示,程序使用軟件延時(shí),此時(shí)使用 ds18b20 進(jìn)行溫度測(cè)量, /作為溫度計(jì)使用;mode=0 時(shí),使用/定時(shí)器延時(shí),程序每隔 5ms 執(zhí)行一次,此時(shí)作為時(shí)鐘 tztime_flag1=0; second_bu

56、f=0 x00; minute_buf=0 x00; hour_buf=0 x12; day_buf=0 x16; week_buf=0 x01; month_buf=0 x06; year_buf=0 x13;void wenxian() delay_mode=1; bj_l=lbj_buf1; bj_l=4; bj_l&=0 xf0; bj_l+=lbj_buf0&0 x0f; bj_h=hbj_buf1; bj_h=bj_h|temp16h=bj_l) cnt+; if(cnt=50) fmq=fmq;cnt=0; else fmq=1;void xg_lbj() /修改

57、低溫報(bào)警值 delay_mode=1; point_flag=0; buf3=19; buf2=18; buf1=lbj_buf1; buf0=lbj_buf0; fl_300=0; h2_weishan+; if(h2_weishan=60) h2_weishan=0; fh_300=fh_300; if(ek2) if(lbj_buf0) -lbj_buf0; else if(lbj_buf1) -lbj_buf1;lbj_buf0=9; if(ek3) if(lbj_buf0!=9) +lbj_buf0; else if(lbj_buf1!=9) +lbj_buf1;lbj_buf0=0

58、; void xg_hbj() /修改高溫報(bào)警值 delay_mode=1; point_flag=0; buf3=17; buf2=18; buf1=hbj_buf1; buf0=hbj_buf0; fl_300=0; h2_weishan+; if(h2_weishan=60) h2_weishan=0; fh_300=fh_300; if(ek2) if(hbj_buf0) -hbj_buf0; else if(hbj_buf1) -hbj_buf1;hbj_buf0=9; if(ek3) if(hbj_buf0!=9) +hbj_buf0; else if(hbj_buf1!=9) +

59、hbj_buf1;hbj_buf0=0; void work0() if(ek1) cnt1+; if(cnt1=3)cnt1=0; switch(cnt1) case 0:fh_300=0; wenxian(); /溫度顯示子程序,具有超溫和低溫報(bào)警功能 break; case 1:xg_lbj(); /修改低溫報(bào)警值 break; case 2:xg_hbj(); /修改高溫報(bào)警值 break; default:break; void work1() if(ek1) msta+; if(msta=4) msta=0; fh_300=0; fl_300=0; switch(msta) cas

60、e 0: time_show(); break; case 1: month_show(); break; case 2: year_show(); break; case 3: week_show(); break; default:break; void work2() if(ek1) msta1+; if(msta1=8) msta1=0; f300+; switch(msta1) case 0: set_begin(); break; case 1: hour_set(); break; case 2: minute_set(); break; case 3: month_set(); break; case 4: da

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論