亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 16021602.c

?? 18B20+1602LCD溫度實驗(C語言)
?? C
字號:


#include < reg51.h >
#include < intrins.h >

#define uchar unsigned char
#define uint  unsigned int

sbit DQ = P2^7 ;  //定義DS18B20端口DQ  
sbit BEEP=P2^1  ; //蜂鳴器驅動線

bit presence  ;

sbit LCD_RS = P3^0 ;             
sbit LCD_RW = P3^1 ;
sbit LCD_EN = P3^2 ;

uchar code  cdis1[ ] = {" WWW.RICHMCU.COM "} ;
uchar code  cdis2[ ] = {" WENDU:    .  C "} ;
uchar code  cdis3[ ] = {" DS18B20  ERR0R "} ;
uchar code  cdis4[ ] = {"  PLEASE CHECK  "} ;

unsigned char data  temp_data[2] = {0x00,0x00} ;
unsigned char data  display[5] =   {0x00,0x00,0x00,0x00,0x00} ;
unsigned char code  ditab[16] =    {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
                                                        0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;
void beep() ; 
unsigned char code  mytab[8] = {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 ; y<250 ; y++)
  {
   _nop_() ;
   _nop_() ;
   _nop_() ;
   _nop_() ;
  }
 }
}

/******************************************************************/
/*檢查LCD忙狀態                                                   */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。   */
/******************************************************************/ 
bit lcd_busy()
 {                          
    bit result ;
    LCD_RS = 0 ;
    LCD_RW = 1 ;
    LCD_EN = 1 ;
    delayNOP() ;
    result = (bit)(P0&0x80) ;
    LCD_EN = 0 ;
    return(result) ; 
 }

/*寫指令數據到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 ;
    delayNOP() ;
    LCD_EN = 0 ;  
}

/*******************************************************************/
/*寫顯示數據到LCD                            */
/*RS=H,RW=L,E=高脈沖,D0-D7=數據。       */
/*******************************************************************/
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初始化設定                                                  */
/*******************************************************************/
void lcd_init()
{ 
    delay1(15) ;   
    lcd_wcmd(0x01) ;      //清除LCD的顯示內容            
    lcd_wcmd(0x38) ;      //16*2顯示,5*7點陣,8位數據
    delay1(5) ;
    lcd_wcmd(0x38) ;         
    delay1(5) ;
    lcd_wcmd(0x38) ;         
    delay1(5) ;

    lcd_wcmd(0x0c) ;      //顯示開,關光標
    delay1(5) ;
    lcd_wcmd(0x06) ;      //移動光標
    delay1(5) ;
    lcd_wcmd(0x01) ;      //清除LCD的顯示內容
    delay1(5) ;
}

/*  設定顯示位置                                    */
/*******************************************************************/
void lcd_pos(uchar pos)
{                          
  lcd_wcmd(pos | 0x80) ;  //數據指針=80+地址變量
}

/*自定義字符寫入CGRAM                                   */
/*******************************************************************/
void  writetab()  
{  
    unsigned char i ;
    lcd_wcmd(0x40) ;            //寫CGRAM
    for (i = 0 ; i< 8 ; i++)       
    lcd_wdat(mytab[ i ]) ;        
}

/*us級延時函數                                        */
/*******************************************************************/

void Delay(unsigned int num)
{
  while( --num ) ;
}

/*初始化ds1820                                      */
/*******************************************************************/
Init_DS18B20(void)
{  
     DQ = 1 ;      //DQ復位
     Delay(8) ;    //稍做延時

     DQ = 0 ;      //單片機將DQ拉低
     Delay(90) ;   //精確延時 大于 480us

     DQ = 1 ;       //拉高總線
     Delay(8) ;

     presence = DQ ;    //如果=0則初始化成功 =1則初始化失敗
     Delay(100) ;
     DQ = 1 ; 
     
     return(presence) ; //返回信號,0=presence,1= no presence
}


/* 讀一個字節                     */
/*******************************************************************/
 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) ;
}

/* 寫一個字節                                         */
/*******************************************************************/
 WriteOneChar(unsigned char dat)
{
  unsigned char i = 0 ;
  for (i = 8 ; i > 0 ; i--)
  {
    DQ = 0 ;
    DQ = dat&0x01 ;
    Delay(5) ;

    DQ = 1 ;
    dat>>=1 ;
  }
}

/* 讀取溫度                            */
/*******************************************************************/
 Read_Temperature(void)
{
     Init_DS18B20() ;
  
     WriteOneChar(0xCC) ;  // 跳過讀序號列號的操作
     WriteOneChar(0x44) ;  // 啟動溫度轉換

     Init_DS18B20() ;
     WriteOneChar(0xCC) ;  //跳過讀序號列號的操作
     WriteOneChar(0xBE) ;  //讀取溫度寄存器

     temp_data[0] = ReadOneChar() ;   //溫度低8位
     temp_data[1] = ReadOneChar() ;   //溫度高8位 
}

