摘 要
電子萬(wàn)年歷是單片機(jī)系統(tǒng)的一個(gè)應(yīng)用,由硬件和軟件相配合使用。硬件由主控器、時(shí)鐘電路、溫度檢測(cè)電路、顯示電路、鍵盤(pán)接口5個(gè)模塊組成。主控模塊用AT89C52、時(shí)鐘電路用時(shí)鐘芯片DS1302、顯示模塊用LED數(shù)碼管、溫度檢測(cè)采用DS18B20溫度傳感器、鍵盤(pán)接口電路用普通按鍵接上拉電阻完成;軟件利用C語(yǔ)言編程實(shí)現(xiàn)單片機(jī)程序控制。單片機(jī)通過(guò)時(shí)鐘芯片DS1302獲取時(shí)間數(shù)據(jù),DS18B20采集溫度信號(hào)送該給單片機(jī)處理,單片機(jī)再把時(shí)間數(shù)據(jù)和溫度數(shù)據(jù)送給74LS154譯碼,然后通過(guò)三極管C9015放大驅(qū)動(dòng)LED數(shù)碼管顯示陽(yáng)歷年、月、日、時(shí)、秒、鬧鐘、星期、溫度。
1 引言
隨著微電子技術(shù)和超大規(guī)模集成電路技術(shù)的不斷發(fā)展,家用電子產(chǎn)品不但種類(lèi)日益豐富,而且變得更加經(jīng)濟(jì)實(shí)用,單片微型計(jì)算機(jī)體積小、性價(jià)比高、功能強(qiáng)、可靠性高等獨(dú)有的特點(diǎn),在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。電子萬(wàn)年歷是一種應(yīng)用非常廣泛的日常計(jì)時(shí)工具,數(shù)字顯示的日歷鐘已經(jīng)越來(lái)越流行,特別是適合在家庭居室、辦公室、大廳、會(huì)議室、車(chē)站和廣場(chǎng)等使用。LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時(shí)準(zhǔn)確、可以進(jìn)行夜視,并且還可以擴(kuò)展出多種功能。功能也越來(lái)越齊全,除了公歷年月日、時(shí)分秒、星期顯示及鬧鈴。但通過(guò)我們對(duì)各種電子鐘表、歷的不斷觀察總結(jié)發(fā)現(xiàn)目前市場(chǎng)的鐘、歷都存在一些不足之處,比如:時(shí)鐘不精確、產(chǎn)品成本太高、無(wú)環(huán)境溫度顯示等,這都給人們的使用帶來(lái)了某些不便。為此設(shè)計(jì)了一種功能全面、計(jì)時(shí)準(zhǔn)確、成本低廉的基于51單片機(jī)的萬(wàn)年歷。
2 功能要求
1. 萬(wàn)年歷能用數(shù)碼管顯示陽(yáng)歷年、月、日、星期、[小]時(shí)、分、秒并設(shè)置指定時(shí)間的鬧鈴。
2. 數(shù)字式溫度計(jì)要求測(cè)溫范圍-50~100°C, LED數(shù)碼管直讀顯示。
3 方案論證與設(shè)計(jì)
3.1 控制部分的方案選擇
1. 用可編程邏輯器件設(shè)計(jì)。可采用ALTERA公司的FLEX10K系列PLD器件。設(shè)計(jì)起來(lái)結(jié)構(gòu)清晰,各個(gè)模塊,從硬件上設(shè)計(jì)起來(lái)相對(duì)簡(jiǎn)單,控制與顯示的模塊間的連接也會(huì)比較方便。但是考慮到本設(shè)計(jì)的特點(diǎn),EDA在功能擴(kuò)展上比較受局限,而且EDA占用的資源也相對(duì)多一些。從成本上來(lái)講,用可編程邏輯器件來(lái)設(shè)計(jì)也沒(méi)有什么優(yōu)勢(shì)。
2.用凌陽(yáng)16位單片機(jī)設(shè)計(jì)。凌陽(yáng)16位單片機(jī)有豐富的中斷源和時(shí)基,方便本實(shí)驗(yàn)的設(shè)計(jì)。它的準(zhǔn)確度相當(dāng)高,并且C語(yǔ)言和匯編兼容的編程環(huán)境也很方便來(lái)實(shí)現(xiàn)一些遞歸調(diào)用。I/O口功能也比較強(qiáng)大,方便使用。用凌陽(yáng)16位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語(yǔ)音的錄制播放和識(shí)別。這些都方便對(duì)設(shè)計(jì)進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善。成本也相對(duì)低一些。但是,在控制與顯示的結(jié)合上有些復(fù)雜,顯示模組資源相對(duì)有限,而且單片機(jī)的穩(wěn)定性不是很高。
3. 主控芯片使用51系列AT89C52單片機(jī),時(shí)鐘芯片用美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的時(shí)鐘DS1302。采用DS1302作為主要計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.5~5V電源,在2.5V時(shí)耗電小于300nA)下繼續(xù)計(jì)時(shí),停電后時(shí)鐘無(wú)需重新調(diào)整,并可編程選擇多種充電電流來(lái)對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電,還可自設(shè)鬧鈴,陽(yáng)歷、星期與年月日自動(dòng)對(duì)應(yīng)。本系統(tǒng)采用了此方案。
3.2 測(cè)溫部分的方案選擇
1.在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要乃至溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。
2.與前面相比,采用美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫范圍為-55~125°C,最大分辨率可達(dá)0.0625°C。DS18B20可以直接讀出被測(cè)溫度值,而且采用3線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。
3.3 顯示部分的方案選擇
1. 液晶顯示方式。液晶顯示效果出眾,可以運(yùn)用菜單項(xiàng)來(lái)方便操作,但是在顯示時(shí),特別是使用秒表功能時(shí)掃描速度跟不上,屏幕會(huì)有明顯的閃爍。而且由于61板的存儲(chǔ)空間有限,液晶顯示就不能與語(yǔ)音播抱程序同時(shí)實(shí)現(xiàn)。這些大大影響了電子萬(wàn)年歷的性能。
2. 相比液晶顯示,8段數(shù)碼管雖然操作比液晶顯示略顯繁瑣,但可視范圍十分寬,而且經(jīng)濟(jì)實(shí)惠,也不需要復(fù)雜的驅(qū)動(dòng)程序。所以最后選擇LED數(shù)碼管顯示方案。
綜上所述,按照系統(tǒng)設(shè)計(jì)功能的要求,確定硬件系統(tǒng)由主控制器、時(shí)鐘模塊、測(cè)溫電路、顯示模塊、鍵盤(pán)接口共5個(gè)模塊組成,總體系統(tǒng)構(gòu)成框圖如圖3.1所示。
4 系統(tǒng)硬件電路設(shè)計(jì)
電子萬(wàn)年歷電路原理圖見(jiàn)附件一,系統(tǒng)由主控制器AT89C52、時(shí)鐘芯片DS1302、溫度傳感器DS18B20傳感器、顯示電路及鍵盤(pán)掃描電路組成。
4.1 主控器 AT89C52
ATMEL公司生產(chǎn)的AT89C52單片機(jī)采用高性能的靜態(tài)80C51設(shè)計(jì),由先進(jìn)工藝制造,并帶有非易失性Flsah程序存儲(chǔ)器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場(chǎng)應(yīng)用最多。主要性能特點(diǎn)有:
8KBFlash ROM,可以檫寫(xiě)1000次以上,數(shù)據(jù)保存10年。
256字節(jié)內(nèi)部RAM。
電源控制模式
——時(shí)鐘可停止和恢復(fù);
——空閑模式;
——掉電模式。
6個(gè)中斷源。
4個(gè)中斷優(yōu)先級(jí)。
4個(gè)8位I/O口。
全雙工增強(qiáng)型UART。
3個(gè)16位定時(shí)/計(jì)數(shù)器,T0、T1(標(biāo)準(zhǔn)80C51)和增加的T2(捕獲和比較)。
全靜態(tài)工作方式:0~24MHz。
4.2 時(shí)鐘電路 DS1302
4.2.1. DS1302的性能特性
實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);
用于高速數(shù)據(jù)暫存的31×8位RAM;
最少引腳的串行I/O;
2.5~5.5V電壓工作范圍;
2.5V時(shí)耗電小于300nA;
用于時(shí)鐘或RAM數(shù)據(jù)讀/寫(xiě)的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;
簡(jiǎn)單的3線接口;
可選的慢速充電(至Vcc1)的能力。
DS1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,Vcc1連接到備份電,以便在沒(méi)有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由Vcc1或Vcc2中較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電;當(dāng)Vcc2小于Vcc時(shí), DS13026由Vcc1供電。
4.2.2 DS1302數(shù)據(jù)操作原理
DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無(wú)論是讀周期還是寫(xiě)周期,開(kāi)始8位指定40個(gè)寄存器中哪個(gè)將被訪問(wèn)到。在開(kāi)始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫(xiě)操作是寫(xiě)入時(shí)寫(xiě)入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。
如果在傳送過(guò)程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc大于等于2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的引腳及內(nèi)部結(jié)構(gòu)圖如圖4.1所示,表4.1為各引腳的功能。
DS1302的控制字如圖4.2所示。控制字節(jié)的最高位(位7)必須是邏輯1;如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進(jìn)行寫(xiě)操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位開(kāi)始輸入/輸出。
為了提高對(duì)32個(gè)地址的尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)憽T跁r(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能寄存數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開(kāi)始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫(xiě)RAM時(shí),為了傳送數(shù)據(jù)不必寫(xiě)所有31字節(jié)。不管是否寫(xiě)了全部31字節(jié),所寫(xiě)的每一字節(jié)都將傳送至RAM。
? ?
表 4.1 DS1302引腳功能
? DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字見(jiàn)表3.2,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作。
時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止震蕩,進(jìn)入低功耗的備份方式。通常在對(duì)DS1302進(jìn)行寫(xiě)操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止震蕩。當(dāng)它為0時(shí),時(shí)鐘將開(kāi)始啟動(dòng)。
AM-PM/12-24[小]時(shí)方式:[小]時(shí)寄存器的位7定義為12或24[小]時(shí)方式選擇位。它為高電平時(shí),選擇12[小]時(shí)方式。在此方式下,位5是AM/PM位,此位是高電平時(shí)表示PM低電平表示AM。在24[小]時(shí)方式下,位5為第二個(gè)10[小]時(shí)位(20~23h)。
表 4.2 內(nèi)部寄存器地址和內(nèi)容
DS1302的晶震選用32.768kHz,電容推薦值為33pF,因?yàn)檎鹗庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。
4.3 測(cè)溫電路的設(shè)計(jì)
測(cè)溫電路主要使用溫度傳感器DS18B20,由于精度要求不高所以采用2位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。其設(shè)計(jì)原理圖如附件一所示。
4.3.1 溫度傳感器工作原理
DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要示通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:
獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;
多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;
無(wú)須外部器件;
可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0~3.5V;
零待機(jī)功耗;
溫度以9或12數(shù)字量讀出;
用戶可定義的非易失性溫度報(bào)警設(shè)置;
報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;
負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。
DS18B20采用3腳PR—35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖4.3所示。
64位ROM的位結(jié)構(gòu)如圖4.4所示。開(kāi)始8位是產(chǎn)品類(lèi)型的編號(hào),接著是每個(gè)器件的唯一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶報(bào)警上下限。
DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)調(diào)整暫存RAM和一個(gè)易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)存儲(chǔ)器,結(jié)構(gòu)如圖4.5所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié)為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)。
精度的數(shù)值。該字節(jié)各位的定義如圖4.6所示。低5位一直1,M是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辨率,定義方法見(jiàn)表4.3。
由表4.3可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。
高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。
當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625°C/LSB形式表示。溫度值格式如圖4.7所示。
圖 4.6 配置寄存器
表 4.3 DS18B20分辨率的定義規(guī)定
當(dāng)符號(hào)位S=0時(shí),表現(xiàn)測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制,當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼再計(jì)算十進(jìn)制值。表4.4是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。
DS18B20完成溫度轉(zhuǎn)換后,把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T
在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并和存入DS18B20的CRC作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。
DS18B20的測(cè)溫原理如圖4.8所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖中還隱含著計(jì)數(shù)門(mén),當(dāng)計(jì)算門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55°C所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55°C所對(duì)應(yīng)的一個(gè)基數(shù)值。
減法計(jì)數(shù)器1對(duì)低溫系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存的值將加1,減法計(jì)數(shù)器1的預(yù)置值將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖4.8中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門(mén)未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值達(dá)到被測(cè)溫度值。
另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)--》發(fā)ROM功能指令--》發(fā)存儲(chǔ)器操作命令--》處理數(shù)據(jù)。
4.3.2 DS18B20與單片機(jī)的接口電路
DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為引線,3腳接電源。另一種是寄生電源供電方式。單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上拉。
當(dāng)DS18B20處于寫(xiě)存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。
4.4 顯示電路的設(shè)計(jì)
顯示部分采用普通的共陽(yáng)數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路。考慮到第一次掃描17位數(shù)碼管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí)17個(gè)數(shù)碼管分3排同時(shí)掃描。第一排8個(gè)數(shù)碼管分別為千年、百年、十年、年、十月、月、十日、日,第二排7個(gè)數(shù)碼管分別為十時(shí)、時(shí)、十分、分、十秒、秒,第三排3個(gè)數(shù)碼管分別為星期、溫度(兩位)顯示。顯示時(shí)采用串行口輸出段碼,用1片74LS164來(lái)驅(qū)動(dòng)3排數(shù)碼管,這樣掃描一次只需7ms。
表 4.5 74LS164特性表
74LS164內(nèi)部為8個(gè)D觸發(fā)器,用以實(shí)現(xiàn)數(shù)據(jù)的串行移位,74LS164特性見(jiàn)表4.5。單片機(jī)以串口方式0(移位寄存器方式)輸出數(shù)據(jù),3片74LS164作為3排共陽(yáng)數(shù)碼管的串/并轉(zhuǎn)換顯示接口。74LS164為T(mén)Tl單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)引腳按邏輯“與”運(yùn)算規(guī)律輸入信號(hào),共一個(gè)輸入信號(hào)時(shí)可并接,共同作為輸入腳。CP(第8腳)為時(shí)鐘輸入端,可連接到串行口的TXD端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到CP端時(shí),移位寄存器移一位。8個(gè)時(shí)鐘脈沖過(guò)后,8位二進(jìn)制數(shù)全部移入74LS164中。MR腳(第9腳)為復(fù)位端,當(dāng)該腳為低電平時(shí),移位寄存器各位復(fù)0;只有當(dāng)它高電平時(shí),時(shí)鐘脈沖才起作用。Q1~Q8(第3~6和10~13引腳)并行輸出端分別接數(shù)碼管的h~a(因?yàn)榇趶牡臀婚_(kāi)始傳送)各段對(duì)應(yīng)的引腳上。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164的第一個(gè)字節(jié)數(shù)據(jù)到達(dá)了最高位。再來(lái)1個(gè)脈沖,第1個(gè)脈沖就會(huì)從最高位移出,進(jìn)入下個(gè)74LS164的第1位。3片74LS164首尾相串,而時(shí)鐘端則接在一起。這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出的第1字節(jié)數(shù)據(jù)就進(jìn)入了第1片74LS164中,而當(dāng)?shù)?個(gè)8個(gè)脈沖到來(lái)后,第1字節(jié)數(shù)據(jù)就進(jìn)入了第2片74LS164,而隨后的第2字節(jié)的數(shù)據(jù)則進(jìn)入了第1片74LS164。這樣,當(dāng)?shù)?個(gè)8個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最下面的164(第3片)中,其它數(shù)據(jù)依次出現(xiàn)在第二和第一片74LS164中,實(shí)現(xiàn)了數(shù)據(jù)在74LS164中的串行輸入、并行輸出。
在方式0狀態(tài)下,串行口為同步移位寄存器方式,其波特率是固定的,為fosc/12。數(shù)據(jù)由RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)端輸出。發(fā)送、接收數(shù)據(jù)時(shí)低位在先。所以根據(jù)提供的硬件電路圖,在編寫(xiě)程序時(shí),查共陽(yáng)數(shù)碼管的段碼的二進(jìn)制數(shù)據(jù)應(yīng)該將正常的共陽(yáng)數(shù)據(jù)管0~9的二進(jìn)制值按位反序排序,如原來(lái)的二進(jìn)制為11000000(C0H),要改為00000011(03H),就能使數(shù)碼管正常顯示。
4.5 鍵盤(pán)接口的設(shè)計(jì)
由于按鍵只有5個(gè),用普通按鈕接10K上拉電阻,用查詢法完成讀鍵功能。
5 系統(tǒng)程序的設(shè)計(jì)
5.1 陽(yáng)歷程序設(shè)計(jì)
因?yàn)槭褂昧藭r(shí)鐘芯片DS1302,陽(yáng)歷程序只需從DS1302各寄存器中讀出年、周、月、日、[小]時(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì)DS1302進(jìn)行操作之前,必須對(duì)它進(jìn)行初始化,然后從DS1302中讀出數(shù)據(jù),再經(jīng)過(guò)處理后,送給顯示緩沖單元。陽(yáng)歷程序流程圖見(jiàn)圖5.1所示。
5.2 時(shí)間調(diào)整程序設(shè)計(jì)? ?
調(diào)整時(shí)間用5個(gè)調(diào)整按鈕,1個(gè)作為移位、控制用,2個(gè)作為加和減用,還有2個(gè)作為鬧鐘調(diào)整使用,分別定義為控制按鈕、加按鈕、減按鈕、鬧鐘加按紐、鬧鐘減按紐。在調(diào)整時(shí)間過(guò)程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別。所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一定時(shí)間熄滅一次,比如說(shuō)50ms。利用定時(shí)器計(jì)時(shí),當(dāng)達(dá)到50ms溢出時(shí),就送給該位熄滅符,在下一次溢出時(shí),再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時(shí)送正常顯示值給該位,再進(jìn)入下一位調(diào)整閃爍程序。時(shí)間調(diào)整程序流程圖如圖5.2所示。
5.3 溫度程序設(shè)計(jì)
系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序等等。
5.3.1 主程序
主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量溫度值,溫度測(cè)量每1s進(jìn)行一次。其程序流程圖見(jiàn)5.3。
5.3.2 讀出溫度子程序
主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖5.4所示。
5.3.3 溫度轉(zhuǎn)換命令子程序
溫度轉(zhuǎn)換子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖5.5所示。
? ?
5.3.4 計(jì)算溫度子程序
計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖5.6所示。
5.3.5顯示數(shù)據(jù)刷新子程序
顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖5.7所示。
6 調(diào)試及性能分析
6.1 調(diào)試步驟
系統(tǒng)的調(diào)試分為硬件調(diào)試和軟件調(diào)試。其中硬件調(diào)試主要是檢測(cè)硬件電路是否有短路、斷路、虛焊現(xiàn)象。時(shí)鐘和測(cè)溫部分的硬件電路很簡(jiǎn)單,DS1302通過(guò)3根線、DS18B20只通過(guò)1根線與單片機(jī)相連接,很容易檢測(cè),主要是檢測(cè)引腳晶振和電源是否接好。另外可以通過(guò)軟件來(lái)調(diào)試硬件,如編寫(xiě)一個(gè)簡(jiǎn)單的顯示程序來(lái)測(cè)試顯示電路連接是否正確。接下來(lái)可進(jìn)行軟件調(diào)試,可以編寫(xiě)只含DS1302的計(jì)時(shí)和讀寫(xiě)程序、顯示程序,測(cè)試DS1302是否正常工作。最后調(diào)試日歷、時(shí)間、鬧鐘、報(bào)警和溫度程序。
6.2 性能分析
計(jì)時(shí)器最關(guān)鍵的是計(jì)時(shí)的精度。電子萬(wàn)年歷中DS1302上最好使用專(zhuān)用的晶振。經(jīng)測(cè)試制作的電子萬(wàn)年歷,誤差較大,設(shè)計(jì)可以通過(guò)換用標(biāo)準(zhǔn)晶振或用軟件進(jìn)行修正。
7 總結(jié)
此次設(shè)計(jì)立足于電子技術(shù)的實(shí)際運(yùn)用,不斷實(shí)踐,開(kāi)拓了思維,設(shè)計(jì)以考查、調(diào)研、搜集資料、擬訂方案、進(jìn)行系統(tǒng)規(guī)劃、編程、仿真、調(diào)試的流程,使我深刻的體會(huì)到了在學(xué)習(xí)我們專(zhuān)業(yè)的過(guò)程中理論與實(shí)踐相結(jié)合的重要性,同時(shí)也解決了以前學(xué)習(xí)比較模糊的專(zhuān)業(yè)知識(shí)點(diǎn),使自己掌握的專(zhuān)業(yè)知識(shí)更加結(jié)構(gòu)化、系統(tǒng)化。
總之,本次設(shè)計(jì)在各位領(lǐng)導(dǎo)的精心安排與大力支持下;在指導(dǎo)老師的耐心指導(dǎo)下;在各位同學(xué)和朋友的貼心幫助下解決了許多設(shè)計(jì)中的實(shí)際困難,我以最低的成本和最簡(jiǎn)單的方案設(shè)計(jì)出了功能強(qiáng)大的電子萬(wàn)年歷。
-
led
+關(guān)注
關(guān)注
242文章
23351瀏覽量
663140 -
單片機(jī)
+關(guān)注
關(guān)注
6043文章
44619瀏覽量
638467 -
溫度傳感器
+關(guān)注
關(guān)注
48文章
2974瀏覽量
156379 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1883瀏覽量
91401 -
電子萬(wàn)年歷
+關(guān)注
關(guān)注
3文章
38瀏覽量
16004
原文標(biāo)題:
文章出處:【微信號(hào):A1411464185,微信公眾號(hào):multisim】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論