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

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

?? 18b201602.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电影在线观看| 欧美高清dvd| 亚洲人快播电影网| 国产乱码精品一区二区三区av| 色天天综合久久久久综合片| 精品国产一二三| 午夜精品福利一区二区三区av| 成人v精品蜜桃久久一区| 精品免费国产一区二区三区四区| 一区二区三区四区精品在线视频| 国产一二精品视频| 日韩视频在线你懂得| 亚洲主播在线播放| 色香蕉久久蜜桃| 国产精品传媒入口麻豆| 色欧美日韩亚洲| 国产欧美视频一区二区| 久久99久久99精品免视看婷婷 | 天堂蜜桃一区二区三区| 色久综合一二码| 亚洲欧美电影一区二区| bt欧美亚洲午夜电影天堂| 久久美女艺术照精彩视频福利播放 | 国产成人精品影视| 精品成a人在线观看| 免费成人在线网站| 日韩一区国产二区欧美三区| 日本视频一区二区| 欧美顶级少妇做爰| 视频在线观看一区二区三区| 欧美日韩一区在线观看| 亚洲成人一区在线| 欧美一区二区三区四区在线观看 | 久久精品国产亚洲高清剧情介绍| 欧美日韩精品一区视频| 五月激情综合网| 制服丝袜中文字幕亚洲| 奇米一区二区三区av| 欧美一区二区三区四区视频 | 国产一区二区三区免费观看| 久久久久久一二三区| 丰满少妇在线播放bd日韩电影| 国产欧美精品一区二区色综合| 成人av手机在线观看| 国产精品福利一区二区三区| 91国偷自产一区二区开放时间 | 亚洲第一精品在线| 91精品国产综合久久久蜜臀粉嫩 | 一区二区高清免费观看影视大全 | 色综合久久久网| 亚洲成va人在线观看| 日韩亚洲欧美在线| 欧美中文字幕一区| 亚洲高清视频的网址| 日韩小视频在线观看专区| 国模娜娜一区二区三区| 国产精品免费视频网站| 欧美视频一二三区| 另类专区欧美蜜桃臀第一页| 中文字幕欧美激情一区| 在线亚洲高清视频| 精品午夜一区二区三区在线观看| 亚洲国产电影在线观看| 欧美日韩一区成人| 国产福利视频一区二区三区| 亚洲综合一区二区精品导航| 日韩美女天天操| 91热门视频在线观看| 麻豆精品视频在线| 亚洲你懂的在线视频| 日韩欧美一级二级三级| av电影一区二区| 麻豆精品视频在线观看| 一区二区三区91| 国产午夜精品在线观看| 欧美福利视频一区| bt欧美亚洲午夜电影天堂| 久久精品久久综合| 亚洲黄色在线视频| 国产亚洲成年网址在线观看| 精品视频一区二区不卡| 不卡视频一二三| 久久综合综合久久综合| 亚洲国产精品久久人人爱| 午夜精品久久久久| 国产精品免费视频网站| 亚洲精品一区二区三区99| 欧美日韩精品欧美日韩精品一| 成人免费av在线| 久久国产尿小便嘘嘘尿| 五月婷婷综合网| 亚洲在线中文字幕| 国产精品成人免费| 国产喂奶挤奶一区二区三区| 欧美成人a∨高清免费观看| 欧美四级电影在线观看| 99久久精品费精品国产一区二区| 国产在线不卡一区| 精品亚洲成av人在线观看| 亚洲国产成人精品视频| 亚洲欧美日韩系列| 国产精品第13页| 中文无字幕一区二区三区| 欧美精品一区二区精品网| 欧美亚洲一区三区| 色婷婷国产精品| 色又黄又爽网站www久久| 99久久精品久久久久久清纯| 成人丝袜18视频在线观看| 夫妻av一区二区| 成人免费av在线| 成人黄色av网站在线| 成人的网站免费观看| 国产黄色91视频| 国产成人高清视频| av在线播放不卡| 91在线国产福利| 色欧美片视频在线观看| 色偷偷一区二区三区| 欧美主播一区二区三区| 欧美日韩国产首页| 日韩欧美专区在线| 久久一区二区视频| 国产精品卡一卡二| 亚洲激情图片小说视频| 亚洲午夜激情av| 久久精品国产亚洲一区二区三区| 韩国精品主播一区二区在线观看| 精品一区二区影视| 粉嫩aⅴ一区二区三区四区| 国产+成+人+亚洲欧洲自线| 91一区二区三区在线观看| 在线视频一区二区三| 91精品国产美女浴室洗澡无遮挡| 日韩一区二区在线播放| 久久精品亚洲精品国产欧美| 国产精品免费视频观看| 一区二区在线免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 韩国欧美国产1区| 色拍拍在线精品视频8848| 欧美一区二区私人影院日本| www激情久久| 一区二区三区欧美久久| 日韩电影在线观看网站| 丁香天五香天堂综合| 色欧美88888久久久久久影院| 日韩一区二区三| 国产精品免费免费| 日本免费新一区视频| 国产激情91久久精品导航| 91成人国产精品| 久久久久国产一区二区三区四区| 亚洲欧美日韩一区二区三区在线观看| 日韩激情视频网站| 福利视频网站一区二区三区| 欧美酷刑日本凌虐凌虐| 国产精品毛片高清在线完整版| 午夜精品一区在线观看| 丁香婷婷综合激情五月色| 欧美一区二区三区视频免费| 中文字幕一区在线观看| 日本中文一区二区三区| 色综合一个色综合亚洲| 久久综合成人精品亚洲另类欧美 | 欧美精品123区| 国产精品电影一区二区三区| 麻豆一区二区在线| 在线中文字幕一区二区| 欧美激情艳妇裸体舞| 毛片av一区二区三区| 欧美日韩高清不卡| 最好看的中文字幕久久| 国产精品亚洲综合一区在线观看| 欧美日韩精品一区二区在线播放| 亚洲国产精品v| 国产精品99久久久| 欧美日韩高清影院| 亚洲日本护士毛茸茸| 国产91丝袜在线播放0| 精品久久久久久最新网址| 亚洲成人一区在线| 日本高清不卡一区| 亚洲色图.com| 成人精品电影在线观看| 久久久久久久久蜜桃| 国内精品伊人久久久久av影院| 91精品国产综合久久久蜜臀粉嫩| 亚洲宅男天堂在线观看无病毒| 91视频在线观看| 国产精品高潮久久久久无| 成人av资源网站| 一区二区中文字幕在线| 91在线免费看| 亚洲色欲色欲www| 91国产免费看|