/* 數據轉換與溫度顯示                                              */
/*******************************************************************/
 Disp_Temperature()
{
  display[4]=temp_data[0]&0x0f ;
  display[0]=ditab[display[4]]+0x30 ;     //查表得小數位的值
  
  display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;
  display[3]=display[4]/100+0x30 ;
  display[1]=display[4]%100 ;
  display[2]=display[1]/10+0x30 ;
  display[1]=display[1]%10+0x30 ;

    if(display[3]==0x30)        //高位為0,不顯示
   { 
     display[3]=0x20 ;              
     if(display[2]==0x30)      //次高位為0,不顯示
     display[2]=0x20 ;
   }

     lcd_pos(0x48) ;             
     lcd_wdat(display[3]) ;        //百位數顯示 
     lcd_pos(0x49) ;             
     lcd_wdat(display[2]) ;        //十位數顯示 
  lcd_pos(0x4a) ;             
     lcd_wdat(display[1]) ;        //個位數顯示 
  lcd_pos(0x4c) ;             
     lcd_wdat(display[0]) ;        //小數位數顯示 
}  

/*******************************************************************/
/* 蜂鳴器響一聲                 */
/*******************************************************************/
void beep()
  {
    unsigned char y ;
    for (y=0 ;y<100 ;y++)
    {
      Delay(60) ;
      BEEP=!BEEP ;                //BEEP取反
    } 
    BEEP=1 ;                      //關閉蜂鳴器
 Delay(40000) ;
  }

/* DS18B20 OK 顯示菜單                                             */
/*******************************************************************/
void  Ok_Menu ()
{ 
    uchar  m ;
    lcd_init() ;                //初始化LCD 
            
    lcd_pos(0) ;                //設置顯示位置為第一行的第1個字符
     m = 0 ;
    while(cdis1[m] != '\0')
     {                         //顯示字符
       lcd_wdat(cdis1[m]) ;
       m++ ;
     }

    lcd_pos(0x40) ;             //設置顯示位置為第二行第1個字符
     m = 0 ;
    while(cdis2[m] != '\0')
     {
       lcd_wdat(cdis2[m]) ;      //顯示字符
       m++ ;
     }

     writetab() ;               //自定義字符寫入CGRAM
     delay1(5) ;
     lcd_pos(0x4d) ;
     lcd_wdat(0x00) ;          //顯示自定義字符
}


/* DS18B20 ERROR 顯示菜單                             */
/*******************************************************************/
void  Error_Menu ()
{
     uchar  m ;
     lcd_init() ;                //初始化LCD 
 
    lcd_pos(0) ;                //設置顯示位置為第一行的第1個字符
     m = 0 ;
     while(cdis3[m] != '\0')
     {                         //顯示字符
       lcd_wdat(cdis3[m]) ;
       m++ ;
     }

     lcd_pos(0x40) ;             //設置顯示位置為第二行第1個字符
     m = 0 ;
     while(cdis4[m] != '\0')
     {
       lcd_wdat(cdis4[m]) ;      //顯示字符
       m++ ;
     }
}


