版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 機(jī)電學(xué)院課程設(shè)計(jì)說明書</p><p><b> 目 錄</b></p><p> ?。ㄒ唬┕δ苊枋觥?lt;/p><p> ?。ǘ┫到y(tǒng)分析及設(shè)計(jì)…………………………………………………</p><p> 1系統(tǒng)框圖……………………………………………………
2、……..</p><p> 2系統(tǒng)組成分析……………………………………………………</p><p> 3測控系統(tǒng)硬件設(shè)計(jì)……………………………………………….</p><p> ?。?)溫度測量電路………………………………………………</p><p> ?。?)主電路………………………………………………………</p><
3、;p> ?。?)控制電路……………………………………………………….</p><p> ?。?)報(bào)警與指示電路………………………………………….</p><p> (三)關(guān)鍵技術(shù)分析…………………………………………………</p><p> ?。ㄋ模┫到y(tǒng)總體電路設(shè)計(jì)……………………………………………..</p><p> (五)系統(tǒng)軟
4、件設(shè)計(jì)………………………………………………….</p><p> ?。┱n程設(shè)計(jì)總結(jié)………………………………………………….</p><p> 基于AT89S52 單片機(jī)的溫度控制系統(tǒng)</p><p> 摘要: 本文介紹了一種基于AT89S52單片機(jī)的電阻爐溫度控制系統(tǒng),闡述了系統(tǒng)的工作原理、硬件電路以及軟件設(shè)計(jì)。并且把整個(gè)硬件系統(tǒng)的電路設(shè)計(jì)劃分為
5、PT00溫度傳感器與AT89S52單片機(jī)的硬件接口電路設(shè)計(jì)、數(shù)據(jù)顯示設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)器的擴(kuò)展電路設(shè)計(jì)、通信接口電路設(shè)計(jì)。該裝置可實(shí)現(xiàn)環(huán)境溫度的實(shí)時(shí)測量與控制,并能記錄、存儲(chǔ)相關(guān)數(shù)據(jù),并附有通信接口,能應(yīng)用方便。具有精度高、穩(wěn)定性好的特點(diǎn)。此系統(tǒng)還設(shè)計(jì)了單片機(jī)與上位機(jī)的通信,實(shí)現(xiàn)了遠(yuǎn)程溫度控制。這種方案可大大地提高工作效率和控制精度,有助于自動(dòng)化水平的提高,具有良好的經(jīng)濟(jì)效益和推廣價(jià)值。該系統(tǒng)經(jīng)過實(shí)驗(yàn),取得了較為滿意的控制效果。</p
6、><p> 關(guān)鍵字:單片機(jī); AT89S52; 溫度控制系統(tǒng); 模數(shù)轉(zhuǎn)換</p><p><b> 功能描述</b></p><p> 溫度測控系統(tǒng)是一個(gè)基于AT89S52單片機(jī)的溫度測量閉環(huán)控制系統(tǒng),能通過pt100溫度傳感器對(duì)電熱片的溫度信號(hào)進(jìn)行采集,再由A/D 轉(zhuǎn)換芯片ADC0809 將電壓值轉(zhuǎn)換成數(shù)字量, 經(jīng)單片機(jī)采集后與設(shè)定溫度進(jìn)行
7、比較,并把溫度顯示在數(shù)碼管顯示器上。當(dāng)溫度高于溫度控制范圍上線時(shí),報(bào)警器發(fā)出蜂鳴聲示警,同時(shí)AT89S52單片機(jī)會(huì)發(fā)出指令,關(guān)閉電熱片的電源,同時(shí)開啟散熱扇,使溫度不至于過高。當(dāng)溫度降到控制溫度下限時(shí),散熱扇接受單片機(jī)指令停止工作,單片機(jī)再次發(fā)出指令,開啟電熱片。周而復(fù)始使溫度始終控制在需求的控制范圍之內(nèi)。該系統(tǒng)測溫范圍為200℃~400℃,報(bào)警上、下限為250℃-350℃。</p><p> 2 系統(tǒng)特點(diǎn)
8、 精度高、測溫范圍廣、報(bào)警及時(shí),可廣泛應(yīng)用于基于單片機(jī)的測溫報(bào)警。</p><p> (二)系統(tǒng)分析及設(shè)計(jì)</p><p><b> 1系統(tǒng)框圖</b></p><p><b> 2系統(tǒng)組成分析</b></p><p> 1)AT89S52單片機(jī)</p><p>
9、此裝置核心是AT89S52單片機(jī),AT89S52單片機(jī)是一種低功耗、高性能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)提 供高靈活、超有效的解決方案。 A
10、T89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(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)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停
11、止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52</p><p><b> 1引腳圖如下</b></p><p><b> 各引腳功能及介紹</b></p><p> P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0
12、端口寫“1”時(shí),引腳用作高阻抗輸入。 </p><p> 當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下, </p><p> P0不具有內(nèi)部上拉電阻。 </p><p> 在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 </p><p> P1
13、 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p> 此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所
14、示。 </p><p> 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 </p><p><b> 引腳號(hào)第二功能 </b></p><p> P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 </p><p> P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) <
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 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,
16、此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p> 在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 </p><p> 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容
17、。 </p><p> 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。 </p><p> P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動(dòng)4 個(gè) </p><p> TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻
18、的原因,將輸出電流(IIL)。 </p><p> P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 </p><p> 在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 </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í)/計(jì)數(shù)器0) </p><p> P3.5 T1(定時(shí)/計(jì)數(shù)器1) </p><p> P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) </p
20、><p> P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) </p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。 </p><p> RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。 </p><p> ALE/PROG——當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖
21、存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。 </p><p> 對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。 </p><p> 如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止A
22、LE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。 </p><p> PSEN——程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。 </p>
23、<p> EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。 </p><p> 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。 </p><p> FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然
24、這必須是該器件是使用12V編程電壓Vpp。</p><p><b> 2)溫度傳感器</b></p><p> 本設(shè)計(jì)采用熱電阻傳感器PT100,又叫鉑電阻,熱電阻,是一種溫度傳感器,鉑電阻溫度系數(shù)為0.0039×/℃,0℃時(shí)電阻值為100Ω,電阻變化率為0.3851Ω/℃。 </p><p> 采用不銹鋼外殼封裝,內(nèi)部填充導(dǎo)熱
25、材料和密封材料灌封而成,尺寸小巧,適用于精密儀器、恒溫設(shè)備、流體管道等溫度的測量,非常經(jīng)濟(jì)實(shí)用。</p><p> 鉑電阻溫度傳感器精度高,穩(wěn)定性好,應(yīng)用溫度范圍廣,是中低溫區(qū)(-200℃~400℃)最常用的一種溫度檢測器,不僅廣泛應(yīng)用于工業(yè)測溫,而且被制成各種標(biāo)準(zhǔn)溫度計(jì)。 </p><p> 按IEC751國際標(biāo)準(zhǔn), 溫度系數(shù)TCR=0.003851,Pt100(R0=100Ω)、P
26、t1000(R0=1000Ω)為統(tǒng)一設(shè)計(jì)型鉑電阻。 </p><p> PT100溫度傳感器原理</p><p> PT100是一個(gè)溫度傳感器,是一種穩(wěn)定性和線性都比較好的鉑絲熱電阻傳感器,可以工作在 -200℃ 至 650℃ 的范圍.</p><p> 電阻式溫度檢測器(RTD,Resistance,Temperature Detector)是一種物質(zhì)材料作
27、成的電阻,它會(huì)隨溫度的上升而改變電阻值,如果它隨溫度的上升而電阻值也跟著上升就稱為正電阻系數(shù),如果它隨溫度的上升而電阻值反而下降就稱為負(fù)電阻系數(shù)。大部分電阻式溫度檢測器是以金屬作成的,其中以白金(Pt)作成的電阻式溫度檢測器,最為穩(wěn)定-耐酸堿、不會(huì)變質(zhì)、相當(dāng)線性最受工業(yè)界采用。</p><p> PT100溫度感測器是一種以白金(Pt)作成的電阻式溫度檢測器,屬于正電阻系數(shù),其電阻和溫度變化的關(guān)系式如下: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時(shí),不可分出任何電流,否則量測值會(huì)不準(zhǔn)。電路分析由于一般電源供應(yīng)較多零件之后,電源是帶雜訊的,因此我們使用齊納二極體作為穩(wěn)壓零
29、件,由于7.2V齊納二極體的作用,使得1K電阻和5K可變電阻之電壓和為6.5V,靠5K可變電阻的調(diào)整可決定電晶體的射(集極)極電流,而我們須將集極電流調(diào)為2.55mA,使得量測電壓V如箭頭所示為0.255+T/1000。其后的非反向放大器,輸入電阻幾乎無限大,同時(shí)又放大10倍,使得運(yùn)算放大器輸出為2.55+T/100。6V齊納二極體的作用如7.2V齊納二極體的作用,我們利用它調(diào)出2.55V,因此電壓追隨器的輸出電壓V1亦為2.55V。其
30、后差動(dòng)放大器之輸出為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 了.這種接法通常會(huì)引起嚴(yán)重的非線性問題,但是.由于有了單片機(jī)的軟件校正作為后盾,因此就簡化了傳感器的接入方式.</p><p&
31、gt;<b> 3)模數(shù)轉(zhuǎn)換器</b></p><p> A/D轉(zhuǎn)換器芯片ADC0809簡介 </p><p> 8路模擬信號(hào)的分時(shí)采集,片內(nèi)有8路模擬選通開關(guān)以及相應(yīng)的通道抵制鎖存用譯碼電路,其轉(zhuǎn)換時(shí)間為100μs左右。</p><p> ADC0809的內(nèi)部結(jié)構(gòu)</p><p> ADC0809的內(nèi)部邏輯結(jié)
32、構(gòu)圖如下圖所示。</p><p> ADC0809內(nèi)部邏輯結(jié)構(gòu)</p><p> 圖中多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,這是一種經(jīng)濟(jì)的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成對(duì) A、B、C 3個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉(zhuǎn)換結(jié)果通過三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,表為通道選擇表。 </
33、p><p><b> 信號(hào)引腳</b></p><p> ADC0809芯片為28引腳為雙列直插式封裝,其引腳排列見圖9.8對(duì)ADC0809主要信號(hào)引腳的功能說明如下:IN7~I(xiàn)N0——模擬量輸入通道 </p><p> ALE——地址鎖存允許信號(hào)。對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。</p>&l
34、t;p> START——轉(zhuǎn)換啟動(dòng)信號(hào)。START上升沿時(shí),復(fù)位ADC0809;START下降沿時(shí)啟動(dòng)芯片,開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持 低電平。</p><p> 本信號(hào)有時(shí)簡寫為ST.</p><p> A、B、C——地址線。 通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對(duì)應(yīng)關(guān)系見表</p&g
35、t;<p> CLK——時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500KHz的時(shí)鐘信號(hào)</p><p> EOC——轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。</p><p> D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,
36、可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高 OE——輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。</p><p> Vcc—— +5V電源。Vref——參考電源參考電壓用來與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V, Vref(-)=-5V).</p><p&
37、gt; 電路連接主要涉及兩個(gè)問題。一是8路模擬信號(hào)通道的選擇,二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。</p><p><b> 8路模擬通道選擇</b></p><p> 如左下圖所示模擬通道選擇信號(hào)A、B、C分別接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址鎖存允許信號(hào)ALE由P2.0控制,則8路模擬通道的地址為0FEF8H~0FEFF
38、H.此外,通道地址選擇以作寫選通信號(hào),這一部分電路連接如右下圖所示。</p><p> 從圖中可以看到,把ALE信號(hào)與START信號(hào)接在一起了,這樣連接使得在信號(hào)的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動(dòng)轉(zhuǎn)換。圖9.19是有關(guān)信號(hào)的時(shí)間配合示意圖。啟動(dòng)A/D轉(zhuǎn)換只需要一條MOVX指令。在此之前,要將P2.0清零并將最低三位與所選擇的通道好像對(duì)應(yīng)的口地址送入數(shù)據(jù)指針DPTR中。例如要選擇IN0通道時(shí),可采用
39、如下兩條指令,即可啟動(dòng)A/D轉(zhuǎn)換:MOV DPTR , #FE00H ;送入0809的口地址MOVX @DPTR , A ;啟動(dòng)A/D轉(zhuǎn)換(IN0)注意:此處的A與A/D轉(zhuǎn)換無關(guān),可為任意值</p><p> 2. 轉(zhuǎn)換數(shù)據(jù)的傳送</p><p> A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。為此可采
40、用下述三種方式。</p><p><b> ?。?)定時(shí)傳送方式</b></p><p> 對(duì)于一種A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于6MHz的MCS-51單片機(jī)共 64個(gè)機(jī)器周期。可據(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。
41、</p><p><b> ?。?)查詢方式</b></p><p> A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可卻只轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。</p><p><b> ?。?)中斷方式</b></p><p> 把
42、表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào)以中斷方式進(jìn)行數(shù)據(jù)傳送。</p><p> 不管使用上述那種方式,只要一旦確定轉(zhuǎn)換完成,即可通過指令進(jìn)行數(shù)據(jù)傳送。首先送出口地址并以信號(hào)有效時(shí),OE信號(hào)即有效,把轉(zhuǎn)換數(shù)據(jù)送上數(shù)據(jù)總線,供單片機(jī)接受。</p><p> 不管使用上述那種方式,只要一旦確認(rèn)轉(zhuǎn)換結(jié)束,便可通過指令進(jìn)行數(shù)據(jù)傳送。所用的指令為MOVX 讀指令,仍以圖9-17所示為例
43、,則有</p><p> MOV DPTR , #FE00H</p><p> MOVX A , @DPTR</p><p> 該指令在送出有效口地址的同時(shí)發(fā)出有效信號(hào),使0809的輸出允許信號(hào)OE有效,從而打開三態(tài)門輸出,是轉(zhuǎn)換后的數(shù)據(jù)通過數(shù)據(jù)總線送入A累加器中。</p><p> 這里需要說明的示,ADC0809的三個(gè)地址端A、B
44、、C即可如前所述與地址線相連,也可與數(shù)據(jù)線相連,例如與D0~D2相連。這是啟動(dòng)A/D轉(zhuǎn)換的指令與上述類似,只不過A的內(nèi)容不能為任意數(shù),而必須和所選輸入通道號(hào)IN0~I(xiàn)N7相一致。例如當(dāng)A、B、C分別與D0、D1、D2相連時(shí),啟動(dòng)IN7的A/D轉(zhuǎn)換指令如下:</p><p> MOV DPTR, #FE00H ;送入0809的口地址MOV A ,#07H ;D2D1D0=111選擇IN7通道<
45、/p><p> MOVX @DPTR, A ;啟動(dòng)A/D轉(zhuǎn)換</p><p> 4)LED七段數(shù)碼管顯示器</p><p> 在單片機(jī)系統(tǒng)中,通常用LED數(shù)碼顯示器來顯示各種數(shù)字或符號(hào),由于它具有顯示清晰、亮度高、使用電壓低、壽命長的特點(diǎn),因此使用非常廣泛。它由若干個(gè)發(fā)光二極管組成,當(dāng)發(fā)光二極管導(dǎo)通時(shí),相應(yīng)的一個(gè)點(diǎn)或一個(gè)筆畫發(fā)亮。控制不同組合的二極管導(dǎo)通,就能顯示
46、出各種字符。常用的LED7顯示器有七段和“米”字段之分,有小數(shù)點(diǎn)位的7段顯示器的字形碼為八位二進(jìn)制,正好一個(gè)字節(jié),“米”字顯示器有15個(gè)發(fā)光二極管,所以其字形碼需兩個(gè)字節(jié)。這兩類顯示器都有共陽極和共陰極兩種接法,共陰極LED顯示器的發(fā)光二極管陰極連接在一起,通常此公共陰極接地,當(dāng)某個(gè)發(fā)光二極管的陽極為高電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示;同樣,共陽極LED顯示器的發(fā)光二極管陽極連接在一起,通常此公共陽極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰
47、極為低電平時(shí),發(fā)光二極管點(diǎn)亮,相應(yīng)的段被顯示。共陽極和共陰極的字形碼是不同的,而且字形碼可由設(shè)計(jì)者根據(jù)硬件接線的不同自行設(shè)計(jì),不必局限于固定格式。在單片機(jī)應(yīng)用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。當(dāng)顯示器位數(shù)較少時(shí),適合采用靜態(tài)顯示的方法。當(dāng)位數(shù)較多時(shí),用靜態(tài)顯示所需的I/O太多,一般采用動(dòng)態(tài)顯示的方</p><p> 其中8155的PB口作段選碼口,經(jīng)7407驅(qū)動(dòng)與LED的段相連,8155的
48、PA0~PA5作選碼口,經(jīng)7406驅(qū)動(dòng)與LED的位相連。</p><p> 圖中P2..7反相后作8155的片選CE,P2.6接8155的IO/M端。這樣確定的8155片內(nèi)4個(gè)端口地址如下:</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,顯示次序位從右到左進(jìn)行。程序后面的TAB地址為段選碼表首地址,表中段選碼存放的次序?yàn)?~F等等。一下為循環(huán)動(dòng)態(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)硬件設(shè)計(jì)</b></p><p> 本系統(tǒng)的硬件設(shè)計(jì)主要包括單片機(jī)的最小系統(tǒng)
55、、溫度采集電路、8155 擴(kuò)展電路、LED七段數(shù)碼管顯示器顯示接口、鍵盤接口、蜂鳴器報(bào)警電路以及串口通信等。圖1 中AT89S52 為主控制器件, AT89S52是ATMEL 公司生產(chǎn)的低電壓、高性能CMOS 8 位單片機(jī), 片內(nèi)含有8K 字節(jié)的EPROM 和256 字節(jié)的RAM。本系統(tǒng)采用8155A 芯片來擴(kuò)展鍵盤和液晶顯示, 模數(shù)轉(zhuǎn)換芯片ADC0809 以及MAX232 實(shí)現(xiàn)RS 一232C 標(biāo)準(zhǔn)接口通信電路。以下是各部分電路功能:
56、</p><p> (5)報(bào)警和提示裝置:蜂鳴器和發(fā)光二極管</p><p> 蜂鳴器報(bào)警電路由晶體管和蜂鳴器組成,由單片機(jī)I/O口輸出信號(hào)控制晶體管的導(dǎo)通或者截止,晶體管導(dǎo)通,則蜂鳴器報(bào)警,通過單片機(jī)來控制蜂鳴器來產(chǎn)生報(bào)警聲音。另外,為了提醒注意,本系統(tǒng)還設(shè)計(jì)了兩個(gè)發(fā)光二極管(一紅一綠),用以區(qū)分是高溫報(bào)警還是低溫報(bào)警。</p><p><b>
57、(6)散熱裝置</b></p><p> 電風(fēng)扇選擇為12V,0.6W的。</p><p><b> (7)電熱片</b></p><p><b> (8)繼電器</b></p><p> 為了能使單片機(jī)(AT89S52)能夠控制電熱片和電風(fēng)扇的通斷,本系統(tǒng)運(yùn)用了繼電器的開關(guān)特性
58、,將通過I/O口的值來控制繼電器的通斷從而控制電風(fēng)扇和電熱片。</p><p> 4.測控系統(tǒng)硬件設(shè)計(jì)</p><p><b> ?。?)溫度測量電路</b></p><p><b> ?。?)控制電路</b></p><p> (3)報(bào)警及顯示電路</p><p>&l
59、t;b> 報(bào)警電路</b></p><p><b> 顯示電路</b></p><p><b> (三)關(guān)鍵技術(shù)分析</b></p><p> 通過對(duì)采樣信號(hào)進(jìn)行濾波減小隨機(jī)誤差由于外界干擾或某些不可預(yù)知的因素,模擬量在受到干擾后,經(jīng) A/D 轉(zhuǎn)換后的結(jié)果偏離了真實(shí)值,可能會(huì)出現(xiàn)一些隨機(jī)的誤差,如
60、果只采樣一次,無法確定結(jié)果是否可信。必須通過多次采樣得到一個(gè) A/D 轉(zhuǎn)換的數(shù)據(jù)序列,通過軟件算法處理后才能得到一個(gè)可信度較高的結(jié)果。這種方法就是數(shù)字濾波。</p><p> 通過數(shù)字濾波的方法可進(jìn)一步提高溫度的可信度。</p><p> ?。ㄋ模┫到y(tǒng)總體電路設(shè)計(jì)</p><p><b> ?。ㄎ澹┫到y(tǒng)軟件設(shè)計(jì)</b></p>
61、<p><b> 系統(tǒng)總程序如下:</b></p><p> #include<reg52.h></p><p> sbit HIGH_LED = P1^4; //高溫預(yù)警</p><p> sbit LOW_LED = P1^5;</p><p> sbit DRP = P1^6; //
62、 電熱片</p><p> sbit DFS = P1^7; // 電風(fēng)扇</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ù)點(diǎn)</p><p> unsigned char code table[10] = </p><p> {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p><b> //溫度組織對(duì)照</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í)函數(shù),
67、 對(duì)于12MHz時(shí)鐘, 例i=10,則大概延時(shí)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轉(zhuǎn)變成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沒沒完說明溫度過高,此時(shí)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; /* 計(jì)算百位數(shù)值 */</p><p> tmp2 = t / 10 % 10;
93、 /* 計(jì)算十位數(shù)值 */</p><p> tmp1 = t % 10; /* 計(jì)算個(gè)位數(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程設(shè)計(jì)總結(jié)</b></p><p> 這次課程設(shè)計(jì)用到單片機(jī),CAD制圖、匯編語言、模擬和數(shù)字電路知識(shí)等好多知識(shí),這些好多都是以前學(xué)過的內(nèi)容,
102、雖然感覺理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過程中還是感覺不夠用,很多基礎(chǔ)的東西都還沒有很好的掌握。小組人員的配合﹑相處,以及自身的動(dòng)腦和努力,都是以后工作中需要的。</p><p> 要做好一個(gè)課程設(shè)計(jì),就必須做到:在設(shè)計(jì)程序之前,對(duì)所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個(gè)系統(tǒng)的了解,知道該單片機(jī)內(nèi)有哪些資源;要有一個(gè)清晰的思路和一個(gè)完整的軟件流程圖;在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的
103、必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計(jì)課程過程中遇到問題是很正常德,但我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。課程設(shè)計(jì)結(jié)束了,我的發(fā)現(xiàn)、提出、分析、解決問題和實(shí)踐能力都有提高。我在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固。我們通過查閱大量有關(guān)資料,并在小組中互
104、相討論,交流經(jīng)驗(yàn)和自學(xué),若遇到實(shí)在搞不明白的問題就會(huì)及時(shí)請(qǐng)教老師,使自己學(xué)到了不少知識(shí),總的來說還是收獲頗豐。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]單片機(jī)原理及接口技術(shù)/梅麗鳳等編著.——北京:清華大學(xué)出版社;北京交通大學(xué)出版社,2004.2</p><p> [2] 吳炳勝.80C51單片機(jī)原理與應(yīng)用技術(shù)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---基于at89s52 單片機(jī)的溫度控制系統(tǒng)
- 基于AT89S52單片機(jī)的溫度控制系統(tǒng).pdf
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)at89s52的數(shù)字溫度計(jì)的設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 單片機(jī)外文翻譯---at89s52單片機(jī)
- 單片機(jī)外文翻譯--at89s52單片機(jī)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度控制系統(tǒng)設(shè)計(jì)設(shè)計(jì)畢業(yè)論文
- 基于at89s52單片機(jī)溫度測量的課程設(shè)計(jì)畢業(yè)論文
- 單片機(jī)課程設(shè)計(jì)---基于at89s52交通燈設(shè)計(jì)
- 課程設(shè)計(jì)--基于at89s52單片機(jī)溫度自動(dòng)檢測系統(tǒng)的設(shè)計(jì)
- at89s52單片機(jī)外文翻譯
- 基于at89s52單片機(jī)的步進(jìn)電機(jī)控制
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)at89s51的電梯控制系統(tǒng)設(shè)計(jì)
- at89s52單片機(jī)外文翻譯
- 課程設(shè)計(jì)-- 基于at89s52單片機(jī)的密碼鎖設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 基于at89s52單片機(jī)溫度采集設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論