




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、惠州學院HUIZHOU UNIVERSITY 單片機課程設計設計題目 系 別 專 業 班 級 學 號 學生姓名 指導教師 完成時間 年 月目錄 一課題設計任務與要求。 - 二對于課題的總體構想。 - 三DS18B20溫度傳感器簡介。 - 四系統總仿真電路。 - 五總程序。 - 六心得體會。 - 七參考文獻。-一、設計任務與要求設計任務:利用數字溫度傳感器DS18B20與單片機結合來測量溫度。設計要求:利用數字溫度傳感器DS18B20測量溫度信號,計算后在LED數碼管上顯示相應的溫度值。其溫度測量范圍為-55125,精確到0.5。本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍
2、內時,可以報警。數字溫度計所測量的溫度采用數字顯示,控制器使用單片機89C51,測溫傳感器使用DS18B20,用3位共陽極LED數碼管以串口傳送數據,實現溫度顯示。從溫度傳感器DS18B20可以很容易直接讀取被測溫度值,進行轉換即滿足設計要求。DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現912位的數字讀數方式。 二對課題的總體構想 采用數字溫度芯片DS18B20 測量溫度,輸出信號全數字化,利用1602液晶顯示屏實時顯示溫度。其中DS18B20 的最大特點之一采
3、用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器STC89C52構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。 采用51 單片機控制,軟件編程的自由度大,可通過編程實現各種各樣的算術算法和邏輯控制,而且體積小,硬件實現簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機通信上傳數據,另外STC89C52 在工業控制上也有著廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。三、DS18B20簡介DS18B20的性能如下: 獨特的單線接口僅需要一個端口引腳進行通信。 多個DS18B20可以并聯在串行傳輸的數據線上,實現多點組網功能。 無須外部器件
4、。 可通過數據線供電,電壓范圍為3.05.5V。 零待機功耗。 溫度以9或12位的數字讀數方式。 用戶可定義報警設置。 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件。 負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作。 DS18B20采用3引腳PR-35封裝或8引腳SOIC封裝。四、系統仿真電路圖(Proteus)六、總程序/* */#include <reg52.h>#include <intrins.h>/#include"1602LCD_Module.h"#include "18B20.h"
5、#define uint unsigned int#define uchar unsigned char#define delayNOP() _nop_();_nop_();_nop_();_nop_();sbit light =P10;sbit DQ = P37;/7void DisplayStr(char line,location,char code *str);uchar code Temp_Disp_Title="Current Temp : "uchar Current_Temp_Display_Buffer="TEMP: " int xia
6、xian=20 ; int shangxian=35;uchar code Temperature_Char8 = 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00;/溫度小數對照表uchar code df_Table= 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;uchar CurrentT = 0;uchar Temp_Value=0x00,0x00;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK = 1;/=/=#define uchar unsigned char#define uint u
7、nsigned intsbit RS=P25;sbit RW=P26;/讀寫控制sbit E=P27; /使能sbit BF=P07; /D7為LCD忙/閑標口,BF為標志位,BF=1為忙,BAF=0為閑void Delayms(uint ms) uchar i;while(ms-) for(i=0;i<120;i+);/使用void LCDCheckV1()會死循環,導致proteus仿真失敗/*void LCDCheckV1() /忙檢查函數 E=0; /禁止讀寫功能doBF=1; /設置BF為輸入RS=0;RW=1;/讀取指令 E=1; /使能(讀取BF和AC地址計數器)while
8、(BF=1); /BF=1,忙 */uchar LCDCheckV2()uchar LCD_Status;RS = 0;RW = 1;E = 1;Delayms(6);/這個延時必須要有!如果是STC89或STC90系列單片機,延時Delayms(1)即可;如果是STC12系列單片機,延時要不小于Delayms(5); LCD_Status = BF;E = 0;return LCD_Status; void LCDWriteCmd(char cmd)/寫指令函數while(LCDCheckV2();RS=0; /RW=0; /寫E=1; /使能P0=cmd;E=0; void LCDWrit
9、eChar(char character) /寫數據函數 while(LCDCheckV2();RS=1;RW=0; /E=1;P0=character;E=0;/while(LCDCheckV2();void DisplayChar(char line,location,character)/將字符顯示在特定位置 while(LCDCheckV2();RS=0;RW=0; /寫指令E=1;if(line=0) P0=0x80+location; /在第0行顯示第location列顯示。相當于LCDWriteCmd(0x80+location-1);0x08是第0列的地址if(line=1)
10、P0=0x40|0xc0+location; /在第1行顯示第location列顯示。相當于LCDWriteCmd(0x40|0xc0+location-1);0x40|0xc0是第0列的地址/為什么第一列地址不是0x90?與手冊不符E=0;/while(LCDCheckV2();LCDWriteChar(character);/=/按指定位置顯示一串字符void DisplayStr(char line,location,char code *str)/將字符顯示在特定位置 int i;while(LCDCheckV2();RS=0;RW=0; /寫指令E=1;if(line=0) P0=0
11、x80+location; /在第0行顯示第location列顯示。相當于LCDWriteCmd(0x80+location);0x08是第0列的地址if(line=1) P0=0x40|0xc0+location; /在第1行顯示第location列顯示。相當于LCDWriteCmd(0x40|0xc0+location);0x40|0xc0是第0列的地址/為什么第一列地址不是0x90?與手冊不符E=0;/while(LCDCheckV2();for(i=0;i<16;i+)LCDWriteChar(stri);/=void LCDInit() /初始化LCD LCDWriteCmd(
12、0x30);LCDWriteCmd(0x30);/LCDWriteCmd(0x30); / 加上這兩行代碼可以兼容中英文LCD模塊LCDWriteCmd(0x38); /設置兩行模式LCDWriteCmd(0x08); /顯示關閉LCDWriteCmd(0x01); /清屏LCDWriteCmd(0x06); /字符后移LCDWriteCmd(0x0c); /顯示開,及光標設置/=/=void DelayXus(unsigned int x) uchar i;while(x-) for(i=0;i<200;i+);void Delay(unsigned int x) while(-x);
13、uchar Init_DS18B20() / uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);status=DQ;/ Delay(100);DQ = 1;return status;uchar ReadOneByte() uchar i,dat=0;DQ = 1;_nop_();for(i=0;i<8;i+) DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_();if(DQ)dat |= 0X80;Delay(30);DQ = 1;return dat;void WriteO
14、neByte(uchar dat) uchar i;for(i=0;i<8;i+) DQ = 0;DQ = dat& 0x01;Delay(5);DQ = 1;dat >>= 1;void Read_Temperature() if(Init_DS18B20()=1) /如果DS18B20故障DS18B20_IS_OK=0;elseWriteOneByte(0xcc); /跳過序列號WriteOneByte(0x44); /啟動溫度轉換Init_DS18B20(); /WriteOneByte(0xcc); /跳過序列號WriteOneByte(0xbe); /讀取溫
15、度寄存器Temp_Value0 = ReadOneByte(); /溫度低8位Temp_Value1 = ReadOneByte(); /溫度高8位DS18B20_IS_OK=1; /void Display_Temperature() uchar i;uchar t = 150, ng = 0;if(Temp_Value1&0xf8)=0xf8) /高5位全為1 (0XF8)則為負數,為負數時取反加一(得到補碼),并設置負標識 Temp_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0+1;if(Temp_Value0=0x00)Temp_
16、Value1+;ng = 1; /負數標志位為1,說明溫度是負數Display_Digit0 = df_TableTemp_Value0&0x0f; /查表得到溫度小數部分CurrentT = (Temp_Value0&0xf0)>>4) | (Temp_Value1&0x07)<<4); /溫度整數部分/整數部分分解為3位待顯示數字Display_Digit3 = CurrentT/100;Display_Digit2 = CurrentT%100/10;Display_Digit1 = CurrentT%10;/刷新LCD顯示緩沖Curren
17、t_Temp_Display_Buffer11 = Display_Digit0 + '0'Current_Temp_Display_Buffer10 = '.'Current_Temp_Display_Buffer9 = Display_Digit1 + '0'Current_Temp_Display_Buffer8 = Display_Digit2 + '0'Current_Temp_Display_Buffer7 = Display_Digit3 + '0'if(Display_Digit3 = 0) /高位
18、為0時不顯示Current_Temp_Display_Buffer7 = ' 'if(Display_Digit2 = 0&&Display_Digit3=0)/高位且次位為0不顯示Current_Temp_Display_Buffer8 = ' 'if(ng)/ng=1說明溫度是負數,負數符號顯示在恰當位置 if(Current_Temp_Display_Buffer8 = ' ')Current_Temp_Display_Buffer8 = '-'else if(Current_Temp_Display_Buf
19、fer7 = ' ')Current_Temp_Display_Buffer7 = '-'else Current_Temp_Display_Buffer6 = '-'LCDWriteCmd(0x80);/在第一行顯示for(i=0;i<16;i+) LCDWriteChar(Temp_Disp_Titlei);/delay(10);LCDWriteCmd(0x40|0xc0);/在第二行顯示,這里面的地址竟然不能是0x90!為什么?for(i=0;i<16;i+) LCDWriteChar(Current_Temp_Display_Bufferi);/LCDWriteCmd(0x40|0xc0+13);/LCDWriteChar(0x00);LCDWriteCmd(0x40|0x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙制品行業生產成本降低與效益提升考核試卷
- 煤化工氣體凈化與分離技術考核試卷
- 電子商務初步認識
- 液壓系統在熱能發電中的應用考核試卷
- 篷布制造企業面臨的環保挑戰與對策考核試卷
- 電子出版物廣告與推廣考核試卷
- 湘教版二下美術課件
- 幼兒舞蹈教育的基本原則
- 2025區域獨家代理合同范本
- 四下語文第二單元課件
- (二模)2025年深圳市高三年級第二次調研考試歷史試卷(含標準答案)
- 陜西省2024年高中學業水平合格考化學試卷試題(含答案解析)
- GB/T 12706.2-2020額定電壓1 kV(Um=1.2 kV)到35 kV(Um=40.5 kV)擠包絕緣電力電纜及附件第2部分:額定電壓6 kV(Um=7.2 kV)到30 kV(Um=36 kV)電纜
- GB 4351.1-2005手提式滅火器第1部分:性能和結構要求
- 畢業設計(論文)-霧炮除塵系統的設計
- 運動處方的制定課件
- 腫瘤學概論規培教學課件
- 輸液泵/微量注射泵使用技術操作考核評分標準
- 施工安全責任承諾書doc
- 八十天環游地球-完整版PPT
- DB32-T 1072-2018 太湖地區城鎮污水處理廠及重點工業行業主要水污染物排放限值-(高清現行)
評論
0/150
提交評論