溫度測控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)[共38頁]
《溫度測控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)[共38頁]》由會員分享,可在線閱讀,更多相關(guān)《溫度測控儀設(shè)計(jì)畢業(yè)設(shè)計(jì)[共38頁](38頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、I溫度測控儀設(shè)計(jì)學(xué)生:XXX 指導(dǎo)教師:XXX內(nèi)容摘要:本文主要介紹了智能溫度測量儀的設(shè)計(jì),包括硬件和軟件的設(shè)計(jì)。先對該測量儀進(jìn)行概括性介紹,然后介紹該測量儀在硬件設(shè)計(jì)上的主要器件:“Pt100 熱電阻” 、AT89C51 單片機(jī)和 LCD 顯示器以及描述測量儀的總體結(jié)構(gòu)原理。在本設(shè)計(jì)中,是以鉑電阻 PT100 作為溫度傳感器,采用恒流測溫的方法,通過單片機(jī)進(jìn)行控制,用放大器、A/D 轉(zhuǎn)換器進(jìn)行溫度信號的采集??傮w來說,該設(shè)計(jì)是切實(shí)可行的。 關(guān)鍵詞:溫度 Pt100 熱電阻 AT89C51 單片機(jī) LCD 顯示器IIDesignDesign ofof andand controlcontrol
2、 instrumentinstrumentAbstract:Abstract: This paper describes the design of the intelligent temperature measuring instrument, including hardware and software design. Be the first general description of the measuring instrument, and then describes the hardware design of the measuring instruments main
3、device: Pt100 thermal resistance, AT89C51 microcontroller and LCD display, and describe the principle of measuring the overall structure. In this design, as is the PT100 platinum resistance temperature sensor, temperature measurement using constant current method, through the microcontroller to cont
4、rol, amplifier, A/D converter for temperature signal acquisition. Overall, the design is feasible. Keywords:Keywords: temperature Pt100 thermal resistance AT89C51 microcontroller LCD monitor.III目 錄前言 .11 總體硬件方案設(shè)計(jì) .11.1 溫度傳感器的放大電路設(shè)計(jì) .21.2 TLC549 模數(shù)轉(zhuǎn)化電路設(shè)計(jì).41.3 顯示電路設(shè)計(jì) .51.4 無線發(fā)送與接收模塊的選擇與設(shè)計(jì) .51.5 鍵盤設(shè)計(jì) .
5、62 總體的軟件程序的設(shè)計(jì) .62.1 溫度數(shù)據(jù)采集和數(shù)據(jù)處理子程序的設(shè)計(jì) .62.2 溫度顯示、保存處理的子程序設(shè)計(jì) .72.3 無線發(fā)送與接受的子程序的設(shè)計(jì) .72.4 十組溫度查詢的子程序設(shè)計(jì) .93 調(diào)試與結(jié)果分析 .103.1 調(diào)試儀器及方法 .103.3 軟、硬件調(diào)試與故障原因分析 .104 結(jié)束語 .10附錄 1:硬件原理圖及 PCB 板.12附錄 2:軟件程序代碼.13參考文獻(xiàn) .34IV1溫度測控儀的設(shè)計(jì)前言隨著工業(yè)生產(chǎn)效率的不斷提高,自動化水平與范圍也不斷擴(kuò)大,因而對溫度檢測技術(shù)的要求也愈來愈高, 現(xiàn)在工業(yè)上通用的溫度檢測范圍為 200 3000,而今后要求能測量超高溫度與
6、超低溫度。尤其是液化氣體的極低溫度測量更為迫切,入 10K 以下溫度測量為當(dāng)今研究的重要課題。溫度檢測技術(shù)將會由點(diǎn)測溫發(fā)展到線、面,甚至立體的測溫。應(yīng)用范圍已經(jīng)從土業(yè)領(lǐng)域延伸到環(huán)境保護(hù)、家用電器、汽車工業(yè)以及航天工業(yè)領(lǐng)域。發(fā)展新型產(chǎn)品利用以前的檢測技術(shù)生產(chǎn)處適應(yīng)于不同場合、不同工況要求的新型產(chǎn)品,以滿足用戶需要。同時利用新的檢測技術(shù)制造出新的產(chǎn)品。對許多場合中的溫度檢測器有特殊要求,入防硫、防爆、耐磨等性能要求;又如移動物體和高速旋轉(zhuǎn)物體的測溫、鋼水的連續(xù)測溫、火焰溫度檢測等。因此,本設(shè)計(jì)方向就是在溫度測量遠(yuǎn)距離傳送和保存方面進(jìn)行有效的探索。1 總體硬件方案設(shè)計(jì)本系統(tǒng)分為兩大部分,一部分為溫度
7、采集模塊、51單片機(jī)及發(fā)送模塊,另一部分為遠(yuǎn)距離數(shù)據(jù)的接收模塊與51單片機(jī)。溫度采集及發(fā)送部分:本設(shè)計(jì)利用AD590進(jìn)行溫度的測量,在經(jīng)過電壓跟隨器,放大電路放大、調(diào)整之后通過A/D轉(zhuǎn)換器TLC549將模擬電壓信號轉(zhuǎn)化為數(shù)字信號,A/D轉(zhuǎn)換之后的數(shù)據(jù)送到單片機(jī)1進(jìn)行處理,單片機(jī)1控制液晶顯示器,將溫度值在液晶顯示器上進(jìn)行顯示,在通過PT2262進(jìn)行無線發(fā)送。接收及顯示部分:用SC2272進(jìn)行無線接收,接收后的數(shù)據(jù)送到單片機(jī)2,單片機(jī)2控制液晶顯示器進(jìn)行顯示。2單片機(jī) 1顯示模塊A/D 采集模塊AD590溫度測量PT2262發(fā)送 圖1-1 發(fā)送模塊框架圖 顯示模塊單片機(jī) 2PT2272接收 圖
8、1-2 接收模塊框架圖1.1 溫度傳感器的放大電路設(shè)計(jì)AD590 是美國模擬器件公司生產(chǎn)的單片集成兩端感溫電流源,它會將溫度轉(zhuǎn)換為電流,在 8051 的各種課本中經(jīng)??吹健F湟?guī)格如下: 度每增加 1,它會增加 1A 輸出電流 可測量范圍-55至 150 供電電壓范圍+4V 至+30VAD590 的管腳圖及元件符號如下圖所示: 圖 1.1-1 AD590 管腳圖3AD590 的輸出電流值說明如下: 其輸出電流是以絕對溫度零度(-273)為基準(zhǔn),每增加 1,它會增加1A 輸出電流,因此在室溫 25時,其輸出電流 Iout=(273+25)=298A。AD590 基本應(yīng)用電路: 圖 1.1-2 基本
9、應(yīng)用電路 AD590 的輸出電流 I=(273+T)uA(T 為攝氏溫度),因此測量的電壓為(273+T)A10K=(2.73+T/100)V。為了將電壓測量出來又務(wù)須使輸出電流 I 不分流出來,我們使用電壓跟隨器其輸出電壓 V2 等于輸入電壓 V。 由于一般電源供應(yīng)教多器件之后,電源是帶雜波的,因此我們使用齊納二極管作為穩(wěn)壓元件,再利用可變電阻分壓,其輸出電壓 V1 需調(diào)整至 2.73V。 接下來我們使用差動放大器其輸出 Vo1 為(100K/10K)(V2-V1)=T/10,如果現(xiàn)在為攝氏 28,輸出電壓為 2.8V,輸出電壓接 AD 轉(zhuǎn)換器,那么 AD 轉(zhuǎn)換輸出的數(shù)字量就和攝氏溫度成線形
10、比例關(guān)系。 通過R9和R12進(jìn)行分壓,V0=T/20,因?yàn)闇y試溫度不大于100,使得最終輸出最大Vo為(1/2)10=5V;能在A/D轉(zhuǎn)換器TCL549的輸入電壓范圍輸入0.3VVCC +0.3V之內(nèi)。溫度采集電路圖采用智能化間歇數(shù)據(jù)采集,即首先把溫度變化值分為報警溫度、預(yù)警溫度、準(zhǔn)預(yù)警溫度、正常溫度四個檔次。當(dāng)溫度處于正常情況下時,溫度采集周期為30min,若某一點(diǎn)的溫度有變化,當(dāng)接近準(zhǔn)預(yù)警點(diǎn)時,采集周期變化為10min,若溫度仍有提高達(dá)到預(yù)警溫度,則采集周期為3min,一旦出現(xiàn)報警溫度,系統(tǒng)進(jìn)入實(shí)時采集狀態(tài),并發(fā)出報警。4 圖 1-3 溫度采集電路 1.2 TLC549 模數(shù)轉(zhuǎn)化電路設(shè)計(jì)T
11、LC549是8位串行A/D轉(zhuǎn)換器芯片,可與通用微處理器、控制器通過CLK、CS、DATA OUT三條口線進(jìn)行串行接口。具有4MHz片內(nèi)系統(tǒng)時鐘和軟、硬件控制電路,轉(zhuǎn)換時間最長17s, TLC549為40 000次/s。總失調(diào)誤差最大為0.5LSB,典型功耗值為6mW。采用差分參考電壓高阻輸入,抗干擾,可按比例量程校準(zhǔn)轉(zhuǎn)換范圍,VREF-接地,VREF+VREF-1V,可用于較小信號的采樣。 其工作原理為:TLC549均有片內(nèi)系統(tǒng)時鐘,該時鐘與I/O CLOCK是獨(dú)立工作的,無須特殊的速度或相位匹配。其工作時序如圖2所示。當(dāng)CS為高時,數(shù)據(jù)輸出(DATA OUT)端處于高阻狀態(tài),此時I/O CL
12、OCK不起作用。這種CS控制作用允許在同時使用多片TLC549時,共用I/O CLOCK,以減少多路(片)A/D并用時的I/O控制端口。將V0的電壓值輸入TLC549進(jìn)行AD轉(zhuǎn)換,從芯片的DO腳輸出,然后由單片機(jī)讀取。兩個4148二極管是進(jìn)行電源穩(wěn)壓的,R7,R8進(jìn)行參考電壓設(shè)置,基本上等于5V。5圖 1.2-1 模數(shù)轉(zhuǎn)換電路1.3 顯示電路設(shè)計(jì)1602 液晶已經(jīng)包括在單片機(jī)學(xué)習(xí)板內(nèi)了,在這里只稍微介紹它的引腳功能。D0D7 是命令/數(shù)據(jù)口,接單片機(jī)的 P1 口,由單片機(jī)讀(寫)命令(數(shù)據(jù)),RS 是命令/數(shù)據(jù)的選擇端口,RW 是讀/寫的選擇端口,E 是 1602 的使能端。1602 有它自己
13、的字庫,用戶只需寫入相應(yīng)的代碼并控制好 1602 給出的時序就可以在液晶屏上顯示希望得到的字符或圖像了。圖 1.3-1 液晶顯示屏1.4 無線發(fā)送與接收模塊的選擇與設(shè)計(jì)PT2262 、SC2272 是一種 CMOS 工藝制造的編碼電路。采集的溫度信號可以通過PT2262 編碼,通過 17 腳輸出到射頻發(fā)射模塊的數(shù)據(jù)輸入端發(fā)射出去,與此同時射頻接收模塊接收后將數(shù)據(jù)送到解碼芯片 SC2272,其地址經(jīng)過核對與 SC2272 的地址匹配后,SC2272 的 VT 腳才輸出高電平,與此同時 PT2262 相應(yīng)的數(shù)據(jù)腳也輸出高電平。6圖 1.4-1 PT2262 引腳圖圖 1.4-2 PT2262 時序
14、圖1.5 鍵盤設(shè)計(jì)獨(dú)立鍵盤也包括在單片機(jī)學(xué)習(xí)板內(nèi),P3.2 接單片機(jī)的外部中斷。 圖 1.5-1 獨(dú)立鍵盤引腳圖2 總體的軟件程序的設(shè)計(jì)2.1 溫度數(shù)據(jù)采集和數(shù)據(jù)處理子程序的設(shè)計(jì)經(jīng) AD590 采集的溫度轉(zhuǎn)化為了電壓值,然后經(jīng)放大電路處理后,使輸出電壓7V=T/20,這樣才能保證 TLC549 的輸入電壓不大于基準(zhǔn)電壓。在硬件調(diào)試時,基準(zhǔn)電壓設(shè)置成 5V,所以在程序處理時要將從 TLC549 得到的數(shù)字值乘以 5/255 才能得到電壓V,然后再乘以 20 才能得到溫度(此時的溫度是雙精度型的) 。中值濾波是為了得到很短時間的溫度平均值,有穩(wěn)定數(shù)值的作用。 圖 2.1-1 溫度采集和處理流程圖2
15、.2 溫度顯示、保存處理的子程序設(shè)計(jì) 圖 2.2-1 溫度顯示和保存流程圖因?yàn)椴杉降拿總€溫度值都是 0100 攝氏度之間的任意值,為了使精度達(dá)到 0.1,我們只保留一位小數(shù)(在二進(jìn)制表示中只占低 4 位) 。將溫度分解成整數(shù)部分和小數(shù)部分,是為了方便存儲和發(fā)送。本設(shè)計(jì)只保存 10 組溫度。2.3 無線發(fā)送與接受的子程序的設(shè)計(jì)開啟轉(zhuǎn)換將轉(zhuǎn)換的結(jié)果進(jìn)行中值濾波將得到的電壓轉(zhuǎn)換為溫度返回每一次溫度采集后將溫度的整數(shù)部分和小數(shù)(一位)部分分離出來將得到的整數(shù)和小數(shù)放入 AT24C02 的中相鄰的兩個單元中,總共分配 20 個單元,一輪后,放入的數(shù)值將覆蓋前面的數(shù)值。將溫度的百位、十位、個位、小數(shù)位(
16、一位)分離出來(一位)部分分離出來調(diào)用溫度顯示模塊的子程序,寫百、十、個、小數(shù)的地址和它們的值8因?yàn)檫x用的發(fā)送模塊是集成 PT2262 無線射頻芯片 PC-T2A,所以只能利用其 6 位數(shù)據(jù)口中的 4 位,將溫度分解發(fā)送。經(jīng)計(jì)算每編碼發(fā)送都需要發(fā)送 34 次接收端才能接收到有效數(shù)據(jù),所以在程序中適當(dāng)對發(fā)送使能端置高進(jìn)行延時。發(fā)送完 4 位數(shù)據(jù)后也需要延時,給接收端處理數(shù)據(jù)時間,防止亂碼。圖 2.3-1 無線發(fā)送流程圖選用的接收模塊是與集成 SC2272 的 PCR1B-2 芯片。當(dāng)接收到的編碼地址與之相匹配的時候,SC2272 的 VT 端從低電平變?yōu)楦唠娖?,然后馬上恢復(fù)低電平。所以利用其下降
17、沿可以觸發(fā)單片機(jī) 2 的外部中斷 0 進(jìn)行溫度接受處理。SC2272 需要接收三次才能得到一個完整的溫度值。調(diào)用發(fā)射子程序發(fā)送整數(shù)的高四位延時給接收端數(shù)據(jù)處理一些時間防止亂碼發(fā)送整數(shù)的低四位延時給接收端數(shù)據(jù)處理一些時間防止亂碼發(fā)送小數(shù)的低四位延時給接收端數(shù)據(jù)處理一些時間防止亂碼返回9 1 2 3圖 2.3-2 無線接收處理流程圖2.4 十組溫度查詢的子程序設(shè)計(jì)因?yàn)楠?dú)立鍵盤接的是單片機(jī) 1 的外部中斷 0,所以當(dāng)它按下去時的產(chǎn)生的下降沿觸發(fā)外部中斷,在中斷處理程序中根據(jù)中斷次數(shù)讀取儲存的溫度。在中斷處理程序中關(guān)中斷是為了消除按鍵抖動觸發(fā)另一次中斷。 圖 2.4-1 溫度查詢流程VT 端的下降沿觸
18、發(fā)外部中斷 0進(jìn)行中斷次數(shù)判斷讀取整數(shù)高四位讀取整數(shù)低四位并和高四位合并讀取小數(shù)低四位重新計(jì)數(shù)返回調(diào)用顯示子程序顯示溫度鍵盤觸發(fā)中斷根據(jù)中斷次數(shù)讀取相應(yīng)的溫度調(diào)用液晶顯示子函數(shù)顯示溫度返回關(guān)中斷開中斷103 調(diào)試與結(jié)果分析3.1 調(diào)試儀器及方法 測試儀器:數(shù)字萬用表,示波器,函數(shù)信號發(fā)生器測試方法:硬件調(diào)試時,利用函數(shù)信號發(fā)生器,與示波器根據(jù)原理調(diào)相應(yīng)的線路的電壓值,達(dá)到與 AD590 采到的溫度,及 TLC549 轉(zhuǎn)化進(jìn)行相對應(yīng)。根據(jù)理論原理的分析,輸入一信號,利用示波器去跟蹤觀察 PT2262 ,SC2272 各引腳的高低電平是否合理正確,即意味著在無線傳輸中兩芯片的地址是否匹配?達(dá)到正確
19、的發(fā)送與接受。3.3 軟、硬件調(diào)試與故障原因分析調(diào)試過程:一開始測試的溫度誤差很大,經(jīng)檢查發(fā)現(xiàn)是采溫部分的 TLC549 的參考電壓與程序處理中的參考電壓不匹配,經(jīng)調(diào)試硬件和程序,得出誤差較小的溫度值。發(fā)送后,發(fā)現(xiàn)接受模塊無法顯示,經(jīng)檢查發(fā)現(xiàn)接收模塊的 SC-2272 的 VT 端驅(qū)動能力較差,不能與單片機(jī)的 TTL 電平匹配,于是我們就用 C9018 三極管增強(qiáng)它的驅(qū)動能力,使得接受模塊有溫度顯示,但是發(fā)現(xiàn)接受顯示亂碼,經(jīng)示波器檢查發(fā)現(xiàn)在發(fā)送溫度時由于 PT2262 芯片的發(fā)送使能端默認(rèn)接地,導(dǎo)致不受單片機(jī)控制,接受模塊無法正確接收溫度數(shù)據(jù)。所以我們將 PT2262 的發(fā)送使能端與默認(rèn)的地剪
20、斷,讓其受單片機(jī)控制。最終實(shí)現(xiàn)了溫度的無線傳送。4 結(jié)束語本次課程設(shè)計(jì)完成的是基于集成溫度傳感器 AD590 的溫度測量及其無線傳送的設(shè)計(jì),并通過 LCD1602 顯示溫度值,通過半個月的不斷努力、克服各種困難,最終實(shí)現(xiàn)了任務(wù)目標(biāo)。本次設(shè)計(jì)主要是對在溫度測量的智能化、集成化方面的探索,這也是溫度測試發(fā)展的趨勢。同時,也是測控技術(shù)未來發(fā)展的趨勢。設(shè)計(jì)是理論知識與實(shí)踐的完美結(jié)合,對于現(xiàn)代大學(xué)生的實(shí)踐能力是個很好的培養(yǎng)。短短的半個月的設(shè)計(jì)雖然短暫,但是它給我們的收獲確實(shí)難忘,不僅僅在智能儀器方面有了很大的進(jìn)步,而且在傳感器,單片機(jī)等方面也學(xué)到了不少在上課學(xué)不到的知識。這段時間我們查閱到很多關(guān)于課程設(shè)
21、計(jì)的書籍,對我們幫助也很大。以前很盲目的東西,現(xiàn)在明白了很多。也對我們專業(yè)動手實(shí)踐的興趣提高了很多。有了這些經(jīng)歷對于我們?nèi)蘸蠊ぷ饕欢〞泻艽髱椭?。令我們終身受益。在課程設(shè)計(jì)的過程中也可以看到我們的不足,如原理知識掌握不實(shí),曾經(jīng)學(xué)過的知識如今卻不會應(yīng)用,軟件的應(yīng)用也不熟練,希望日后提供給我們更多的鍛煉機(jī)會來培養(yǎng)我們的實(shí)踐能力。本設(shè)計(jì)是在 XX 老師的悉心指導(dǎo)下完成的。孫活老師作為一名優(yōu)秀的、經(jīng)驗(yàn)豐富11的教師,具有豐富的知識和經(jīng)驗(yàn),在整個論文實(shí)驗(yàn)和論文寫作過程中,對我進(jìn)行了耐心的指導(dǎo)和幫助,提出嚴(yán)格要求,引導(dǎo)我不斷開闊思路,為我答疑解惑,鼓勵我大膽創(chuàng)新,使我在這一段寶貴的時光中,既增長了知識、開
22、闊了視野、鍛煉了心態(tài),又培養(yǎng)了良好的實(shí)驗(yàn)習(xí)慣和科研精神。在此,我向我的指導(dǎo)老師表示最誠摯的謝意!附錄 1:硬件原理圖及 PCB 板12附錄 2:軟件程序代碼發(fā)送模塊代碼:13#include#include#define uchar unsigned char#define uint unsigned int/*TLC549 引腳設(shè)置*/sbit SCLK=P20;sbit DO=P21;sbit CS=P22;/*1602 引腳設(shè)置*/sbit RS=P25;sbit RW=P26;sbit E=P27;/*PT2262 引腳設(shè)置*/sbit D1=P10;sbit D2=P11;sbit
23、D3=P12;sbit D4=P13;sbit TE=P23;/*AT24C02 引腳設(shè)置*/sbit scl=P15;sbit sda=P36;/*按鍵設(shè)置*/sbit front=P32;uchar code lie1=NOW T:;uchar code lie2=10PreT:;uchar xdata xiaoshu,zhengshu,cishu,xuhao;/定義兩個變量,分別存放溫度的整數(shù)部分和小數(shù)部分/* 溫度采集模塊子函數(shù)*/14/* 名稱 : delay(uint z)* 功能 : 延時,延時時間大概為 z 毫秒。* 輸入 : 無* 輸出 : 無*/void delay(uin
24、t z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);/* 名稱 : ad549(void)* 功能 : 將 AD590 采集的溫度電壓化為 8 位的數(shù)字量。* 輸入 : 溫度電壓* 輸出 : 對應(yīng) TLC549 中參考電壓的數(shù)字量*/uint TLC549(void)/把模擬量轉(zhuǎn)換成數(shù)字量,參考的是 REF。僅僅是數(shù)字量,不是真實(shí)電壓值。 uchar temp,i;/定義存放數(shù)據(jù)和變量 CS=1; SCLK=0;/初始化 CS=0;/DO 輸出最高位 _nop_(); _nop_();/兩個機(jī)器周期滿足了 1.4 微秒 for(i=0;i8;i+)/串
25、行數(shù)據(jù)移位輸入 temp=1;15 temp|=DO; SCLK=1; _nop_();/時序控制看芯片資料 SCLK=0; _nop_(); CS=1; for(i=0;i17;i+) _nop_(); return(temp);/* 名稱 : average(void)* 功能 : 將 TLC549 轉(zhuǎn)換完成的數(shù)字量換成電壓值,并通過一定的關(guān)系,化為溫度值,精度為 0.1。* 輸入 : 溫度電壓對應(yīng) average(void)* 輸出 : AD590 采集的溫度值*/double average(void)/定義一個數(shù)組,存放 25 個 AD 采樣的數(shù)據(jù),然后取平均值,這種方法叫做中值濾波
26、,作用是使輸出穩(wěn)定,并把數(shù)據(jù)換成電壓。 uchar i; uint temp; double temp1,j,average125; for(i=0;i25;i+) temp=TLC549(); j=(double)temp)*20*5/255;/根據(jù)電路圖可知 REF=5V,AD 輸出時 8 位的數(shù)據(jù),所以要分成 255 份。 average1i=j;16 delay(1);/采樣間隔隨要求定。 for(i=0;i25;i+) temp1+=average1i; temp1=temp1/25;/一定要注意不同類型間的賦值和計(jì)算必須用強(qiáng)制轉(zhuǎn)換。還有一個特別重要的 C51FPS.LIB 文件必須
27、要在安裝目錄下的 LIB 文件夾內(nèi)。 return(temp1);/* 液晶顯示模塊子函數(shù)*/* 名稱 : convert(uchar input)* 功能 : 實(shí)驗(yàn)板上把 D0D7 的位置弄反了!需要轉(zhuǎn)過來* 輸入 : 需在液晶屏上顯示的值,或是 1602 的命令值* 輸出 : 對應(yīng)實(shí)驗(yàn)板上的正常值*/uchar convert(uchar input)/實(shí)驗(yàn)板上把 D0D7 的位置弄反了!需要轉(zhuǎn)過來 uchar i,temp,output; for(i=0;i=1; output|=temp; if(i7) output=1; return(output);17/* 名稱 : order(
28、uchar o)* 功能 : 控制 1602 液晶顯示功能* 輸入 : 1602 液晶的命令值或數(shù)據(jù)指針地址* 輸出 : 無*/void order(uchar o) RS=0; RW=0; P0=convert(o); E=0; delay(5); E=1; delay(5); RS=1;/* 名稱 : shuju(uchar s)* 功能 : 將需顯示的數(shù)值顯示在 1602 液晶上* 輸入 : 字符* 輸出 : 無*/void shuju(uchar s) RS=1; RW=0; P0=convert(s);/一定要放在 en=0 前面 否則會出現(xiàn)亂碼。 。 。 E=0; delay(5)
29、;18 E=1; delay(5); RS=0;/* 名稱 : init()* 功能 : 液晶屏初始化* 輸入 : 無* 輸出 : 無*/void init(void) uchar i; order(0 x38);/設(shè)置 16*2 顯示,5*7 點(diǎn)陣,8 位數(shù)據(jù)接口 order(0 x06);/當(dāng)讀寫一個字符后地址指針加 1,光標(biāo)向后移 1 order(0 x0c);/開顯示屏,不顯示光標(biāo) order(0 x01);/數(shù)據(jù)指針清零,顯示屏清空 /*在液晶屏上顯示的上行為NOW T: C,下行為10Pre T: C*/ order(0 x80); for(i=0;i6;i+) shuju(lie
30、1i); order(0 x80+0 x40); for(i=0;i7;i+) shuju(lie2i); order(0 x80+0 x0c); shuju(0 xdf);/ shuju(0 x43);/C order(0 x80+0 x40+0 x0e); shuju(0 xdf);/ shuju(0 x43);/C19/* 名稱 : fasongzhengshu(uchar s)* 功能 : 發(fā)送溫度的整數(shù)部分* 輸入 : 無* 輸出 : 無*/void fasongzhengshu(uchar s) P1=s; /1=0 x37; /TE=0; /while(1); P1=_cror_
31、(P1,4);/先發(fā)高四位 TE=0; /允許 PT2262 發(fā)送數(shù)據(jù) delay(300); /經(jīng)計(jì)算發(fā) 45 次需要 80s TE=1; delay(950); P1=_cror_(P1,4);/再發(fā)第四位 TE=0;/允許 PT2262 發(fā)送數(shù)據(jù) delay(300); TE=1; delay(950);/* 名稱 : fasongxiaoshu(uchar s)* 功能 : 發(fā)送溫度的小數(shù)部分* 輸入 : 無* 輸出 : 無*/void fasongxiaoshu(uchar s)/09 只有 4 位20 /P1=0 xaa; /TE=0; /while(1); P1=s; TE=0;
32、/允許 PT2262 發(fā)送數(shù)據(jù) delay(300); TE=1; delay(950);/* AT24C02 斷電保存子函數(shù)*/* 名稱 : start(void)* 功能 : 啟動 I2C 總線* 輸入 : 無* 輸出 : 無*/void start(void)/I2C 開始 sda=1; _nop_(); scl=1; _nop_(); sda=0; _nop_();/* 名稱 : stop()* 功能 : 停止 I2C 總線21* 輸入 : 無* 輸出 : 無*/void stop(void)/I2C 停止 sda=0; _nop_(); scl=1; _nop_(); sda=1;
33、_nop_();/* 名稱 : write_data(uchar date)* 功能 : 寫一個字節(jié)* 輸入 : date(需要寫入的值)* 輸出 : 無*/void write_data(uchar date)/AT24C02SC 中 I2C 總線寫數(shù)據(jù)程序規(guī)則 uchar i; scl=0; for(i=0;i8;i+) _nop_(); _nop_(); date=1; sda=CY; _nop_();22 _nop_(); scl=1; _nop_(); _nop_(); scl=0; _nop_(); _nop_(); sda=1; _nop_(); _nop_();/* 名稱 :
34、read_data()* 功能 : 讀一個字節(jié)* 輸入 : 無* 輸出 : 讀出的值*/uchar read_data(void)/AT24C02SC 中 I2C 總線讀數(shù)據(jù)程序規(guī)則 uchar k,j,i; scl=0; _nop_(); _nop_(); sda=1; for(i=0;i8;i+) _nop_(); _nop_(); scl=1;23 _nop_(); _nop_(); if(sda=1) j=1; else j=0; k=(k1)|j; scl=0; _nop_(); _nop_(); return(k);/* 名稱 : yingda(void)* 功能 : I2C 總線
35、時鐘* 輸入 : 無* 輸出 : 無*/void yingda(void) uchar i=0; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); while(sda=1&i250) i+; scl=0;24 _nop_(); _nop_(); _nop_(); _nop_();/* 名稱 : writedata(uchar address,uchar info)* 功能 : 向 24c02 中寫值* 輸入 : address(要在這個地址讀取值)* 輸出 : 無*/void writedata(uchar address,uchar info) start
36、(); write_data(0 xa0); yingda(); write_data(address); yingda(); write_data(info); yingda(); stop();/* 名稱 : readdata(uchar address)* 功能 : 從 AT24c02 中讀出數(shù)據(jù)* 輸入 : address(地址)* 輸出 : 地址對應(yīng)的值*/uchar readdata(uchar address)25 uchar t; start(); write_data(0 xa0); yingda(); write_data(address); yingda(); start
37、(); write_data(0 xa1); yingda(); t=read_data(); stop(); return(t);/* 名稱 : readwendu()* 功能 : 在按鍵中斷中讀出溫度* 輸入 : address(地址)* 輸出 : 無*/void readwendu(void) uchar part3,part4,temp1,i; part3=readdata(cishu); part4=readdata(cishu+1); temp1=cishu/2; /*溫度在 1602 上顯示*/ order(0 x80+0 x40+7);/顯示序號 shuju(0 x30+tem
38、p1); order(0 x80+0 x40+9);/顯示溫度 百位26 temp1=part3/100; shuju(0 x30+temp1); temp1=part3%100/10;/顯示溫度 十位 shuju(0 x30+temp1); temp1=part3%10;/顯示溫度 個位 shuju(0 x30+temp1); shuju(0 xa5);/小數(shù)點(diǎn) temp1=part4;/顯示溫度 小數(shù)位 shuju(0 x30+temp1);/* 主函數(shù)*/main() double temperature; uchar temp,s; init();/液晶初始化 EA=1;/開中斷 EX
39、0=1; IT0=1;/外部中斷 0 設(shè)置成下降沿觸發(fā) cishu=0; while(1) temperature=average();/可以對 temperature 進(jìn)行適當(dāng)?shù)恼{(diào)節(jié) zhengshu=(uchar)temperature;/需發(fā)送的整數(shù)部分 xiaoshu=(uint)(temperature*10)%10;/需發(fā)送的小數(shù)部分 /*溫度在 1602 上顯示*/ order(0 x80+6); temp=(uchar)temperature)/100; shuju(0 x30+temp);27 temp=(uchar)temperature)%100/10; shuju(0
40、x30+temp); temp=(uchar)temperature)%10; shuju(0 x30+temp); temp=(uint)(temperature*10)%10; shuju(0 xa5);/小數(shù)點(diǎn) shuju(0 x30+temp); /*將溫度保存在 AT24C02 中*/ writedata(s,zhengshu); s+; delay(100);/給寫數(shù)據(jù)一點(diǎn)反應(yīng)時間 writedata(s,xiaoshu); s+; if(s=20) s=0; /*發(fā)送溫度*/ TE=1; fasongzhengshu(zhengshu); fasongxiaoshu(xiaosh
41、u); void waibu0() interrupt 0 EA=0;/關(guān)中斷 /*10 組溫度查詢*/ delay(100);/延時防止抖動 if(front=0) if(cishu=20) cishu=0; if(xuhao=10);28 xuhao=0; readwendu();/判斷按鍵次數(shù)來輸出對應(yīng)的溫度值 /xuhao+; cishu+; cishu+; EA=1;/開中斷接收顯示模塊程序:#include#include#define uchar unsigned char#define uint unsigned int/*1602 引腳設(shè)置*/sbit RS=P25;sbit
42、 RW=P26;sbit E=P27;/*PT2272 引腳設(shè)置*/sbit D1=P10;sbit D2=P11;sbit D3=P12;sbit D4=P13;sbit VT=P32;uchar code lie1=NOW T:;uchar xiaoshu,zhengshu,x;/定義兩個變量,分別存放溫度的整數(shù)部分和小數(shù)部分/*液晶顯示模塊子函數(shù)*/* 名稱 : delay(uint z)29* 功能 : 延時,延時時間大概為 z 毫秒。* 輸入 : 無* 輸出 : 無*/void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);
43、/* 名稱 : convert(uchar input)* 功能 : 實(shí)驗(yàn)板上把 D0D7 的位置弄反了!需要轉(zhuǎn)過來* 輸入 : 需在液晶屏上顯示的值,或是 1602 的命令值* 輸出 : 對應(yīng)實(shí)驗(yàn)板上的正常值*/uchar convert(uchar input)/實(shí)驗(yàn)板上把 D0D7 的位置弄反了!需要轉(zhuǎn)過來uchar i,temp,output;for(i=0;i=1;output|=temp;if(i7) output=1;return(output);/* 名稱 : order(uchar o)30* 功能 : 控制 1602 液晶顯示功能* 輸入 : 1602 液晶的命令值或數(shù)據(jù)指
44、針地址* 輸出 : 無*/void order(uchar o)RS=0;RW=0;P0=convert(o);E=0;delay(5);E=1;delay(5);RS=1;/* 名稱 : shuju(uchar s)* 功能 : 將需顯示的數(shù)值顯示在 1602 液晶上* 輸入 : 字符* 輸出 : 無*/void shuju(uchar s)RS=1;RW=0;P0=convert(s);/實(shí)驗(yàn)板的電路接反了,需先對數(shù)據(jù)進(jìn)行處理E=0;delay(5);E=1;delay(5);31RS=0;/* 名稱 : init()* 功能 : 液晶屏初始化* 輸入 : 無* 輸出 : 無*/void
45、init(void)uchar i;order(0 x38);/設(shè)置 16*2 顯示,5*7 點(diǎn)陣,8 位數(shù)據(jù)接口order(0 x06);/當(dāng)讀寫一個字符后地址指針加 1,光標(biāo)向后移 1order(0 x0c);/開顯示屏,不顯示光標(biāo)order(0 x01);/數(shù)據(jù)指針清零,顯示屏清空/*在液晶屏上顯示的上行為NOW T: C,下行為10Pre T: C*/ order(0 x80);for(i=0;i6;i+)shuju(lie1i);order(0 x80+0 x0c);shuju(0 xdf);/shuju(0 x43);/C/* 名稱 : Outside_Init()* 功能 : 外
46、部中斷 0 的初始化* 輸入 : 無* 輸出 : 無*/32void Outside_Init(void)EX0 = 1; /開外部中斷 0IT0 = 1; /負(fù)邊沿觸發(fā)EA = 1; /開總中斷/* 名稱 : Outside_Int()* 功能 : 外部中斷 0 的中斷處理* 輸入 : 無* 輸出 : 無*/void Outside_Int(void) interrupt 0uchar temp;EX0 = 0;x+;if(x=1)zhengshu=P1&0 x0f; zhengshu=_crol_(zhengshu,4);if(x=2)zhengshu=zhengshu|(P1&0 x0f
47、);if(x=3) x=0;xiaoshu=P1&0 x0f;33/zhengshu=78;/xiaoshu=8;/*溫度在 1602 上顯示*/order(0 x80+6);temp=zhengshu/100;/顯示百位shuju(0 x30+temp);temp=zhengshu%100/10;/顯示十位shuju(0 x30+temp);temp=zhengshu%10;/顯示個位shuju(0 x30+temp);temp=xiaoshu;shuju(0 xa5);/小數(shù)點(diǎn)shuju(0 x30+temp);/顯示小數(shù)位EX0 = 1;/*主函數(shù)/* 名稱 : Main()* 功能 :
48、 外部中斷試驗(yàn)主程序* 輸入 : 無* 輸出 : 無*34參考文獻(xiàn) :1 李廣弟: 單片機(jī)基礎(chǔ),北京航空航天出版社,2001.7,P3-P7 2 樓然苗: 51 系列單片機(jī)設(shè)計(jì)實(shí)例,北京航空航天出版社,2003.3,P15-P17 3 唐俊翟: 單片機(jī)原理與應(yīng)用,冶金工業(yè)出版社,2003.9,P35-P36 4 劉瑞新: 單片機(jī)原理及應(yīng)用教程,機(jī)械工業(yè)出版社,2003.7,P9-P12 5 吳國經(jīng): 單片機(jī)應(yīng)用技術(shù),中國電力出版社,2004.1,P21-P25 6 李全利、遲榮強(qiáng)編著: 單片機(jī)原理及接口技術(shù),高等教育出版社,2004.1,P23-P24 7 張毅剛: MCS-51 單片機(jī)應(yīng)用設(shè)
49、計(jì),哈工大出版社,2004 年第 2 版,P4-P7 8 霍孟友: 單片機(jī)原理與應(yīng)用,機(jī)械工業(yè)出版社,2004.1,P22-P27 9 霍孟友: 單片機(jī)原理與應(yīng)用學(xué)習(xí)概要及題解,機(jī)械工業(yè)出版社,2005.3,P41-P44 10 許泳龍: 單片機(jī)原理及應(yīng)用,機(jī)械工業(yè)出版社,2005.1,P51-P54 11 吳中俊、黃永紅:可編程序控制器原理及應(yīng)用,機(jī)械工業(yè)出版社,2008.8,P52-P5712 夏繼強(qiáng)、單片機(jī)實(shí)驗(yàn)與實(shí)踐教程,北京航空航天大學(xué)出版社,2001.8,P41-P4513 劉侃、張永泰、劉洛琨:單片機(jī)與嵌入式系統(tǒng)應(yīng)用,機(jī)械工業(yè)出版社,2004.7,P33-P3614 馬忠梅: 單片機(jī)的 C 語言應(yīng)用程序設(shè)計(jì),北京航空航天大學(xué)出版社,2003.1,P9-P1115肖洪兵:跟我學(xué)用單片機(jī),北京航空航天大學(xué)出版社,2002.8, P112-P11316 何立民:單片機(jī)高級教程,京航空航天大學(xué)出版社,2001.7, P71-P74 17 趙曉安:MCS-51 單片機(jī)原理及應(yīng)用,天津大學(xué)出版社,2001.3, P9-P18
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