



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2016-2017 學年第 1 學期單片機應用系統設計 / 工程實踐(課號 :103G06B)實驗報告項目名稱:基于 AT89C51 單片機溫度報警系統學號姓名班級學院信息科學與工程學院完成時間2016.10目錄一、 項目功能及要求41.1、課程設計的性質和目的41.3、項目設計要求4二、 系統方案設計及原理42.1、設計主要內容42.2、AT89C51單片機簡介42.3、DS18B20簡介52.4 、數碼管顯示72.5、報警電路8三、系統結構及硬件實現93.1、總電路圖93.2、單片機控制流程圖10四、軟件設計過程11五、實驗結果及分析115.1 、 Proteus 仿真115.2 、 C
2、程序調試12六、收獲及自我評價21七、參考文獻22一、 項目功能及要求1.1、課程設計的性質和目的本溫度報警器以溫度,結合 7 段 LED 出警報,且精度高。AT89C51 單片機為控制核心 ,由一數字溫度傳感器 DS18B20 測量被控以及驅動 LED 的 74LS245 組合而成。當被測量值超出預設范圍則發利用現代虛擬仿真技術可對設計進行仿真實驗,與單片機仿真聯系緊密的為proteus 仿真,利用keil 軟件設計單片機控制系統,然后與proteus 進行聯合調試,可對設計的正確性進行檢驗。1.2、課程設計的要求1、遵循硬件設計模塊化。2、要求程序設計結構化。3、程序簡明易懂,多運用輸入輸
3、出提示,有出錯信息及必要的注釋。4、要求程序結構合理,語句使用得當。5、適當追求編程技巧和程序運行效率。1.3、項目設計要求1、 基于 AT89C51 單片機溫度報警系統;2、設計 3 個按鍵分別為:設置按鈕、溫度加、溫度減;3、DS18B20 溫度傳感器采集溫度,并在數碼管上顯示按鍵的區別;4、當溫度超過設定的上限或者低于設置的下限溫度時蜂鳴器報警;二、 系統方案設計及原理2.1、設計主要內容本設計以AT89C51 單片機為核心,從而建立一個控制系統,實現通過3 個按鍵控制溫度,以達到設置溫度上下限的功能,并在數碼管上顯示三個數字當前的溫度上下限設置值和DS18B20 溫度采集值的顯示 (精
4、確到小數點后一位) ,當溫度高于上限或者低于下限蜂鳴器報警。2.2、AT89C51單片機簡介AT89C51 是一個低功耗,高性能CMOS8位單片機 , 片內含 4kBytes ISP(In-systemprogrammable) 的可反復擦寫 1000 次的 Flash 只讀程序存儲器,器件采用ATMEL 公司的高密度、 非易失性存儲技術制造,兼容標準 MCS-51指令系統及 89C51 引腳結構, 芯片內集成了通用 8 位中央處理器和 ISP Flash 存儲單元,功能強大的微型計算機的AT89C51 可為許多嵌入式控制應用系統提供高性價比的解決方案.AT89C51 具有如下特點: 40 個
5、引腳, 4k BytesFlash 片內程序存儲器,128 bytes 的隨機存取數據存儲器, 32 個外部雙向輸入 /輸出( I/O )口, 5 個中斷優先級 2層中斷嵌套中斷,2個16位可編程定時計數器,2 個全雙工串行通信口,片內時鐘振蕩器。此外, AT89C51 設計和配置了振蕩頻率可為0Hz 并可通過軟件設置省電模式。空閑模式下, CPU 暫停工作,而 RAM 定時計數器,串行口,外中斷系統可繼續工作,掉電模式凍結振蕩器而保存 RAM 的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有 PDIP 、 TQFP 和 PLCC 等三種封裝形式,以適應不同產品的需求。AT8
6、9C51 單片機的基本結構和外部引腳如下圖所示。圖 2.12.3、DS18B20簡介( 1) DS18B20 內部結構DS18B20 是 Dallas 公司繼 DS1820 后推出的一種改進型智能數字溫度傳感器,與傳統的熱敏電阻相比, 只需一根線就能直接讀出被測溫度值,并可根據實際需求來編程實現912位數字值的讀數方式。DS18B20 的外形如一只三極管,引腳名稱及作用如下:GND: 接地端,DQ :數據輸入 /輸出腳,與TTL電平兼容,VDD :可接電源,也可接地。因為每只DS18B20 都可以設置成兩種供電方式,即數據總線供電方式和外部供電方式。采用數據總線供電方式時 VDD 接地,可以節
7、省一根傳輸線,但完成數據測量的時間較長;采用外部供電方式則 VDD 接 +5V ,多用一根導線,但測量速度較快,內部結構如圖如圖3-1.圖 3.1( 2)DS18B20 供電方式DS18B20 可以采用外部電源供電和寄生電源供電兩種模式。外部電源供電模式是將 DS18B20 的 GND 直接接地, DQ 與但單總線相連作為信號線,VDD 與外部電源正極相連。如圖3.2圖 3.2( 3)DS18B20 的測溫原理DS1820 是這樣測溫的: 用一個高溫度系數的振蕩器確定一個門周期,內部計數器在這個門周期內對一個低溫度系數的振蕩器的脈沖進行計數來得到溫度值。 計數器被預置到對應于 -55的一個值。
8、 如果計數器在門周期結束前到達 0,則溫度寄存器 (同樣被預置到 -55)的值增加, 表明所測溫度大于 -55。 同時,計數器被復位到一個值, 這個值由斜坡式累加器電路確定, 斜坡式累加器電路用來補償感溫振蕩器的拋物線特性。 然后計數器又開始計數直到 0,如果門周期仍未結束,將重復這一過程。斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨率。DS18B20 內部對此計算的結果可提供0.5的分辨率。溫度以16bit 帶符號位擴展的二進制補碼形式讀出,DS18B20遵循單總線協議,每次測溫時都必須有4 個過程 : 初始化、傳送ROM操作命令、傳送ROM操作命令、數據交換。2.4
9、 、數碼管顯示數碼管內部由七個條形發光二極管和一個小圓點發光二極管組成,合成字符。常見數碼管有 10 根管腳。管腳排列如下圖所示。其中COM根據各管的亮暗組為公共端,根據內部發光二極管的接線形式可分為共陰極和共陽極兩種。共陽、陰極內部原理圖(如圖4.1),其中引腳圖的兩個COM 端連在一起,是公共端,共陰數碼管要將其接地,共陽數碼管將其接正5 伏電源。 一個八段數碼管稱為一位,多個數碼管并列在一起可構成多位數碼管,它們的段選線 (即 a,b,c,d,e,f,g,dp)連在一起, 而各自的公共端稱為位選線。顯示時,都從段選線送入字符編碼,而選中哪個位選線,那個數碼管便會被點亮。本次試驗采用共陽極
10、,顯示電路如圖4.2.圖 4.1圖 4.22.5、報警電路通過 P2 口控制,當溫度高于設置的上限或者設置的下限時蜂鳴器響報警。如圖5.1.圖 5.2三、系統結構及硬件實現3.1、總電路圖本電路是由 AT89C51 和 DS18B20 為核心,加上串口電路來實現對整個電路的控制和設計,電路圖如下。3.2、單片機控制流程圖四、軟件設計過程( 1)、把程序在Keil uVision4中調試,成功無錯誤后生成Hex 文件。( 2)、根據電路圖在 proteus 軟件中回去電路圖,檢查無錯誤。( 3)、雙擊 89C51 導入生成 Hex 文件。( 4)、點擊 proteus 軟件左下方的開始鍵,進行仿
11、真,觀察高低電平情況。五、實驗結果及分析5.1 、Proteus 仿真( 1) Proteus 軟件是英國 Labcenter electronics 公司出版的 EDA 工具軟件。它不僅具有其它 EDA 工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。Proteus 是世界上著名的EDA 工具 (仿真軟件 ),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB 設計,真正實現了從概念到產品的完整設計。在PROTEUS 繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX ,可以在PROTEUS 的原理圖中看到模擬的實物運行狀態和過程。
12、使用 Proteus 軟件進行單片機系統仿真設計,是虛擬仿真技術和計算機多媒體技術相結合的綜合運用,有利于培養學生的電路設計能力及仿真軟件的操作能力;實踐證明,在使用 Proteus 進行系統仿真開發成功之后再進行實際制作,能極大提高單片機系統設計效率。因此, Proteus 有較高的推廣利用價值。( 2)在仿真時按設置按鈕,按一次設置溫度上限,按第二次設置溫度下限,按第三次回到當前溫度顯示值, 其它兩個按鍵是對設置值的加減; 或者利用串口在上位機上進行設置,端口選擇 COM2 ,波特率選擇 9600,三個按鈕的功能和仿真圖里的按鍵功能一樣,對溫度進行設置。如圖 5.1圖 5.15.2 、C
13、程序調試在 Kill4 中對程序進行編寫調試源代碼如下:# include <reg51.h>#define uint unsigned int#define uchar unsigned char/宏定義sbit but1=P10;sbit but2=P11;sbit but3=P12;sbit p34=P24;sbit p35=P25;sbit p36=P26;sbit dp=P07;sbit p37=P27;sbitDQ=P22;/定義 DS18B20 總線 I/Osbit LING=P20;/ 定義響鈴uchar shezhi=0;uint shangxian=300;/
14、上限報警溫度,默認值為60uint xiaxian=200;/ 下限報警溫度,默認值為0ucharcodeLEDData=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;bit s1,s2,s3,s4;/*延時子程序 */void Delay(uint i)while( i- );void delayms(uint x)uchar i;while(x-);for(i=0;i<120;i+);void Init_DS18B20(void)unsigned char x=0;DQ=1;Delay(8);/稍做延時DQ=0
15、;/單片機將DQ 拉低Delay(80);/精確延時,大于480usDQ=1;/ 拉高總線Delay(14);x=DQ;/稍做延時后,如果x=0 則初始化成功,x=1 則初始化失敗Delay(20);/*讀一個字節 */unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat=0;for (i=8;i>0;i-)DQ=0;/ 給脈沖信號dat>>=1;DQ=1;/ 給脈沖信號if(DQ)dat|=0x80;Delay(4);return(dat); /*寫一個字節 */void WriteOneCha
16、r(unsigned char dat)unsigned char i=0; for (i=8; i>0; i-)DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;void Tmpchange(void) / 發送溫度轉換命令Init_DS18B20();WriteOneChar(0xCC);/ 跳過讀序號列號的操作WriteOneChar(0x44);/ 啟動溫度轉unsigned int ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;f
17、loat tt=0;Tmpchange();Init_DS18B20();WriteOneChar(0xCC);/ 跳過讀序號列號的操作WriteOneChar(0xBE);/ 讀取溫度寄存器a=ReadOneChar();/讀低8 位b=ReadOneChar();/讀高8 位t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5;/放大10 倍輸出并四舍五入return(t);Disp_Temperature(uint e)/ 顯示溫度uint a,b,c,d;a=e/1000;/ 計算得到十位數b=e/100-a*10;/計算得到個位數字d=e%10
18、;/ 計算得到小數點后兩位c=(e%100)/10;/ 計算得到小數點后一位p34=0;p35=0;p36=0;p37=0;P0 =LEDDatad;/顯示小數點后兩位p34=1;p35=0;p36=0;p37=0;Delay(500);p34=0;p35=0;p36=0;p37=0;P0 =LEDDatac;/ 顯示小數點后一位dp=0;p34=0;p35=1;p36=0;p37=0;Delay(500);p34=0;p35=0;p36=0;p37=0;P0 =LEDDatab;/顯示個位p34=0;p35=0;p36=1;p37=0;Delay(500);p34=0;p35=0;p36=0
19、;p37=0;P0 =LEDDataa;/ 顯示十位p34=0;p35=0;p36=0;p37=1;Delay(500);p34=0;p35=0;p36=0;p37=0;/關閉顯示void initUart(void)/ 串口初始化9600TMOD|=0x20;SCON=0xfc;TH1=0xfd;TL1=0xfd;EA=1;ES=1;TR1=1;void uart(void) interrupt 4/ 串口中斷處理函數if(RI)RI=0;if(SBUF='a')s1=1;if(SBUF='b')s2=1;if(SBUF='c')s3=1;/*
20、主函數 */void main(void)uint z,e;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;initUart();while(1)if(but1=0 | s1=1)/判斷按鈕setDelay(100);if(but1=0 | s1=1)s1=0;while(but1=0);shezhi+;if(shezhi=3)shezhi=0;else if(but2=0 | s2=1) /判斷按鈕 +Delay(100);if(but2=0 | s2=1)s2=0;while(but2=0);if(shezhi=1)xiaxian+;else if(shezhi=2)shangx
21、ian+;else if(but3=0 | s3=1) /判斷按鈕 -Delay(100);if(but3=0 | s3=1)s3=0;while(but3=0);if(shezhi=1)xiaxian-;else if(shezhi=2)shangxian-;if(shezhi=0)e=ReadTemperature();/ 獲取溫度值if(e>shangxian | e<xiaxian)LING=0;/溫度不在范圍內報警else LING=1;Disp_Temperature(e);/顯示溫度else if(shezhi=1)Disp_Temperature(xiaxian);/顯示溫度下限else if(shezhi=2)Disp_Temperature(shangxian);/顯示溫度上限六、收獲及自我評價這次課程設計不光是要掌握模單片機書本上的理論基礎,還需要我們鍛煉自己的動手能力。用時8 周,需要用到Proteus ISIS 繪圖,同時也用到keil 編程,仿真驗證程序正確。仿真時發現按鍵不響應、數碼管顯示亂碼,又返回去重新改程序,給單片機刷入程序第2 次驗證,最后終于發現了問題,原來是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025商場攤位租賃合同范本
- 2025健身房合作合同范本模板
- 2025合同績效評估與獎懲機制
- 2025標準版合同租賃協議
- 2025桐鄉市茶葉收購合同范本
- 2025勞動合同法律法規要點梳理
- 2024年環磷酰胺原料藥項目資金申請報告代可行性研究報告
- 2025年中國合同法范本
- 2025年中國農業銀行教育貸款合同范本
- 2025多方協作合同協議范本
- 08J933-1體育場地與設施(一)
- 生豬屠宰獸醫衛生檢驗人員理論考試題庫及答案
- 2024職場人壓力調查報告-智聯招聘-202407
- ISO9001-ISO14001-ISO45001三體系內部審核檢查表
- T-SHZSAQS 00278-2024 智慧農場水肥一體化系統運行技術規程
- 基于STM32的鋰電池管理系統設計與實現
- 新概念2測試題及答案
- 成都醫學院臨床醫學專業認證任務分解表
- (正式版)JTT 1496-2024 公路隧道施工門禁系統技術要求
- TB 10303-2020鐵路橋涵工程施工安全技術規程
- 神經外科顱內動脈瘤血管內介入栓塞治療手術知情同意書
評論
0/150
提交評論