




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE63目錄1緒論 12總體設(shè)計(jì)方案 22.1設(shè)計(jì)思路 22.2設(shè)計(jì)方案 22.3方案比較論證 22.4總體設(shè)計(jì)方框圖 33設(shè)計(jì)原理與分析 43.1硬件電路主要芯片的功能介紹 43.1.1單片機(jī)主控制器 43.1.2溫度傳感器芯片 53.1.3時(shí)鐘芯片DS1302 93.1.416*2LCD液晶顯示1602 124硬件電路 154.1單片機(jī)主控制模塊的設(shè)計(jì) 154.2時(shí)鐘電路模塊的設(shè)計(jì) 154.3溫度采集模塊設(shè)計(jì) 164.4功能按鈕設(shè)計(jì) 164.516*2LCD1602液晶顯示電路設(shè)計(jì) 174.6總體電路圖 175系統(tǒng)軟件設(shè)計(jì) 185.1系統(tǒng)模塊的功能分劃分 185.2總體程序流程框圖 185.3時(shí)鐘調(diào)整時(shí)間的流程圖 205.4修改鍵“UP”的功能流程圖 215.5溫度轉(zhuǎn)換流程圖 226系統(tǒng)仿真測(cè)試 236.1KEIL的使用 236.2Protues軟件仿真 28致謝 31參考文獻(xiàn) 32附錄一總體電路的PCB板圖 33附錄二設(shè)計(jì)電路的仿真電路圖 34附錄二萬(wàn)年歷源程序 351緒論隨著電子技術(shù)的迅速發(fā)展,特別是隨大規(guī)模集成電路出現(xiàn),給人類生活帶來(lái)了根本性的改變。由其是單片機(jī)技術(shù)的應(yīng)用產(chǎn)品已經(jīng)走進(jìn)了千家萬(wàn)戶。其中電子萬(wàn)年歷就是一個(gè)典型的例子。而且在萬(wàn)年歷的基礎(chǔ)上還可以擴(kuò)展其它的實(shí)用功能,比如溫度計(jì)。萬(wàn)年歷是采用數(shù)字電路實(shí)現(xiàn)對(duì).時(shí),分,秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站,碼頭辦公室等公共場(chǎng)所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?,由于?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開(kāi)關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬(wàn)年歷及擴(kuò)大其應(yīng)用,有著非常現(xiàn)實(shí)的意義。市場(chǎng)上有許多電子鐘的專用芯片如:LM8363、LM8365等,但它們功能單一,電路連接復(fù)雜,不便于調(diào)試制作。但是考慮到用單片機(jī)配合時(shí)鐘芯片,可制成功能任意的電子鐘,而且可以做到硬件簡(jiǎn)單、成本低廉。所以本系統(tǒng)采用了以廣泛使用的單片機(jī)AT89S52技術(shù)為核心,配合時(shí)鐘芯片DS1302。軟硬件結(jié)合,使硬件部分大為簡(jiǎn)化,提高了系統(tǒng)穩(wěn)定性,并采用LCD顯示電路、鍵盤電路,使人機(jī)交互簡(jiǎn)便易行,此外結(jié)合音樂(lè)鬧鈴電路、看門狗和供電電路。本方案設(shè)計(jì)出的數(shù)字鐘可以顯示時(shí)間、設(shè)置鬧鈴功能之外。本文首先描述系統(tǒng)硬件工作原理,并附以系統(tǒng)結(jié)構(gòu)框圖加以說(shuō)明,著重介紹了本系統(tǒng)所應(yīng)用的各硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過(guò)程,其次,詳細(xì)闡述了程序的各個(gè)模塊和實(shí)現(xiàn)過(guò)程。本設(shè)計(jì)以數(shù)字集成電路技術(shù)為基礎(chǔ),單片機(jī)技術(shù)為核心。本文編寫的主導(dǎo)思想是軟硬件相結(jié)合,以硬件為基礎(chǔ),來(lái)進(jìn)行各功能模塊的編寫。本設(shè)計(jì)中我重點(diǎn)研究實(shí)現(xiàn)了單片機(jī)+時(shí)鐘芯片這種模式的萬(wàn)年歷,從原理上對(duì)單片機(jī)和時(shí)鐘芯片有了深一步的認(rèn)識(shí),這些基本功能完成后,在軟件基礎(chǔ)上實(shí)現(xiàn)時(shí)間顯示。
2總體設(shè)計(jì)方案2.1設(shè)計(jì)思路用AT89S52處理產(chǎn)生內(nèi)部時(shí)鐘數(shù)據(jù)或者讀取外部時(shí)鐘數(shù)據(jù)和采集外部傳感器的信息進(jìn)行處理,并暫時(shí)寄存在其內(nèi)部的儲(chǔ)存器中,再通過(guò)單片機(jī)調(diào)用內(nèi)部RAM的數(shù)據(jù)并送到LCD或者LED數(shù)碼管上顯示出來(lái)。2.2設(shè)計(jì)方案方案1:?jiǎn)纹瑱C(jī)一般的工作頻率在12MHz左右,而且內(nèi)部還有定時(shí)、計(jì)數(shù)器,可以產(chǎn)生精確的1S定時(shí),由次可以用定時(shí)中斷的方式產(chǎn)生精確的1S時(shí)間,秒位不斷的加1,再設(shè)計(jì)分、時(shí)、星期、日、月、年之間的進(jìn)制,使產(chǎn)生進(jìn)位。本方案只需要單片機(jī)最小系統(tǒng)加上顯示電路,再設(shè)計(jì)簡(jiǎn)單的程序算法就可以實(shí)現(xiàn)。對(duì)于測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理。在顯示電路上,采用數(shù)碼管就可以將年月日星期時(shí)分秒和室內(nèi)溫度顯示出來(lái)方案2:萬(wàn)年歷時(shí)鐘采用單片機(jī)控制DS1302實(shí)時(shí)時(shí)鐘芯片,能達(dá)到走時(shí)準(zhǔn)確且掉電不丟失數(shù)據(jù)的。DS1302與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信僅需用到三個(gè)口線1RES(復(fù)位)2I/O(數(shù)據(jù)線)3SCLK(串行時(shí)鐘)。溫度計(jì)要靈敏反映室溫的變化這樣可采用單片機(jī)與數(shù)字式溫度傳感器DS18B20通訊,采集溫度數(shù)字信號(hào)進(jìn)行處理。DS18B20通過(guò)一個(gè)單線接口發(fā)送或接受信息,因此在單片機(jī)與DS18B20之間僅需一條連接(加上地線)。在顯示電路上,采用16*2的LCD顯示。2.3方案比較論證對(duì)于方案1,單片機(jī)雖然可以產(chǎn)生精確的秒信號(hào),但是單片機(jī)在處理閏年上會(huì)比較麻煩,加之一旦單片機(jī)斷電后,所有的時(shí)間都要重新調(diào)整。對(duì)于測(cè)溫電路,采用熱敏電阻的輸出電壓-溫度特性,要加上A/D轉(zhuǎn)換,溫度傳感信息才能被單片機(jī)所接受,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。在顯示電路上,采用LED數(shù)碼的話要用到單片機(jī)的許多I/O口,甚至I/O不夠用,還需要接上其它芯片大量擴(kuò)展I/O口,這是一個(gè)弊處。對(duì)于方案2:?jiǎn)纹瑱C(jī)不用去產(chǎn)生時(shí)鐘的數(shù)據(jù),時(shí)鐘的數(shù)據(jù)由DS1302獨(dú)立產(chǎn)生,并寄存在其內(nèi)部的寄存器上,單片機(jī)可以通過(guò)三總線與它通訊,不僅可以對(duì)它進(jìn)行讀取實(shí)時(shí)時(shí)鐘數(shù)據(jù),還可以對(duì)它進(jìn)行編程,設(shè)置它的工作模式。單片機(jī)只是處理從DS1302讀出來(lái)的數(shù)據(jù)并送顯示,大大減少了單片機(jī)的負(fù)擔(dān)。而且DS1302可以通過(guò)后備電池繼續(xù)工作,內(nèi)部的時(shí)鐘還在走,下次啟動(dòng)后不用去調(diào)整時(shí)鐘,方便使用?;谕瑯拥脑?,DS18B20也是一個(gè)獨(dú)立的傳感器,只要單片機(jī)配置它的工作狀態(tài)后它就可以獨(dú)立工作,內(nèi)部已經(jīng)把模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),并把數(shù)字信號(hào)儲(chǔ)存在其內(nèi)部的寄存中。同樣,單片機(jī)通過(guò)單總線與它通訊,可以處理9~12位的溫度數(shù)字?jǐn)?shù)據(jù)。在顯示電路上,采用16*2LCD液晶顯示器,能容納年月日星期時(shí)分秒溫度等信息的顯示。LCD顯示器只需占用11個(gè)I/O口就可以工作了,不用其它擴(kuò)展芯片,總體上使電路簡(jiǎn)單化。2.4總體設(shè)計(jì)方框圖AT89S52主控制器DS1302時(shí)鐘芯片DS18B20溫度傳感復(fù)位按鍵LCD顯示器鍵盤12MHz晶振振蕩總體的方框圖如圖2.1所示,控制器采用單片機(jī)AT89S52,溫度傳感器采用DS18B20,用16*2的LCD液晶顯示屏實(shí)現(xiàn)年、月AT89S52主控制器DS1302時(shí)鐘芯片DS18B20溫度傳感復(fù)位按鍵LCD顯示器鍵盤12MHz晶振振蕩圖2.1總體設(shè)計(jì)方框圖
3設(shè)計(jì)原理與分析3.1硬件電路主要芯片的功能介紹本次設(shè)計(jì)的萬(wàn)年歷系統(tǒng)主要包括單片機(jī)主控制器、溫度傳感器芯片、時(shí)鐘芯片DS1302芯片、16*2LCD顯示芯片。3.1.1單片機(jī)主控制器AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。(1)AT89S52的簡(jiǎn)介AT89S52是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含8kBytesISP(In-systemprogrammable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S52具有如下特點(diǎn):40個(gè)引腳,8kBytesFlash片內(nèi)程序存儲(chǔ)器,256bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。
此外,AT89S52設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。(2)AT89S52的內(nèi)部結(jié)構(gòu)圖AT89S52的內(nèi)部結(jié)構(gòu)圖如圖3.1所示:圖3.1AT89S52內(nèi)部結(jié)構(gòu)圖3.1.2溫度傳感器芯片(1)單線溫度傳感器DS18B20介紹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~5.5V;●零待機(jī)功耗;●溫度以9或12位數(shù)字;●用戶可定義報(bào)警設(shè)置;●報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;圖3.2DSl8B20的引腳圖DSl8B20數(shù)字溫度計(jì)提供9位(二進(jìn)制)溫度讀數(shù),指示器件的溫度。信息經(jīng)過(guò)單線接口送入DSl8B20或從DSl8B20送出,因此從主機(jī)CPU到DSl8B20僅需一條線(和地線)。DSl8B20的電源可以由數(shù)據(jù)線本身提供而不需要外部電源。因?yàn)槊恳粋€(gè)DSl8B20在出廠時(shí)已經(jīng)給定了唯一的序號(hào),因此任意多個(gè)DSl8B20可以存放在同一條單線總線上。這允許在許多不同的地方放置溫度敏感器件。DSl8B20的測(cè)量范圍從-55攝式度到+125攝式度,增量值為0.5攝式度,可在圖3.2DSl8B20的引腳圖每一個(gè)DSl8B20包括一個(gè)唯一的64位長(zhǎng)的序號(hào),該序號(hào)值存放在DSl8B20內(nèi)部的ROM(只讀存貯器)中。開(kāi)始8位是產(chǎn)品類型編碼(DSl8B20編碼均為10H)。接著的48位是每個(gè)器件唯一的序號(hào)。最后8位是前面56位的CRC(循環(huán)冗余校驗(yàn))碼。DSl8B20中還有用于存儲(chǔ)測(cè)得的溫度值的兩個(gè)8位存貯器RAM,編號(hào)為0號(hào)和1號(hào)。1號(hào)存貯器存放溫度值的符號(hào),如果溫度為負(fù)(攝式度),則1號(hào)存貯器8位全為1,否則全為0。0號(hào)存貯器用于存放溫度值的補(bǔ)碼,LSB(最低位)的1表示0.5攝式度。將存貯器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)換成十進(jìn)制數(shù)并除以2就得到被測(cè)溫度值(-55攝式度-125攝式度)。DSl8B20的引腳如圖3.2所示。每只DS18B20都可以設(shè)置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采取數(shù)據(jù)總線供電方式可以節(jié)省一根導(dǎo)線,但完成溫度測(cè)量的時(shí)間較長(zhǎng):采取外部供電方式則多用一根導(dǎo)線,但測(cè)量速度較快。(2)DS18B20的測(cè)溫原理器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55減法計(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ù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3.3所示。圖3.3DS18B20的內(nèi)部結(jié)構(gòu)圖64位ROM的結(jié)構(gòu)開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入戶報(bào)警上下限。(3)溫度計(jì)算1、DS18B20用9位存貯溫值度,最高位為符號(hào)位,如表3.1為DS18B20的溫度存儲(chǔ)方式,負(fù)溫度S=1,正溫度S=0。如:00AAH為+85攝式度,0032H為25攝式度,F(xiàn)F92H為55攝式度表3.118B20用9位的溫度存儲(chǔ)方式2、DS18B20用12位存貯溫值度,最高位為符號(hào)位,如表3.2為DS18B20的溫度存儲(chǔ)方式,負(fù)溫度S=1,正溫度S=0。如:0550H為+85攝式度,0191H為25.0625攝式度,FC90H為-55攝式度。表3.218B20用12位的溫度存儲(chǔ)方式DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEROM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3.4所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。圖3.4DS18B20存儲(chǔ)器結(jié)構(gòu)DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3.2所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。由表3.3可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。表3.3DS18B20溫度轉(zhuǎn)換時(shí)間表高速暫存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℃當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值;表3.4為部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù):表3.4部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)溫度/℃二進(jìn)制表示十六進(jìn)制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H3.1.3時(shí)鐘芯片DS1302(1)時(shí)鐘芯片DS1302的性能DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信實(shí)時(shí)時(shí)鐘/日歷電路提供秒分時(shí)日日期月年的信息每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整時(shí)鐘操作可通過(guò)AM/PM指示決定采用24或12小時(shí)格式DS1302與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信僅需用到三個(gè)口線1RES復(fù)位2I/O數(shù)據(jù)線3SCLK串行時(shí)鐘時(shí)鐘/RAM的讀/寫數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信DS1302工作時(shí)功耗很低保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW?!駥?shí)時(shí)時(shí)鐘具有能計(jì)算2100年之前的秒、分、時(shí)、日、日期、星期、月、年的能力還有閏年調(diào)整的能力●318位暫存數(shù)據(jù)存儲(chǔ)RAM●串行I/O口方式使得管腳數(shù)量最少●寬范圍工作電壓2.0~5.5V●工作電流2.0V時(shí),小于300nA●讀/寫時(shí)鐘或RAM數(shù)據(jù)時(shí)有兩種傳送方式單字節(jié)傳送和多字圖3.5DS1302的封裝及引腳功能節(jié)傳送字符組方式●8腳DIP封裝或可選的8腳SOIC封裝根據(jù)表面裝配,如圖3.5所示●簡(jiǎn)單3線接口●與TTL兼容Vcc=5V●可選工業(yè)級(jí)溫度范圍-40℃+(2)時(shí)鐘芯片DS1302的工作原理DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置“0”,接著把RST端置“1”,最后才給予SCLK脈沖;表3.5為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出的?!癈H”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行?!癢P”是寫保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WPa.DS1302的控制字節(jié)DS1302的控制字如表3.5所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出表3.5DS1302的控制字b.數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。如下圖3.6所示:圖3.6DS1302讀/寫時(shí)序圖c.DS1302的數(shù)據(jù)讀寫DS1302單字節(jié)讀寫的波形如圖3.6所示。由波形可以看出,無(wú)論是從DS1302中讀一個(gè)數(shù)據(jù),還是寫一個(gè)字節(jié)數(shù)據(jù)到DS1302中,都要先寫一個(gè)命令字到DS1302中。即通過(guò)SCLK引腳(7號(hào)引腳)向DS1302輸入8個(gè)脈沖,把I/O引腳(6號(hào)引腳)上的命令字寫入DS1302。為了啟動(dòng)數(shù)據(jù)傳輸,引腳(5號(hào)引腳)應(yīng)為高電平。在將由0置1的過(guò)程中,SCLK引腳必須為邏輯0。然后才能進(jìn)行讀寫操作。I/O引腳上的數(shù)據(jù)在SCLK的上升沿串行輸入(寫數(shù)據(jù)到DS1302),在SCLK的下降沿串行輸出(讀數(shù)據(jù))。d.DS1302的寄存器DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表3.6所示:寫寄存器讀寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/010時(shí)時(shí)/PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10年年8EH8FHWP0000000表3.6DS1302的日歷、時(shí)間寄存器此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。3.1.416*2LCD液晶顯示1602(1)1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15~16腳:空腳。指令RSR/WD7D6D5D4D3D2D1D0清顯示0000000001光標(biāo)返回000000001*置輸入模式000000011/DS顯示開(kāi)/關(guān)控制0000001DCB光標(biāo)或字符移位000001S/CR/L**置功能00001DLNF**置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址(AGG)置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址(ADD)讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址(AC)寫數(shù)到CGRAM或DDRAM10要寫的數(shù)從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)(2)1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.7所示:表3.7控制指令它的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。指令4:顯示開(kāi)關(guān)控制。D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示F:低電平時(shí)顯示5*7的點(diǎn)陣字符,高電平時(shí)顯示5*10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。(3)DM-162液晶顯示模塊可以和單片機(jī)AT89C52直接接口,電路如圖3.7所示:圖3.7接口電路液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表3.8是DM-162的內(nèi)部顯示地址。表3.8DM-16的內(nèi)部顯示地址比如第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)(4)基本操作時(shí)序如圖3.8所示:讀狀態(tài)
輸入:RS=L,RW=H,E=H
輸出:DB0~DB7=狀態(tài)字寫指令
輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼
讀數(shù)據(jù)
輸入:RS=H,RW=H,E=H
輸出:DB0~DB7=數(shù)據(jù)寫數(shù)據(jù)
輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)
圖3.8LCD的讀寫時(shí)序4硬件電路4.1單片機(jī)主控制模塊的設(shè)計(jì)AT89S52單片機(jī)為40引腳雙列直插芯片,MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。單片機(jī)的最小系統(tǒng)如下圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端.如圖4.1所示:圖4.1單片機(jī)最小系統(tǒng)4.2時(shí)鐘電路模塊的設(shè)計(jì)圖4.2是DS1302與單片機(jī)的連接,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RSTS置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK為低電平時(shí),才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。圖4.2時(shí)鐘芯片與單片機(jī)的連接4.3溫度采集模塊設(shè)計(jì)如圖4.3所示,采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測(cè)量精度高,電路連接簡(jiǎn)單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P2.4與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc接電源,Vss接地。圖4.3溫度傳感器與單片機(jī)的連接4.4功能按鈕設(shè)計(jì)當(dāng)按鈕被按下時(shí),該按鈕對(duì)應(yīng)的I/O口被拉為低電平,松開(kāi)時(shí)按鈕對(duì)應(yīng)的I/O口由內(nèi)部的上拉電阻將該I/O拉為高電平,如圖4.4所示:圖4.4功能按鍵電路4.516*2LCD1602液晶顯示電路設(shè)計(jì)根據(jù)其讀寫的時(shí)序模擬總線的方式與單片機(jī)進(jìn)行數(shù)據(jù)的通訊,首先將數(shù)據(jù)從I/O口讀入或送出,再選擇R/W和RS的電平進(jìn)行不同的操作,在使能端E下降沿時(shí)觸發(fā)數(shù)據(jù)的讀入或送出。注意P0口要接上拉電阻,如圖4.5所示:圖4.5LCD液晶顯示屏與單片機(jī)的連接4.6總體電路圖本設(shè)計(jì)的具在溫度指示的數(shù)字萬(wàn)年歷的總體電路圖如圖4.6所示:圖4.6總體電路圖5系統(tǒng)軟件設(shè)計(jì)5.1系統(tǒng)模塊的功能分劃分萬(wàn)年歷程序設(shè)計(jì)總體上分為四個(gè)大模塊,分別是DS1302時(shí)鐘程序模塊、DS18B20測(cè)溫模塊、LCD顯示模塊、鍵盤功能模塊。a.DS1302時(shí)鐘程序模塊包括設(shè)置DS1302初始時(shí)間、從DS1302讀時(shí)間子程序、寫1302一字節(jié)子程序、讀1302一字節(jié)、關(guān)閉寫保護(hù)、開(kāi)啟寫保護(hù)、關(guān)閉時(shí)鐘、延時(shí)子100MS程序。b.DS18B20測(cè)溫模塊包括DS18B20的初始化子程序、DS18B20數(shù)據(jù)處理子程序、讀出溫度值的子程序、DS18B20復(fù)位子程序、寫DS18B20的1位字節(jié)子程序、讀DS18B20的1個(gè)字節(jié)子程序。c.LCD顯示模塊包括LCD初始化子程序、寫入控制命令的子程序、判斷LCD顯示器是否忙的子程序、向LCD中的DDRAM中寫數(shù)據(jù)、查詢LCD字符表、調(diào)整模式的顯示子程序、正常模式LCD顯示子程序。d.鍵盤功能模塊包括模式選擇按鍵SET子程序、調(diào)整模式選擇子程序、OUT鍵掃描子程序、UP按鍵掃描子程序、DOWN按鍵掃描子程序。5.2總體程序流程框圖本設(shè)計(jì)中,實(shí)現(xiàn)功能的總體程序流程框圖如下圖5.1所示:調(diào)用調(diào)整模式模塊調(diào)用調(diào)整模式模塊NO停止時(shí)鐘,置時(shí)鐘停止標(biāo)志位YESCOUNT值賦給A調(diào)用JMP@A+DPTR散轉(zhuǎn)指令散轉(zhuǎn)到8個(gè)跳轉(zhuǎn)首地址由COUNT的值轉(zhuǎn)入秒/分/時(shí)/星期/日期/月/年的修改位的操作掃描OUT、UP、DOWN三個(gè)按鍵OUT、UP、DOWN三個(gè)按鍵如果有按下,執(zhí)行相應(yīng)的功能調(diào)用調(diào)整模式下的顯示子程序返回標(biāo)志位DONE的查詢當(dāng)前時(shí)鐘停止嗎?標(biāo)志位DONE=1嗎?NO調(diào)用LCD顯示模塊掃描SET按鈕清時(shí)鐘停止、調(diào)整模式標(biāo)志位4個(gè)模塊的初始化程序開(kāi)始SET鍵有按下COUNT加1YES圖5.1總體程序流程框圖5.3時(shí)鐘調(diào)整時(shí)間的流程圖時(shí)鐘調(diào)整時(shí)間的流程圖5.2所示:YESYES時(shí)鐘顯示開(kāi)始判斷SET鍵是否有按下?COUNT計(jì)算按鍵的次數(shù)1次,進(jìn)入秒調(diào)整2次,進(jìn)入分調(diào)整3次,進(jìn)入時(shí)調(diào)整等待按鍵等待按鍵等待按鍵UP有效DOWN有效OUT有效DOWN有效UP有效DOWN有效UP有效OUT有效OUT有效加1減1加1減1加1減1NO4、5…7次同理周、日/月/年的調(diào)整……退出時(shí)間調(diào)整圖5.2時(shí)鐘調(diào)整時(shí)間的流程5.4修改鍵“UP”的功能流程圖修改鍵“UP”的功能流程圖如圖5.3所示:開(kāi)始開(kāi)始端口寫1,并掃描UP鍵是否有按下?退出UP鍵的掃描NO端口寫1,并掃描UP鍵是否有按下?退出UP鍵的掃描NO………………A賦給秒的單元內(nèi)容秒對(duì)應(yīng)的單元內(nèi)容賦給A,A再加1年位的加1操作加1后秒內(nèi)容溢出嗎?BCD碼調(diào)整溢出置0退出秒的加1操作……YE溫度轉(zhuǎn)換讀取溫度數(shù)值流程圖SNO散轉(zhuǎn)指令JMP@A+DPTR賦跳轉(zhuǎn)的表頭給DPTRA的值為0是退出秒位的加1操作分位的加1操作時(shí)位的加1操作星期位的加1操作日位的加1操作月位的加1操作圖5.3修改鍵“UP”的功能流程圖YESYES延時(shí),將COUNT的值賦給A延時(shí),將COUNT的值賦給A5.5溫度轉(zhuǎn)換流程圖初始化DS18B20開(kāi)始應(yīng)答脈沖初始化DS18B20開(kāi)始應(yīng)答脈沖發(fā)起SkipRom命令發(fā)起Convert命令延時(shí)1S等待溫度轉(zhuǎn)換完成初始化DS18B20應(yīng)答脈沖發(fā)起ReadSeratchpad命令讀取第1、2字節(jié)即為溫度數(shù)據(jù)NOYESYESNO圖5.4溫度轉(zhuǎn)換讀取溫度數(shù)值流程圖
6系統(tǒng)仿真測(cè)試首先把各個(gè)模塊的程序編好,在偉福W6000中調(diào)試沒(méi)有錯(cuò)誤后,再到Protues7.1中畫(huà)好并連接電路圖進(jìn)行程序仿真。各個(gè)部分的功能后再把它們綜合到一個(gè)主程序中去,在偉福W6000中調(diào)試通過(guò)后再把它用KeiluVision2軟件把程序生成hex格式最后到Protues7.1中仿真。在綜合到一起的時(shí)候,出現(xiàn)了RAM分配錯(cuò)誤的問(wèn)題,因?yàn)樵仁且粋€(gè)模塊子程序在運(yùn)行,RAM的分配只要不要跟子程序中的分配不沖突就可以了,但是在綜合各個(gè)模塊子程序的時(shí)候就會(huì)出現(xiàn)RAM分配沖突的問(wèn)題。最好是在設(shè)計(jì)程序之前先把RAM的空間分配好。6.1KEIL的使用KeiluVision2是目前使用廣泛的單片機(jī)開(kāi)發(fā)軟件,它集成了源程序編輯和程序調(diào)試于一體,支持匯編、C、PL/M語(yǔ)言。keilC51v6.12的使用:
點(diǎn)擊桌面快捷圖標(biāo),如圖6.1所示,可以直接進(jìn)入主畫(huà)面:在Keil系統(tǒng)中,每做個(gè)獨(dú)立的程序,都視為工程(或者叫項(xiàng)目)。首先從菜但的“工程”中“新建工程...”,建立我們圖6.1快捷圖標(biāo)將要做的工程項(xiàng)目如圖6.2所示:圖6.2新建建工程新建的工程要起個(gè)與工程項(xiàng)目意義一致的名字,可以是中文名;我們這里的程序是實(shí)驗(yàn)測(cè)試程序,所以起的名字為Test,并將Test工程“保存”到D:\Keil下如圖6.3所示:圖6.3新建名工程窗口接下來(lái),Keil環(huán)境要求我們?yōu)門est工程選擇一個(gè)單片機(jī)型號(hào);我們選擇Atmel公司的89C52(雖然我們使用的是89S52,但由于89S52與89C52內(nèi)、外部結(jié)構(gòu)完全一樣,所以這里依然選擇“89C52”),如圖6.4所示:圖6.4選擇工程項(xiàng)目“確定”后工程項(xiàng)目就算建立了。立了工程項(xiàng)目,肯定要實(shí)施這個(gè)工程,現(xiàn)在就為工程添加程序;點(diǎn)擊“文件”中的“新建”,新建一個(gè)空白文檔,如圖6.5所示;這個(gè)空白文檔就是讓我們編寫單片機(jī)程序的場(chǎng)所。在這里你可以進(jìn)行編輯、修改等操作。圖6.5新建文件寫完后再檢查一下,并保存文件,保存文件時(shí),其文件名最好與前面建立的工程名相同(當(dāng)然這里為Test了),其擴(kuò)展名必須為.Asm!“文件名”中一定要寫全,如:Test.Asm;保存后的文檔彩色語(yǔ)法會(huì)起作用,將關(guān)鍵字實(shí)行彩色顯示,如圖6.6所示:圖6.6保存文檔保存了Asm文件后,還要將其添加到工程中。具體做法如下:(如下圖6.7所示)鼠標(biāo)右鍵點(diǎn)擊“SourceGroup1”,在彈出的菜單中選“增加文件到組SourceGroup1”圖6.7添加文件在接下來(lái)出現(xiàn)的窗口中,選擇“文件類型”為“Asm源文件(*.a*,*.src)”(由于我們使用的是匯編語(yǔ)言,所以選擇Asm源文件),選中剛才保存的Test.Asm,按“Add”,再按“關(guān)閉”,文件就添加到了工程中,如圖6.8所示:圖6.8添加到工程中向工程添加了源文件后,鼠標(biāo)右鍵點(diǎn)擊“TarGet1”,在彈出的菜單中選“目標(biāo)Target1屬性”:在打開(kāi)的話框中,選擇“輸出”選項(xiàng)卡,在這個(gè)選項(xiàng)卡中,“E生成HEX文件”選項(xiàng)前要打勾,按“確定”退出,如圖6.9所示。圖6.9目標(biāo)TarGet1屬性最后,從菜單的“工程”中執(zhí)行“R重新構(gòu)造所有目標(biāo)”(或者按下圖紅圈中的按鈕),匯編、連接、創(chuàng)建Hex文件一氣呵成;在工程文件的目錄下就會(huì)生成與工程名相同的一些文件,其中大部分文件我們并不必關(guān)心,而生成的Hex文件是我們需要的!它是要燒寫到單片機(jī)中的最終代碼,也就是單片機(jī)可以執(zhí)行的程序。
這里生成的是Test.HEX,稍后就寫入。若在下面的狀態(tài)窗中有錯(cuò)誤提示,就需要再次編輯、修改源程序(如語(yǔ)法、字符有錯(cuò)等)、保存、構(gòu)造所有。直至沒(méi)有錯(cuò)誤,如圖6.10所示:圖6.10生成hex格式接下來(lái),我們啟動(dòng)Protues軟件仿真,將剛剛生成的Test.Hex燒寫到單片機(jī)芯片,在實(shí)驗(yàn)板上實(shí)際驗(yàn)證一下。6.2Protues軟件仿真ProteusISIS是英國(guó)Labcenter公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點(diǎn)是:①實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。②支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。(1)進(jìn)入ProteusISIS雙擊桌面上的ISIS6Professional圖標(biāo)或者單擊屏幕左下方的“開(kāi)始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出現(xiàn)如圖6.11所示屏幕,表明進(jìn)入ProteusISIS集成環(huán)境。圖6.11啟動(dòng)屏幕(2)工作界面ProteusISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖4-2所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口,如圖6.12所示:圖6.12工作界面根據(jù)設(shè)計(jì)原理畫(huà)出仿真原理圖(如附錄二),檢查電路連接無(wú)誤后,雙擊單片機(jī)芯片AT89S52,如圖6.13所示:圖6.13燒寫程序
把生成的Test.Hex燒寫到單片機(jī)芯片,點(diǎn)擊仿真進(jìn)程控制按鈕,點(diǎn)擊運(yùn)行,觀看LCD液晶顯示效果,若在實(shí)驗(yàn)板上實(shí)際驗(yàn)證的并不是我們預(yù)期的效果,那么,就需要再次返回到編輯、修改源程序那一步,修改后再構(gòu)造所有,再次將生成的Hex文件在51ISP中燒寫、實(shí)驗(yàn),直至成功!如下圖6.14是本設(shè)計(jì)測(cè)試的效果顯示。圖6.14測(cè)試結(jié)果顯示
致謝本次設(shè)計(jì)是我們遇到過(guò)的較大的設(shè)計(jì),所以遇到的問(wèn)題也比較的多,尤其是以前沒(méi)有接觸過(guò)如此復(fù)雜的硬件電路以及軟件編程,在軟、硬件設(shè)計(jì)和調(diào)試中遇到了不少的困難,在李建軍老師的耐心指導(dǎo)下和同學(xué)的幫助才逐一克服了難題,學(xué)習(xí)到了不少的專業(yè)知識(shí)。在整個(gè)設(shè)計(jì)過(guò)程之前,我已經(jīng)在網(wǎng)上找了相關(guān)方面的資料,萬(wàn)事開(kāi)始難,一開(kāi)始不知道從哪里下手。后來(lái)慢慢學(xué)會(huì)分析系統(tǒng),將系統(tǒng)模塊化,各個(gè)模塊可以在軟件或者硬件上實(shí)現(xiàn)。在確保各個(gè)模塊的硬件電路和與之相搭配的程序能夠正常工作后在把它們組成一個(gè)系統(tǒng)。由于我的理論知識(shí)水平有限,實(shí)踐能力和設(shè)計(jì)經(jīng)驗(yàn)不足,在設(shè)計(jì)的過(guò)程中難免還存在一些問(wèn)題甚至是錯(cuò)誤。懇請(qǐng)各位老師批評(píng)指導(dǎo),以便我在以后的學(xué)習(xí)和工作中加以改正。我要衷心的感謝我的指導(dǎo)老師和在這三年中辛勤培育過(guò)我的所有老師及領(lǐng)導(dǎo),希望我的畢業(yè)設(shè)計(jì)能給各位老師交上一份滿意的答卷,也為我這三年的大學(xué)生活畫(huà)上一個(gè)圓滿的句號(hào)!本次畢業(yè)設(shè)計(jì)能夠順利完成離不開(kāi)我的指導(dǎo)老師李建軍老師的幫助,在李老師的細(xì)心指導(dǎo)下,本設(shè)計(jì)得以順利完成,在這里對(duì)他的幫助表示衷心的感謝。當(dāng)然也離不開(kāi)同學(xué)對(duì)我的大力支持,在此一并對(duì)他們表示感謝!在指導(dǎo)老師的幫助下,我能夠認(rèn)清自己的不足,并能很好的解決這些問(wèn)題。在今后的日子里,我會(huì)進(jìn)一步加強(qiáng)自己的動(dòng)手能力,豐富自己的知識(shí)面,并在以后工作崗位中發(fā)揮我所長(zhǎng),為社會(huì)作出貢獻(xiàn)。
參考文獻(xiàn)李朝青.單片機(jī)原理及接口技術(shù)[M],北京:北京航天航空大學(xué)出版社,2005李廣弟.單片機(jī)基礎(chǔ)[M],北京:北京航空航天大學(xué)出版社,2000萬(wàn)光毅.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程[M],北京:北京航空航天大學(xué)出版社,2003唐亞平、李移倫.單片機(jī)原理實(shí)訓(xùn)與學(xué)習(xí)指導(dǎo)[M],長(zhǎng)沙:中南大學(xué)出版社,2006劉軍.單片機(jī)原理與接口技術(shù)[M],華東理工大學(xué)出版社,2006謝自美.電子線路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試[M],武漢:華中理工大學(xué)出版社,2000
附錄一總體電路的PCB板圖附錄二設(shè)計(jì)電路的仿真電路圖
附錄二萬(wàn)年歷源程序COUNTEQU67H;SET鍵按下的次數(shù)DONEBIT40H;進(jìn)入調(diào)整狀態(tài)的標(biāo)志位FLAGBIT41H;時(shí)鐘停止標(biāo)志位SETSBITP2.0;SET鍵UPBITP2.1;UP鍵DOWNBITP2.2;DOWN鍵OUTBITP2.3;OUT鍵RSBITP3.5;LCD1602數(shù)據(jù)/命令選擇端RWBITP3.6;LCD1602讀寫選擇端EBITP3.7;LCD1602使能端DATBITP2.4;DS18B20模擬1-WIRE的數(shù)據(jù)線T_CLKBITP2.5;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳T_IOBITP2.6;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳T_RSTBITP2.7;實(shí)時(shí)時(shí)鐘復(fù)位線引腳THEQU85;高溫報(bào)警點(diǎn)TLEQU00;低溫報(bào)警點(diǎn)TEMPHEQU40H;讀出寄存器5個(gè)單元內(nèi)容:0,存溫度高8位TEMPLEQU41H;1,存溫度低8位REG2EQU42H;2,存TH值REG3EQU43H;3,存TL值REG4EQU44H;4,存CONFIG數(shù)據(jù);CONFIG9EQU1FH;選擇9位精度的配置數(shù)據(jù)(作為立即數(shù));CONFIG10EQU3FH;選擇10位精度的配置數(shù)據(jù);CONFIG11EQU5FH;選擇11位精度的配置數(shù)據(jù);CONFIG12EQU7FH;選擇12位精度的配置數(shù)據(jù)SECONDEQU60H ;秒的緩沖區(qū)(60H~66H單元用于DS1302的數(shù)據(jù))MINUTEEQU61H ;分的緩沖區(qū)HOUREQU62H;小時(shí)的緩沖區(qū)DATEEQU63H ;日期的緩沖區(qū)MONTHEQU64H;月的緩沖區(qū)WEEKEQU65H ;星期的緩沖區(qū)YEAREQU66H ;年的緩沖區(qū);*******************主程序**********************ORG0AJMPSTARTSTART:MOVSP,#07HMOVCOUNT,#00HCLRFLAGCLRDONEMOV60H,#00HMOV61H,#42HMOV62H,#11HMOV63H,#04HMOV64H,#03HMOV65H,#02HMOV66H,#08HSETBDAT;端口寫1LCALLLCD_INIT;初始化LCDLCALLDISPLAY;送初始化值到液晶屏顯示LCALLD18B20_INIT;初始化DS18B20LCALLSet1302;設(shè)置DS1302參數(shù)MAIN:JBDONE,SEL;標(biāo)志位DONE為1時(shí)進(jìn)入調(diào)整模式LCALLDISPLAYCLRFLAG;清時(shí)鐘停止的標(biāo)志位LCALLSETKEY;掃描SET功能鍵AJMPMAINSEL:LCALLKEYDONE;調(diào)用調(diào)整模式AJMPMAIN;返回再查詢;***************調(diào)整模式選擇子程序*******************KEYDONE:JBFLAG,SELA;時(shí)鐘是否停止,是停止跳SELALCALLSHUT_WP;關(guān)閉寫保護(hù)LCALLREAD_TIME;讀時(shí)鐘:秒分鐘日月星期年數(shù)據(jù)LCALLSHUT_CLOCK;停止時(shí)鐘計(jì)時(shí)LCALLSTART_WP;開(kāi)寫保護(hù)SETBFLAG;關(guān)閉時(shí)鐘標(biāo)志SELA:LCALLMOVDECACLRCRLCAMOVDPTR,#FUNJMP@A+DPTR;修改對(duì)象的散轉(zhuǎn)FUN:AJMPSECAJMPMINAJMPHOUAJMPWEEKSAJMPDAYSAJMPMONAJMPYEARSAJMPFULL;****************調(diào)整秒的操作***********SEC:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;****************調(diào)整分的操作***********MIN:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;****************調(diào)整時(shí)的操作***********HOU:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLST_COUNTAJMPOUT_KEYDONE;****************調(diào)整星期的操作**********WEEKS:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;****************調(diào)整日的操作***********DAYS:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;****************調(diào)整月的操作***********MON:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;****************調(diào)整年的操作***********YEARS:LCALLOUTKEYLCALLUPKEYLCALLDOWNKEYLCALLAJMPOUT_KEYDONE;**************SET鍵按8次跳出**********FULL:MOVCOUNT,#00HCLRDONEAJMPOUT_KEYDONEOUT_KEYDONE:LCALLSet1302RET;*******子程序模式選擇按鍵SET***********SETKEY:CALLDELAY_BY_R6;100msMOVR6,#200CALLDELAY_BY_R6;100msMOVR6,#200CALLDELAY_BY_R6;100msMOVR6,#200CALLDELAY_BY_R6;100msMOVR6,#200CALLDELAY_BY_R6;100msSETBSETS;端口寫1JBSETS,LALCALLDELAYINCCOUNT;有按下,COUNT加1SETBDONE;開(kāi)啟DONE標(biāo)志位,進(jìn)入調(diào)整模式LA:RET;************子程序退出鍵掃描******************OUTKEY:JBOUT,LBMOVCOUNT,#00HCLRDONELB:RET;***********子程序升序按鍵掃描**************UPKEY:SETBUP;端口寫1JNBUP,SS1;查詢UP鍵,沒(méi)按下跳出加1模式AJMPOUT_ADDSS1:LCALLDELAYMOVCLRCRLCAMOVDPTR,#ADD_FUN;送跳轉(zhuǎn)的表頭JMP@A+DPTRADD_FUN:AJMPOUT_ADD;退出加1模式AJMPSEC_ADD;跳轉(zhuǎn)到秒的加1AJMPMIN_ADD;跳轉(zhuǎn)到分的加1AJMPHOU_ADD;跳轉(zhuǎn)到時(shí)的加1AJMPWEEKS_ADD;跳轉(zhuǎn)到星期的加1AJMPDAYS_ADD;跳轉(zhuǎn)到日的加1AJMPMON_ADD;跳轉(zhuǎn)到月的加1AJMPYEARS_ADD;跳轉(zhuǎn)到年的加1SEC_ADD:MOVADDA,#01HDAAMOVCJNEMOVEX01:AJMPOUT_ADDMIN_ADD:MOVADDA,#01HDAAMOVMINUTE,ACJNEMOVMINUTE,#00HEX02:AJMPOUT_ADDHOU_ADD:MOVADDA,#01HDAAMOVHOUR,ACJNEMOVHOUR,#00HEX03:AJMPOUT_ADDWEEKS_ADD:MOVADDA,#01HMOVWEEK,ADAACJNEMOVWEEK,#01HEX04:AJMPOUT_ADDDAYS_ADD:MOVADDA,#01HDAAMOVDATE,ACJNEMOVDATE,#01HEX05:AJMPOUT_ADDMON_ADD:MOVADDA,#01HDAAMOVMONTH,ACJNEMOVMONTH,#01HEX06:AJMPOUT_ADDYEARS_ADD:MOVADDA,#01HDAAMOVYEAR,ACJNEMOVYEAR,#01HEX07:AJMPOUT_ADDOUT_ADD:RET;退出加1模式;***********子程序降序按鍵掃描**************DOWNKEY:SETBDOWN;端口寫1JNBDOWN,SS2;查詢DOWN鍵,沒(méi)按下的跳出AJMPOUT_DECSS2:LCALLDELAY;DOWN鍵有按下,調(diào)用COUNT,再散轉(zhuǎn)MOVCLRCRLCAMOVDPTR,#DEC_FUN;送跳轉(zhuǎn)的表頭JMP@A+DPTRDEC_FUN:AJMPOUT_DEC;退出減1模式AJMPSEC_DEC;跳轉(zhuǎn)到秒的減1AJMPMIN_DEC;跳轉(zhuǎn)到分的減1AJMPHOU_DEC;跳轉(zhuǎn)到時(shí)的減1AJMPWEEKS_DEC;跳轉(zhuǎn)到星期的減1AJMPDAYS_DEC;跳轉(zhuǎn)到日的減1AJMPMON_DEC;跳轉(zhuǎn)到月的減1AJMPYEARS_DEC;跳轉(zhuǎn)到年的減1SEC_DEC:;秒位的減1MOVANLA,#0FH;取秒的個(gè)位JZJA1;個(gè)位為0順序執(zhí)行DECSECOND;個(gè)位不是0的就自減1AJMPEX8JA1:MOVA,SECOND;個(gè)位是0的運(yùn)用BCD碼的加法運(yùn)算ADDA,#0FFH;減去一個(gè)數(shù)等于加上這個(gè)數(shù)的負(fù)數(shù)的補(bǔ)碼CLRCSUBBMOVCJNEA,#0F9H,EX8;溢出范圍的置它們?yōu)?9HMOVEX8:AJMPOUT_DECMIN_DEC:;分位的減1MOVANLJZJA2;個(gè)位為0順序執(zhí)行DECMINUTEAJMPEX9JA2:MOVADDA,#0FFHCLRCSUBBMOVMINUTE,ACJNEA,#MOVMINUTE,#59HEX9:AJMPOUT_DECHOU_DEC:;時(shí)位的減1MOVANLJZJA3;個(gè)位為0順序執(zhí)行DECHOURAJMPEX10JA3:MOVADDA,#0FFHCLRCSUBBMOVHOUR,ACJNEA,#MOVHOUR,#23HEX10:AJMPOUT_DECWEEKS_DEC:;星期的減1MOVANLJZJA4;個(gè)位為0順序執(zhí)行DECWEEKAJMPEX11JA4:MOVADDA,#0FFHCLRCSUBBMOVWEEK,ACJNEA,#MOVWEEK,#07HEX11:AJMPOUT_DECDAYS_DEC:;日的減1MOVAANLJZJA5;個(gè)位為0順序執(zhí)行DECDATEAJMPEX12JA5:MOVADDA,#0FFHCLRCSUBBMOVDATE,ACJNEA,#MOVDATE,#31HEX12:AJMPOUT_DECMON_DEC:;月份的減1MOVANLJZJA6;個(gè)位為0順序執(zhí)行DECMONTHAJMPEX13JA6:MOVADDA,#0FFHCLRCSUBBMOVMONTH,ACJNEA,#MOVMONTH,#12HEX13:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 園林建設(shè)專項(xiàng)施工方案
- 2024年廣東省中考滿分作文《當(dāng)好自己故事的主角》3
- 合作商超協(xié)議合同范本
- 胃造口術(shù)后護(hù)理
- 農(nóng)莊永久出售合同范例
- 交運(yùn)股合同范例
- 制定高效的日常生產(chǎn)計(jì)劃
- 加強(qiáng)知識(shí)管理的有效方式計(jì)劃
- 品牌數(shù)字化轉(zhuǎn)型的路徑與挑戰(zhàn)計(jì)劃
- 項(xiàng)目管理的最佳實(shí)踐計(jì)劃
- HYT 0332-2022 海洋大數(shù)據(jù)標(biāo)準(zhǔn)體系(正式版)
- 全新供土協(xié)議
- 發(fā)電機(jī)組檢修方案技術(shù)指導(dǎo)
- 第2課《讓美德照亮幸福人生》第2框《做守家庭美德的好成員》-【中職專用】《職業(yè)道德與法治》同步課堂課件
- 條件概率與全概率公式高二下學(xué)期數(shù)學(xué)人教A版(2019)選擇性必修第三冊(cè)
- (正式版)JBT 10437-2024 電線電纜用可交聯(lián)聚乙烯絕緣料
- 法律知識(shí)圖譜構(gòu)建及應(yīng)用
- 八卦的基本介紹及其科學(xué)內(nèi)涵
- 內(nèi)科護(hù)理學(xué)慢性腎衰竭
- (建筑制圖)課程綜合自測(cè)題3(試卷和答案)
- 公司商業(yè)模式策劃案關(guān)鍵合作伙伴
評(píng)論
0/150
提交評(píng)論