|
設(shè)計的意義最近幾年來,隨著科技的飛速發(fā)展,單片機領(lǐng)域正在不斷的走向社會各個角落,還帶動傳統(tǒng)控制檢測日新月異更新。在實時運作和自動控制的單片機應(yīng)用到系統(tǒng)中,單片機如今是作為一個核心部件來使用,僅掌握單片機方面知識是不夠的,還應(yīng)根據(jù)其具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點的軟件結(jié)合,加以完善!皢纹瑱C原理及應(yīng)用課程設(shè)計”是電子類專業(yè)的學(xué)科基礎(chǔ)科,它是繼“匯編語言程序設(shè)計”,“接口技術(shù)”等課程之后開出的實踐環(huán)節(jié)課程。與此同時,現(xiàn)代社會越來越多的場所會涉及到溫度與濕度并將其顯示。由于溫度與濕度不管是從物理量本身還是在實際人們的生活中都有著密切的關(guān)系,例如:冬天溫度為18至25℃,濕度為30%至80%;夏天溫度為23至28℃,濕度為30%至60%。在此范圍內(nèi)感到舒適的人占95%以上。在裝有空調(diào)的室內(nèi),室溫為19至24℃,濕度為40%至50%時,人會感到最舒適。如果考慮到溫、濕度對人思維活動的影響,最適宜的室溫度應(yīng)是工作效率高。18℃,濕度應(yīng)是40%至60%,此時,人的精神狀態(tài)好,思維最敏捷。所以,本課程設(shè)計就是通過單片機驅(qū)動LCD1602,液晶顯示溫濕度,通過此設(shè)計,可以發(fā)現(xiàn)本設(shè)計有一定的擴展性,而且可以作為其他有關(guān)設(shè)計的基礎(chǔ)。
2設(shè)計原理2.1設(shè)計目標(biāo)2.1.1基本功能檢測溫度、濕度顯示溫度、濕度過限報警2.1.2主要技術(shù)參數(shù)溫度檢測范圍:-30℃至+55℃測量精度:2℃濕度檢測范圍:20%-90%RH檢測精度:5%RH顯示方式:溫度:四位顯示濕度:四位顯示報警方式:三極管驅(qū)動的蜂鳴器報警2.2設(shè)計原理溫濕度監(jiān)測系統(tǒng)要滿足以下條件:溫濕度監(jiān)測系統(tǒng)能完成數(shù)據(jù)采集和處理、顯示、串行通信、輸出控制信號等多種功能。由數(shù)據(jù)采集、數(shù)據(jù)調(diào)理、單片機、數(shù)據(jù)顯示等4個大的部分組成。該測控系統(tǒng)具有實時采集(檢測糧庫內(nèi)的溫濕度)、實時顯示(對監(jiān)測到的進行顯示)、實時警報(根據(jù)監(jiān)測的結(jié)果,超出預(yù)設(shè)定的值的進行蜂鳴警告)的功能。傳感器是實現(xiàn)測量首要環(huán)節(jié),是監(jiān)測系統(tǒng)的關(guān)鍵部件,如果沒有傳感器對原始被測信號進行準(zhǔn)確可靠的捕捉和轉(zhuǎn)換,一切準(zhǔn)確的測量和控制都將無法實現(xiàn)。工業(yè)生產(chǎn)過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產(chǎn)過程中的各種參量,使設(shè)備和系統(tǒng)正常運行在最佳狀態(tài),從而保證生產(chǎn)的高效率和高質(zhì)量。一般溫濕度控制系統(tǒng)中的溫濕度測量均采用熱敏電阻與濕敏電容,這種傳統(tǒng)的模擬式溫濕度傳感器一般都需要設(shè)計信號調(diào)理電路并經(jīng)過復(fù)雜的校準(zhǔn)和標(biāo)定過程,因此測量精度難以保證,且在線性度、重復(fù)性、互換性等方面也存在一定
問題。這種傳感器只適合那些測量點數(shù)較少,對精度要求不高的場合。因此設(shè)計出一款精度高、穩(wěn)定性好、成本低的溫濕度檢測控制系統(tǒng)將具有一定的市場。2.2.1溫濕度傳感器的選擇DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。2.2.2信號采集通道的選擇在本設(shè)計系統(tǒng)中,溫度輸入信號為4路的模擬信號,這就需要多通道結(jié)構(gòu)采用多路分時的模擬量輸入通道。這種結(jié)構(gòu)的模擬量通道特點為:對ADC、S/H要求高。處理速度慢。硬件簡單,成本低。軟件比較復(fù)雜。如圖1所示:信號調(diào)理電路信號調(diào)理電路信號調(diào)理電路多路切換器采樣/保持器A/D轉(zhuǎn)換器接口CPU圖1多路分時的模擬量輸入通道
2.2.3系統(tǒng)的總體框圖系統(tǒng)的總體設(shè)計框圖如圖2所示:本設(shè)計由信號采集、信號分析和信號處理三個部分組成的。(一)信號采集由DHT11溫濕度傳感器和多路模式選擇開關(guān)組成;(二)信號分析由A/D轉(zhuǎn)換器和單片機80C51組成;(三)信號處理由串行口LCD顯示器和報警系統(tǒng)等組成。DHT11溫濕度檢測多路模式選擇開關(guān)單片機串行口與LCD報警電路ADC0832圖2系統(tǒng)總體框圖
3主要芯片簡介3.1DHT11數(shù)字傳感器3.1.1主要特性DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲存在OTP內(nèi)存中,傳感器內(nèi)部在檢測信號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,信號傳輸距離可達20米以上,使其成為各類應(yīng)用甚至最為苛刻的應(yīng)用場合的最佳選則。產(chǎn)品為4針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶需求而提供。3.1.2應(yīng)用領(lǐng)域該DHT11可以用于暖通空調(diào)、測試及檢測設(shè)備、汽車、數(shù)據(jù)記錄器、消費品、自動控制、濕度調(diào)節(jié)器及醫(yī)療等應(yīng)用領(lǐng)域。3.1.3引腳圖DHT11有四個引腳,3號引腳一般懸空,如圖3所示。DHT11的供電電壓為3—5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF的電容,用以去耦濾波。建議連接線長度短于20米時用5K上拉電阻,大于20米時根據(jù)實際情況使用合適的上拉電阻。
3.1.4封裝信息封裝圖如圖4所示:3.2液晶顯示器LCD1602在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單,在前面章節(jié)已經(jīng)介紹過,在此不作介紹,本章重點介紹字符型液晶顯示器的應(yīng)用。在單片機系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:(一)顯示質(zhì)量高(二)數(shù)字式接口圖3DHT11引腳圖圖4DHT11封裝圖
(三)體積小、重量輕(四)功耗低3.2.1液晶顯示原理液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字攝像機、PDA移動通信工具等眾多領(lǐng)域。3.2.2液晶顯示器的分類液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(Static)、單純矩陣驅(qū)動(SimpleMatrix)和主動矩陣驅(qū)動(ActiveMatrix)三種。3.2.3液晶顯示器各種圖形的顯示原理首先是液晶的線段的顯示。點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(dāng)(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,......(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。其次是液晶字符的顯示。用LCD顯示一個字符時比較復(fù)雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。
3.2.4LCD1602的基本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖5所示:LCD1602的主要技術(shù)參數(shù):1、顯示容量:16×2個字符2、芯片工作電壓:4.5—5.5V3、工作電流:2.0mA(5.0V)4、模塊最佳工作電壓:5.0V5、字符尺寸:2.95×4.35(W×H)mm引腳功能說明LCD1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如圖6所示:圖5LCD1602尺寸圖
編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極圖6:引腳接口說明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。圖6引腳接口說明
3.2.5LCD1602的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如圖7所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。圖7控制命令表
指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6:功能設(shè)置命令DL:高電平時為4位總線,低電平時為8位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。3.2.6LCD1602的RAM地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖8是1602的內(nèi)部顯示地址。例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。圖8LCD1602內(nèi)部顯示地址
在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。3.2.7硬件原理圖1602液晶顯示模塊可以和單片機AT89C51直接接口,電路如圖9所示:3.3單片機89C51為了設(shè)計此系統(tǒng),我們采用了80C51單片機作為控制芯片。89C51是MCS-51系列單片機中CHMOS工藝的一個典型品種;其它廠商以8951為基核開發(fā)出的CMOS工藝單片機產(chǎn)品統(tǒng)稱為89C51系列。該系列單片機是采用高性能的靜態(tài)89C51設(shè)計由先進CMOS工藝制造并帶有非易失性Flash程序存儲器全部支持圖9硬件原理圖
12時鐘和6時鐘操作P89C51X2和P89C52X2/54X2/58X2分別包含128字節(jié)和256字節(jié)RAM32條I/O口線3個16位定時/計數(shù)器6輸入4優(yōu)先級嵌套中斷結(jié)構(gòu)1個串行I/O口可用于多機通信I/O擴展或全雙工UART以及片內(nèi)振蕩器和時鐘電路。此外,由于器件采用了靜態(tài)設(shè)計,可提供很寬的操作頻率范圍,頻率可降至0?蓪崿F(xiàn)兩個由軟件選擇的節(jié)電模式,空閑模式和掉電模式,空閑模式凍結(jié)CPU但RAM定時器,串口和中斷系統(tǒng)仍然工作,掉電模式保存RAM的內(nèi)容,但是凍結(jié)振蕩器導(dǎo)致所有其它的片內(nèi)功能停止工作。由于設(shè)計是靜態(tài)的時鐘可停止而不會丟失用戶數(shù)據(jù),運行可從時鐘停止處恢復(fù)。3.3.189C51的基本結(jié)構(gòu)89C51的微處理器(CPU);運算器;累加器ACC;寄存器B;程序狀態(tài)字寄存器PSW;控制器;程序計數(shù)器PC;指令寄存器IR;定時與控制邏輯;89C51的片內(nèi)存儲器;內(nèi)部ROM容量4K字節(jié);內(nèi)部RAM容量128字節(jié);89C51的I/O口及功能單元;四個8位的并行口,即P0~P3。它們均為雙向口,既可作為輸入,又可作為輸出。每個口各有8條I/O線;有一個全雙工的串行口(利用P3口的兩個引腳P3.0和P3.1);有2個16位的定時/計數(shù)器;有1套完善的中斷系統(tǒng);89C51的特殊功能寄存器(SFR);低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路;
3.3.289C51的引腳圖89C51的引腳圖如圖10所示:89C51的制作工藝為CMOS,采用40管腳雙列直插DIP封裝,引腳說明如下:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。圖1089C51引腳圖
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3.0RXD(串行輸入口);P3.1TXD(串行輸出口);P3.2/INT0(外部中斷0);P3.3/INT1(外部中斷1);P3.4T0(記時器0外部輸入);P3.5T1(記時器1外部輸入);P3.6/WR(外部數(shù)據(jù)存儲器寫選通);P3.7/RD(外部數(shù)據(jù)存儲器讀選通);P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)
部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.3.389C51的存儲器配置89C51的存儲器配置如圖11所示:對于程序存儲器,與ROM密切相關(guān)的兩個引腳是地址鎖存允許信號端和外部程序存儲器允許輸出信號端。當(dāng)ROM容量不夠時,盡量選擇高容量存儲器空間的單片機,如89C52,89C54,89C58等,應(yīng)避免外擴程序存儲器,因為會增加硬件負擔(dān),通過16位PC尋址,最大可尋址64kB地址空間。數(shù)據(jù)存儲器用于存放運算中間的結(jié)果、數(shù)據(jù)暫存、緩沖、標(biāo)志位、待測程序等功能。片內(nèi)的128B的RAM地址為00H~7FH,供用戶做RAM用,但是在這中間的前32單元,00H~1FH即引用地址尋址做用戶RAM用,常常做工作寄存器區(qū),分做四組,每組由8個單元組成通用寄存器R0~R7,任何時候都由其中一組作為當(dāng)前工作寄存器,通過RS0,RS1的內(nèi)容來決定選擇哪一個工作寄存器。低128字節(jié)中的20H~2FH共16字節(jié)可用位尋址方式訪問各位,共128個位地址,30H~7FH共80個單元為用戶RAM區(qū),作堆棧或數(shù)據(jù)緩沖用,片內(nèi)RAM圖1189C51存儲器配置
不夠用時,須擴展片外數(shù)據(jù)存儲器。此時單片機通過P2口和P0口選出6位地址,使用ALE作低8位的鎖存信號,再由P0口寫入或讀出數(shù)據(jù)。寫時用,讀時用做外部數(shù)據(jù)存儲器的選通信號。3.3.489C51的工作模式89C51有四種工作模式:模式0,模式1,模式2,模式3。模式0:選擇定時器的高8位和低5位組成一個13位定時器/計數(shù)器。TL低5位溢出時向TH進位,TH溢出時向中斷標(biāo)志位TF進位,并申請中斷。定時時間t=(213-初值)×振蕩周期×12;計數(shù)長度位213=8192個外部脈沖。模式1:與模式0的唯一差別是寄存器TH和TL以全部16位參與操作。定時時間t=(216-初值)×振蕩周期×12;計數(shù)長度位216=65536個外部脈沖。模式2:把TL0和TL1配置成一個自動重裝載的8位定時器/計數(shù)器。TL用作8位計數(shù)器,TH用以保存初值。TL計數(shù)溢出時不僅使TF0置1,而且還自動將TH中的內(nèi)容重新裝載到TL中。定時時間t=(28-初值)×振蕩周期×12;計數(shù)長度位28=256個外部脈沖。模式3:對T0和T1不大相同。若設(shè)T0位模式3,TL0和TH0被分為兩個相互獨立的8位計數(shù)器。TL0為8位計數(shù)器,功能與模式0和模式1相同,可定時可計數(shù)。TH0僅用作簡單的內(nèi)部定時功能,它占用了定時器T1的控制位TR1和中斷標(biāo)志位TF1,啟動和關(guān)閉僅受TR1控制。定時器T1無工作模式3,但T0在工作模式3時T1仍可設(shè)置為0~2。3.3.589C51的系統(tǒng)時鐘設(shè)計時鐘電路是用來產(chǎn)生89C51單片機工作時所必須的時鐘信號,89C51本身就是一個復(fù)雜的同步時序電路,為保證工作方式的實現(xiàn),89C51在唯一的時鐘信號的控制下嚴格的按時序執(zhí)行指令進行工作,時鐘的頻率影響單片機的速度和穩(wěn)定性。通常時鐘由于兩種形式:內(nèi)部時鐘和外部時鐘。我們系統(tǒng)采用內(nèi)部時鐘方式來為系統(tǒng)提供時鐘信號。89C51內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,該放大器的輸入輸出引腳為XTAL1和XTAL2,它們跨接在晶體振蕩器和用于微調(diào)的電容,便構(gòu)成了一個自激勵振蕩器。電路中的C1、C2的選擇在30PF左右,但電容太小會影響振蕩的頻率、穩(wěn)定性和快速性。晶振頻率為在1.2MHZ~12MHZ之間,頻率越高單片機的速度
就越快,但對存儲器速度要求就高。為了提高穩(wěn)定性我們采用溫度穩(wěn)定性好的NPO電容,采用的晶振頻率為12MHZ。時鐘電路如圖12所示:圖12系統(tǒng)時鐘電路
4硬件與軟件4.1硬件設(shè)計4.1.1硬件要求根據(jù)設(shè)計要求確定了系統(tǒng)的總體方案,整個系統(tǒng)由單片機、溫濕度傳感器、顯示模塊和報警器等幾部分組成。溫濕度傳感器監(jiān)測值傳輸給單片機,并液晶顯示。當(dāng)單片機監(jiān)測到的數(shù)值超出所設(shè)定閾值時,驅(qū)動蜂鳴器報警。4.1.2具體硬件設(shè)計單片機是整個系統(tǒng)的控制中樞,它指揮外圍器件協(xié)調(diào)工作,從而完成特定的功能。硬件實現(xiàn)上采用模塊化設(shè)計,每一模塊只實現(xiàn)一個特定功能,最后再將各個模塊搭接在一起。這種設(shè)計方法可以降低系統(tǒng)設(shè)計的復(fù)雜性。系統(tǒng)電路原理圖如圖13所示。本系統(tǒng)主要硬件設(shè)計包括電源電路、蜂鳴器電路、晶振電路、復(fù)位電路、LCD顯示電路以及溫濕度傳感器電路。控制電路的核心器件AT89C52單片機,屬于MCS-51系列。AT89C52是一種低功耗、高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器,采用的工藝是Atmel公司的高密度非易失存儲器技術(shù);片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器;在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案;價格低廉、性能可靠、抗干擾能力強。因此廣泛應(yīng)用于工業(yè)控制和嵌入式系統(tǒng)中。
系統(tǒng)的蜂鳴器電路、振蕩電路、復(fù)位電路如圖14、圖15、圖16所示。圖13系統(tǒng)電路原理圖圖14蜂鳴器電路
蜂鳴器額定電流IB≤30mA,而對于AT89C52單片機,P1口的灌電流為1.6mA,拉電流為60μA,由此可見,僅靠單片機的P1口電流是不能驅(qū)動蜂鳴器的,必須使用集晶體管放大電路,為了使單片機消耗的功率更小,所以使用PNP型晶體管9012。AT89C52采用的晶振電路采用12MHz的無源晶振,微調(diào)電容大小取30pF。顯示模塊選用1602字符型液晶模塊,是目前工控系統(tǒng)中使用最為廣泛的液晶屏之一,電路圖如圖17所示。1602字符型液晶模塊是點陣型液晶,驅(qū)動方便,經(jīng)編碼后顯示內(nèi)容多樣化。系統(tǒng)的輸入模塊采用中斷掃描的4×4矩陣鍵盤,相比定時掃描方式,提高了MCU的使用效率。圖15振蕩電路圖16復(fù)位電路
4.2軟件設(shè)計系統(tǒng)軟件程序基于Keil開發(fā)平臺,采用C語言編寫。本程序采用模塊化程序方法,主要分為一下兩個模塊:LCD初始化顯示模塊DHT11數(shù)據(jù)采集模塊LCD初始化顯示流程圖和DHT11數(shù)據(jù)采集流程圖分別如圖18、圖19所示:圖17LCD1602電路圖
圖18LCD初始化顯示流程圖圖19DHT11數(shù)據(jù)采集流程圖
5設(shè)計總結(jié)課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的;仡櫰鸫舜螁纹瑱C課程設(shè)計,我仍感慨頗多。在接近一星期的日子里,可以說是苦多于甜,雖然如此,卻學(xué)到很多很多的的東西,同時還鞏固了以前所學(xué)過的知識,并學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合的重要性,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正讓自己有所了解,有所體會,從而提高自己的實際動手能力和獨立思考的能力。當(dāng)然,在設(shè)計的過程中遇到了很多問題,但是通過這些問題,我又能發(fā)現(xiàn)自己的不足之處。雖然問題重重,但在老師和同學(xué)的幫助下,問題都得以解決,所以,非常感謝那些幫助過我的老師和同學(xué)。總之,通過這次課程設(shè)計,我知道了很多,了解了很多,學(xué)到了很多。
參考文獻[1]何立民.單片機高級教程-應(yīng)用與設(shè)計[M].北京航空航天大學(xué)出版社,2002.[2]徐愛鈞.單片機高級語言C51Windows環(huán)境編程與應(yīng)用[M].電子工業(yè)出版社,2001.[3]白雪冰,張延林,等.單片機原理及應(yīng)用[M].哈爾濱東北林業(yè)大學(xué)出版社,2006.[4]張佳薇,孫麗萍,等.傳感器原理與應(yīng)用[M].哈爾濱東北林業(yè)大學(xué)出版社,2003.
附錄源程序:#include<reg52.h>#defineuintunsignedint#defineucharunsignedchartypedefbitBOOL;sbitio=P1^0;sbitrs=P2^5;sbitrw=2^6;sbitep=P2^7;uchardata_byte;ucharRH,RL,TH,TL;voiddelay(ucharms){//延時子程序uchari;while(ms--){for(i=0;i<250;i++);}}voiddelay1()//延時10us{uchari;i--;i--;i--;i--;i--;i--;}voidlongdelay(uchars)//長延時{
while(s--){delay(60);}}BOOLlcd_bz()//測試LCD忙碌狀態(tài){BOOLresult;rs=0;rw=1;ep=1;result=(BOOL)(P1&0x80);ep=0;returnresult;}voidwrite_cmd(ucharcmd)//寫指令{while(lcd_bz());rs=0;rw=0;ep=0;P1=cmd;ep=1;ep=0;}voidwrite_addr(ucharaddr)//寫地址{write_cmd(addr|0x80);}voidwrite_byte(uchardat)//寫字節(jié){while(lcd_bz());rs=1;
rw=0;ep=0;P1=dat;ep=1;ep=0;}voidlcd_init()//初始化{write_cmd(0x38);delay(1);write_cmd(0x08);delay(1);write_cmd(0x01);delay(1);write_cmd(0x06);delay(1);write_cmd(0x0c);delay(1);}voiddisplay(ucharaddr,ucharq)//在某一地址上顯示一字節(jié){delay(10);write_addr(addr);write_byte(q);longdelay(2);}voidstart()//開始信號{io=1;delay1();io=0;delay(20);//>18msio=1;delay1();//20-40us
delay1();delay1();delay1();delay1();}ucharreceive_byte()//接收一個字節(jié){uchari,temp,count;for(i=0;i<8;i++){count=2;while((!io)&&count++)//等待50us低電平結(jié)束temp=0;delay1();delay1();delay1();delay1();if(io==1)temp=1;count=2;while((io)&&count++);if(count==1)break;data_byte<<=1;data_byte|=temp;}returndata_byte;}voidreceive()//接收數(shù)據(jù){ucharT_H,T_L,R_H,R_L,check,num_check;ucharcount;start();//開始信號io=1;if(!io)//讀取DHT11響應(yīng)信號{count=2;while((!io)&&
|
-
-
基于單片機的溫濕度檢測(完稿).pdf
2018-11-17 11:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.11 MB, 下載次數(shù): 15, 下載積分: 黑幣 -5
評分
-
查看全部評分
|