【正文】
以上是顯示部分的子程序,通過給R1送入不同的數(shù)值就可以在LED上把送入的數(shù)字顯示出來,這種模塊化的程序設(shè)計(jì)思想十分重要,任何一個(gè)大的程序都是由各個(gè)小程序相互調(diào)用來完成的。 LED顯示部分程序設(shè)計(jì)1. LED顯示器應(yīng)用程序設(shè)計(jì)總體方案(1).LED的動(dòng)態(tài)顯示LED的動(dòng)態(tài)顯示是利用人眼的視力暫留效果來設(shè)計(jì)的,就是在LED上面連續(xù)送出要顯示的內(nèi)容,當(dāng)每秒掃描顯示的次數(shù)達(dá)到一定的次數(shù)后,人眼就可以認(rèn)為是連續(xù)顯示的,此種設(shè)計(jì)的優(yōu)點(diǎn)就是節(jié)約I/O口,電路連接簡(jiǎn)單,但相應(yīng)的也造成了軟件開支過大,因?yàn)樾枰粩嗟倪M(jìn)行定時(shí)掃描或中斷掃描等。具體是用單片機(jī)的一個(gè)I/O口連接到該芯片的時(shí)鐘輸入端,作為該芯片的工作時(shí)鐘,用另一根數(shù)據(jù)接到74HC164的數(shù)據(jù)端口A、B兩端。當(dāng)f落在f1之前時(shí),檢測(cè)儀會(huì)由于沒有合適比較對(duì)象而出錯(cuò)。接下來就要對(duì)比較次數(shù)n賦初值(n=0),根據(jù)變量n去STC12C5410AD的ROM中的頻率表中取出頻率值f0,然后將溫度補(bǔ)償過振蕩頻率f與從表中取得的表頻率f0作減法運(yùn)算,并檢查相減結(jié)果是否大于0。(fRH/ f RH0)線性化處理: 首先根據(jù)實(shí)驗(yàn)得出的相對(duì)濕度與振蕩頻率關(guān)系曲線,將測(cè)量范圍內(nèi)的濕度RH劃分為N等份,每份為△RH,每個(gè)濕度分隔點(diǎn)對(duì)應(yīng)的頻率值設(shè)為fn。具體方案如圖35。表31 在25℃環(huán)境溫度時(shí)相對(duì)濕度(RH)與振蕩頻率(f)的關(guān)系顯然,振蕩頻率受環(huán)境濕度的影響比較大。實(shí)驗(yàn)得出振蕩電路的輸出頻率(f)與環(huán)境溫度(T)的關(guān)系曲線,如圖33所示:圖33 振蕩頻率f與溫度T的關(guān)系曲線由上圖可知,在環(huán)境相對(duì)濕度不變的條件下,溫度和振蕩頻率呈近似的線性關(guān)系,所以忽略非線性誤差不影響測(cè)量的精度。由于單片機(jī)對(duì)數(shù)據(jù)的采集只能是電壓或者頻率,AD590對(duì)溫度的檢測(cè)是電路的大小來反映的,要將這個(gè)電流值讀到單片機(jī)里面來就必須先把這個(gè)電流轉(zhuǎn)變成電壓,本設(shè)計(jì)中是通過一個(gè)電阻將這個(gè)值變成電壓的,而單片機(jī)的AD采樣范圍必須是它的工作電壓范圍內(nèi),即0~5 V,所以通過計(jì)算就可以確定電阻的值,這個(gè)過程是經(jīng)過反復(fù)的實(shí)驗(yàn)確定的,如果阻值過小就使得采樣值不精確,如果阻值過大則完全不能進(jìn)行采樣過程后面的數(shù)據(jù)處理就更沒法進(jìn)行。取ADC_DATA 的8 位為ADC 轉(zhuǎn)換的高8 位,取ADC_LOW2 的低2 位為ADC 轉(zhuǎn)換的低2 位,則為10 位精度。當(dāng)環(huán)境溫度從T1變化到T2時(shí),重復(fù)以上過程,單片機(jī)同時(shí)記錄下相應(yīng)的A/D轉(zhuǎn)換的數(shù)字量V2。Kt為轉(zhuǎn)換系數(shù),單位為1uA/K。主程序設(shè)計(jì)框圖如上圖31。這種轉(zhuǎn)換可以通過硬件譯碼器或軟件進(jìn)行譯碼。 其它模塊電路設(shè)計(jì)鍵盤模塊采用動(dòng)態(tài)掃描的方式,鍵盤掃描電路輸出端和LED顯示器段碼控制端口共用74HC164的輸出Q0~Q7。THS11是一種電容式濕度傳感器,它的電容值隨環(huán)境濕度的變化而變化,它具有:測(cè)量范圍廣(0~100%)RH;適用性好,可在(-40℃~100℃)溫度下工作;精度高(2%);響應(yīng)速度快(5s),恢復(fù)時(shí)間短(10s);長(zhǎng)期穩(wěn)定好(年漂移量?jī)H為177?!妫混`敏度1μA/℃,溫度每變化1℃,其輸出電流變化1μA;輸出零點(diǎn)為熱力學(xué)溫標(biāo)零點(diǎn)。選擇合理的充電常數(shù),就能保證在開關(guān)按下時(shí)是RST端有兩個(gè)機(jī)器周期以上的高電平從而使STC12C5410AD內(nèi)部復(fù)位。,并對(duì)濕度的頻率進(jìn)行線性化處理和補(bǔ)償,從而獲得溫度和相對(duì)濕度數(shù)據(jù),分別將這些數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)存儲(chǔ)器中, ,并可以用LED顯示屏顯示出來。主程序的內(nèi)容包括:主程序的起始地址,中斷服務(wù)程序的起始地址,有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序相互調(diào)用,主程序是整個(gè)程序的框架,決定了檢測(cè)儀的工作性能。 167。167。先根據(jù)實(shí)際生產(chǎn)生活的需要提出溫濕度檢測(cè)儀的設(shè)計(jì)功能要求,然后由這些具體要求和現(xiàn)有的設(shè)計(jì)條件設(shè)計(jì)出了適合的硬件原理圖,盡量采用模塊化的方法將其分成幾個(gè)部分,然后分模塊設(shè)計(jì)程序,最使各部分結(jié)合起來協(xié)調(diào)工作,實(shí)現(xiàn)功能要求。 溫度檢測(cè)模塊程序設(shè)計(jì) 12167。 溫濕度檢測(cè)儀應(yīng)用軟件系統(tǒng)的設(shè)計(jì)方案 3167。本檢測(cè)儀的硬件部分的設(shè)計(jì)采用了以帶有A/D轉(zhuǎn)換器的STC12C5410AD單片機(jī)為核心控制器件,以高靈敏度AD590電流輸出型的二端式集成溫度傳感器為溫度數(shù)據(jù)獲取元件和濕度傳感器THS11采集環(huán)境中的相對(duì)濕度,模擬輸入接口接入鍵盤實(shí)現(xiàn)人機(jī)交換功能,并用LED作為顯示設(shè)備的硬件設(shè)計(jì)方案。軟件部分則采用采用模塊化的方法將其分成幾個(gè)部分,然后逐模塊設(shè)計(jì)程序,用匯編語(yǔ)言來實(shí)現(xiàn),使各部分結(jié)合起來協(xié)調(diào)工作,最終實(shí)現(xiàn)對(duì)環(huán)境中溫濕度的實(shí)時(shí)檢測(cè)。 溫濕度檢測(cè)儀STC12C5410AD單片機(jī)電路的設(shè)計(jì) 5167。 濕度檢測(cè)模塊程序設(shè)計(jì) 15167。它是以單片機(jī)的在控制方面的突出優(yōu)勢(shì),并綜合運(yùn)用現(xiàn)代檢測(cè)技術(shù)、微控制技術(shù)、數(shù)據(jù)處理和通信技術(shù)以及LED顯示技術(shù)而設(shè)計(jì)的數(shù)字溫濕度檢測(cè)系統(tǒng),可以實(shí)時(shí)、準(zhǔn)確的測(cè)量環(huán)境中的溫度和相對(duì)濕度,對(duì)生產(chǎn)生活有較好的知道意義。 溫濕度檢測(cè)儀的主要性能指標(biāo)及其工作原理167。 溫濕度檢測(cè)儀的硬件設(shè)計(jì)總體結(jié)構(gòu)方案該檢測(cè)儀采用STC12C5410AD單片機(jī)為核心,整個(gè)硬件系統(tǒng)分為以下幾個(gè)部件,具體如圖11所示:圖11 硬件電路框圖溫度檢測(cè)電路由半導(dǎo)體集成傳感器AD590和電阻構(gòu)成,AD590輸出電流通過電阻進(jìn)入模擬地,產(chǎn)生相應(yīng)的電阻電壓。溫度檢測(cè)模塊主要是完成測(cè)溫電路所得電壓與實(shí)際溫度的轉(zhuǎn)換,和對(duì)溫度數(shù)據(jù)的存儲(chǔ)、顯示;相對(duì)濕度檢測(cè)模塊除了要實(shí)現(xiàn)對(duì)濕度數(shù)據(jù)的存儲(chǔ) 、顯示外,還要對(duì)濕度信號(hào)進(jìn)行溫度補(bǔ)償和線性化處理。STC12C5410AD 單片機(jī)采用增強(qiáng)型 8051 CPU,1T,單時(shí)鐘/ 機(jī)器周期,指令代碼完全兼容傳統(tǒng)8051的高速單片機(jī)。開關(guān)按下時(shí)是按鍵手動(dòng)復(fù)位電路,RST端通過電阻與VCC電源接通,通過電阻的分壓就可以實(shí)現(xiàn)單片機(jī)的復(fù)位。即-273℃時(shí)AD590的輸出電流為0μA,0℃時(shí)輸出約為273μA。%RH);具有極好的線性輸出等特性。本設(shè)計(jì)中采用五個(gè)數(shù)碼管進(jìn)行靜態(tài)顯示,所以要用五個(gè)74HC164分別控制五個(gè)數(shù)碼管的顯示和選通,前一個(gè)74HC164的QH與后一個(gè)74HC164的輸入端相連,74HC164的輸出端QA~QH通過電阻連到數(shù)碼管上,控制數(shù)碼管選通的信號(hào)為P1。其中的共陽(yáng)極接法在設(shè)計(jì)中得以應(yīng)用,單片機(jī)信號(hào)通過移位寄存器74HC164輸出,經(jīng)過八個(gè)電阻在LED數(shù)碼管上顯示出來。主程序初始化的具體內(nèi)容包括:時(shí)間中斷的初始化、外部中斷源的初始化、單片機(jī)I/O口初始化、RAM初始化、LED初始化、對(duì)各個(gè)子程序的調(diào)用,然后對(duì)溫度和濕度進(jìn)行檢測(cè)并將結(jié)果顯示在LED上。AD590輸出電流信號(hào)經(jīng)電阻R轉(zhuǎn)換為電壓信號(hào),其電壓為:VR = Kt為保證校準(zhǔn)精度,環(huán)境溫度應(yīng)在25℃左右變化,并且變化的范圍盡可能大一些。如果舍棄ADC_LOW2 的低2 位,只用ADC_DATA 寄存器的8 位,則A/D 轉(zhuǎn)換結(jié)果為8 位精度。 本設(shè)計(jì)中為了使編程盡量簡(jiǎn)潔所選取的阻值非常特殊:AD590變化的電流通過這個(gè)特定阻值的電阻時(shí),轉(zhuǎn)變?yōu)橐粋€(gè)變化的電壓,這個(gè)電壓變化一個(gè)毫安對(duì)應(yīng)溫度變化一度,這樣大大化簡(jiǎn)了程序中對(duì)的溫度的算法。當(dāng)環(huán)境中的相對(duì)濕度不同時(shí),相同溫度條件下的振蕩頻率差異比較大,且這種差異是非線性的。當(dāng)相對(duì)濕度值升高時(shí),振蕩器輸出頻率會(huì)隨之降低,而且它們之間的這種變化是非線性的。對(duì)于頻率的測(cè)量,單片機(jī)由多種測(cè)量方法,大體由中斷測(cè)量和定時(shí)計(jì)數(shù)兩大方式。然后把頻率曲線上相鄰的兩點(diǎn)依次用直線相連,就得到一條新的濕度頻率曲線,它與實(shí)際曲線幾乎重合在一起,所以可以使用該曲線產(chǎn)生進(jìn)行線性化處理。如果差值大于0,則說明測(cè)得頻率超出檢測(cè)儀的測(cè)量范圍,轉(zhuǎn)入報(bào)告出錯(cuò)子程序,告訴用戶出錯(cuò)。如果前面比較的結(jié)果值還是小于零,說明該振蕩頻率f不在該段,就把比較次數(shù)f加1后,從表中再次取值,繼續(xù)進(jìn)行的比較,直至比較結(jié)果大于零。由于74HC164是工作在上升沿,所以本設(shè)計(jì)可以在其數(shù)據(jù)端輸入一個(gè)等待送出的數(shù)字,然后通過在其時(shí)鐘輸入端送入一個(gè)上升沿,就可以實(shí)現(xiàn)把等待送出的數(shù)字發(fā)送出去。(2).LED的靜態(tài)顯示 LED的靜態(tài)顯示就是在LED上送入待顯示的內(nèi)容后,LED的管腳的狀態(tài)一直保持不變,即在LED上穩(wěn)定靜止的顯示出待顯示的內(nèi)容,該種設(shè)計(jì)軟件編寫簡(jiǎn)單,單片機(jī)軟件資源占用少,但相應(yīng)的在沒加輔助顯示芯片,使電路復(fù)雜,I/O口占用過多。 在進(jìn)行軟件設(shè)計(jì)時(shí),先寫完各個(gè)模塊的程序,當(dāng)每個(gè)模塊的程序都調(diào)試通過后,在根據(jù)設(shè)計(jì)的要求,按照最先實(shí)際的總的程序流程圖來完成子程序之間的相互協(xié)調(diào)調(diào)用來實(shí)現(xiàn)整個(gè)程序的調(diào)試工作,通過多次反復(fù)的調(diào)試修改,當(dāng)總程序能夠?qū)崿F(xiàn)設(shè)計(jì)要求時(shí),程序的設(shè)計(jì)才大體完成。在指導(dǎo)老師的悉心輔導(dǎo)下和查閱大量資料之后,然后采用了STC12C5410AD數(shù)據(jù)采集芯片并配合其它一些元器件的硬件設(shè)計(jì)方案,使以上問題得到了很好解決 。在此我衷心的感謝孫老師對(duì)我這次畢業(yè)設(shè)計(jì)指導(dǎo)和幫助。F increments? Temperature is read as a 9–bit digital value.? Converts temperature to digital word in 200 ms (typ.)? User–definable, nonvolatile temperature alarm settings? Alarm search mand identifies and addresses devices whose temperature is outside of programmed limits (temperature alarm condition)? Applications include thermostatic controls, industrial systems, consumer products, thermometers, or any thermally sensitive systemDESCRIPTIONThe DS1820 Digital Thermometer provides 9–bit temperature readings which indicate the temperature of the device. Information is sent to/from the DS1820 over a 1–Wire interface, so that only one wire (and ground) needs to be connected from a central microprocessor to a DS1820. Power for reading, writing, and performing temperature conversions can be derived from the data line itself with no need for an external power source. Because each DS1820 contains a unique silicon serial number, multiple DS1820s can exist on the same 1–Wire bus. This allows for placing temperature sensors in many different places. Applications where this feature is useful include HVAC environmental controls, sensing temperatures inside buildings, equipment or machinery, and in process monitoring and control.DETAILED PIN DESCRIPTIONOVERVIEWThe block diagram of Figure 1 shows the major ponents of the DS1820. The DS1820 has three main data ponents: 1) 64–bit lasered ROM, 2) temperature and sensor, 3) nonvolatile temperature alarm triggers TH and TL. The device derives its power from the 1–Wire munication line by storing energy on an internal capacitor during periods of time when the signal line is high and continues to operate off this power source during the low times of the 1–Wire line until it returns high to replenish the parasite (capacitor) supply. As an alternative, the DS1820 may also be powered from an external 5 volts supply. Communication to the DS1820 is via a 1–Wire port. With the 1–Wire port, the memory and control functions will not be available before the ROM function protocol has been established. The master must first provide one of five ROM function mands: 1) Read ROM, 2) Match ROM, 3) Search ROM, 4) Skip ROM, or 5) Alarm Search. These mands op