




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、您研究一下以下這個程序,然后就可以加上時間功能.多做一點就能多學(xué)一點.開機時對DS18B20進行檢測,如果DS18B20檢測不正常,LCD1602顯示: DS18B20 ERROR PLEASE CHECK 蜂鳴器報警。DS18B20檢測正常,LCD1602顯示: DS18B20 OK TEMP: 100.8如果溫度值高位為0,將不顯示出來。你可以通過拔插DS18B20查看DS18B20的檢測功能。/* ME300B單片機開發(fā)系統(tǒng)演示程序 - DS18B20溫度顯示 */* LCD1602顯示 */* 作者: gguoqing */*Copyright(C)偉納電子 www.willar.co
2、m All Rights Reserved */*/#include #include #define uchar unsigned char#define uint unsigned intsbit DQ = P33 ; /定義DS18B20端口DQ sbit BEEP=P37 ; /蜂鳴器驅(qū)動線bit presence ;sbit LCD_RS = P20 ; sbit LCD_RW = P21 ;sbit LCD_EN = P22 ;uchar code cdis1 = DS18B20 OK ;uchar code cdis2 = TEMP: . C ;uchar code cdis3
3、= DS18B20 ERR0R ;uchar code cdis4 = PLEASE CHECK ;unsigned char data temp_data2 = 0x00,0x00 ;unsigned char data display5 = 0x00,0x00,0x00,0x00,0x00 ;unsigned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;void beep() ; unsigned char code mytab8
4、= 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00 ;#define delayNOP() ; _nop_() ;_nop_() ;_nop_() ;_nop_() ; ;/*/void delay1(int ms)unsigned char y ; while(ms-) for(y = 0 ; y250 ; y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; /*/*檢查LCD忙狀態(tài) */*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。 */*/ bit lcd_busy() bit resu
5、lt ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; /*寫指令數(shù)據(jù)到LCD */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; d
6、elayNOP() ; LCD_EN = 0 ; /*/*寫顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化設(shè)定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 lcd_wcmd
7、(0x38) ; /16*2顯示,5*7點陣,8位數(shù)據(jù) delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ; /顯示開,關(guān)光標(biāo) delay1(5) ; lcd_wcmd(0x06) ; /移動光標(biāo) delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 delay1(5) ;/* 設(shè)定顯示位置 */*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /數(shù)據(jù)指針=80+地址變量/*自定義字符寫入CGRAM
8、*/*/void writetab() unsigned char i ; lcd_wcmd(0x40) ; /寫CGRAM for (i = 0 ; i 0 ; i-) DQ = 0 ; / 給脈沖信號 dat = 1 ; DQ = 1 ; / 給脈沖信號 if(DQ) dat |= 0x80 ; Delay(4) ; return (dat) ;/* 寫一個字節(jié) */*/WriteOneChar(unsigned char dat) unsigned char i = 0 ; for (i = 8 ; i 0 ; i-) DQ = 0 ; DQ = dat&0x01 ; Delay(5)
9、; DQ = 1 ; dat=1 ; /* 讀取溫度 */*/Read_Temperature(void) Init_DS18B20() ; WriteOneChar(0xCC) ; / 跳過讀序號列號的操作 WriteOneChar(0x44) ; / 啟動溫度轉(zhuǎn)換 Init_DS18B20() ; WriteOneChar(0xCC) ; /跳過讀序號列號的操作 WriteOneChar(0xBE) ; /讀取溫度寄存器 temp_data0 = ReadOneChar() ; /溫度低8位 temp_data1 = ReadOneChar() ; /溫度高8位 /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示
10、*/*/Disp_Temperature() display4=temp_data0&0x0f ; display0=ditabdisplay4+0x30 ; /查表得小數(shù)位的值 display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4) ; display3=display4/100+0x30 ; display1=display4%100 ; display2=display1/10+0x30 ; display1=display1%10+0x30 ; if(display3=0x30) /高位為0,不顯示 display3=0x20 ; if(dis
11、play2=0x30) /次高位為0,不顯示 display2=0x20 ; lcd_pos(0x48) ; lcd_wdat(display3) ; /百位數(shù)顯示 lcd_pos(0x49) ; lcd_wdat(display2) ; /十位數(shù)顯示 lcd_pos(0x4a) ; lcd_wdat(display1) ; /個位數(shù)顯示 lcd_pos(0x4c) ; lcd_wdat(display0) ; /小數(shù)位數(shù)顯示 /*/* 蜂鳴器響一聲 */*/void beep() unsigned char y ; for (y=0 ;y100 ;y+) Delay(60) ; BEEP=!
12、BEEP ; /BEEP取反 BEEP=1 ; /關(guān)閉蜂鳴器Delay(40000) ; /* DS18B20 OK 顯示菜單 */*/void Ok_Menu () uchar m ; lcd_init() ; /初始化LCD lcd_pos(0) ; /設(shè)置顯示位置為第一行的第1個字符 m = 0 ; while(cdis1m != 0) /顯示字符 lcd_wdat(cdis1m) ; m+ ; lcd_pos(0x40) ; /設(shè)置顯示位置為第二行第1個字符 m = 0 ; while(cdis2m != 0) lcd_wdat(cdis2m) ; /顯示字符 m+ ; writetab() ; /自定義字符寫入CGRAM delay1(5) ; lcd_pos(0x4d) ; lcd_wdat(0x00) ; /顯示自定義字符/* DS18B20 ERROR 顯示菜單 */*/void Error_Menu () uchar m ; lcd_init() ; /初始化LCD lcd_pos(0) ; /設(shè)置顯示位置為第一行的第1個字符 m = 0 ; while(cdis3m != 0) /顯示字符 lcd_wdat(cdis3m) ; m+ ; lcd_pos(0x40) ; /設(shè)置顯示位置為第二行第1個字符 m = 0 ; while
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國高壓高強免燒壓磚機市場分析及競爭策略研究報告
- 2025至2030年中國錦綸高速紡絲油劑市場分析及競爭策略研究報告
- 2025至2030年中國避雷器漏電流及動作記錄器市場分析及競爭策略研究報告
- 2025至2030年中國補給水裝置市場分析及競爭策略研究報告
- 2025至2030年中國聚酯纖維紙復(fù)合材料市場分析及競爭策略研究報告
- 2025至2030年中國立式瓷殼線繞電阻器市場分析及競爭策略研究報告
- 2025至2030年中國電腦天線市場分析及競爭策略研究報告
- 2025至2030年中國煤氣管材市場分析及競爭策略研究報告
- 2025至2030年中國潔具掛件市場分析及競爭策略研究報告
- 2025至2030年中國梨形瓶市場分析及競爭策略研究報告
- 休閑車零部件回收再利用創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 滴灌帶生產(chǎn)項目可行性研究報告-D
- 消防系統(tǒng)維護保養(yǎng)方案
- 骨科護理實習(xí)生小講課
- 四川省南充市2023-2024學(xué)年七年級下學(xué)期期末考試道德與法治試卷(含答案)
- 2025至2030中國汽車散熱器行業(yè)市場發(fā)展分析及商業(yè)模式與投融資發(fā)展報告
- 統(tǒng)編版語文二下園地三+單元復(fù)習(xí)課 課件
- 2025年輕人情緒消費趨勢報告-抖音商城xsocialbeta-202506
- 培訓(xùn)中心項目管理制度
- 承包企業(yè)食堂管理制度
- 智能合約的自適應(yīng)優(yōu)化與動態(tài)執(zhí)行研究-洞察闡釋
評論
0/150
提交評論