溫控器課程設計_第1頁
溫控器課程設計_第2頁
溫控器課程設計_第3頁
溫控器課程設計_第4頁
溫控器課程設計_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于89C51單片機的溫度控制器的設計摘要溫度控制器是一種提供溫度顯示、語音報溫和報警的裝置。基于89C51單片機設計,測溫探頭采用DS18B20數字溫度傳感器,測量現場溫度,語音播放裝置采用ISD1420語音芯片,實現語音定時報溫和報警功能,使用7段碼顯示器顯示當前溫度,蜂鳴器提供報警功能。該裝置可以實現上下位機通信,上位機設置報警溫度,實現控溫目的,并且根據下位機測量的溫度繪出溫度變化曲線。關鍵字:單片機(89C51); DS18B20; ISD1420; 7段碼顯示器;蜂鳴器AbstractThetemperaturecontrollerisaprovidetemperaturedisplay,voicealarmdeviceformild.Basedonthe89C51singlechipdesign,measurementtemperatureprobeusingdigitaltemperaturesensorDS18B20,measuringthetemperature,speechbroadcastdeviceadoptsISD1420voicechip,realizevoicesettimesmildalarmfunctions,use7bitcodedisplayshowsthecurrenttemperaturebuzzer,providealarmfunction.Thisdevicecanachieveamachineandcommunication,PCsetalarmtemperature,temperaturecontrol,andachievepurposeaccordingtoamachine.Keyword:SCM(89C52);DS18B20;ISD1420;7bitcodedisplays;sounders目錄TOC\o"1-5"\h\z摘要 1目錄 2\o"CurrentDocument"第一章引言 3\o"CurrentDocument"第二章硬件系統設計 4\o"CurrentDocument"硬件系統 4\o"CurrentDocument"單片機模塊 5溫度傳感器模塊 5\o"CurrentDocument"語音模塊 6LED顯示模塊 7\o"CurrentDocument"RS232通訊模塊 8蜂鳴器模塊 9\o"CurrentDocument"芯片介紹 10\o"CurrentDocument"STC89C52RC芯片 10\o"CurrentDocument"DS18B20芯片 12\o"CurrentDocument"ISD1420芯片 16\o"CurrentDocument"MAX232芯片 19\o"CurrentDocument"第三章軟件系統設計 21\o"CurrentDocument"參數信息 21\o"CurrentDocument"程序設計 22\o"CurrentDocument"主程序設計 22溫度處理程序設計 23錄放音程序設計 24\o"CurrentDocument"中斷程序設計 26\o"CurrentDocument"第四章性能測試與結果分析 28\o"CurrentDocument"串口通訊工具 28\o"CurrentDocument"串口通訊程序 29\o"CurrentDocument"串口通訊界面 29\o"CurrentDocument"串口通訊 30\o"CurrentDocument"4.2.1發送功能 30\o"CurrentDocument"接收功能 30\o"CurrentDocument"繪制溫度曲線 31\o"CurrentDocument"第五章課程設計總結 32\o"CurrentDocument"5.1問題與解決 32\o"CurrentDocument"心得體會 32\o"CurrentDocument"參考文獻 34\o"CurrentDocument"附錄 35第一章引言溫度是許多領域控制中主要的被控參數之一,特別是在冶金、化工、建材、食品、機械、石油等工業中,具有舉足輕重的作用。隨著電子技術和微型計算機的迅速發展,微機測量和控制技術得到了迅速的發展和廣泛的應用。單片機應用在溫度測量與控制方面,控制簡單方便,測量范圍廣,精確度較高。它具有處理能力強,運行速度快,功耗低等優點。本課題是設計一個溫度控制系統。其原理是所測量的溫度信號直接通過數字溫度傳感器檢測到溫度后,送到單片機中,單片機把檢測的溫度同上位機設定的溫度進行比較,并顯示在顯示器上(如果溫度高于設定值,語音提示且蜂鳴器報警),再由單片機將溫度發送到上位機,繪制溫度變化曲線,觀察溫度變化,根據控制策略給出溫度設定值,從而構成溫度控制系統。本設計的主要內容分為兩部分:硬件部分和軟件部分。硬件部分內容分為:電源電路的選擇、單片機的選擇用的是STC89C52RC單片機、數字溫度傳感器DS18B20、數碼管的顯示設計、報警電路的設計和語音芯片ISD1420等。軟件部分分為:基于keil編譯環境的單片機應用軟件的編寫與調試、基于java編譯環境的上下位機的通信功能實現。第一章為引言,粗略地介紹此次課設的主要內容。第二章為硬件系統設計,主要介紹硬件構成圖和各硬件部分的功能,以及DS18B20、ISD1420、STC89C52RC、RS232的內部結構功能、硬件系統中對應芯片接線、工作方式以及初始化編程。另外,從LED顯示器的設定的原理、編程進行詳細的描述。第三章為軟件系統設計,主要介紹各種參數、流程圖以及代碼。第四章為課程設計總結,主要包括心得體會、問題與解決和程序清單。

