




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include < reg51.h >#include < intrins.h >#define uchar unsigned char#define uint unsigned intsbit DQ = P27 ; /定義DS18B20端口DQ void reset();
2、 /DS18B20復(fù)位函數(shù) void write_byte(uchar val); /DS18B20寫(xiě)命令函數(shù) uchar read_byte(void);
3、 /DS18B20讀1字節(jié)函數(shù) void read_temp(); /溫度讀取函數(shù) void work_temp(); &
4、#160; /溫度數(shù)據(jù)處理函數(shù) sbit BEEP=P25 ; /蜂鳴器驅(qū)動(dòng)線 bit presence
5、160; ;sbit LCD_RS = P35 ; sbit LCD_RW = P36 ;sbit LCD_EN = P37 ;uchar code cdis1 = " SETTEMP: 50.C " ;uchar code cdis2 = " TESTTEMP:
6、60; . C " ;uchar code cdis3 = " DS18B20 ERR0R " ;uchar code cdis4 = " PLEASE CHECK " ;unsigned char data temp_data2 = 0x00,0x00 ;unsigned char data display5 = 0x
7、00,0x00,0x00,0x00,0x00 ;unsigned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;void beep() ; unsigned char code mytab8 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00 ;#define delayNOP() ; _nop_() ;_nop_() ;_
8、nop_() ;_nop_() ; ;/*/void delay1(int ms)unsigned char y ; while(ms-) for(y = 0 ; y<250 ; y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; /*/*檢查L(zhǎng)CD忙狀態(tài)
9、 */*lcd_busy為1時(shí),忙,等待。lcd
10、-busy為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)。 */*/ bit lcd_busy() bit result ; LCD_RS = 0 ;
11、 LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P1&0x80) ; LCD_EN = 0 ; return(result) ; /*寫(xiě)指令數(shù)據(jù)到LCD
12、60; */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。
13、60; */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; &
14、#160; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P1 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_E
15、N = 0 ; /*/*寫(xiě)顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */*/void lcd_wdat(uchar dat)
16、; while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ;
17、 P1 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化設(shè)定
18、60; */*/void lcd_init() delay1(15) ; lcd
19、_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 lcd_wcmd(0x38) ; /16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù) delay1(5) ; lc
20、d_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ;
21、0; /顯示開(kāi),關(guān)光標(biāo) delay1(5) ; lcd_wcmd(0x06) ; /移動(dòng)光標(biāo) delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容
22、 delay1(5) ;/* 設(shè)定顯示位置 */*/void lcd_pos(uchar pos)
23、; lcd_wcmd(pos | 0x80) ; /數(shù)據(jù)指針=80+地址變量 /*自定義字符寫(xiě)入CGRAM
24、 */*/void writetab() unsigned char i ; lcd_wcmd(0x40) ;
25、60; /寫(xiě)CGRAM for (i = 0 ; i< 8 ; i+) lcd_wdat(mytab i ) ; /*us級(jí)延時(shí)函數(shù) &
26、#160; */*/void Delay(unsigned int num) while( -num ) ;/*初始化ds1820 &
27、#160; */*/Init_DS18B20(void) DQ = 1 ; /DQ復(fù)位
28、60; Delay(8) ; /稍做延時(shí) DQ = 0 ; /單片機(jī)將DQ拉低 Delay(90) ; /精確延時(shí) 大于 480us DQ = 1 ;
29、 /拉高總線 Delay(8) ; presence = DQ ; /如果=0則初始化成功 =1則初始化失敗 Delay(100) ; DQ = 1 ;
30、; return(presence) ; /返回信號(hào),0=presence,1= no presence /* 讀一個(gè)字節(jié) */*/ReadOneChar(void)unsigned char i = 0 ;unsigned char dat = 0
31、 ;for (i = 8 ; i > 0 ; i-) DQ = 0 ; / 給脈沖信號(hào) dat >>= 1 ; DQ = 1 ; / 給脈沖信號(hào) if(DQ) dat |= 0x80 ; Delay(4) ;
32、0; return (dat) ;/* 寫(xiě)一個(gè)字節(jié) */*
33、/WriteOneChar(unsigned char dat) unsigned char i = 0 ; for (i = 8 ; i > 0 ; i-) DQ = 0 ; DQ = dat&0x01 ; Delay(5) ; DQ = 1 ; dat>>
34、=1 ; /* 讀取溫度 */*/Read_Temperature(void) Init_DS18B20() ;
35、60; WriteOneChar(0xCC) ; / 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44) ; / 啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20() ; WriteOneChar(0xCC) ; /跳過(guò)讀序號(hào)列號(hào)的操作
36、 WriteOneChar(0xBE) ; /讀取溫度寄存器 temp_data0 = ReadOneChar() ; /溫度低8位 temp_data1 = ReadOneChar() ; /溫度高8位 /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示
37、60; */*/Disp_Temperature() display4=temp_data0&a
38、mp;0x0f ; display0=ditabdisplay4+0x30 ; /查表得小數(shù)位的值 display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4) ; display3=display4/100+0x30 ; display1=display4%100 ;
39、display2=display1/10+0x30 ; display1=display1%10+0x30 ; if(display3=0x30) /高位為0,不顯示 display3=0x20 ; &
40、#160; if(display2=0x30) /次高位為0,不顯示 display2=0x20 ; lcd_pos(0x48) ;
41、60; lcd_wdat(display3) ; /百位數(shù)顯示 lcd_pos(0x49) ; lcd_wdat(display2) ; &
42、#160; /十位數(shù)顯示 lcd_pos(0x4a) ; lcd_wdat(display1) ; /個(gè)位數(shù)顯示 lcd_pos(0x4c) ;
43、60; lcd_wdat(display0) ; /小數(shù)位數(shù)顯示 /*/* 蜂鳴器響一聲
44、160; */*/void beep() unsigned char y ; for (y=0 ;y<100 ;y+) Delay(60) ; BEEP=!BEEP ; &
45、#160; /BEEP取反 BEEP=1 ; /關(guān)閉蜂鳴器 Delay(40000) ; /* DS18B20 OK 顯示菜單&
46、#160; */*/void Ok_Menu (
47、) uchar m ; lcd_init() ; /初始化LCD lcd_pos(0) ;
48、 /設(shè)置顯示位置為第一行的第1個(gè)字符 m = 0 ; while(cdis1m != '0')
49、60; /顯示字符 lcd_wdat(cdis1m) ; m+ ; lcd_po
50、s(0x40) ; /設(shè)置顯示位置為第二行的第1個(gè)字符 m = 0 ; while(cdis2m != '0')
51、 lcd_wdat(cdis2m) ; /顯示字符 m+ ; writetab() ; /自定義字符寫(xiě)入CGRAM &
52、#160; delay1(5) ; lcd_pos(0x4d) ; lcd_wdat(0x00) ; /顯示自定義字符 /* DS18B20 ERROR 顯示菜單 */*/void Error_Menu ()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)合同范本題目
- 農(nóng)村水田租賃承包合同范本
- 企業(yè)汽車(chē)銷(xiāo)售合同范本
- 代理買(mǎi)賣(mài)二手車(chē)合同范本
- 代領(lǐng)購(gòu)房合同范本
- 一般經(jīng)銷(xiāo)合同范例
- 個(gè)人購(gòu)貨采購(gòu)合同范本
- 關(guān)于裝修貸款合同范本
- 升旗臺(tái)合同范本
- 前臺(tái)勞務(wù)派遣合同范本
- 零基礎(chǔ)學(xué)機(jī)器學(xué)習(xí)
- 第26課《詩(shī)詞五首》作業(yè)設(shè)計(jì)統(tǒng)編版語(yǔ)文八年級(jí)上冊(cè)
- 西方繪畫(huà)藝術(shù)流派(最全)課件
- 預(yù)防保健科護(hù)理管理質(zhì)量控制考核標(biāo)準(zhǔn)
- JCT548-2016 壁紙膠粘劑標(biāo)準(zhǔn)
- 氣管切開(kāi)患者的管理和康復(fù)治療推薦意見(jiàn)(新版)解讀
- 醫(yī)院污水處理站維保服務(wù)項(xiàng)目
- 供應(yīng)商績(jī)效考核表 (季度)
- Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版)PPT完整全套教學(xué)課件
- 《爭(zhēng)做新時(shí)代好少年》主題班會(huì)課件(美德好少年)
- 雅思大作文寫(xiě)作課件
評(píng)論
0/150
提交評(píng)論