/* 主函數     */
/************************************/
void main()
 {
     Ok_Menu () ;

 do
  {
      Read_Temperature() ;
   Disp_Temperature() ;
     }
    while(!presence)  ;

     Error_Menu () ;

 do
  {  
    Init_DS18B20() ;
    beep() ;
     }
 while(presence) ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精选一区二区三区| 国产精品嫩草久久久久| 亚洲国产欧美另类丝袜| 色婷婷综合久久久久中文 | 美女国产一区二区| 欧美日韩精品二区第二页| 亚洲成人av福利| 欧美一级国产精品| 国产高清视频一区| 亚洲欧美视频在线观看视频| 91成人免费电影| 日本人妖一区二区| 日本一区二区三区久久久久久久久不 | 亚洲精品中文字幕乱码三区| 91同城在线观看| 亚洲成人午夜影院| 日韩欧美综合一区| 国产白丝精品91爽爽久久| 国产精品久久久久影视| 欧洲精品一区二区三区在线观看| 亚洲高清三级视频| 久久久91精品国产一区二区精品| 成人av电影在线播放| 亚洲一二三四在线| 337p日本欧洲亚洲大胆精品| 99视频热这里只有精品免费| 亚洲成人激情社区| 中文一区二区完整视频在线观看| 色婷婷香蕉在线一区二区| 奇米888四色在线精品| 欧美国产一区视频在线观看| 在线免费一区三区| 久久99国产精品久久| 久久精品夜夜夜夜久久| 成人性生交大片免费看在线播放| 亚洲欧洲国产日本综合| 91麻豆精品久久久久蜜臀| 国产乱码精品一品二品| 亚洲午夜激情av| 久久精品人人做| 91.xcao| 国产白丝精品91爽爽久久| 午夜影院久久久| 亚洲国产高清aⅴ视频| 欧美一级xxx| 色综合天天性综合| 国产福利电影一区二区三区| 性欧美疯狂xxxxbbbb| 国产精品久久久久精k8| 欧美大片国产精品| 欧美性感一类影片在线播放| 高清不卡在线观看| 韩国成人在线视频| 一区二区三区蜜桃| 精品国产欧美一区二区| 欧美综合色免费| 成人夜色视频网站在线观看| 激情文学综合网| 亚洲小说欧美激情另类| 亚洲天堂成人在线观看| 国产日韩欧美麻豆| 精品日韩欧美一区二区| 这里是久久伊人| 欧美日韩久久久久久| 日本国产一区二区| av中文字幕在线不卡| 国产精品亚洲人在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲成人tv网| 亚洲成a人v欧美综合天堂下载| 国产精品久久久久桃色tv| 久久久精品国产99久久精品芒果| 精品欧美黑人一区二区三区| 欧美一区二区三区视频在线观看 | 亚洲一二三四久久| 亚洲欧美视频在线观看视频| 亚洲欧美一区二区三区久本道91| 欧美理论在线播放| 亚洲天堂中文字幕| 国产精品国产三级国产aⅴ入口 | av在线播放不卡| 成人中文字幕电影| 不卡免费追剧大全电视剧网站| 国内一区二区在线| 国产一区二区三区四区五区美女 | 亚洲女女做受ⅹxx高潮| 中文字幕一区二区三区精华液| 国产精品三级视频| 亚洲视频香蕉人妖| 亚洲精品成人少妇| 性做久久久久久免费观看 | 2017欧美狠狠色| 久久久精品国产免大香伊| 国产精品天美传媒| 亚洲一线二线三线久久久| 亚洲一区二区三区视频在线播放| 午夜视频一区二区| 捆绑调教美女网站视频一区| 国产剧情一区二区| 波多野结衣在线一区| 91黄视频在线| 欧美疯狂性受xxxxx喷水图片| 欧美丰满美乳xxx高潮www| 欧美岛国在线观看| 国产精品无遮挡| 午夜伦理一区二区| 精品一区免费av| 成人av免费网站| 欧美性videosxxxxx| 精品国产污网站| 亚洲欧美在线视频观看| 午夜精品久久久久| 久久99久久精品| 91在线视频官网| 337p亚洲精品色噜噜狠狠| 国产欧美一区二区在线观看| 亚洲人成网站影音先锋播放| 免费在线观看成人| 成人久久视频在线观看| 在线不卡一区二区| 国产欧美日韩亚州综合| 亚洲成人精品一区二区| 国产成人精品亚洲午夜麻豆| 欧美日韩一区二区三区视频| 久久午夜色播影院免费高清| 亚洲综合免费观看高清完整版| 国内久久婷婷综合| 色8久久人人97超碰香蕉987| 26uuu亚洲综合色欧美| 亚洲狼人国产精品| 国产精品一区二区三区网站| 欧美少妇一区二区| 国产精品美女久久久久久久久久久 | 中文在线资源观看网站视频免费不卡| 国产伦精一区二区三区| 亚洲一级二级三级在线免费观看| 蜜桃视频一区二区三区在线观看| 99视频精品全部免费在线| 精品国产a毛片| 性做久久久久久久免费看| 9色porny自拍视频一区二区| 日韩免费性生活视频播放| 亚洲午夜激情av| 99精品热视频| 欧美激情自拍偷拍| 久草中文综合在线| 3atv一区二区三区| 亚洲一区二三区| 91免费观看视频| 欧美国产激情二区三区| 韩国理伦片一区二区三区在线播放| 精品视频在线免费| 亚洲综合在线第一页| 波多野结衣在线一区| 国产免费成人在线视频| 韩国一区二区视频| www国产精品av| 一区二区三区av电影| 91亚洲精品久久久蜜桃网站| 国产精品女同一区二区三区| 国产成人免费在线观看| 国产日韩欧美在线一区| 国产美女一区二区| 欧美性大战久久久| 91久久免费观看| 中日韩av电影| 国产**成人网毛片九色| 久久综合狠狠综合久久综合88| 久久精品国产精品亚洲精品| 欧美一区二区日韩| 日本不卡中文字幕| 亚洲精品中文在线影院| 色婷婷狠狠综合| 一区二区日韩电影| 91视频91自| 亚洲国产精品久久不卡毛片| 国产一区二区三区四| 欧美日韩精品一区二区天天拍小说| 久久综合色一综合色88| 久久精品国产亚洲a| 日韩美女视频一区二区在线观看| 精品综合久久久久久8888| 日韩美女天天操| 国产成人在线色| 亚洲欧美一区二区视频| 在线观看一区二区视频| 一区二区三区av电影| 51久久夜色精品国产麻豆| 麻豆91精品视频| 日本一区二区三区免费乱视频| 成人精品视频一区二区三区 | 欧美高清激情brazzers| 日韩激情一区二区| 欧美精品一区二区三区蜜臀| 国产精品资源网| 国产精品久久毛片a| 色丁香久综合在线久综合在线观看| 视频在线观看国产精品| 久久精品一区四区| 91亚洲国产成人精品一区二区三|