版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 機電學院課程設計說明書</p><p><b> 目 錄</b></p><p> ?。ㄒ唬┕δ苊枋觥?lt;/p><p> (二)系統(tǒng)分析及設計…………………………………………………</p><p> 1系統(tǒng)框圖……………………………………………………
2、……..</p><p> 2系統(tǒng)組成分析……………………………………………………</p><p> 3測控系統(tǒng)硬件設計……………………………………………….</p><p> ?。?)溫度測量電路………………………………………………</p><p> ?。?)主電路………………………………………………………</p><
3、;p> (3)控制電路……………………………………………………….</p><p> ?。?)報警與指示電路………………………………………….</p><p> ?。ㄈ╆P鍵技術分析…………………………………………………</p><p> ?。ㄋ模┫到y(tǒng)總體電路設計……………………………………………..</p><p> (五)系統(tǒng)軟
4、件設計………………………………………………….</p><p> ?。┱n程設計總結………………………………………………….</p><p> 基于AT89S52 單片機的溫度控制系統(tǒng)</p><p> 摘要: 本文介紹了一種基于AT89S52單片機的電阻爐溫度控制系統(tǒng),闡述了系統(tǒng)的工作原理、硬件電路以及軟件設計。并且把整個硬件系統(tǒng)的電路設計劃分為
5、PT00溫度傳感器與AT89S52單片機的硬件接口電路設計、數(shù)據(jù)顯示設計、數(shù)據(jù)存儲器的擴展電路設計、通信接口電路設計。該裝置可實現(xiàn)環(huán)境溫度的實時測量與控制,并能記錄、存儲相關數(shù)據(jù),并附有通信接口,能應用方便。具有精度高、穩(wěn)定性好的特點。此系統(tǒng)還設計了單片機與上位機的通信,實現(xiàn)了遠程溫度控制。這種方案可大大地提高工作效率和控制精度,有助于自動化水平的提高,具有良好的經(jīng)濟效益和推廣價值。該系統(tǒng)經(jīng)過實驗,取得了較為滿意的控制效果。</p
6、><p> 關鍵字:單片機; AT89S52; 溫度控制系統(tǒng); 模數(shù)轉換</p><p><b> 功能描述</b></p><p> 溫度測控系統(tǒng)是一個基于AT89S52單片機的溫度測量閉環(huán)控制系統(tǒng),能通過pt100溫度傳感器對電熱片的溫度信號進行采集,再由A/D 轉換芯片ADC0809 將電壓值轉換成數(shù)字量, 經(jīng)單片機采集后與設定溫度進行
7、比較,并把溫度顯示在數(shù)碼管顯示器上。當溫度高于溫度控制范圍上線時,報警器發(fā)出蜂鳴聲示警,同時AT89S52單片機會發(fā)出指令,關閉電熱片的電源,同時開啟散熱扇,使溫度不至于過高。當溫度降到控制溫度下限時,散熱扇接受單片機指令停止工作,單片機再次發(fā)出指令,開啟電熱片。周而復始使溫度始終控制在需求的控制范圍之內(nèi)。該系統(tǒng)測溫范圍為200℃~400℃,報警上、下限為250℃-350℃。</p><p> 2 系統(tǒng)特點
8、 精度高、測溫范圍廣、報警及時,可廣泛應用于基于單片機的測溫報警。</p><p> (二)系統(tǒng)分析及設計</p><p><b> 1系統(tǒng)框圖</b></p><p><b> 2系統(tǒng)組成分析</b></p><p> 1)AT89S52單片機</p><p>
9、此裝置核心是AT89S52單片機,AT89S52單片機是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。 A
10、T89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口, 片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結, 單片機一切工作停
11、止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52</p><p><b> 1引腳圖如下</b></p><p><b> 各引腳功能及介紹</b></p><p> P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0
12、端口寫“1”時,引腳用作高阻抗輸入。 </p><p> 當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下, </p><p> P0不具有內(nèi)部上拉電阻。 </p><p> 在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 </p><p> P1
13、 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p> 此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所
14、示。 </p><p> 在flash編程和校驗時,P1口接收低8位地址字節(jié)。 </p><p><b> 引腳號第二功能 </b></p><p> P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 </p><p> P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) <
15、/p><p> P1.5 MOSI(在系統(tǒng)編程用) </p><p> P1.6 MISO(在系統(tǒng)編程用) </p><p> P1.7 SCK(在系統(tǒng)編程用) </p><p> P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,
16、此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p> 在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR) 時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用 </p><p> 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容
17、。 </p><p> 在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 </p><p> P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅動4 個 </p><p> TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻
18、的原因,將輸出電流(IIL)。 </p><p> P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 </p><p> 在flash編程和校驗時,P3口也接收一些控制信號。 </p><p> 端口引腳 第二功能 </p><p> P3.0 RXD(串行輸入口) </p><p> P3.
19、1 TXD(串行輸出口) </p><p> P3.2 INTO(外中斷0) </p><p> P3.3 INT1(外中斷1) </p><p> P3.4 TO(定時/計數(shù)器0) </p><p> P3.5 T1(定時/計數(shù)器1) </p><p> P3.6 WR(外部數(shù)據(jù)存儲器寫選通) </p
20、><p> P3.7 RD(外部數(shù)據(jù)存儲器讀選通) </p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。 </p><p> RST——復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。 </p><p> ALE/PROG——當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖
21、存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。 </p><p> 對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。 </p><p> 如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止A
22、LE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。 </p><p> PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 </p>
23、<p> EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。 </p><p> 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。 </p><p> FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然
24、這必須是該器件是使用12V編程電壓Vpp。</p><p><b> 2)溫度傳感器</b></p><p> 本設計采用熱電阻傳感器PT100,又叫鉑電阻,熱電阻,是一種溫度傳感器,鉑電阻溫度系數(shù)為0.0039×/℃,0℃時電阻值為100Ω,電阻變化率為0.3851Ω/℃。 </p><p> 采用不銹鋼外殼封裝,內(nèi)部填充導熱
25、材料和密封材料灌封而成,尺寸小巧,適用于精密儀器、恒溫設備、流體管道等溫度的測量,非常經(jīng)濟實用。</p><p> 鉑電阻溫度傳感器精度高,穩(wěn)定性好,應用溫度范圍廣,是中低溫區(qū)(-200℃~400℃)最常用的一種溫度檢測器,不僅廣泛應用于工業(yè)測溫,而且被制成各種標準溫度計。 </p><p> 按IEC751國際標準, 溫度系數(shù)TCR=0.003851,Pt100(R0=100Ω)、P
26、t1000(R0=1000Ω)為統(tǒng)一設計型鉑電阻。 </p><p> PT100溫度傳感器原理</p><p> PT100是一個溫度傳感器,是一種穩(wěn)定性和線性都比較好的鉑絲熱電阻傳感器,可以工作在 -200℃ 至 650℃ 的范圍.</p><p> 電阻式溫度檢測器(RTD,Resistance,Temperature Detector)是一種物質(zhì)材料作
27、成的電阻,它會隨溫度的上升而改變電阻值,如果它隨溫度的上升而電阻值也跟著上升就稱為正電阻系數(shù),如果它隨溫度的上升而電阻值反而下降就稱為負電阻系數(shù)。大部分電阻式溫度檢測器是以金屬作成的,其中以白金(Pt)作成的電阻式溫度檢測器,最為穩(wěn)定-耐酸堿、不會變質(zhì)、相當線性最受工業(yè)界采用。</p><p> PT100溫度感測器是一種以白金(Pt)作成的電阻式溫度檢測器,屬于正電阻系數(shù),其電阻和溫度變化的關系式如下:R=R
28、o(1+αT) 其中α=0.00392,Ro為100Ω(在0℃的電阻值),T為攝氏溫度<br>因此白金作成的電阻式溫度檢測器,又稱為PT100。 1:Vo=2.55mA ×100(1+0.00392T)=0.255+T/1000 。</p><p> 2:量測Vo時,不可分出任何電流,否則量測值會不準。電路分析由于一般電源供應較多零件之后,電源是帶雜訊的,因此我們使用齊納二極體作為穩(wěn)壓零
29、件,由于7.2V齊納二極體的作用,使得1K電阻和5K可變電阻之電壓和為6.5V,靠5K可變電阻的調(diào)整可決定電晶體的射(集極)極電流,而我們須將集極電流調(diào)為2.55mA,使得量測電壓V如箭頭所示為0.255+T/1000。其后的非反向放大器,輸入電阻幾乎無限大,同時又放大10倍,使得運算放大器輸出為2.55+T/100。6V齊納二極體的作用如7.2V齊納二極體的作用,我們利用它調(diào)出2.55V,因此電壓追隨器的輸出電壓V1亦為2.55V。其
30、后差動放大器之輸出為Vo=10(V2-V1)=10(2.55+T/100-2.55)=T/10,如果現(xiàn)在室溫為25℃,則輸出電壓為2.5V。</p><p> 工作原理:傳感器的接入非常簡單,從系統(tǒng)的 5V 供電端僅僅通過一支 3K92 的電阻就連接到 PT100 了.這種接法通常會引起嚴重的非線性問題,但是.由于有了單片機的軟件校正作為后盾,因此就簡化了傳感器的接入方式.</p><p&
31、gt;<b> 3)模數(shù)轉換器</b></p><p> A/D轉換器芯片ADC0809簡介 </p><p> 8路模擬信號的分時采集,片內(nèi)有8路模擬選通開關以及相應的通道抵制鎖存用譯碼電路,其轉換時間為100μs左右。</p><p> ADC0809的內(nèi)部結構</p><p> ADC0809的內(nèi)部邏輯結
32、構圖如下圖所示。</p><p> ADC0809內(nèi)部邏輯結構</p><p> 圖中多路開關可選通8個模擬通道,允許8路模擬量分時輸入,共用一個A/D轉換器進行轉換,這是一種經(jīng)濟的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成對 A、B、C 3個地址位進行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉換結果通過三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,表為通道選擇表。 </
33、p><p><b> 信號引腳</b></p><p> ADC0809芯片為28引腳為雙列直插式封裝,其引腳排列見圖9.8對ADC0809主要信號引腳的功能說明如下:IN7~IN0——模擬量輸入通道 </p><p> ALE——地址鎖存允許信號。對應ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。</p>&l
34、t;p> START——轉換啟動信號。START上升沿時,復位ADC0809;START下降沿時啟動芯片,開始進行A/D轉換;在A/D轉換期間,START應保持 低電平。</p><p> 本信號有時簡寫為ST.</p><p> A、B、C——地址線。 通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對應關系見表</p&g
35、t;<p> CLK——時鐘信號。ADC0809的內(nèi)部沒有時鐘電路,所需時鐘信號由外界提供,因此有時鐘信號引腳。通常使用頻率為500KHz的時鐘信號</p><p> EOC——轉換結束信號。EOC=0,正在進行轉換;EOC=1,轉換結束。使用中該狀態(tài)信號即可作為查詢的狀態(tài)標志,又可作為中斷請求信號使用。</p><p> D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,
36、可以和單片機的數(shù)據(jù)線直接相連。D0為最低位,D7為最高 OE——輸出允許信號。用于控制三態(tài)輸出鎖存器向單片機輸出轉換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉換得到的數(shù)據(jù)。</p><p> Vcc—— +5V電源。Vref——參考電源參考電壓用來與輸入的模擬信號進行比較,作為逐次逼近的基準。其典型值為+5V(Vref(+)=+5V, Vref(-)=-5V).</p><p&
37、gt; 電路連接主要涉及兩個問題。一是8路模擬信號通道的選擇,二是A/D轉換完成后轉換數(shù)據(jù)的傳送。</p><p><b> 8路模擬通道選擇</b></p><p> 如左下圖所示模擬通道選擇信號A、B、C分別接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址鎖存允許信號ALE由P2.0控制,則8路模擬通道的地址為0FEF8H~0FEFF
38、H.此外,通道地址選擇以作寫選通信號,這一部分電路連接如右下圖所示。</p><p> 從圖中可以看到,把ALE信號與START信號接在一起了,這樣連接使得在信號的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動轉換。圖9.19是有關信號的時間配合示意圖。啟動A/D轉換只需要一條MOVX指令。在此之前,要將P2.0清零并將最低三位與所選擇的通道好像對應的口地址送入數(shù)據(jù)指針DPTR中。例如要選擇IN0通道時,可采用
39、如下兩條指令,即可啟動A/D轉換:MOV DPTR , #FE00H ;送入0809的口地址MOVX @DPTR , A ;啟動A/D轉換(IN0)注意:此處的A與A/D轉換無關,可為任意值</p><p> 2. 轉換數(shù)據(jù)的傳送</p><p> A/D轉換后得到的數(shù)據(jù)應及時傳送給單片機進行處理。數(shù)據(jù)傳送的關鍵問題是如何確認A/D轉換的完成,因為只有確認完成后,才能進行傳送。為此可采
40、用下述三種方式。</p><p><b> (1)定時傳送方式</b></p><p> 對于一種A/D轉換其來說,轉換時間作為一項技術指標是已知的和固定的。例如ADC0809轉換時間為128μs,相當于6MHz的MCS-51單片機共 64個機器周期。可據(jù)此設計一個延時子程序,A/D轉換啟動后即調(diào)用此子程序,延遲時間一到,轉換肯定已經(jīng)完成了,接著就可進行數(shù)據(jù)傳送。
41、</p><p><b> ?。?)查詢方式</b></p><p> A/D轉換芯片由表明轉換完成的狀態(tài)信號,例如ADC0809的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可卻只轉換是否完成,并接著進行數(shù)據(jù)傳送。</p><p><b> ?。?)中斷方式</b></p><p> 把
42、表明轉換完成的狀態(tài)信號(EOC)作為中斷請求信號以中斷方式進行數(shù)據(jù)傳送。</p><p> 不管使用上述那種方式,只要一旦確定轉換完成,即可通過指令進行數(shù)據(jù)傳送。首先送出口地址并以信號有效時,OE信號即有效,把轉換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機接受。</p><p> 不管使用上述那種方式,只要一旦確認轉換結束,便可通過指令進行數(shù)據(jù)傳送。所用的指令為MOVX 讀指令,仍以圖9-17所示為例
43、,則有</p><p> MOV DPTR , #FE00H</p><p> MOVX A , @DPTR</p><p> 該指令在送出有效口地址的同時發(fā)出有效信號,使0809的輸出允許信號OE有效,從而打開三態(tài)門輸出,是轉換后的數(shù)據(jù)通過數(shù)據(jù)總線送入A累加器中。</p><p> 這里需要說明的示,ADC0809的三個地址端A、B
44、、C即可如前所述與地址線相連,也可與數(shù)據(jù)線相連,例如與D0~D2相連。這是啟動A/D轉換的指令與上述類似,只不過A的內(nèi)容不能為任意數(shù),而必須和所選輸入通道號IN0~IN7相一致。例如當A、B、C分別與D0、D1、D2相連時,啟動IN7的A/D轉換指令如下:</p><p> MOV DPTR, #FE00H ;送入0809的口地址MOV A ,#07H ;D2D1D0=111選擇IN7通道<
45、/p><p> MOVX @DPTR, A ;啟動A/D轉換</p><p> 4)LED七段數(shù)碼管顯示器</p><p> 在單片機系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號,由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點,因此使用非常廣泛。它由若干個發(fā)光二極管組成,當發(fā)光二極管導通時,相應的一個點或一個筆畫發(fā)亮??刂撇煌M合的二極管導通,就能顯示
46、出各種字符。常用的LED7顯示器有七段和“米”字段之分,有小數(shù)點位的7段顯示器的字形碼為八位二進制,正好一個字節(jié),“米”字顯示器有15個發(fā)光二極管,所以其字形碼需兩個字節(jié)。這兩類顯示器都有共陽極和共陰極兩種接法,共陰極LED顯示器的發(fā)光二極管陰極連接在一起,通常此公共陰極接地,當某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應的段被顯示;同樣,共陽極LED顯示器的發(fā)光二極管陽極連接在一起,通常此公共陽極接正電壓,當某個發(fā)光二極管的陰
47、極為低電平時,發(fā)光二極管點亮,相應的段被顯示。共陽極和共陰極的字形碼是不同的,而且字形碼可由設計者根據(jù)硬件接線的不同自行設計,不必局限于固定格式。在單片機應用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動態(tài)掃描顯示。當顯示器位數(shù)較少時,適合采用靜態(tài)顯示的方法。當位數(shù)較多時,用靜態(tài)顯示所需的I/O太多,一般采用動態(tài)顯示的方</p><p> 其中8155的PB口作段選碼口,經(jīng)7407驅動與LED的段相連,8155的
48、PA0~PA5作選碼口,經(jīng)7406驅動與LED的位相連。</p><p> 圖中P2..7反相后作8155的片選CE,P2.6接8155的IO/M端。這樣確定的8155片內(nèi)4個端口地址如下:</p><p> 命令、狀態(tài)口: FFF0H</p><p> A口: FFF1H</p><p> B口:
49、 FFF2H</p><p> C口: FFF3H</p><p> 6位待顯示字符從左到右一次存放在內(nèi)部RAM顯示緩沖區(qū)7AH~7FH,顯示次序位從右到左進行。程序后面的TAB地址為段選碼表首地址,表中段選碼存放的次序為0~F等等。一下為循環(huán)動態(tài)顯示6位字符的程序。8155命令字為03H.</p><p> MOV A,#
50、03H</p><p> MOV DPTR,#0FFF0H</p><p> MOVX @DPTR,A</p><p> DL: MOV R0,#7FH</p><p> MOV R2,#01H</p><p> DL1: MOV A,@R0</p><
51、p><b> DEC R0</b></p><p> MOV DPTR,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV DPTR,#0FFF2H</p><p> MOVX @DPTR,A</p><p> ACALL
52、DL1MS</p><p> JB ACC.5,DL</p><p> RL A</p><p> MOV R2,A</p><p> AJMP DL1</p><p> TAB: DB 3FH ,06H,5BH,4FH</p><p>
53、DB 66H,6DH,7DH,07H</p><p> DB 7FH,6FH,77H,7CH</p><p> DB 39H,5EH,79H,7CH</p><p> DB 40H,00H</p><p> DL1MS:MOV R7,#02H</p><p> DL0: MOV R6,#0F9H
54、</p><p> DL10: DJNZ R6,DL10</p><p> DJNZ R7,DL0</p><p><b> RET</b></p><p><b> 3 系統(tǒng)硬件設計</b></p><p> 本系統(tǒng)的硬件設計主要包括單片機的最小系統(tǒng)
55、、溫度采集電路、8155 擴展電路、LED七段數(shù)碼管顯示器顯示接口、鍵盤接口、蜂鳴器報警電路以及串口通信等。圖1 中AT89S52 為主控制器件, AT89S52是ATMEL 公司生產(chǎn)的低電壓、高性能CMOS 8 位單片機, 片內(nèi)含有8K 字節(jié)的EPROM 和256 字節(jié)的RAM。本系統(tǒng)采用8155A 芯片來擴展鍵盤和液晶顯示, 模數(shù)轉換芯片ADC0809 以及MAX232 實現(xiàn)RS 一232C 標準接口通信電路。以下是各部分電路功能:
56、</p><p> (5)報警和提示裝置:蜂鳴器和發(fā)光二極管</p><p> 蜂鳴器報警電路由晶體管和蜂鳴器組成,由單片機I/O口輸出信號控制晶體管的導通或者截止,晶體管導通,則蜂鳴器報警,通過單片機來控制蜂鳴器來產(chǎn)生報警聲音。另外,為了提醒注意,本系統(tǒng)還設計了兩個發(fā)光二極管(一紅一綠),用以區(qū)分是高溫報警還是低溫報警。</p><p><b>
57、(6)散熱裝置</b></p><p> 電風扇選擇為12V,0.6W的。</p><p><b> (7)電熱片</b></p><p><b> (8)繼電器</b></p><p> 為了能使單片機(AT89S52)能夠控制電熱片和電風扇的通斷,本系統(tǒng)運用了繼電器的開關特性
58、,將通過I/O口的值來控制繼電器的通斷從而控制電風扇和電熱片。</p><p> 4.測控系統(tǒng)硬件設計</p><p><b> (1)溫度測量電路</b></p><p><b> ?。?)控制電路</b></p><p> ?。?)報警及顯示電路</p><p>&l
59、t;b> 報警電路</b></p><p><b> 顯示電路</b></p><p><b> ?。ㄈ╆P鍵技術分析</b></p><p> 通過對采樣信號進行濾波減小隨機誤差由于外界干擾或某些不可預知的因素,模擬量在受到干擾后,經(jīng) A/D 轉換后的結果偏離了真實值,可能會出現(xiàn)一些隨機的誤差,如
60、果只采樣一次,無法確定結果是否可信。必須通過多次采樣得到一個 A/D 轉換的數(shù)據(jù)序列,通過軟件算法處理后才能得到一個可信度較高的結果。這種方法就是數(shù)字濾波。</p><p> 通過數(shù)字濾波的方法可進一步提高溫度的可信度。</p><p> ?。ㄋ模┫到y(tǒng)總體電路設計</p><p><b> (五)系統(tǒng)軟件設計</b></p>
61、<p><b> 系統(tǒng)總程序如下:</b></p><p> #include<reg52.h></p><p> sbit HIGH_LED = P1^4; //高溫預警</p><p> sbit LOW_LED = P1^5;</p><p> sbit DRP = P1^6; //
62、 電熱片</p><p> sbit DFS = P1^7; // 電風扇</p><p> sbit ST = P1^0;</p><p> sbit EOC = P1^1;</p><p> sbit OE = P1^2;</p><p> sbit CLK = P1^3;</p><
63、p> sbit FMQ = P3^4; //蜂鳴器,低電平有效</p><p> // 顯示段碼0-9 </p><p> Unsigned char code </p><p> table_dot[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
64、 //帶小數(shù)點</p><p> unsigned char code table[10] = </p><p> {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p><b> //溫度組織對照</b></p
65、><p> int code T_biao[21] = {200,210,220,230,240,250,260,270,280,290,300,</p><p> 310,320,330,340,350,360,370,380,390,400};</p><p> float code R_biao[21] = {175.85,179.53,183.19,186
66、.84,190.47,194.1,</p><p> 197.71,201.31,204.9,208.48,212.05,215.61,</p><p> 219.15,222.68,226.21,229.72,233.81,236.7,</p><p> 240.18,243.64,247.09};</p><p> //延時函數(shù),
67、 對于12MHz時鐘, 例i=10,則大概延時10ms.</p><p> void delay(unsigned int i)</p><p><b> {</b></p><p> unsigned int j;</p><p> while(i--)</p><p><b>
68、; {</b></p><p> for(j = 0; j < 125; j++);</p><p><b> }</b></p><p><b> }</b></p><p> void systemInit() //系統(tǒng)初始化</p><p
69、><b> {</b></p><p><b> EA = 1;</b></p><p> TMOD = 0X02;</p><p> TH0 = 216;</p><p> TL0 = 216;</p><p><b> TR0 = 1;<
70、/b></p><p><b> ET0 = 1;</b></p><p><b> ST = 0;</b></p><p><b> OE = 0;</b></p><p><b> }</b></p><p>
71、unsigned char AD()</p><p><b> {</b></p><p> unsigned char AD_data;</p><p><b> ST = 1;</b></p><p><b> delay(2);</b></p>&l
72、t;p><b> ST = 0;</b></p><p> while(0==EOC);</p><p><b> OE = 1;</b></p><p> AD_data = P2;</p><p><b> OE = 0;</b></p>&l
73、t;p> return AD_data;</p><p><b> }</b></p><p> unsigned int U_turn_T(unsigned char U)</p><p><b> {</b></p><p> unsigned int temp;</p&g
74、t;<p> bit flag = 1;</p><p> unsigned char i = 0;</p><p><b> float R;</b></p><p> float T = 999.9;</p><p> /*把U轉變成R*/</p><p><b&
75、gt; /*得到R后*/</b></p><p> if(R < R_biao[0]) </p><p><b> return 0;</b></p><p> for(i=0;i<20;i++) //i<20沒沒完說明溫度過高,此時T值為999.9</p><p><b&g
76、t; {</b></p><p> if(R<R_biao[i+1])</p><p><b> {</b></p><p> T = T_biao[i]+(R-R_biao[i])*(T_biao[i+1]-T_biao[i])/(R_biao[i+1]-R_biao[i]);</p><p>
77、;<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> temp = T*10 + 0.5;</p><p> return temp;</p><p><b>
78、 }</b></p><p> unsigned int getTmpValue()</p><p><b> {</b></p><p> unsigned int T = 0;</p><p> unsigned char AD_data[12];</p><p> u
79、nsigned char i,U,tmp;</p><p> for(i=0;i<12;i++)</p><p> AD_data[i] = AD();</p><p> for(i=10;i>=0;i--)</p><p> if(AD_data[11]>AD_data[i])</p><p&g
80、t;<b> {</b></p><p> tmp = AD_data[11];</p><p> AD_data[11] = AD_data[i];</p><p> AD_data[i] = tmp;</p><p><b> }</b></p><p> f
81、or(i=9;i>=0;i--)</p><p> if(AD_data[10]<AD_data[i])</p><p><b> {</b></p><p> tmp = AD_data[10];</p><p> AD_data[10] = AD_data[i];</p><p
82、> AD_data[i] = tmp;</p><p><b> }</b></p><p> for(i=0;i<10;i++)</p><p> T += AD_data[i];</p><p> U = T/10 + 0.5;</p><p> T = U_turn_
83、T(U);</p><p><b> return T;</b></p><p><b> }</b></p><p> void systemRun( int t)</p><p><b> {</b></p><p> if(t<=2
84、50)</p><p><b> {</b></p><p><b> FMQ = 0;</b></p><p> LOW_LED = 0;</p><p> HIGH_LED = 1;</p><p><b> DRP = 0;</b><
85、;/p><p><b> DFS = 1;</b></p><p> }else if(t>250&&t<=260)</p><p><b> {</b></p><p><b> FMQ = 1;</b></p><p>
86、; LOW_LED = 1;</p><p> HIGH_LED = 1;</p><p><b> DRP = 0;</b></p><p><b> DFS = 1;</b></p><p> }else if(t>260&&t<=340)</p>
87、;<p><b> {</b></p><p><b> FMQ = 1;</b></p><p> LOW_LED = 0;</p><p> HIGH_LED = 0;</p><p><b> DRP = 0;</b></p><
88、;p><b> DFS =0;</b></p><p> }else if(t>340&&t<=350)</p><p><b> {</b></p><p><b> FMQ = 1;</b></p><p> LOW_LED =
89、1;</p><p> HIGH_LED = 1;</p><p><b> DRP = 0;</b></p><p><b> DFS = 1;</b></p><p><b> }else { </b></p><p><b>
90、FMQ = 0;</b></p><p> LOW_LED = 1;</p><p> HIGH_LED = 0;</p><p><b> DRP = 1;</b></p><p> DFS = 0; </p><p><b> }</b>&l
91、t;/p><p><b> }</b></p><p> void display(unsigned int t)</p><p><b> {</b></p><p> unsigned char tmp1,tmp2,tmp3,tmp4;</p><p> bit f
92、lag_FMQ ;</p><p> flag_FMQ = FMQ; </p><p> tmp4 = t / 1000 ; //千位</p><p> tmp3 = t / 100 % 10; /* 計算百位數(shù)值 */</p><p> tmp2 = t / 10 % 10;
93、 /* 計算十位數(shù)值 */</p><p> tmp1 = t % 10; /* 計算個位數(shù)值 */</p><p> if(flag_FMQ)</p><p><b> {</b></p><p> P0 = table[tmp4]; </p><p&g
94、t; P3 = 0xfe; </p><p> delay(2); </p><p> P0 = table[tmp3]; </p><p> P3 = 0xfd; </p><p> delay(2); </p>&
95、lt;p> P0 = table_dot[tmp2]; </p><p> P3 = 0xfb; </p><p> delay(2); </p><p> P0 = table[tmp1]; </p><p> P3 = 0xf7; &l
96、t;/p><p><b> delay(2);</b></p><p><b> }else{</b></p><p> P0 = table[tmp4]; </p><p> P3 = 0x7e; </p><p> delay(2);
97、 </p><p> P0 = table[tmp3]; </p><p> P3 = 0x7d; </p><p> delay(2); </p><p> P0 = table_dot[tmp2]; </p>&l
98、t;p> P3 = 0x7b; </p><p> delay(2); </p><p> P0 = table[tmp1]; </p><p> P3 = 0x77; </p><p><b> delay(2);</b><
99、/p><p><b> }</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p><b> int t;</b></p>
100、<p> systemInit();</p><p><b> while(1)</b></p><p><b> {</b></p><p> t = getTmpValue();</p><p> systemRun(t);</p><p> dis
101、play(t);</p><p><b> }</b></p><p><b> }</b></p><p><b> ?。┱n程設計總結</b></p><p> 這次課程設計用到單片機,CAD制圖、匯編語言、模擬和數(shù)字電路知識等好多知識,這些好多都是以前學過的內(nèi)容,
102、雖然感覺理論上已經(jīng)掌握,但在運用到實踐的過程中還是感覺不夠用,很多基礎的東西都還沒有很好的掌握。小組人員的配合﹑相處,以及自身的動腦和努力,都是以后工作中需要的。</p><p> 要做好一個課程設計,就必須做到:在設計程序之前,對所用單片機的內(nèi)部結構有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪些資源;要有一個清晰的思路和一個完整的軟件流程圖;在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的
103、必經(jīng)之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設計課程過程中遇到問題是很正常德,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。課程設計結束了,我的發(fā)現(xiàn)、提出、分析、解決問題和實踐能力都有提高。我在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。我們通過查閱大量有關資料,并在小組中互
104、相討論,交流經(jīng)驗和自學,若遇到實在搞不明白的問題就會及時請教老師,使自己學到了不少知識,總的來說還是收獲頗豐。</p><p><b> 參考文獻</b></p><p> [1]單片機原理及接口技術/梅麗鳳等編著.——北京:清華大學出版社;北京交通大學出版社,2004.2</p><p> [2] 吳炳勝.80C51單片機原理與應用技術
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計---基于at89s52 單片機的溫度控制系統(tǒng)
- 基于AT89S52單片機的溫度控制系統(tǒng).pdf
- 單片機課程設計---基于單片機at89s52的數(shù)字溫度計的設計
- 基于at89s52單片機溫度控制系統(tǒng)畢業(yè)設計
- 基于at89s52單片機溫度控制系統(tǒng)設計畢業(yè)設計
- 單片機外文翻譯---at89s52單片機
- 單片機外文翻譯--at89s52單片機
- 基于at89s52單片機溫度控制系統(tǒng)設計畢業(yè)設計
- 基于at89s52單片機溫度控制系統(tǒng)設計設計畢業(yè)論文
- 基于at89s52單片機溫度測量的課程設計畢業(yè)論文
- 單片機課程設計---基于at89s52交通燈設計
- 課程設計--基于at89s52單片機溫度自動檢測系統(tǒng)的設計
- at89s52單片機外文翻譯
- 基于at89s52單片機的步進電機控制
- 單片機課程設計--基于單片機at89s51的電梯控制系統(tǒng)設計
- at89s52單片機外文翻譯
- 課程設計-- 基于at89s52單片機的密碼鎖設計
- 單片機課程設計--基于51單片機的溫度控制系統(tǒng)設計
- 單片機課程設計——基于51單片機的溫度控制系統(tǒng)設計
- 基于at89s52單片機溫度采集設計畢業(yè)論文
評論
0/150
提交評論