




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、智能體溫計(jì) 本智能體溫計(jì)采用AT89S52作為核心器件實(shí)現(xiàn)對(duì)系統(tǒng)的自動(dòng)控制,采用雙單片機(jī)串行處理結(jié)構(gòu)。外界溫度經(jīng)AD590集成溫度傳感器采集,溫度變化轉(zhuǎn)換為線性電壓信號(hào),再經(jīng)由OP07構(gòu)成高精度低溫漂的放大電路處理后,作為ADC0809的模擬輸入信號(hào),由ADC0809完成AD轉(zhuǎn)換,得到8位的數(shù)字信號(hào)送入單片機(jī)1(AT89S52)。單片機(jī)1將采集到溫度值在LED數(shù)碼管上顯示出來,也通過串口通信將溫度信號(hào)傳到單片2(AT89S52)。此外溫度預(yù)制,報(bào)警電路模塊功能也由單片機(jī)1完成。單片機(jī)2完成溫度值的語音播放功能。通過系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)說明本設(shè)計(jì)方案切實(shí)可以,能夠完成題目所要求的基本功能部分,并留有
2、相應(yīng)的接口,為完成擴(kuò)展功能打下基礎(chǔ)。關(guān)鍵字:?jiǎn)纹瑱C(jī) AD590 ADC0809 ISD2560 一、主要模塊的方案論證與比較1、溫度傳感器的選擇采用集成溫度傳感器。集成溫度傳感器一般且有具有線性好、精度高、靈敏度高、體積小、使用方便等優(yōu)點(diǎn)。根據(jù)實(shí)驗(yàn)室現(xiàn)有材料可選取AD590。AD590的測(cè)溫范圍為-55+150,能滿足本設(shè)計(jì)的050度測(cè)量要求。根據(jù)相關(guān)技術(shù)資料:AD590線性電流輸出為1A/K,正比于絕對(duì)溫度;AD590的電源電壓范圍為4V30V,并可承受44V正向電壓和20V反向電壓,因而器件反接也不會(huì)被損壞。該方案能完全滿足此設(shè)計(jì)的要求,故采用此方案。2、AD轉(zhuǎn)換器的選擇選用ADC0809
3、。ADC0809數(shù)字量是8位,轉(zhuǎn)換時(shí)間為100s,輸入模擬電壓為單極性的05V。由于本設(shè)計(jì)的要求精度不是很高,ADC0809可以達(dá)到要求,故選用此方案。3、語音提示模塊 采用ISD2560語音錄放集成電路。這是一種永久記憶型語音錄放電路,錄音時(shí)間為60S,可重復(fù)錄放10萬次。該芯片采用多電平直接模擬量存儲(chǔ)專利技術(shù),每個(gè)采樣值可直接存儲(chǔ)在片內(nèi)單個(gè)EEPROM單元中,因此能夠非常真實(shí)、自然地再現(xiàn)語音、音樂、音調(diào)和效果聲。此外,ISD2560還省去了A/D和D/A轉(zhuǎn)換器。其集成度較高,內(nèi)部包括前置放大器、內(nèi)部時(shí)鐘、定時(shí)器、采樣時(shí)鐘、濾波器、自動(dòng)增益控制、邏輯控制、模擬收發(fā)器、解碼器和480K 字節(jié)的
4、EEPROM。ISD2560內(nèi)部EEPROM存儲(chǔ)單元均勻分為600行,有600個(gè)地址單元,每個(gè)地址單元指向其中一行,每一個(gè)地址單元的地址分辨率為100ms 。ISD2560可不分段,也可按最小段長為單位來任意組合分段。因此,選擇方案二。 二、總系統(tǒng)設(shè)計(jì)方案1、總系統(tǒng)方案設(shè)計(jì)描述: 根據(jù)題目要求,將系統(tǒng)分為若干模塊,以單片機(jī)為核心,完成多項(xiàng)功能。圖1 系統(tǒng)框圖系統(tǒng)框圖如圖1,AD590把采集的外部溫度信號(hào)轉(zhuǎn)換成相應(yīng)的電壓,再經(jīng)過OP07運(yùn)放放大后作為ADC0809的模擬輸入信號(hào),ADC0809將此模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),通過并口送入到單片機(jī)1。單片機(jī)1把這些信號(hào)處理后通過LED數(shù)碼管顯示出來。同
5、時(shí)單片機(jī)1還處理按鍵、報(bào)警模塊。單片機(jī)1把溫度值通過串行通信傳送給單片機(jī)2,控制語音芯片報(bào)出相對(duì)應(yīng)的溫度值。2、系統(tǒng)電路原理圖圖2 系統(tǒng)電路原理圖如圖2所示,該電路主要由電源電路,溫度檢測(cè)、放大電路,AD轉(zhuǎn)換電路,雙單片機(jī)串行通信電路,按鍵輸入、報(bào)警電路,數(shù)碼管掃描顯示電路以及語音芯片電路組成。三、主要電路設(shè)計(jì)與參數(shù)計(jì)算1、電源電路模塊圖3 電源電路圖如圖3所示,220V交流電經(jīng)變壓器市降壓、橋式整流、電容濾波后由7812、7805、7905三端集成穩(wěn)壓管分別得到12V、+5V、-5V電壓。給整個(gè)電路供電。2、溫度檢測(cè)、放大模塊圖4 AD590溫度檢測(cè)、放大電路圖換成DS18B20溫度模塊怎么
6、改如圖4所示,溫度檢測(cè)、放大電路主要器件的作用:OP1:電壓跟隨器;OP2:電壓跟隨器;OP3:差分放大電路;AD590:溫度傳感器;SVR:零位調(diào)整。 (1)AD590簡(jiǎn)介AD590是電流輸出型的半導(dǎo)體溫度感測(cè)組件,主要特性如下:1.具有線性輸出電流。2.寬廣的操作溫度范圍(-55150)。3.寬廣的工作電壓范圍(+4V+30V)。4.良好的隔離性。AD590的包裝與等效電路如圖4所示,是TO-52型金屬外殼包裝。他是兩端子的半導(dǎo)體溫度感測(cè)組件,另有一端子是外殼接腳,可接地以減少噪聲干擾。AD590如同一個(gè)隨溫度而改變輸出電流的定電流源,輸出電流與外殼的開氏(K)溫度成正比。開氏溫度與攝氏溫
7、度的單位相等,0等于273.2K,100等于373.2K。當(dāng)溫度為0時(shí),AD590的輸出電流是273.2A。而溫度為100時(shí),輸出電流是373.2A。溫度每升高1,輸出電流增加1A,及溫度系數(shù)為1A/。圖5 AD590包裝與等效電路圖(2)、圖2溫度檢測(cè)、放大電路原理AD590當(dāng)溫度增加1時(shí),其輸出電流會(huì)增加1A。即AD590的溫度系數(shù)為1A/。所以在T()時(shí)的電流I1(T)為,而溫度每變化1時(shí),V2的電壓變化是為,表示溫度每增加1,V2會(huì)增加10mV。在0時(shí)V2就已經(jīng)有電壓存在,其值為,則T()時(shí),。如圖3所示,OP3組成差動(dòng)放大器,電壓增益為。零位調(diào)整SVR1則用于抵補(bǔ)0的電壓值,由差動(dòng)放
8、大器的公式可得知,若調(diào)整SVR1使V1的電壓為2.732V,則0時(shí),差動(dòng)放大器的輸出VO為0V。也就是說,若溫度是在0至50之間,則差動(dòng)放大器的輸出電壓是在0V至5V之間,亦即每0.1V的輸出代表溫度上升1。與設(shè)計(jì)要求相符合。3、A/D轉(zhuǎn)換模塊 如圖6:ADC0809把從放大電路傳送過來的模擬信號(hào)轉(zhuǎn)變成數(shù)字信號(hào),并行傳送給單片機(jī)的P0口,讓單片機(jī)處理。 圖6 A/D轉(zhuǎn)換電路圖4、溫度設(shè)制、顯示及報(bào)警電路模塊如圖7:通過按鍵可以事先設(shè)定報(bào)警溫度值,當(dāng)顯示的溫度值超過設(shè)定的溫度值時(shí),單片機(jī)就會(huì)從INT0腳發(fā)出一連串脈沖,驅(qū)動(dòng)蜂鳴器發(fā)出報(bào)警聲。圖7 溫度設(shè)制、顯示及報(bào)警電路圖加上LED報(bào)警,紅色表示
9、高溫,綠色表示正常,黃色表示低溫5、串行通信模塊如圖8所示,單片機(jī)1把溫度值發(fā)送數(shù)據(jù)到單片機(jī)2,單片機(jī)2接收數(shù)據(jù)并控制語音芯片報(bào)出當(dāng)前的溫度值。圖8 串行通信電路圖6、語音播放模塊 語音播放模塊如圖9所示。主要由單片機(jī)AT89S51與語音芯片ISD2560組成。圖9 錄音、放音電路圖(1)錄音、放音簡(jiǎn)介如圖9所示,首先通過麥克風(fēng)向語音芯片ISD2560錄入“0,1,2,3,4,5,6,7,8,9,10,點(diǎn),度”等音符。當(dāng)單片機(jī)2接收到單片機(jī)串行發(fā)送過來的溫度值時(shí),就會(huì)自動(dòng)地去尋找相對(duì)應(yīng)音符的地址,并把這些音符通過揚(yáng)聲器播放出來。(2)ISD2560簡(jiǎn)介ISD2560為28腳的DIP器件封裝,如
10、圖10.圖10 ISD2560管腳圖各引腳功能如下: 17:A0/M0A6/M6地址/模式選擇; 810: A7A9輸入地址線 ;11: AUX IN輔助輸入 ;12、13 :VSSD、VSSA數(shù)字地和模擬地 14、15 :SP 、SP-揚(yáng)聲器輸出 .16 :VCCA模擬信號(hào)電源正極 17、18:M IC、MIC REF 麥克風(fēng)輸入端和輸入?yún)⒖级?19 、AGC自動(dòng)增益控制 20、21 ANA IN、ANA OUT 模擬信號(hào)輸入和輸出 22、 OUF 溢出 23 、CE 片選(低電平允許芯片工作)24 、PD 芯片低功耗狀態(tài)控制 25 、EOM 錄放音結(jié)束信號(hào)輸出 26、 XCLK 外部時(shí)鐘
11、27、P/R 錄/放控制選擇 28 、VCCD 數(shù)字信號(hào)電源正極(3)芯片工作原理 ISD2560有10個(gè)地址輸入端A0A9,錄址能力可達(dá)1024位,地址空間為01023。其分配情況是:地址0299作為分段用,地址600767未使用,地址7681023為工作模式選擇(即A8、A9均為高)。2500系列的地址線有兩種用途,一是作為工作模式控制,二是作為分段錄放音的起始段地址。當(dāng)最高位地址(MSB)A8、A9都為高電平時(shí)(即地址7681023),地址端A0A6就作為工作模式選擇端M0M6,對(duì)應(yīng)7種工作模式。當(dāng)A8、A9任一位為低或都為低時(shí)(即地址0599),只要在分段錄/放音操作前(不少于300n
12、s)給地址A0A9賦值,操作就從該地址開始。 ISD2560將480K的EEPROM分為600個(gè)信息段,每段800個(gè)字節(jié)。作為一個(gè)整體單位進(jìn)行尋址和控制,應(yīng)給每個(gè)信息段分配一個(gè)供外部控制的地址,而不是對(duì)每個(gè)字節(jié)進(jìn)行尋址,否則至少需要19個(gè)地址端口。這樣,大大減少了信息檢索所需要的地址線。對(duì)較長的語音信號(hào)可以跨越多個(gè)信息段進(jìn)行錄音,不受內(nèi)部存儲(chǔ)信息段的限制,且內(nèi)部的信息段址會(huì)自動(dòng)增加。在每個(gè)語音段的尾部自動(dòng)增加一個(gè)結(jié)束標(biāo)志EOM,組合放音時(shí),通過檢測(cè)EOM來控制各語音段的結(jié)束和下一段的開始。 每個(gè)信息段的錄放音時(shí)間等于總時(shí)間除以600。如ISD2560的總時(shí)間為60s,則每個(gè)信息段的錄放音時(shí)間為
13、100ms;ISD25120的總時(shí)間為120s,則每個(gè)信息段的時(shí)間為200ms。因此可以利用該時(shí)間長度作為一個(gè)段地址,通過單片機(jī)定時(shí)器的計(jì)時(shí)平行地映射信息段的地址,從而得到每段錄音的起始地址。這樣,就需要設(shè)置一個(gè)地址計(jì)數(shù)器。一般錄音從0地址開始,首先通過CPU將它賦給A0A9,然后通過單片機(jī)控制ISD啟動(dòng)錄音,同時(shí)啟動(dòng)單片機(jī)的定時(shí)器開始計(jì)時(shí),每到一個(gè)信息段的時(shí)間,就給地址計(jì)數(shù)加1。當(dāng)單片機(jī)停止控制ISD錄音時(shí),同時(shí)停止定時(shí)器計(jì)時(shí)。此時(shí)地址計(jì)數(shù)器的值即為該段語音的未地址,加1即為下一段語音的首地址,并將它存在EEPROM中,為下一將放音提供的地址信息。通過CPU將該地址賦給A0A9,即可錄制下一
14、段語音。依次下去,即可在錄制完所有語音段的同時(shí)得到各段的起始地址。如果不是從0地址開始的語音段,只需將初始地址賦給A0A9,加上地址計(jì)數(shù)器的值,即可得到語音段的末地址。這里不用同時(shí)保存各語音段的起始地址和結(jié)束地址,因?yàn)楦鱾€(gè)段是相鄰的,前一段的末地址加1即是本段的起始地址,且每個(gè)語音段的結(jié)尾均有EOM標(biāo)志,并可發(fā)出中斷。放音時(shí)利用它和保存在EEPROM中各語音段的起始地址即可按任意順序組合各個(gè)語音段。 (4)硬件電路設(shè)計(jì) ISD器件選用錄音時(shí)間為60s的ISD2560器件,以單片機(jī)為處理機(jī),外接控制每個(gè)語音段錄音開始與停止按鍵,外部存儲(chǔ)器EEPROM用于保存每個(gè)語音首地址。ISD的外圍電路及其與
15、單片機(jī)連接的硬件電路如圖9所示。ISD2560與AT89S52的接口部分包含輸入地址線A0A9、片選CE(CE=0選中ISD芯片)、芯片低功耗狀態(tài)控制PD、錄放音控制選擇P/R(P/R=0為錄音;P/R=1為放音)、錄放音結(jié)束信號(hào)輸出EOM,將它作為AT89S51外部中斷0的輸入信號(hào),放音時(shí)通過它告知本語音段結(jié)束,便于單片機(jī)立即播放另一個(gè)語音段。 (5)本方法的特點(diǎn)能進(jìn)行在系統(tǒng)現(xiàn)場(chǎng)錄音,隨錄隨放,修改語音方便。 修改錄音內(nèi)容時(shí),可以從其中任意一段開始,修改其后的所有錄音內(nèi)容,不必從第一段開始全部修改。這對(duì)一些需要廠家固定一些語音段的系統(tǒng)很有好處,將固定的語音段放置在前面的段落中,允許用戶錄制的
16、放在后面,用戶修改錄音內(nèi)容時(shí)只需修改后面的語音段即可,不影響廠家錄制的語音。分段靈活。單片ISD2560可分1600個(gè)段,若多片級(jí)聯(lián)還可更多;各個(gè)錄音段的長度任意,只要總錄音時(shí)間在所用器件的總時(shí)間之內(nèi)即可。四、系統(tǒng)軟件設(shè)計(jì)1、系統(tǒng)程序流程圖 圖11 單片機(jī)1程序主流程圖 圖12 單片機(jī)2程序主流程圖如圖11:?jiǎn)纹瑱C(jī)1為主機(jī),負(fù)責(zé)溫度顯示、按鍵掃描、BCD碼轉(zhuǎn)換、串行發(fā)送數(shù)據(jù)給單片機(jī)2。以定時(shí)器定時(shí)1ms,每定時(shí)100次即1秒鐘就啟動(dòng)A/D轉(zhuǎn)換、BCD碼轉(zhuǎn)換,串行發(fā)送2進(jìn)制數(shù)給單片機(jī)2。如圖12、13所示:?jiǎn)纹瑱C(jī)2為從機(jī),只負(fù)責(zé)接收數(shù)據(jù)并播報(bào)溫度,以T0定時(shí)器定時(shí),結(jié)合延時(shí)程序定時(shí)1分鐘,使每1
17、分鐘更新一次語音音素地址,即每1分鐘更新一次溫度值 ,并在中斷程序處理過程度中報(bào)一次溫度。圖13 單片機(jī)2的T0中斷程序流程圖五、系統(tǒng)測(cè)試1、硬件測(cè)試 (1)單元模塊的測(cè)試(A)電源測(cè)試:用數(shù)字萬用表電壓檔測(cè)量各三端穩(wěn)壓管輸出的電壓值是否正常。測(cè)試相關(guān)測(cè)試點(diǎn),三路電壓正常。電源設(shè)計(jì)成功。 (B) 溫度采集模塊的測(cè)試:調(diào)節(jié)溫度變化,測(cè)試點(diǎn)的電壓值是否有相對(duì)應(yīng)的改變。當(dāng)溫度變化時(shí),測(cè)試點(diǎn)的電壓與溫度之間的線性關(guān)系比較好,如表1所示,達(dá)到設(shè)計(jì)要求。(C)AD轉(zhuǎn)換模塊的測(cè)試:當(dāng)輸入為0V和5V以及中間若干電壓輸入時(shí),測(cè)試A/D轉(zhuǎn)換是否正常。測(cè)試發(fā)現(xiàn)當(dāng)輸入為0V時(shí),ADC0809的輸出為00H,為+5V
18、時(shí)為0FFH,當(dāng)輸入為2.5V時(shí),輸出為0EFH,測(cè)試結(jié)果表明AD轉(zhuǎn)換的功能完全實(shí)現(xiàn)。(D)語音播放??斓臏y(cè)試:通過撥碼開關(guān)人工給語音芯片選地址,測(cè)試不同的地址是否有不同的發(fā)音,以檢驗(yàn)語音是否正確錄入及能否正常播放。根據(jù)設(shè)定,將12個(gè)語音信號(hào)分別放到指定的行地址上,當(dāng)按相應(yīng)的行地址撥開關(guān)給ISD2560時(shí),能夠正常播放設(shè)定的12個(gè)語音,說明語音芯片的錄用存貯工作成功。接入系統(tǒng),編程輸出相應(yīng)的行地址,ISD2560能夠正常播放各個(gè)語音,說明語音播放??斓挠布O(shè)計(jì)可行。(2)系統(tǒng)整體測(cè)試測(cè)試方法以水溫代替人的體溫,用一根水銀溫度計(jì)與所制作的體溫計(jì)探頭(捆綁)同時(shí)接觸被測(cè)熱水的同一點(diǎn)。(A)準(zhǔn)備一杯
19、0攝氏度的冰水混合物和一杯熱水。從0度開始記錄測(cè)試點(diǎn)的電壓值與溫度計(jì)對(duì)比較。記完一個(gè)數(shù)后,往杯中加熱水,這樣,每測(cè)一次,記錄一次數(shù)據(jù),再加一次熱水,這樣使水溫漸漸升高,一直測(cè)到水溫為50攝氏度。測(cè)試結(jié)果如表1所示,說明數(shù)碼管顯示的數(shù)值是否與測(cè)試點(diǎn)所測(cè)值在誤差允許范圍內(nèi)是成歸一化關(guān)系的。(B)檢測(cè)水溫高于50攝氏度時(shí)測(cè)試點(diǎn)的電壓值。看是否為5V。結(jié)果顯示為+5V,說明保護(hù)電路可行。2、軟件測(cè)試將各功能子程序進(jìn)行KAIL C系統(tǒng)進(jìn)行軟件仿真,全部通過,再進(jìn)行硬件仿真,也能全部實(shí)現(xiàn)所要求實(shí)現(xiàn)的功能。 (1)數(shù)碼管顯示的測(cè)試:把放大器的輸出連接到ADC0809的輸入端,ADC0809與單片機(jī)相連接,觀
20、察數(shù)碼管顯示的數(shù)值是否與測(cè)試點(diǎn)所測(cè)值成歸一化關(guān)系。(2)雙機(jī)串行通信的測(cè)試:從主機(jī)發(fā)送一個(gè)8位的二進(jìn)制數(shù),用示波器觀察從機(jī)是否接收到。3、硬件與軟件的聯(lián)機(jī)測(cè)試根據(jù)前面的測(cè)試,說明系統(tǒng)設(shè)計(jì)的軟、硬件設(shè)計(jì)基本取得成功。將把程序經(jīng)編譯、下載到相應(yīng)的AT89S51芯片中,構(gòu)建電路測(cè)試,比較數(shù)碼管顯示的數(shù)值與溫度計(jì)的值和測(cè)試點(diǎn)的值。整體測(cè)試結(jié)果如表1所示。六、測(cè)試數(shù)據(jù)及實(shí)驗(yàn)結(jié)果 1 測(cè)試數(shù)據(jù)按照前述的測(cè)試方法,取得到測(cè)試結(jié)果如表1所示。如表1 數(shù)碼顯示與測(cè)試點(diǎn)電壓隨溫度變化的關(guān)系溫度值(攝氏度) 數(shù)碼管顯示值測(cè)試點(diǎn)電壓值(V)000.00.010.010.01.00119.019.01.90238.23
21、8.23.82148.048.04.80260.550.05.0012 測(cè)試結(jié)果分析根據(jù)上述測(cè)試結(jié)果,此系統(tǒng)的設(shè)計(jì)基本取得成功。智能體溫計(jì)在測(cè)試溫度方面有一定的成效,測(cè)試誤差較小,顯示的誤差與實(shí)際的溫度值誤差在內(nèi),在功能上達(dá)到了賽題的要求。3 心得與體會(huì)通過本次設(shè)計(jì),深深感到理論與實(shí)踐之間的差距。在學(xué)習(xí)單片課程時(shí),很多知識(shí)點(diǎn)在理論完全理解了,但到具體的電路設(shè)計(jì)與實(shí)現(xiàn)中,會(huì)出現(xiàn)很多一時(shí)無法理解的現(xiàn)象,要通過不斷的通過強(qiáng)化自身的實(shí)踐動(dòng)手能力的培養(yǎng),才能用理論來指導(dǎo)實(shí)踐,通過實(shí)踐來進(jìn)一步深入理解理論。七 結(jié)束語 本設(shè)計(jì)完成了以下功能:(1)溫度信號(hào)的采集與歸一化處理;(2)AD轉(zhuǎn)換;(3)溫度值的顯
22、示,顯示的誤差與實(shí)際的溫度值誤差在內(nèi);(4)語音播報(bào)溫度與聲音報(bào)警功能。參考文獻(xiàn) 1 全國大學(xué)生電子設(shè)計(jì)競(jìng)賽組委會(huì).第五屆全國大學(xué)生電子設(shè)計(jì)競(jìng)獲獎(jiǎng)作品選編.北京:北京理工大學(xué)出版社,2003年第1版.2 王港元.電工電子實(shí)踐指導(dǎo).南昌:江西科學(xué)技術(shù)出版社.2005.03第一版3 謝自美.電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試.武漢:華中科技大學(xué)出版社.2000.5第二版.4 胡漢才.單片機(jī)原理及系統(tǒng)設(shè)計(jì). 北京:清華大學(xué)出版社。2001.01第一版.5 由集成溫度傳感器AD590構(gòu)成的多溫度測(cè)試系統(tǒng).北京:電子技術(shù)應(yīng)用.1998年第6期.程序:#include <reg52.h&g
23、t;#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar code dis_code10=0xc0,0xf9,0xa4,0xb0,/ 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90; / 4, 5, 6, 7, 8, 9, off uchar data set_data3=0x00,0x07,0x03; /預(yù)設(shè)37.0度uchar data ad_data; /AD轉(zhuǎn)換結(jié)果uchar data dis
24、_buf3=0x00,0x00,0x00; / 顯示緩沖區(qū)uchar data bcd_buf3=0x00,0x00,0x00; /十進(jìn)制BCD碼轉(zhuǎn)換存放區(qū)uchar data TIMER0_NUM;bit TIMER0_flag;bit data set_flag=0;sbit ALE=P24;sbit OE=P25;sbit START=P26;sbit EOC=P27;sbit P30=P30;sbit select0=P37;sbit select1=P36;sbit select2=P35;sbit K1=P20;sbit K2=P21;sbit K3=P22;sbit K4=P23
25、;sbit bep=P33;sbit SET_IND=P34;sbit P17=P17; /小數(shù)點(diǎn)uint data temp;/*/*函數(shù)聲明/*/void delay1ms(uchar t); void adc(void);void BCD(void);void keyscan(void);void send_str(void);void beep(void);void display(void);/*/*按鍵蜂鳴函數(shù)/*/void beep2(void) uchar data j,k; for(j=26;j>0;j-) for(k=254;k>0;k-); bep=!bep;
26、 bep=1; /*/*蜂鳴報(bào)警/*/void beep(void) uchar data j,k; for(j=100;j>0;j-) for(k=254;k>0;k-) bep=0; bep=1; /關(guān)蜂鳴器 /*/*延時(shí)1ms函數(shù)/*/void delay1ms(uchar t) uchar j,k; for(j=0;j<t;j+) for(k=0;k<120;k+);/*/*AD轉(zhuǎn)換函數(shù)/*/void adc(void) ALE=1; _nop_(); _nop_(); ALE=0; START=1; _nop_(); _nop_(); START=0; _no
27、p_(); _nop_(); _nop_(); _nop_(); while(EOC=0); /等待轉(zhuǎn)換結(jié)束 OE=1; ad_data=P0; /讀入轉(zhuǎn)換數(shù)據(jù) OE=0;/*/*十進(jìn)制BCD碼轉(zhuǎn)換函數(shù)/*/void BCD(void) bcd_buf2=(ad_data/51); /十位 temp=(ad_data%51); temp=(temp*10); bcd_buf1=(temp/51); /個(gè)位 temp=(temp%51); temp=temp*10; bcd_buf0=(temp/51); /小數(shù)位 if(bcd_buf2>set_data2) /報(bào)警值檢測(cè) beep();
28、 else if(bcd_buf2=set_data2) if(bcd_buf1>set_data1) beep(); else if(bcd_buf1=set_data1) if(bcd_buf0>set_data0) beep(); /*/*鍵盤掃描函數(shù)/*/void keyscan(void) uchar data m; if(K1=0) /K1設(shè)置鍵 for(m=0;m<100;m+) /延時(shí)11msdisplay(); if(K1=0) beep2(); /按鍵時(shí)響一聲 set_flag=!set_flag; /設(shè)置標(biāo)志位取反 if(set_flag=1) /若設(shè)置
29、鍵按下,則檢測(cè)K2-K4 SET_IND=0; /設(shè)置燈亮 if(K2=0) /K2:十位加1 for(m=0;m<100;m+) /延時(shí)11ms display(); if(K2=0) beep2(); /按鍵時(shí)響一聲 set_data2+; if(set_data2=5) set_data2=0; if(K3=0) /K3:個(gè)位加1 for(m=0;m<100;m+) /延時(shí)11ms display(); if(K3=0) beep2(); /按鍵時(shí)響一聲 set_data1+; if(set_data1=10) set_data1=0; if(K4=0) /K4:小數(shù)位加1
30、for(m=0;m<100;m+) /延時(shí)11ms display(); if(K4=0) beep2(); /按鍵時(shí)響一聲 set_data0+; if(set_data0=10) set_data0=0; else SET_IND=1;/*/*顯示函數(shù)/*/void display(void) if(set_flag) /設(shè)置鍵按下,則顯示設(shè)置的數(shù)值 dis_buf0=set_data0; dis_buf1=set_data1; dis_buf2=set_data2; else /否則顯示溫度值 dis_buf0=bcd_buf0; dis_buf1=bcd_buf1; dis_bu
31、f2=bcd_buf2; P1 = 0xff; / 先關(guān)閉所有數(shù)碼管P1 = dis_codedis_buf0; / 小數(shù)顯示代碼傳送到P1口select2=1;select1=1;select0=0;/ 位選delay1ms(1); /延時(shí)1msP1 = dis_codedis_buf1; / 個(gè)位顯示代碼傳送到P1口select2=1;select1=0;select0=1;/ P17=0;delay1ms(1); /延時(shí)1msP1 = dis_codedis_buf2; / 十位顯示代碼傳送到P1口select2=0;select1=1;select0=1;/ delay1ms(1);
32、/延時(shí)1ms/*/*串口發(fā)送一個(gè)字符函數(shù)/*/void send_str(void)SBUF = ad_data; /串口發(fā)送AD轉(zhuǎn)換溫度值while(TI=0); / 等待數(shù)據(jù)傳送TI = 0; / 清除數(shù)據(jù)傳送標(biāo)志/*/*主函數(shù)/*/void main(void) TMOD = 0x21; / 定時(shí)器1工作于方式2,8位自動(dòng)重載模式, 用于產(chǎn)生波特率 / 定時(shí)器0工作于方式1,產(chǎn)生1s的AD間隔時(shí)間 TH0=15536/256; /T0定時(shí)50ms TL0=15536%256; TH1 = 0xe1; / 波特率1000TL1 = 0xe1;SCON = 0x50; / 設(shè)定串行口工作方式
33、1PCON = 0x00; / 波特率不倍增TI=0; /清除發(fā)送中斷標(biāo)志EA = 1; / 開總中斷ET0 = 1; /開T0中斷ET1=0;TR1 = 1; / 啟動(dòng)T1 TR0 = 1; /啟動(dòng)T0 while(1) display(); keyscan(); if(TIMER0_flag) TIMER0_flag=0;adc();BCD(); send_str(); /*/*T0中斷服務(wù)程序/*每秒鐘ADC一次,串口發(fā)送一次/*/void timer0(void) interrupt 1 TH0=15536/256; /重裝初值 TL0=15536%256; TIMER0_NUM+;
34、if(TIMER0_NUM=20) TIMER0_NUM=0;TIMER0_flag=1; /*Project Name : 智能體溫計(jì)程序_從機(jī)Designed By : sc.Dai*/#include <reg52.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar data bcd_buf3=0x00,0x00,0x00; /十進(jìn)制BCD碼轉(zhuǎn)換存放區(qū)/uchar code sound_add13=0x00,0x14,0x28,0x3c,0x50,0x64,0x78, /0x8c,0xa0,0xb4,0xc8,0xdc,0xf0; /0,1,2,3,4,5, /6,7,8,9,十,點(diǎn),度 存放地址uchar code sound_add13=0x00,0x0a,0x14,0x1e,0x28,0x32,0x3c, 0x46,0x50,0x5a,0x64,0x6e,0x78; /0,1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻共同債務(wù)分擔(dān)與忠誠協(xié)議效力鑒定合同
- XX縣先進(jìn)性動(dòng)鞏固擴(kuò)大整改成果和“回頭看”工作向中央督導(dǎo)組的匯報(bào)
- 魚塘買賣合同協(xié)議書
- 餐廳合作入股協(xié)議書
- 韓式餐具轉(zhuǎn)讓協(xié)議書
- 餐廳勞務(wù)合同協(xié)議書
- 做生意租房合同協(xié)議書
- 轉(zhuǎn)租合同解除協(xié)議書
- 裝修外包施工協(xié)議書
- 配偶父母分家協(xié)議書
- 2025屆天津市蘆臺(tái)一中高三一模-化學(xué)試卷
- 蘇教版數(shù)學(xué)一年級(jí)下冊(cè)(2024)第七單元觀察物體(一)綜合素養(yǎng)測(cè)評(píng) A 卷(含答案)
- 醫(yī)療護(hù)理與人文關(guān)懷課件
- 用地理知識(shí)介紹美國
- 2024-2025年高考生物一輪復(fù)習(xí)知識(shí)點(diǎn)講解專題3-2細(xì)胞呼吸含解析
- 2024年版豬場(chǎng)員工勞動(dòng)合同模板3篇
- 《生物制品連續(xù)制造指南》
- Unit 6 Section A 1a-2c 說課課件2024-2025學(xué)年人教版英語八年級(jí)下冊(cè)
- 2024年中國養(yǎng)老產(chǎn)業(yè)商學(xué)研究報(bào)告-銀發(fā)經(jīng)濟(jì)專題
- 保衛(wèi)管理員三級(jí)練習(xí)題
- 湖北荊州市監(jiān)利市暢惠交通投資有限公司招聘筆試沖刺題2024
評(píng)論
0/150
提交評(píng)論