版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 帶溫度計(jì)的萬(wàn)年歷設(shè)計(jì)方案</p><p><b> 1 緒論</b></p><p> 隨著電子技術(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ì)。</p><p&
2、gt; 萬(wàn)年歷是采用數(shù)字電路實(shí)現(xiàn)對(duì).時(shí),分,秒.數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車(chē)站, 碼頭辦公室等公共場(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í)電氣的自
3、動(dòng)啟用等,但是所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究萬(wàn)年歷及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p> 市場(chǎng)上有許多電子鐘的專用芯片如:LM8363、LM8365等,但它們功能單一,電路連接復(fù)雜,不便于調(diào)試制作。但是考慮到用單片機(jī)配合時(shí)鐘芯片,可制成功能任意的電子鐘,而且可以做到硬件簡(jiǎn)單、成本低廉。所以本系統(tǒng)采用了以廣泛使用的單片機(jī)AT89S52技術(shù)為核心,配合時(shí)鐘芯片DS1302。軟硬件結(jié)合,
4、使硬件部分大為簡(jiǎn)化,提高了系統(tǒng)穩(wěn)定性,并采用LCD顯示電路、鍵盤(pán)電路,使人機(jī)交互簡(jiǎn)便易行,此外結(jié)合音樂(lè)鬧鈴電路、看門(mén)狗和供電電路。本方案設(shè)計(jì)出的數(shù)字鐘可以顯示時(shí)間、設(shè)置鬧鈴功能之外。</p><p> 本文首先描述系統(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ù)
5、為核心。本文編寫(xiě)的主導(dǎo)思想是軟硬件相結(jié)合,以硬件為基礎(chǔ),來(lái)進(jìn)行各功能模塊的編寫(xiě)。</p><p> 本設(shè)計(jì)中我重點(diǎn)研究實(shí)現(xiàn)了單片機(jī)+時(shí)鐘芯片這種模式的萬(wàn)年歷,從原理上對(duì)單片機(jī)和時(shí)鐘芯片有了深一步的認(rèn)識(shí),這些基本功能完成后,在軟件基礎(chǔ)上實(shí)現(xiàn)時(shí)間顯示。</p><p><b> 2 總體設(shè)計(jì)方案</b></p><p><b> 2
6、.1設(shè)計(jì)思路</b></p><p> 用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)。</p><p><b> 2.2設(shè)計(jì)方案</b></p><p> 方案1:?jiǎn)纹瑱C(jī)一般的工作頻率
7、在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ù)碼管就可以將年月日星期
8、時(shí)分秒和室內(nèi)溫度顯示出來(lái)</p><p> 方案2:萬(wàn)年歷時(shí)鐘采用單片機(jī)控制DS1302實(shí)時(shí)時(shí)鐘芯片,能達(dá)到走時(shí)準(zhǔn)確且掉電不丟失數(shù)據(jù)的。DS1302 與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信僅需用到三個(gè)口線1 RES( 復(fù)位)2 I/O (數(shù)據(jù)線)3 SCLK(串行時(shí)鐘)。溫度計(jì)要靈敏反映室溫的變化這樣可采用單片機(jī)與數(shù)字式溫度傳感器DS18B20通訊,采集溫度數(shù)字信號(hào)進(jìn)行處理。DS18B20通過(guò)一個(gè)單線接
9、口發(fā)送或接受信息,因此在單片機(jī)與DS18B20之間僅需一條連接(加上地線)。在顯示電路上,采用16*2的LCD顯示。</p><p> 2.3 方案比較論證</p><p> 對(duì)于方案1,單片機(jī)雖然可以產(chǎn)生精確的秒信號(hào),但是單片機(jī)在處理閏年上會(huì)比較麻煩,加之一旦單片機(jī)斷電后,所有的時(shí)間都要重新調(diào)整。對(duì)于測(cè)溫電路,采用熱敏電阻的輸出電壓-溫度特性,要加上A/D轉(zhuǎn)換,溫度傳感信息才能被單片
10、機(jī)所接受,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。在顯示電路上,采用LED數(shù)碼的話要用到單片機(jī)的許多I/O口,甚至I/O不夠用,還需要接上其它芯片大量擴(kuò)展I/O口,這是一個(gè)弊處。</p><p> 對(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è)置它的工作模式。單片
11、機(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*2 LCD液晶顯示
12、器,能容納年月日星期時(shí)分秒溫度等信息的顯示。LCD顯示器只需占用11個(gè)I/O口就可以工作了,不用其它擴(kuò)展芯片,總體上使電路簡(jiǎn)單化。</p><p> 2.4 總體設(shè)計(jì)方框圖</p><p> 總體的方框圖如圖2.1所示,控制器采用單片機(jī)AT89S52,溫度傳感器采用DS18B20,用16*2的LCD液晶顯示屏實(shí)現(xiàn)年、月、日、星期、時(shí)、分、秒、溫度的顯示。</p><
13、p> 圖2.1 總體設(shè)計(jì)方框圖</p><p><b> 3 設(shè)計(jì)原理與分析</b></p><p> 3.1硬件電路主要芯片的功能介紹</p><p> 本次設(shè)計(jì)的萬(wàn)年歷系統(tǒng)主要包括單片機(jī)主控制器、溫度傳感器芯片、時(shí)鐘芯片DS1302芯片、16*2LCD顯示芯片。</p><p> 3.1.1單片機(jī)主控
14、制器</p><p> 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)提供高靈活、超有效的解決方案。<
15、;/p><p> AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(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)容被保存,振蕩器
16、被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p> (1)AT89S52的簡(jiǎn)介</p><p> AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP (In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指
17、令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。</p><p> AT89S52具有如下特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程
18、定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門(mén)狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。</p><p> 此外,AT89S52設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。</p><p> ?。?)AT89S52的內(nèi)部結(jié)構(gòu)圖</
19、p><p> AT89S52的內(nèi)部結(jié)構(gòu)圖如圖3.1所示:</p><p> 圖3.1 AT89S52內(nèi)部結(jié)構(gòu)圖</p><p> 3.1.2 溫度傳感器芯片</p><p> (1)單線溫度傳感器DS18B20介紹</p><p> DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫
20、度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:</p><p> ●獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p> ●多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;</p><p><b> ●無(wú)須外部器件;&l
21、t;/b></p><p> ●可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p><b> ●零待機(jī)功耗;</b></p><p> ●溫度以9或12位數(shù)字;</p><p> ●用戶可定義報(bào)警設(shè)置;</p><p> ●報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)
22、警條件)的器件;</p><p> ●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; </p><p> DSl8B20數(shù)字溫度計(jì)提供9位(二進(jìn)制)溫度讀數(shù),指示器件的溫度。信息經(jīng)過(guò)單線接口送入DSl8B20或從DSl8B20送出,因此從主機(jī)CPU到DSl8B20僅需一條線(和地線)。DSl8B20的電源可以由數(shù)據(jù)線本身提供而不需要外部電源。因?yàn)槊恳粋€(gè)DSl8B2
23、0在出廠時(shí)已經(jīng)給定了唯一的序號(hào),因此任意多個(gè)DSl8B20可以存放在同一條單線總線上。這允許在許多不同的地方放置溫度敏感器件。DSl8B20的測(cè)量范圍從-55攝式度到+125攝式度,增量值為0.5攝式度,可在l s(典型值)內(nèi)把溫度變換成數(shù)字。</p><p> 每一個(gè)DSl8B20包括一個(gè)唯一的64位長(zhǎng)的序號(hào),該序號(hào)值存放在DSl8B20內(nèi)部的ROM(只讀存貯器)中。開(kāi)始8位是產(chǎn)品類型編碼(DSl8B20編碼
24、均為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攝式度)。DSl8
25、B20的引腳如圖3.2所示。每只DS18B20都可以設(shè)置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采取數(shù)據(jù)總線供電方式可以節(jié)省一根導(dǎo)線,但完成溫度測(cè)量的時(shí)間較長(zhǎng):采取外部供電方式則多用一根導(dǎo)線,但測(cè)量速度較快 。</p><p> (2) DS18B20的測(cè)溫原理</p><p> 器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫
26、度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(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℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p> 減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶
27、振產(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ù)器門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。</p><p> 另外,由于DS18B2
28、0單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。</p><p> DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3.3所示。</p><p> 圖3.3 DS18B20的內(nèi)部結(jié)構(gòu)圖</p>
29、<p> 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ò)軟件寫(xiě)入戶報(bào)警上下限。</p><p><b> ?。?)溫度計(jì)算</b></p><p> 1、DS18B20用9位存貯溫值度,最高位為
30、符號(hào)位,如表3.1為DS18B20的溫度存儲(chǔ)方式,負(fù)溫度S=1,正溫度S=0。如:00AAH為+85攝式度,0032H為25攝式度,F(xiàn)F92H為55攝式度</p><p> 表3.1 18B20用9位的溫度存儲(chǔ)方式</p><p> 2、DS18B20用12位存貯溫值度,最高位為符號(hào)位,如表3.2為DS18B20的溫度存儲(chǔ)方式,負(fù)溫度S=1,正溫度S=0。如:0550H為+85攝式度,
31、0191H為25.0625攝式度,FC90H為-55攝式度。</p><p> 表3.2 18B20用12位的溫度存儲(chǔ)方式</p><p> 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í)被刷
32、新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。</p><p> 圖3.4 DS18B20存儲(chǔ)器結(jié)構(gòu)</p><p> DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3.2所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫
33、度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。</p><p> 由表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)衡考慮。</p><p> 表3.3 DS18B20溫度轉(zhuǎn)換時(shí)間表</p><p> 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的
34、CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p> 當(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℃/LSB形式表示。</p><p> 當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接
35、將二進(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ù):</p><p> 表3.4 部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)</p><p> 3.1.3 時(shí)鐘芯片DS1302 </p><p> (1)時(shí)鐘芯片DS1302的性能</p><p>
36、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è)口線1 RES 復(fù)位2 I/O 數(shù)據(jù)線3 SCLK串行時(shí)鐘時(shí)鐘/RAM 的讀/寫(xiě)數(shù)據(jù)以一個(gè)字節(jié)
37、或多達(dá)31 個(gè)字節(jié)的字符組方式通信DS1302 工作時(shí)功耗很低保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。</p><p> ●實(shí)時(shí)時(shí)鐘具有能計(jì)算2100 年之前的秒、分、時(shí)、日、日期、星期、月、年的能力還有閏年調(diào)整的能力</p><p> ●318 位暫存數(shù)據(jù)存儲(chǔ)RAM</p><p> ●串行I/O 口方式使得管腳數(shù)量
38、 最少</p><p> ●寬范圍工作電壓2.0 ~ 5.5V</p><p> ●工作電流2.0V 時(shí),小于300nA</p><p> ●讀/寫(xiě)時(shí)鐘或RAM 數(shù)據(jù)時(shí)有兩 種傳送方式單字節(jié)傳送和多字 圖3.5 DS1302的封裝及引腳功能</p><p><
39、b> 節(jié)傳送字符組方式</b></p><p> ●8 腳DIP 封裝或可選的8 腳SOIC 封裝根據(jù)表面裝配,如圖3.5所示</p><p><b> ●簡(jiǎn)單3 線接口</b></p><p> ●與TTL 兼容Vcc = 5V</p><p> ●可選工業(yè)級(jí)溫度范圍-40 ℃+85℃<
40、;/p><p> ?。?)時(shí)鐘芯片DS1302的工作原理</p><p> DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;表3.5為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫(xiě)數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址
41、。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫(xiě)操作??刂谱止?jié)總是從最低位開(kāi)始輸入/輸出的。“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行?!癢P”是寫(xiě)保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。</p><p> a.DS1302的控制字節(jié)</p>
42、<p> DS1302的控制字如表3.5所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出</p><p> 表3.5 DS1302的控制字</p><p&g
43、t; b.數(shù)據(jù)輸入輸出(I/O)</p><p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。如下圖3.6所示:</p><p> 圖3.6 DS1302讀/寫(xiě)時(shí)序圖</p><p> c
44、.DS1302的數(shù)據(jù)讀寫(xiě)</p><p> DS1302單字節(jié)讀寫(xiě)的波形如圖3.6所示。由波形可以看出,無(wú)論是從DS1302中讀一個(gè)數(shù)據(jù),還是寫(xiě)一個(gè)字節(jié)數(shù)據(jù)到DS1302中,都要先寫(xiě)一個(gè)命令字到DS1302中。即通過(guò)SCLK引腳(7號(hào)引腳)向DS1302輸入8個(gè)脈沖,把I/O引腳(6號(hào)引腳)上的命令字寫(xiě)入DS1302。為了啟動(dòng)數(shù)據(jù)傳輸,引腳(5號(hào)引腳)應(yīng)為高電平。在將由0置1的過(guò)程中,SCLK引腳必須為邏輯0。
45、然后才能進(jìn)行讀寫(xiě)操作。I/O引腳上的數(shù)據(jù)在SCLK的上升沿串行輸入(寫(xiě)數(shù)據(jù)到DS1302),在SCLK的下降沿串行輸出(讀數(shù)據(jù))。</p><p> d.DS1302的寄存器</p><p> DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見(jiàn)表3.6所示:</p><p> 表3.6 DS
46、1302的日歷、時(shí)間寄存器</p><p> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類為突發(fā)方式下的RAM寄存器,此方
47、式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。 </p><p> 3.1.4 16*2LCD液晶顯示1602</p><p> ?。?)1602采用標(biāo)準(zhǔn)的16腳接口,其中: </p><p> 第1腳:VSS為地電源。</p><p> 第2腳:VDD接5V正電源。</p><
48、p> 第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p> 第5腳:RW為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和RW共同為低電平時(shí)可以寫(xiě)入指令或
49、者顯示地址,當(dāng)RS為低電平RW為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平RW為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 第15~16腳:空腳。</p><p> (2)1602液晶模塊內(nèi)部
50、的控制器共有11條控制指令,如表3.7所示:</p><p> 表3.7 控制指令</p><p> 它的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)</p><p> 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。<
51、/p><p> 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。</p><p> 指令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)是否閃爍,高電平閃爍,低電平不閃爍。</p>
52、<p> 指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。</p><p> 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5*7的點(diǎn)陣字符,高電平時(shí)顯示5*10的點(diǎn)陣字符。</p><p> 指令7:字符發(fā)生器RAM地址設(shè)置。</p><p>
53、; 指令8:DDRAM地址設(shè)置。</p><p> 指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b> 指令10:寫(xiě)數(shù)據(jù)。</b></p><p><b> 指令11:讀數(shù)據(jù)。</b></p><p>
54、 (3)DM-162液晶顯示模塊可以和單片機(jī)AT89C52直接接口,電路如圖3.7所示:</p><p> 圖3.7 接口電路</p><p> 液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表3.8是DM-162的內(nèi)部顯示地址。</p>&l
55、t;p> 表3.8 DM-16的內(nèi)部顯示地址</p><p> 比如第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)
56、 (4)基本操作時(shí)序如圖3.8所示:</p><p> 讀狀態(tài) 輸入:RS=L,RW=H,E=H 輸出:DB0~DB7=狀態(tài)字</p
57、><p> 寫(xiě)指令 輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼 </p><p> 讀數(shù)據(jù) 輸入:RS=H,RW=H,E
58、=H 輸出:DB0~DB7=數(shù)據(jù)</p><p> 寫(xiě)數(shù)據(jù) 輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)
59、160; </p><p> 圖3.8 LCD的讀寫(xiě)時(shí)序</p><p><b> 4 硬件電路</b></p><p> 4.1 單片機(jī)主控制模塊的設(shè)計(jì)</p><p> AT89S52單片機(jī)為40引腳雙列直插芯片, MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、
60、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。</p><p> 單片機(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所示:</p>
61、<p> 圖4.1 單片機(jī)最小系統(tǒng)</p><p> 4.2 時(shí)鐘電路模塊的設(shè)計(jì)</p><p> 圖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í),DS
62、1302由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í),
63、在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時(shí),才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p> 圖4.2 時(shí)鐘芯片與單片機(jī)的連接</p><p> 4.3 溫度采集模塊設(shè)計(jì)</p><p> 如圖4.3所示,采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測(cè)量精度高
64、,電路連接簡(jiǎn)單特點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P2.4與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc接電源,Vss接地。</p><p> 圖4.3 溫度傳感器與單片機(jī)的連接</p><p> 4.4 功能按鈕設(shè)計(jì)</p><p> 當(dāng)按鈕被按下時(shí),該按鈕對(duì)應(yīng)的I/O口被拉為低電平,松開(kāi)時(shí)按鈕對(duì)應(yīng)的I/O口由內(nèi)部的上拉電阻將該I/O拉
65、為高電平,如圖4.4所示:</p><p> 圖4.4 功能按鍵電路</p><p> 4.5 16*2 LCD1602液晶顯示電路設(shè)計(jì)</p><p> 根據(jù)其讀寫(xiě)的時(shí)序模擬總線的方式與單片機(jī)進(jìn)行數(shù)據(jù)的通訊,首先將數(shù)據(jù)從I/O口讀入或送出,再選擇R/W 和RS的電平進(jìn)行不同的操作,在使能端E下降沿時(shí)觸發(fā)數(shù)據(jù)的讀入或送出。注意P0口要接上拉電阻,如圖4.5所
66、示:</p><p> 圖4.5 LCD液晶顯示屏與單片機(jī)的連接</p><p><b> 4.6總體電路圖</b></p><p> 本設(shè)計(jì)的具在溫度指示的數(shù)字萬(wàn)年歷的總體電路圖如圖4.6所示:</p><p> 圖4.6 總體電路圖</p><p><b> 5 系統(tǒng)軟
67、件設(shè)計(jì)</b></p><p> 5.1 系統(tǒng)模塊的功能分劃分</p><p> 萬(wàn)年歷程序設(shè)計(jì)總體上分為四個(gè)大模塊,分別是DS1302時(shí)鐘程序模塊、DS18B20測(cè)溫模塊、LCD顯示模塊、鍵盤(pán)功能模塊。</p><p> a. DS1302時(shí)鐘程序模塊</p><p> 包括設(shè)置DS1302初始時(shí)間、從DS1302 讀時(shí)
68、間子程序、寫(xiě)1302一字節(jié)子程序、讀1302一字節(jié)、關(guān)閉寫(xiě)保護(hù)、開(kāi)啟寫(xiě)保護(hù)、關(guān)閉時(shí)鐘、延時(shí)子100MS程序。</p><p> b. DS18B20測(cè)溫模塊</p><p> 包括DS18B20的初始化子程序、DS18B20數(shù)據(jù)處理子程序、讀出溫度值的子程序、DS18B20復(fù)位子程序、寫(xiě)DS18B20的1位字節(jié)子程序、讀DS18B20的1個(gè)字節(jié)子程序。</p><p
69、> c. LCD顯示模塊</p><p> 包括LCD初始化子程序、寫(xiě)入控制命令的子程序、判斷LCD顯示器是否忙的子程序、向LCD中的DDRAM中寫(xiě)數(shù)據(jù)、查詢LCD字符表、調(diào)整模式的顯示子程序、正常模式LCD顯示子程序。</p><p><b> d. 鍵盤(pán)功能模塊</b></p><p> 包括模式選擇按鍵SET子程序、調(diào)整模式
70、選擇子程序、OUT鍵掃描子程序、UP按鍵掃描子程序、DOWN按鍵掃描子程序。</p><p> 5.2 總體程序流程框圖</p><p> 本設(shè)計(jì)中,實(shí)現(xiàn)功能的總體程序流程框圖如下圖5.1所示:</p><p> 圖5.1 總體程序流程框圖</p><p> 5.3 時(shí)鐘調(diào)整時(shí)間的流程圖</p><p>
71、 時(shí)鐘調(diào)整時(shí)間的流程圖5.2所示:</p><p> 圖5.2時(shí)鐘調(diào)整時(shí)間的流程</p><p> 5.4 修改鍵“UP”的功能流程圖</p><p> 修改鍵“UP”的功能流程圖如圖5.3所示:</p><p> 5.5溫度轉(zhuǎn)換流程圖</p><p> 單片機(jī)實(shí)現(xiàn)對(duì)溫度傳感器DS18B20的溫度轉(zhuǎn)換讀取溫度
72、數(shù)值流程圖如下圖5.4所示:</p><p> 圖5.4溫度轉(zhuǎn)換讀取溫度數(shù)值流程圖</p><p><b> 6 系統(tǒng)仿真測(cè)試</b></p><p> 首先把各個(gè)模塊的程序編好,在偉福W6000中調(diào)試沒(méi)有錯(cuò)誤后,再到Protues 7.1中畫(huà)好并連接電路圖進(jìn)行程序仿真。各個(gè)部分的功能后再把它們綜合到一個(gè)主程序中去,在偉福W6000中調(diào)試
73、通過(guò)后再把它用Keil uVision2軟件把程序生成hex格式最后到Protues 7.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的空間分配好。</p><p> 6.1 KEIL的使用</p><p&
74、gt; Keil uVision2是目前使用廣泛的單片機(jī)開(kāi)發(fā)軟件,它集成了源程序編輯和程序調(diào)試于一體,支持匯編、C、PL/M語(yǔ)言。</p><p> keil C51 v6.12 的使用:</p><p> 點(diǎn)擊桌面快捷圖標(biāo),如圖6.1所示,可以直接進(jìn)入主畫(huà)面:</p><p> 在Keil系統(tǒng)中,每做個(gè)獨(dú)立的程序,都視為工程(或者叫項(xiàng)目)。首先從菜但的“工
75、程”中“新建工程...”,建立我們 圖6.1 快捷圖標(biāo)</p><p> 將要做的工程項(xiàng)目如圖6.2所示:</p><p> 圖6.2 新建建工程</p><p> 新建的工程要起個(gè)與工程項(xiàng)目意義一致的名字,可以是中文名;我們這里的程序是實(shí)驗(yàn)測(cè)試程序,所以起的名字為 Test ,并將 Test 工程“保存”到 D:\Keil 下如圖6.3所示:</p&
76、gt;<p> 圖6.3 新建名工程窗口</p><p> 接下來(lái),Keil環(huán)境要求我們?yōu)?Test 工程選擇一個(gè)單片機(jī)型號(hào);我們選擇 Atmel 公司的 89C52(雖然我們使用的是89S52,但由于89S52與89C52內(nèi)、外部結(jié)構(gòu)完全一樣,所以這里依然選擇“89C52”),如圖6.4所示:</p><p> 圖6.4選擇工程項(xiàng)目</p><p&
77、gt; “確定”后工程項(xiàng)目就算建立了。立了工程項(xiàng)目,肯定要實(shí)施這個(gè)工程,現(xiàn)在就為工程添加程序;點(diǎn)擊“文件”中的“新建”,新建一個(gè)空白文檔,如圖6.5所示;這個(gè)空白文檔就是讓我們編寫(xiě)單片機(jī)程序的場(chǎng)所。在這里你可以進(jìn)行編輯、修改等操作。</p><p><b> 圖6.5 新建文件</b></p><p> 寫(xiě)完后再檢查一下,并保存文件,保存文件時(shí),其文件名最好與前
78、面建立的工程名相同(當(dāng)然這里為 Test 了),其擴(kuò)展名必須為 .Asm !“文件名”中一定要寫(xiě)全,如:Test.Asm ;保存后的文檔彩色語(yǔ)法會(huì)起作用,將關(guān)鍵字實(shí)行彩色顯示,如圖6.6所示:</p><p><b> 圖6.6 保存文檔</b></p><p> 保存了Asm文件后,還要將其添加到工程中。具體做法如下:(如下圖6.7所示)鼠標(biāo)右鍵點(diǎn)擊 “Sour
79、ce Group 1”,在彈出的菜單中選“增加文件到組 Source Group 1”</p><p><b> 圖6.7 添加文件</b></p><p> 在接下來(lái)出現(xiàn)的窗口中,選擇“文件類型”為“Asm源文件(*.a*,*.src)”(由于我們使用的是匯編語(yǔ)言,所以選擇Asm源文件),選中剛才保存的 Test.Asm,按“Add”,再按“關(guān)閉”,文件就添加到
80、了工程中,如圖6.8所示:</p><p> 圖6.8 添加到工程中</p><p> 向工程添加了源文件后,鼠標(biāo)右鍵點(diǎn)擊 “TarGet 1” ,在彈出的菜單中選“目標(biāo) Target 1 屬性”:</p><p> 在打開(kāi)的話框中,選擇“輸出”選項(xiàng)卡,在這個(gè)選項(xiàng)卡中,“E生成HEX文件”選項(xiàng)前要打勾,按“確定”退出,如圖6.9所示。</p>&
81、lt;p> 圖6.9 目標(biāo)TarGet 1屬性</p><p> 最后,從菜單的“工程”中執(zhí)行“R重新構(gòu)造所有目標(biāo)”(或者按下圖紅圈中的按鈕),匯編、連接、創(chuàng)建Hex文件一氣呵成;在工程文件的目錄下就會(huì)生成與工程名相同的一些文件,其中大部分文件我們并不必關(guān)心,而生成的 Hex 文件是我們需要的!它是要燒寫(xiě)到單片機(jī)中的最終代碼,也就是單片機(jī)可以執(zhí)行的程序。</p><p> 這里
82、生成的是 Test.HEX ,稍后就寫(xiě)入。若在下面的狀態(tài)窗中有錯(cuò)誤提示,就需要再次編輯、修改源程序(如語(yǔ)法、字符有錯(cuò)等)、保存、構(gòu)造所有。直至沒(méi)有錯(cuò)誤,如圖6.10所示:</p><p> 圖6.10生成hex格式</p><p> 接下來(lái),我們啟動(dòng) Protues軟件仿真,將剛剛生成的 Test.Hex 燒寫(xiě)到單片機(jī)芯片,在實(shí)驗(yàn)板上實(shí)際驗(yàn)證一下。</p><p&g
83、t; 6.2 Protues軟件仿真</p><p> Proteus ISIS是英國(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)試器、鍵盤(pán)和LC
84、D系統(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)
85、試環(huán)境,如Keil C51 uVision2等軟件。④具有強(qiáng)大的原理圖繪制功能??傊?,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。</p><p> (1)進(jìn)入Proteus ISIS</p><p> 雙擊桌面上的ISIS 6 Professional圖標(biāo)或者單擊屏幕左下方的“開(kāi)始”→“程序”→“Proteus 6 Professional” →“ISIS 6
86、 Professional”,出現(xiàn)如圖6.11所示屏幕,表明進(jìn)入Proteus ISIS集成環(huán)境。</p><p> 圖6.11 啟動(dòng)屏幕</p><p><b> (2)工作界面</b></p><p> Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖4-2所示。包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)
87、欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口,如圖6.12所示:</p><p> 圖6.12 工作界面</p><p> 根據(jù)設(shè)計(jì)原理畫(huà)出仿真原理圖(如附錄二),檢查電路連接無(wú)誤后,雙擊單片機(jī)芯片AT89S52,如圖6.13所示:</p><p> 圖6.13 燒寫(xiě)程序</p><p&g
88、t; 把生成的 Test.Hex 燒寫(xiě)到單片機(jī)芯片,點(diǎn)擊仿真進(jìn)程控制按鈕,點(diǎn)擊運(yùn)行,觀看LCD液晶顯示效果,若在實(shí)驗(yàn)板上實(shí)際驗(yàn)證的并不是我們預(yù)期的效果,那么,就需要再次返回到編輯、修改源程序那一步,修改后再構(gòu)造所有,再次將生成的Hex文件在51ISP中燒寫(xiě)、實(shí)驗(yàn),直至成功!如下圖6.14是本設(shè)計(jì)測(cè)試的效果顯示。</p><p> 圖6.14 測(cè)試結(jié)果顯示</p><p><b&g
89、t; 致 謝</b></p><p> 本次設(shè)計(jì)是我們遇到過(guò)的較大的設(shè)計(jì),所以遇到的問(wèn)題也比較的多,尤其是以前沒(méi)有接觸過(guò)如此復(fù)雜的硬件電路以及軟件編程,在軟、硬件設(shè)計(jì)和調(diào)試中遇到了不少的困難,在李建軍老師的耐心指導(dǎo)下和同學(xué)的幫助才逐一克服了難題,學(xué)習(xí)到了不少的專業(yè)知識(shí)。</p><p> 在整個(gè)設(shè)計(jì)過(guò)程之前,我已經(jīng)在網(wǎng)上找了相關(guān)方面的資料,萬(wàn)事開(kāi)始難,一開(kāi)始不知道從哪里
90、下手。后來(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é)
91、生活畫(huà)上一個(gè)圓滿的句號(hào)!</p><p> 本次畢業(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)題。</p><p> 在今后的日子里,我會(huì)進(jìn)一步加強(qiáng)自己的動(dòng)手能力,豐富自己的知識(shí)面,并在
92、以后工作崗位中發(fā)揮我所長(zhǎng),為社會(huì)作出貢獻(xiàn)。</p><p><b> 參考文獻(xiàn)</b></p><p> 李朝青.單片機(jī)原理及接口技術(shù)[M],北京:北京航天航空大學(xué)出版社,2005</p><p> 李廣弟.單片機(jī)基礎(chǔ)[M],北京:北京航空航天大學(xué)出版社,2000</p><p> 萬(wàn)光毅.單片機(jī)實(shí)驗(yàn)與實(shí)踐教程[
93、M],北京:北京航空航天大學(xué)出版社,2003</p><p> 唐亞平、李移倫.單片機(jī)原理實(shí)訓(xùn)與學(xué)習(xí)指導(dǎo)[M],長(zhǎng)沙:中南大學(xué)出版社,2006</p><p> 劉軍.單片機(jī)原理與接口技術(shù)[M],華東理工大學(xué)出版社,2006</p><p> 謝自美.電子線路設(shè)計(jì)、實(shí)驗(yàn)、測(cè)試[M],武漢:華中理工大學(xué)出版社,2000</p><p>
94、 附錄一 總體電路的PCB板圖</p><p> 附錄二 設(shè)計(jì)電路的仿真電路圖</p><p> 附錄二 萬(wàn)年歷源程序</p><p> COUNT EQU 67H ;SET鍵按下的次數(shù)</p><p> DONE BIT 40H ;進(jìn)入調(diào)整狀態(tài)的標(biāo)志位</p>
95、<p> FLAG BIT 41H ;時(shí)鐘停止標(biāo)志位</p><p> SETS BIT P2.0 ;SET鍵</p><p> UP BIT P2.1 ;UP鍵</p><p> DOWN BIT P2.2 ;DOWN鍵<
96、;/p><p> OUT BIT P2.3 ;OUT鍵</p><p> RS BIT P3.5 ; LCD1602數(shù)據(jù)/命令選擇端</p><p> RW BIT P3.6 ; LCD1602讀寫(xiě)選擇端</p><p> E
97、 BIT P3.7 ; LCD1602使能端</p><p> DAT BIT P2.4 ;DS18B20模擬1-WIRE的數(shù)據(jù)線</p><p> T_CLK BIT P2.5 ;實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳</p><p> T_IO BIT P2.6 ;實(shí)時(shí)時(shí)鐘數(shù)據(jù)線
98、引腳</p><p> T_RST BIT P2.7 ;實(shí)時(shí)時(shí)鐘復(fù)位線引腳</p><p> TH EQU 85 ;高溫報(bào)警點(diǎn)</p><p> TL EQU 00 ;低溫報(bào)警點(diǎn)</p><p> TEMPH EQU 40H
99、 ;讀出寄存器5個(gè)單元內(nèi)容: 0,存溫度高8位</p><p> TEMPL EQU 41H ; 1,存溫度低8位</p><p> REG2 EQU 42H ; 2,存TH值</p><p> R
100、EG3 EQU 43H ; 3,存TL值</p><p> REG4 EQU 44H ; 4,存CONFIG數(shù)據(jù)</p><p> ;CONFIG9 EQU 1FH ;選擇 9位精度的配置數(shù)據(jù)(作為立即數(shù))<
101、/p><p> ;CONFIG10 EQU 3FH ;選擇10位精度的配置數(shù)據(jù)</p><p> ;CONFIG11 EQU 5FH ;選擇11位精度的配置數(shù)據(jù)</p><p> ;CONFIG12 EQU 7FH ;選擇12位精度的配置數(shù)據(jù)</p><p> SECOND
102、 EQU 60H ;秒的緩沖區(qū)(60H~66H單元用于DS1302的數(shù)據(jù))</p><p> MINUTE EQU 61H ;分的緩沖區(qū)</p><p> HOUR EQU 62H ;小時(shí)的緩沖區(qū)</p><p> DATE EQU 63H ;日期的緩沖區(qū)&l
103、t;/p><p> MONTH EQU 64H ;月的緩沖區(qū)</p><p> WEEK EQU 65H ;星期的緩沖區(qū)</p><p> YEAR EQU 66H ;年的緩沖區(qū)</p><p> ;*******************主程序****
104、******************</p><p><b> ORG 0</b></p><p> AJMP START</p><p> START: MOV SP,#07H</p><p> MOV COUNT,#00H</p><p><b> CLR FLAG
105、</b></p><p><b> CLR DONE</b></p><p> MOV 60H,#00H</p><p> MOV 61H,#42H</p><p> MOV 62H,#11H</p><p> MOV 63H,#04H</p><p>
106、; MOV 64H,#03H</p><p> MOV 65H,#02H</p><p> MOV 66H,#08H</p><p> SETB DAT ;端口寫(xiě)1</p><p> LCALL LCD_INIT ;初始化LCD</p><p> LCALL DIS
107、PLAY ;送初始化值到液晶屏顯示</p><p> LCALL D18B20_INIT ;初始化DS18B20</p><p> LCALL Set1302 ;設(shè)置DS1302參數(shù) </p><p> MAIN: JB DONE, SEL ;標(biāo)志位DONE為1時(shí)進(jìn)入調(diào)整模式</p>
108、<p> LCALL DISPLAY</p><p> CLR FLAG ;清時(shí)鐘停止的標(biāo)志位</p><p> LCALL SETKEY ;掃描SET功能鍵</p><p> AJMP MAIN</p><p> SEL: LCALL KEYDONE
109、 ;調(diào)用調(diào)整模式</p><p> AJMP MAIN ;返回再查詢</p><p> ;***************調(diào)整模式選擇子程序*******************</p><p><b> KEYDONE: </b></p><p> JB FLAG, SELA
110、 ;時(shí)鐘是否停止,是停止跳SELA</p><p> LCALL SHUT_WP ;關(guān)閉寫(xiě)保護(hù)</p><p> LCALL READ_TIME ;讀時(shí)鐘:秒 分 鐘 日 月 星期 年 數(shù)據(jù)</p><p> LCALL SHUT_CLOCK ;停止時(shí)鐘計(jì)時(shí)</p><p> LCALL START_W
111、P ;開(kāi)寫(xiě)保護(hù)</p><p> SETB FLAG ;關(guān)閉時(shí)鐘標(biāo)志</p><p> SELA: LCALL SETKEY </p><p> MOV A,COUNT</p><p><b> DEC A</b></p><p><b>
112、 CLR C</b></p><p><b> RLC A</b></p><p> MOV DPTR,#FUN</p><p> JMP @A+DPTR ;修改對(duì)象的散轉(zhuǎn)</p><p> FUN: AJMP SEC</p><p><b
113、> AJMP MIN</b></p><p><b> AJMP HOU</b></p><p> AJMP WEEKS</p><p><b> AJMP DAYS</b></p><p><b> AJMP MON</b></p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 萬(wàn)年歷課程設(shè)計(jì)--萬(wàn)年歷電子時(shí)鐘
- 電子萬(wàn)年歷設(shè)計(jì)
- 電子萬(wàn)年歷
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 數(shù)字萬(wàn)年歷設(shè)計(jì)論文
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)
- 基于cj萬(wàn)年歷
- 萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷畢業(yè)設(shè)計(jì)---基于stc89c52萬(wàn)年歷的設(shè)計(jì)
- 萬(wàn)年歷開(kāi)題報(bào)告
- 萬(wàn)年歷電子時(shí)鐘溫度畢業(yè)設(shè)計(jì)
- java萬(wàn)年歷課程設(shè)計(jì)
- 萬(wàn)年歷課程設(shè)計(jì)報(bào)告
- 萬(wàn)年歷設(shè)計(jì)畢業(yè)論文
- 數(shù)字萬(wàn)年歷設(shè)計(jì)論文資料
- 數(shù)字萬(wàn)年歷課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論