第二章硬件系統設計2.1硬件系統硬件系統原理圖如圖2-1-1所示:y..'nNT“ rrH「豐 一廠 1—■:-=-■■■■UI1||:y..'nNT“ rrH「豐 一廠 1—■:-=-■■■■UI1||:-|1!.3■■>■■:■2溫度控制器硬件系統由以下六個模塊組成:單片機模塊、溫度傳感器模塊、語音模塊、LED顯示模塊、RS232通訊模塊、蜂鳴器模塊。單片機模塊單片機采用宏晶科技生產的STC89C52RC單片機作為控制器。STC89C52RC是一個超強抗干擾,高速,低功耗的單片機,指令代碼完全兼容傳統8051單片機,12時鐘/機器周期和6時鐘/機器周期可任意選擇,工作頻率范圍:0-40MHz,相當于普通8051的0?80MHz.實際工作頻率可達48MHz.,片上集成1280字節RAM,無需專用編程器。vctcP1AlA2U1單片機模塊電路原理圖如圖2-1-2所示:UHAS47lxTlTlTx11TlTx11ppppppppRED7T1P3J應Tl)P王4的P3_5(Tl)EAT.WvctcP1AlA2U1單片機模塊電路原理圖如圖2-1-2所示:UHAS47lxTlTlTx11TlTx11ppppppppRED7T1P3J應Tl)P王4的P3_5(Tl)EAT.WXT.4L0mL]EESETP3.6i^)P王了両VS£VCC陰D)玖0<TXD)P3.1,ALE{PROG;.PBENoI—I衛『J4-J5-.1—iCL'lQ-Q-'l.Q-Q-PPPPPPPP圖2-1-2單片機模塊電路圖由圖2-1-2所示的單片機模塊,主要實現硬件系統中各個模塊功能之間的相互協調,數據的處理,輸出執行,報警設置等功能。其中包括時鐘脈沖產生電路、單片機復位電路等。2.1.2溫度傳感器模塊溫度傳感器采用DS18B20數字溫度傳感器。DS18B20體積更小、適用電壓更寬、更經濟。現場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統的抗干擾性,適合于惡劣環境的現場溫度測量;不需要外部元件,直接輸出串行數據;可不需要外部電源,直接通過信號線供電,電源電壓范圍為3.3V?5V;測溫精度高,測溫范圍為:一55°C?+125°C,在-10°C?+85°C范圍內,精度為土O.5°C;測溫分辨率高,當選用12位轉換位數時,溫度分辨率可達0.0625°C;

數字量的轉換精度及轉換時間可通過簡單的編程來控制:9位精度的轉換時間為93.75ms:10位精度的轉換時間187.5ms:12位精度的轉換時間750ms;具有非易失性上、下限報警設定的功能,用戶可方便地通過編程修改上、下限的數值;可通過報警搜索命令識別哪片DS18B20采集的溫度超越上、下限。DS18B20電路原理圖如圖2-1-3所示:圖2-1-3DS18B20電路圖DS18B20測量的溫度傳送到單片機中,在數碼管上顯示,并與上位機進行通信,繪制溫度變化曲線。2.1.3語音模塊語音部分采用ISD1420語音芯片。ISD1420芯片采用直接模擬存儲技術,

且錄放音質極好,并有一定的混響效果;它的外圍元件簡單,僅需要簡單的阻、

容元件即可組成簡單的錄、放電路;單電源供電,典型電壓+5V;待機時低功耗(0.5uA),放音電流15mA;放音時間20s,可擴充級聯;可持續放音,也可分段錄放,最小分段:20s/160段=0.125s段,可分段160段;錄、放次數達10萬次;斷電信息存儲,無需后備電池,信息可存儲100年;不需要專用的編程器及語音開發器;高優先級錄音,低電平或下降沿放音。ISD1420電路原理圖如圖2-1-4所示:

圖2-1-4ISD1420電路圖語音接口作為輸出口時,主要用于報告運行狀態、運行結果、提示系統操作過程及故障報答等;作為輸入時、則主要是語音的記錄、語音庫的建立和語音的識別。本設計中首先記錄關于溫度的一些語音,再根據測量溫度定時報溫。2.1.4LED顯示模塊LED顯示部分采用七段碼顯示器。DS18B20溫度傳感器測量現場溫度,傳送到單片機中,在數碼管上顯示。LED顯示塊是由發光二極管顯示字段的顯示器件。在單片機應用系統中通常使用的是七段LED。這種顯示塊有共陰極與共陽極兩種。共陰極LED顯示塊的發光二極管陰極共地。當某個發光二極管的陽極為高電平時,發光二極管點亮;共陽極LED顯示塊的發光二極管陽極并接。LED電路原理圖如圖2-1-5所示:

圖2-1-5LED電路圖在單片機應用系統中使用LED顯示塊構成N位LED顯示器。N位LED顯示器有N根位選線和8*N根段選線。根據顯示方式不同,位選線與段選線的連接方法不同。段選線控制字符選擇,位選線控制顯示位的亮,暗。LED顯示器有靜態顯示與動態顯示兩種方式。我們使用的為動態顯示LED動態顯示方式。在多位LED顯示時,為了簡化電路,降低成本,將所有位的段選線并聯在一起,由一個8位1/O口控制,而共陰極點或共陽極點分別由響應的I/O口線控制。2.1.5RS232通訊模塊MAX232芯片具有功耗低、工作電源為單電源、外接電容僅為0.1uF或1uF、采用雙列直插封裝形式、接收器輸出為三態TTL/CMOS、兩路接收器和發送器等特點。RS232電路原理圖如圖2-1-6所示:

V(:cC610』U4Cl0C:1C1+ VCCV+ GNDCl- T1OUTC2+ R1INC2- R1OUTV- T1INT2OUTT2INR2INR2OUT16(21h1.10’1314104rC54135L2P3.010’1611P317108923;1C?'16寸oomr--e91—110[d<c(AV■r2/\tJJ2DB9圖2-1-6MAX232電路圖通過這個模塊,我們可以實現溫度控制器系統與計算機之間的串口通信,實現數據交換,設置溫度范圍,繪制溫度變化曲線。2.1.6蜂鳴器的正極性的一端聯接到5V電源上面,另一端聯接到三極管的集電極,三極管的基級由單片機的P2.3管腳來控制,當P2.3管腳為低時,三極管導通,這樣蜂鳴器的電流形成回路,發出聲音。當P2.3管腳為高時,三極管截止,蜂鳴器不發出聲音。用戶可以通過程序控制P2.3管腳的置低和置高來使蜂鳴器發出聲音和關閉。蜂鳴器電路原理圖如圖2-1-7所示:

通過這個模塊,可以實現溫度控制系統報警功能,通過上位機設置溫度有效范圍,溫度過高或過低,蜂鳴器報警。2.2芯片介紹此部分從芯片的系統接線、工作方式以及初始化編程方面分別介紹DS18B20、ISD1420、STC89C52RC、MAX232芯片,以及LED顯示器。本次課程設計以STC89C52系統為核心,它主要負責控制各個部分的協調工作,在其外圍接上復位電路,顯示器,語音電路和溫度傳感器電路等。STC89C52RC芯片1.STC89C52RC芯片的封裝STC89C52RC芯片是標準的40引腳雙列直插式集成電路芯片,其引腳排列如圖2-2-1所示。其中有4個8位I/O并行口共32個引腳、4個控制引腳、兩個時鐘輸入/輸出引腳及兩個電源引腳。

2.電源引腳Vcc:電源正端,接+5V電源。Vss:接地端。3.1/0口引線51系列單片機有4個I/O端口,每個端口都是8位準雙向口,共占32根引腳。每個端口都包括一個鎖存器(即專用寄存器P0?P3)、一個輸出驅動器和輸入緩沖器。通常把4個端口籠統地表示為P0?P3。P0口由一個輸出鎖存器、兩個三態輸入緩沖器和輸出驅動電路及控制電路組成,P0口必須接上拉電阻。P0口既可以作為I/O用,也可以作為地址/數據線用。P1口是一個標準的準雙向口,只能作為通用I/O口使用。P1.0和P1.1是多功能的,P1.0作為定時器/計數器2的外部輸入端,P1.1作為定時器/計數器2的外部控制輸入。P2口可作為I/0口和高8位地址線A8-A15輸出口。P3口是一個雙功能口,第一功能是通用I/0口,第二功能各位定義見表1:

表1P3口的第二功能引腳第二功能P3.0RXD(串行輸入通道)P3.1TXD(串行輸出通道)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)P3.6WR(外數據存儲器寫選通)P3.7RD(外數據存儲器讀選通)4.控制線PSEN:片外取指信號(片外程序存儲器讀)輸出端低電平有效,通過P0口讀回指令或常數,控制的是片外程序存儲器。ALE:地址鎖存信號,ALE低電平時,P0口出現數據信息;ALE高電平時,P0口出現地址信息,用下降沿 鎖存P0口的低8位地址到外部鎖存器。EA:程序存儲器選擇信號,EA=0時,選外部ROM;EA=1,地址小于4k時,選內部ROM,地址大于4k時,選外部ROM。RESET:復位信號:高電平復位CPU,低電平CPU工作5.時鐘引腳XTAL1:片內振蕩電路輸入端。XTAL2:片內振蕩電路輸出端。當使用芯片內部的時鐘電路時,用于外接石英晶體和微調電容;當使用外部時鐘時,用于外接時鐘信號。DS18B20芯片圖2-2-2DS18B20引腳圖I/O:數字信號輸入/輸出端。GND:電源地端。VCC:外接供電電源輸入端(在寄生電源接線時此腳應接地)。2.DS18B20內部結構簡要介紹:DS18B20的內部有64位的ROM單元、溫度傳感器、非易失性溫度報警觸發器TH和TL和9字節的暫存器單元。64為ROM包含了DS18B20唯一的序列號。內部結構圖如圖2-2-3所示:圖2-2-3DS18B20內部結構圖3.DS18B20的溫度計算DS18820中的溫度傳感器完成對溫度的測量,輸出格式為:16位符號擴展的二進制補碼。當測溫精度設置為12位時,分辨率為0.0625^,即O.0625°C/LSB。其二進制補碼格式見表2:表2DS18B20的數據格式Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0LSB2八32^22^12^02^12^-22=32^-4Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8MSBSSSSS2飛2^52^4其中,S為符號位,S=1,表示溫度為負值;S=0,表示溫度為正值。例如+125C的數字輸出為07D0H,-55C的數字輸出為FC90H。上表是轉化后得到的12位數據,如果溫度大于0,只要將測到的數值乘以0.0625即可得到實際溫度;如果溫度小于0,測到的數值取反加1再乘以0.0625,即可得到實際溫度。一些溫度值對應的數字輸出如表3所示:表3溫度值與十六進制輸出對照表

溫度十六進制輸出+12507D0H+850550H+25.0650191H+10.12500A2H+0.50008H00000H-0.5FFF8H-10.125FF5EH-25.065FE6FH-55FC90H3.DS18B20的寄存器分布DS18820中的高速暫存器是一個9字節的存儲器,其含意如表4所示表4暫存器分布寄存器內存字節地址溫度最低為LSB0溫度最高位MSB1高溫限值TH2低溫限值TL3配置寄存器4保留5保留6保留7CRC校驗8開始兩個字節為被測溫度的數字量;第3、4、5字節分別為TH、TL、配置寄存器的復制,每一次上電復位時被重寫;第7字節為測溫計數的剩余值;第8字節為測溫時每度的計數值;第9字節讀出的是前8個字節的CRC校驗碼,通過此碼,可判斷通訊是否正確。4.DS18B20的操作指令ROM操作指令讀命令(33H):通過該命令主機可以讀出DS18820的ROM中的8位系列產品代碼、48位產品序列號和8位CRC校驗碼,該命令僅限于單個DS18B20在線的情況。選擇定位命令(55H):當多片DS18820在線時,主機發出該命令和一個64位數,DS18820內部ROM與主機一致者,才響應命令,該命令也可用于單個DS18820的情況。查詢命令(0F0H):該命令可查詢總線上DS18B20的數目及其64位序列號。跳過ROM序列號檢測命令(OCCH):該命令允許主機跳過ROM序列號檢測而直接對寄存器操作,該命令僅限于單個DS18820在線的情況。報警查詢命令(OECH):只有報警標志置位后,DS18B20才相應該命令。存儲器操作指令寫暫存器(4EH):該命令可寫入寄存器的第2、3、4字節,即高低溫寄存器和配置寄存器,復位信號發出之前,三個字節必須寫完。讀暫存器(OBEH):該命令可讀出寄存器中的內容,復位命令可終止讀出。溫度變換(44H):該命令使DS18B20立即開始溫度轉換,當溫度轉換正在進行時,主機這時讀總線將收到0;當溫度轉換結束時,主機這時讀總線將收到1。若用信號線給DS18820供電,則主機發出轉換命令后,必須提供至少相應于分辨率的溫度轉換時間的上拉電平。重調(088H):該命令把EEROM中的內容寫到寄存器TH、TL及配置寄存器中。DS18820上電時能自動寫入。復制暫存器(48H):該命令把寄存器TH、TL及配置寄存器中內容寫到EEROM。讀供電方式(084H):主機發出該命令后,DS18B20將進行響應,發送電源標志,信號線供電發0,外接電源發1。5.DS18B20時序(1)初始化時序(2)寫時序[usvTrec Masterwrite1slotMasterwrite0slot . 點—60usvTx0vl20us讀時序MASTERREAD1SLOTMASTERREAD0MASTERREAD1SLOTMASTERREAD0SLOTISD1420芯片1.ISD1420芯片的封裝ISD1420芯片封裝有DIP硬封裝和COB軟封裝兩種形式,均為28引腳,如圖2-2-4所示:1AO VCCDAl RECA2 XCLKA3 RECLED282273"26~45~24~6■斗 PLAiE7A5 PLAiLNC NCNC ANAOUTA6 ANAINA7 AGCNC MICREFVSSD MICVSSA VCCASP+ SP-"22~892010191118ipIP13161415圖2-2-4ISD1420封裝其中,A0-A7為地址或操作模式控制位;VSSD為數字地;VSSA為模擬地;SP+、SP-為音頻信號輸出端,可以驅動8—16揚聲器;VCCA為模擬電源;VCCD為數字電源;MIC為話筒輸入端,若不用應懸空;AGC為自動增益控制端,調整芯片內部前置放大器增益,使錄入信號不失真;ANAIN、ANAOUT為兩端間接電容,該該端用于模擬信號的直接輸入、輸出;XCLK為外部時鐘或接地(一般用戶接地即可);REC為錄、放音控制,低電平為錄音(此時PLAYE或PLAYL=0);PLAYL為電平放音控制(低電平有效),放音時應保持低電平;PLAYE為邊沿放音控制,下降沿開始放音;RECLED為錄音指示,接發光二極管,錄音時亮,放音結束閃爍一下。2.ISD1420的地址模式和操作模式ISD1420地址輸入端具有雙重功能,根據地址中的A6、A7的電平狀態決定AO?A7的功能。如果A6、A7有一個低電平,A0?A7輸入為地址位,作為起始地址用,此時地址線僅作為輸入端,在操作過程中不能輸出內部地址信息。根據PLAYE、PLAYL或REC的下降沿信號,地址輸入被鎖定。如果A6、A7同為高電平時,它們即為操作模式位。ISD1420地址功能表如表5所示:表5ISD1420地址功能表地址狀態功能說明DIP開關1 2 3 45 6 7 80N=0,OFF=1地址位AOA1A2A3A4A5A6A71:高電平,0:低電平00000000最長20秒錄放音,首地址開始100000008位二進制表示地址,每地址125ms地址模式00000010一段A6地址開始的12s錄放音*******0A6,A7有一位=0,處于地址模式******0*00010011循環放音操作操作模式00001011順序連續分段放音00000011地址指針復位,開始錄放第一段10001011按PE鍵快速選段放音使用操作模式有兩點要注意:(1)所有初始操作都是從0地址開始。0地址是ISD1420存儲空間的起始端,后面的操作可模擬模式的不同,而從不同的地址開始工作。當電路中錄放音轉換將進入省電狀態時,地址計數器復位為0。(2)當PLAYE、PLAYL或REC變為低電平,同時A6、A7為高電平時,執行地址線所對應的操作模式。這種操作模式一直執行到下一個低電平控制輸入信號出現為止。

ISD1420操作模式如表6所示表6ISD1420操作模式模式功能典型應用可組合使用|A0信息檢索快進信息A4A1刪除EOM信息結束處放置EOMA3A4A3循環從0地址循環放音A1A4連續尋址錄放連續多段信息A0A13.錄放音時序(1)錄音時序(2)放音時序

MAX232芯片1.MAX232芯片的封裝MAX232芯片采用DIP封裝,雙列直插形式,引腳圖如圖2-2-5所示:W11111116+ vccVf GNDCl\ T1OUTC2+\ R1INC2- )R1OUTV-/ TIINT2QUTT2INR2INR2OUT16215131414IB51216111710891MAX232圖2-2-5MAX2332封裝C1+:電容倍增充電泵電容正端;C1-:電容倍增充電泵電容正端;C2+:反向充電泵電容正端;C2-:反向充電泵電容負端;V+:充電產生的+5.5V;V-:充電產生的-5.5V;R1IN:RS-232發送器輸入1;R2IN:RS-232發送器輸入2;T10UT:RS-232發送器輸出1;T2OUT:RS-232發送器輸出2;TIIN:TTL發送器輸入1;T2IN:TTL發送器輸入2;R1OUT:TTL接收器輸出1;R2OUT:TTL接收器輸出2;VCC:電源;GND:地。2.內部結構

內部結構基本可分三個部分:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產生+12v和-12v兩個電源,提供給RS-232串口電平的需要。第二部分是數據轉換通道。由7、8、9、10、11、12、13、14腳構成兩個數據通道。其中13腳(R1IN)、12腳(R10UT)、11腳(T1IN)、14腳(T1OUT)為第一數據通道。8腳(R2IN)、9腳(R20UT)、10腳(T2IN)、7腳(T2OUT)為第二數據通道。TTL/CMOS數據從T1IN、T2IN輸入轉換成RS-232數據從T1OUT、T2OUT送到電腦DP9插頭;DP9插頭的RS-232數據從R1IN、R2IN輸入轉換成TTL/CMOS數據后從R1OUT、R2OUT輸出。第三部分是供電。15腳DNG、16腳VCC(+5v。第三章軟件系統設計3.1參數信息//DS18B20//DS18B20輸入端//蜂鳴器//數碼管段選//數碼管位選//錄音標志//低電平放音標志//上升沿啟動語音芯片標志sbitDQ二P2"2;sbitbeep二P2"3;sbitdula二P2飛;sbitwela二P2“7;sbitREC二P3"5;sbitPL=P3飛;sbitTWR=P3^7;uchardelay;ucharflagbaoshi;ucharaa;uchartime=0;uinttemp;//定時報時標志//存放串口通信數據//溫度變量uinttemp2;ucharflag;ucharcount=0;voidTXReset();voidack_18b20();bitread_bit();ucharread_byte();//標志變量//計數標志//DS18B20復位函數//讀取數據codeuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼表codeuchartre[]={0,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34};voiddel(uintz);voidwrite_bit(uchardat);voidTem_Start();voidReadTem();0x34};voiddel(uintz);voidwrite_bit(uchardat);voidTem_Start();voidReadTem();uintCalTemp();voiddisplay();voidSerial_init();voidrecord(ucharaddress)voidplay(ucharaddress);voidrecord_init();//錄音芯片地址表//延時函數//寫數據//讀取溫度值//轉換溫度//顯示函數//初始化函數;//錄音函數//放音函數//錄入語庫函數3.2程序設計此部分包括主程序流程圖,溫度處理流程圖,語音錄放處理流程圖,處理流程圖,3處理流程圖,4處理流程圖,中斷處理流程圖以及軟件設置各模塊能實現的功能。主程序設計1.主程序流程圖如圖3-2-1所示:2.主程序voidmain(){Serial_init();while(1){if(aa==0x01){aa=0;record_init()}if(flagbaoshi==1)圖3-2-1主程序流程圖//初始化函數//初始化語音庫//錄放音函數play(0x34); //當前溫度是play(tre[temp/100]);//溫度值if((temp%100)/10==0)play(tre[10]);if((temp%100)/10){play(tre[10]);play(tre[(temp%100)/10]);}play(tre[11]); //點play(tre[temp%10]);play(0x3c); //度}}}3.2.2溫度處理程序設計1.溫度處理程序流程圖如圖3-3-2所示:圖3-2-2溫度處理程序流程圖2.溫度處理程序如下:uintCalTemp() //獲取十進制溫度{uinttempval,value;uinttpl,tph;floatt;ReadTem(); //讀取溫度值tpl=read_byte();//獲得低八位tph=read_byte();//獲得高八位tempval=tph;tempval=tempval<<8;//把以上八位數據從低八位移到高八位tempval二tempval|tpl;//兩字節合成一個整型變量value=tempval;t=value*0.0625; //得到真實十進制溫度值value=t*10+0.5;returnvalue; //變成位數好顯示}3.2.3錄放音程序設計1.錄音程序設計錄音程序流程圖如圖3-2-3所示圖3-2-3錄音程序流程圖錄音程序如下:voidrecord(ucharaddress) //錄制對應地址語音信息{Pl=OxcO; //Oxff也行,只要保證前兩位是TWR=0;del(10);TWR=1;

//用上升沿將//用上升沿將P1數據打進去,地址復位//在//在address地址錄音TWR=0;del(10);TWR=1;del(10);REC=1;//REC低電平開始錄音//REC低電平開始錄音REC=0;if(address==0x34){del(400); //錄制最后一段REC=1;del(400);}else{del(100);REC=1;del(100);}}2.放音程序設計放音程序流程圖如圖3-2-4所示:圖3-2-4放音程序流程圖放音程序如下:voidplay(ucharaddress) //播放對應地址的語音信息{TWR=O; //用上升沿將Pl數據打進去P1=address;TWR=l;del(l0);TWR=0;PL=0; //PL為低電平,開始放音if(address==0x34)//播放最后一段del(400);elsedel(l00);PL=1; //PL置高電平,停止放音}中斷程序設計1.中斷程序流程圖如圖3-2-5所示:圖3-2-5中斷程序流程圖2.中斷程序voidtime0()interrupt1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;Tem_Start();temp=CalTemp();if(temp>BUF*10&&BUF!=0){P1=BUF;beep=0;del(10);beep=1;}display();time++;if(time==50){ES=0;time=0;SBUF=temp/100;while(!TI);//定時器中斷//定時器賦初值//開始測溫//獲得十進制溫度值//溫度超過范圍報警//溫度顯示//每隔秒掃描一次溫度TI=0;SBUF=(temp%100)/10;while(!TI);TI=0;SBUF=temp%10;while(!TI);TI=0;ES=1;}time2++;if(time2==1500){time2=0;flagbaoshi=1;}}完整程序見附錄。//30秒定時報溫第四章性能測試與結果分析4.1串口通訊工具串口通訊工具的設計采用的是java編程,主要通過使用java自帶的串口API實現上位機與單片機之間的通信;java采用的是線程操作,實現了溫度監聽的實時性;同時用到了java繪圖技術,能夠將采集到的數據通過坐標圖型的方式顯示在上位機上。串口通訊工具主要包含溫度采集模塊,數據處理模塊,圖像繪制模塊和溫度設置模塊。溫度采集模塊:采用java自帶串口APIcomm?實現接收從單片機發送過來的數據;數據處理模塊:由于單片機的sbuf只有8位,范圍為:0?255,而采集的溫度可能大于33.3度,這樣就超過了sbuf的范圍,我們采用的是單片機分3次發送到方式解決此問題,收到的數據要想坐標顯示,這樣就需要對數據進行處理;圖像繪制模塊:經過了數據處理模塊的數據,就可以直接用來作為上位機繪制坐標圖型的數據參數,然后通過java自帶的Graphics來動態的繪制溫度曲線;溫度設置模塊:通過上位機對單片機進行發送數據來實現對單片機的控制,程序定義的是發送01表示讓單片機錄音,還可以設置警戒溫度發送給單片機。串口通訊程序初始化選擇串口、波特率等W發送01一、二 打開串口——■■二置警戒溫度AJ錄音I 數據接收并處理匚發送到單片機繪制溫度曲線V是否關閉串口*NJY結束圖4-1-1串口通訊程序流程圖串口通訊界面串口通訊界面如圖4-1-2所示:

4.2串口通訊串口通訊的目的是實現上下位機通信,上位機控制單片機部分功能,單片機發送數據給上位機,用來實現要求功能。4.2.1發送功能單片機發送數據如圖4-2-1所示:圖4-2-1串口接收數據由上圖可知,實現了串口的接收功能4.2.2接收功能單片機接收數據如圖4-2-2所示:圖4-2-2串口發送數據由上圖可知,實現了串口的發送功能4.2.3繪制溫度曲線溫度變化曲線如圖4-2-3所示:圖4-2-3溫度變化曲線第五章課程設計總結5.1問題與解決溫度傳感器問題編程獲取溫度傳感器測得的溫度時,無法得到正確溫度值或者得不到溫度值,原因是溫度傳感器時序沒有編程正確,初始化時序,讀、寫時序必須嚴格按照要求編程,延時的長短直接影響到結果,延時過短無法完成數據的有效傳輸或者使得溫度傳感器無法正常工作;另外一個原因是TWR和TRD不是同時接地選通,而是TRD接地,TWR給一個上升沿溫度傳感器才選通。LED顯示問題溫度顯示在數碼管上,當進行語音報溫時,數碼管就不能正常工作,原因是語音報溫占用cpu,數碼管顯示程序不運行,出現錯誤。把數碼管顯示程序放在定時器0中斷中,兩者不出現沖突,問題解決。語音實現問題語音芯片編程時,錄音沒有問題,放音出錯。原來認為是放音標志PLAYE(下降沿放音)的問題,經過對下降沿、延時、控制模式等的調整,放音還是一直順序放音。經過老師的講解、討論,最終認為無法檢測到結束標志EOM,實驗出錯,使用低電平(PLAYL)放音,問題解決。串口通訊問題串口通訊過程中,剛開始無法實現串口的自動接收功能,經過對程序的認真分析,以及對串口通訊原理的理解,實現了存儲在SBUF中的溫度在串口工具中的自動接收;5.2心得體會俗話說“好的開始是成功的一半”。說起課程設計,我認為最重要的就是做好設計的預習,認真的研究老師給的題目,選一個自己有興趣的題目。其次,老師對實驗的講解要一絲不茍的去聽去想,因為只有都明白了,做起設計就會事半功倍,如果沒弄明白,就迷迷糊糊的去選題目做設計,到頭來一點收獲也沒有。最后,要重視程序的模塊化,修改的方便,也要注重程序的調試,掌握其方法。本次課程設計從總體上來說是對芯片DS18B20、ISD1420,89C52,MAX232的應用。DS18B20是數字溫度傳感器,用來測得現場溫度;ISD1420是語音芯片,用來錄放音和語音報警;89C52是設計核心,用來協調各芯片之間的工作;MAX232是串口通訊接口,用來實現上下位機通訊。硬件的設計要我們自己動手去操作,軟件的編程也要我們不斷的調試,按著設計的思想與要求運動起來。當然,這其中也有很多問題,第一、不夠細心比如由于粗心大意接錯了線,由于對課本理論的不熟悉導致編程出現錯誤。第二,是在學習態度上,這次課設是對我的學習態度的一次檢驗。對于這次課程實習,我的第一大心得體會就是作為一名工程技術人員,要求具備的首要素質絕對應該是嚴謹。。在這次難得的課程設計過程中我鍛煉了自己的思考能力和動手能力。通過題目選擇和設計電路的過程中,加強了我思考問題的完整性和實際生活聯系的可行性。在方案設計選擇和芯片的選擇上,培養了我們綜合應用的能力。還鍛煉我們個人的查閱技術資料的能力,動手能力,發現問題,解決問題的能力。并且我們熟練掌握了有關器件的性能及測試方法。再次感謝老師的輔導以及同學的幫助,是他們讓我有了一個更好的認識,無論是學習還是生活,生活是實在的,要踏實走路。課程設計時間是三周,我學習了很多的東西,使我眼界打開,感受頗深。參考文獻孫涵芳、徐愛卿.MCS-51/96系列單片機原理及應用(修訂版).北京航空航天大學出版社,1996:20-180秦志強.C51單片機應用與C語言程序設計(第2版).電子工業出版社,2005:103-148蘭吉昌.51單片機應用設計例.北京化學工業出版,2009:80-120程培青.數字信號處理教程.清華大學電子學出版社,1999:10-96周荷琴,吳秀清.微型計算機原理與接口技術(第四版).中國科學技術大學出版社,2008:178-220康華光.電子技術基礎(第五版).華中科技大學出版社,2005閻石.數字電子技術基礎(第五版).清華大學出版社,2005求是科技。單片機典型外圍器件及應用舉例。人民郵電出版社,2006:230-401附錄附錄單片機程序:#include"reg52.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintuchardelay;ucharflagbaoshi;ucharBUF;//uchardelay;ucharflagbaoshi;ucharBUF;//定時報時標志//存放串口通信數據sbitDQ二P2"2;//DS18B20輸入端sbitbeep二P2"3;//蜂鳴器sbitdula=P2飛;//數碼管段選sbitwela二P2“7;//數碼管位選sbitREC二P3"5;//錄音標志sbitPL二P3飛;//低電平放音標志sbitTWR=P3^7;//上升沿啟動語音芯片標志uchartime=0,time2=0;uinttemp; //溫度變量uinttemp2;ucharflag; //標志變量ucharcount=0; //計數標志codeuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼表codeuchartre[]={0,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34}; //錄音芯片地址表voidTXReset();voidack_18b20();bitread_bit();ucharread_byte();//DS18B20復位函數//讀取數據voiddel(uintz);//voiddel(uintz);//延時函數//寫數據//讀取溫度值//轉換溫度//顯示函數//初始化函數voidwrite_bit(uchardat);voidTem_Start();voidReadTem();uintCalTemp();voiddisplay();voidSerial_init();voidvoidvoidrecord(ucharaddress);play(ucharaddress);record_init();//錄音函數//放音函數//錄入語庫函數main()void{Serial_init();while(1){//初始化函數if(BUF==0x01){BUF=0;record_init();}if(flagbaoshi==1){play(0x34);play(tre[temp/100]);if((temp%100)/10==0)play(tre[10]);if((temp%100)/10){play(tre[10]);play(tre[(temp%100)/10]);}play(tre[11]);play(tre[temp%10]);play(0x3c);}//初始化語音庫//錄放音函數//當前溫度是//溫度值//點//度}Serial_init()}voidSerial_init(){EA=1;ES=1;REC=1;PL=1;TWR=1;TMOD=0x21;ET0=1;TH0=(655536-20000)/256;TL0=(65536-20000)%256;TH1=0xfd;TL1=0xfd;

TR0=1;TR1=1;SM0=0;SM1=1;REN=1;BUF=35;flagbaoshi=0;TWR=0;P1=0xc0;TWR=1;del(10);}voiddel(uintz){uintj;while(z--)for(j=0;j<125;j++);}voidTXReset(){uchari=120;DQ=0;while(i>0)i--;DQ=1;i=4;while(i>0)i--;}//單片機拉低總線//延時us//拉高總線//延時us//等待應答信號//等待應答信號//延時us//讀取數據voidack_18b20(){uchari=4;while(DQ);while(~DQ);while(i>0)i--;}bitread_bit(){bitb;uinti=0;////總線拉低//至少維持usDQ=0;i++;DQ=1;i++;i++;b=DQ;i=8;while(i>0)i--;returnb;}ucharread_byte(void){uinti;ucharj,dat;for(i=0;i<8;i++){j=read_bit(); //讀取一位dat=(j<<7)|(dat>>1);//得到溫度值(二進制)}returndat;}voidwrite_bit(uchardat){uchari;uintj;bitb;for(i=0;i<8;i++){b=dat&0x01;dat=dat>>1;if(b) //發送的是{DQ=0; //拉低總線j++; //至少維持usj++;DQ=1; //拉高總線j=8;while(j>0)j--;/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論