LM016L的顯示程序_第1頁(yè)
LM016L的顯示程序_第2頁(yè)
LM016L的顯示程序_第3頁(yè)
LM016L的顯示程序_第4頁(yè)
LM016L的顯示程序_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論