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

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

?? temper.c

?? 用89C51單片機,LCD1602,建成的數(shù)字溫度計.
?? C
字號:
#include < reg51.h >
#include < intrins.h >

#define uchar unsigned char
#define uint  unsigned int

sbit DQ = P3^5 ;  //定義DS18B20端口DQ  
sbit BEEP=P3^3  ; //蜂鳴器驅(qū)動線

bit presence  ;

sbit LCD_RS = P3^7 ;             
sbit LCD_RW = P3^6 ;
sbit LCD_EN = P3^4 ;

#define  LCD_DATA   P2	 	//LCD
uchar code  cdis1[ ] = {"   DS18B20 OK   "} ;
uchar code  cdis2[ ] = {"  TEMP:    .  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忙狀態(tài)                                                   */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。   */
/******************************************************************/ 
bit lcd_busy()
 {                          
    bit result ;
    LCD_RS = 0 ;
    LCD_RW = 1 ;
    LCD_EN = 1 ;
    delayNOP() ;
    result = (bit)(LCD_DATA&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_() ; 
    LCD_DATA = cmd ;
    delayNOP() ;
    LCD_EN = 1 ;
    delayNOP() ;
    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 ;
    LCD_DATA = dat ;
    delayNOP() ;
    LCD_EN = 1 ;
    delayNOP() ;
    LCD_EN = 0 ; 
}


/*  LCD初始化設定                                                  */
/*******************************************************************/
void lcd_init()
{ 
    delay1(15) ;   
    lcd_wcmd(0x01) ;      //清除LCD的顯示內(nèi)容            
    lcd_wcmd(0x38) ;      //16*2顯示,5*7點陣,8位數(shù)據(jù)
    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的顯示內(nèi)容
    delay1(5) ;
}

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

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

/*us級延時函數(shù)                                        */
/*******************************************************************/

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
}


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

/* 寫一個字節(jié)                                         */
/*******************************************************************/
 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位 
}

/* 數(shù)據(jù)轉換與溫度顯示                                              */
/*******************************************************************/
 Disp_Temperature()
{
  display[4]=temp_data[0]&0x0f ;
  display[0]=ditab[display[4]]+0x30 ;     //查表得小數(shù)位的值
  
  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]) ;        //百位數(shù)顯示 
     lcd_pos(0x49) ;             
     lcd_wdat(display[2]) ;        //十位數(shù)顯示 
  lcd_pos(0x4a) ;             
     lcd_wdat(display[1]) ;        //個位數(shù)顯示 
  lcd_pos(0x4c) ;             
     lcd_wdat(display[0]) ;        //小數(shù)位數(shù)顯示 
}  

/*******************************************************************/
/* 蜂鳴器響一聲                 */
/*******************************************************************/
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++ ;
     }
}


/* 主函數(shù)     */
/************************************/
void main()
 {	  delay1(10) ;
     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一区二区在线播放| 国产福利精品导航| 在线免费精品视频| 精品国产sm最大网站| 亚洲视频一区二区免费在线观看| 亚洲成人av免费| 国产一区二区三区美女| 色嗨嗨av一区二区三区| 精品久久久久久久久久久久久久久久久 | 日韩和欧美一区二区| 国产乱理伦片在线观看夜一区| 一本色道久久综合亚洲精品按摩| 欧美色综合久久| 久久九九全国免费| 亚洲一区二区三区四区在线免费观看 | 人禽交欧美网站| 激情小说亚洲一区| 91官网在线观看| 国产欧美日韩在线| 日韩综合一区二区| 91丨九色丨黑人外教| 欧美mv和日韩mv的网站| 国产精品无码永久免费888| 日韩精品福利网| 91年精品国产| 久久久美女艺术照精彩视频福利播放| 亚洲精选在线视频| 国产成人综合自拍| 日韩精品一区二区三区视频播放 | 国模大尺度一区二区三区| 精品一区二区三区视频在线观看 | 国产一区91精品张津瑜| 欧美美女一区二区| 亚洲六月丁香色婷婷综合久久| 国产麻豆精品在线观看| 欧美一级欧美三级| 亚洲综合色成人| 91麻豆.com| 亚洲少妇最新在线视频| 国产曰批免费观看久久久| 日韩精品一区二| 美腿丝袜亚洲三区| 欧美一区三区二区| 综合亚洲深深色噜噜狠狠网站| 国产98色在线|日韩| 亚洲精品在线观看网站| 亚洲va韩国va欧美va精品| 成人免费视频播放| 国产精品第13页| 成人av电影在线播放| 亚洲国产成人在线| www.久久精品| 久久精品人人做人人爽人人| 国产一区中文字幕| 久久在线观看免费| 成人国产精品免费网站| 久久久精品国产免费观看同学| 韩国v欧美v日本v亚洲v| 久久婷婷成人综合色| 国产一区二区三区免费观看| 欧美一区二区三区日韩| 老司机免费视频一区二区| 日韩一区二区中文字幕| 精品亚洲porn| 中文字幕第一区二区| 91女厕偷拍女厕偷拍高清| 亚洲一本大道在线| 欧美一三区三区四区免费在线看 | 欧美va在线播放| 国产精品18久久久久久vr| 国产日韩亚洲欧美综合| jiyouzz国产精品久久| 亚洲女人小视频在线观看| 一本一本大道香蕉久在线精品| 亚洲码国产岛国毛片在线| thepron国产精品| 亚洲国产一区二区在线播放| 5月丁香婷婷综合| 激情国产一区二区| 中文字幕日韩一区| 欧美军同video69gay| 国产精品一区二区在线播放| 99久久99久久综合| 久久久综合精品| 欧美伦理影视网| 91在线播放网址| 国产精品一区二区在线观看不卡 | 欧美精品久久99| 成人av电影在线| 国产激情91久久精品导航| 日韩精品一二三| 一区二区三区中文字幕精品精品| 久久―日本道色综合久久| 欧美肥大bbwbbw高潮| 欧美羞羞免费网站| 99久久久精品| 成人激情动漫在线观看| 国产一区二区三区四区五区入口 | 亚洲乱码日产精品bd| 国产女人水真多18毛片18精品视频| 欧美一区三区四区| 欧美精品丝袜久久久中文字幕| 色婷婷激情久久| 色中色一区二区| 99re热视频精品| av不卡免费电影| 成人aa视频在线观看| 丰满放荡岳乱妇91ww| 国产aⅴ综合色| 懂色一区二区三区免费观看| 国产精品一品视频| 国产黄色精品视频| 成人中文字幕合集| 国产电影一区二区三区| 国产91在线观看| 成人黄色在线网站| 不卡电影免费在线播放一区| 成人精品一区二区三区四区| 国产精品亚洲综合一区在线观看| 国产高清亚洲一区| 不卡的电视剧免费网站有什么| k8久久久一区二区三区| 欧美在线观看一区二区| 欧美狂野另类xxxxoooo| 欧美一区二区三区喷汁尤物| 日韩欧美色综合| 久久久不卡影院| 亚洲啪啪综合av一区二区三区| 亚洲色图色小说| 亚洲成a人片在线不卡一二三区| 亚洲va中文字幕| 国内精品伊人久久久久av一坑 | 精品一区二区三区久久久| 国产一二精品视频| 99久久久精品免费观看国产蜜| 欧美午夜精品理论片a级按摩| 欧美精品一卡二卡| 精品国产精品一区二区夜夜嗨| 国产精品美女久久久久高潮| 一区二区三区免费观看| 久久精品国产亚洲高清剧情介绍| 粉嫩一区二区三区在线看| 欧美在线视频不卡| 精品噜噜噜噜久久久久久久久试看| 国产婷婷一区二区| 一个色在线综合| 经典一区二区三区| www.成人网.com| 日韩精品专区在线影院重磅| 国产欧美一区视频| 亚洲一区在线观看视频| 国产米奇在线777精品观看| 色噜噜久久综合| 久久久久久久综合色一本| 亚洲裸体xxx| 国产精品99久久久久久有的能看| 欧美午夜电影一区| 久久蜜桃香蕉精品一区二区三区| 欧美不卡一二三| 精品系列免费在线观看| 一本色道久久综合狠狠躁的推荐| 久久午夜电影网| 91麻豆精品91久久久久同性| 国产午夜亚洲精品理论片色戒| 亚洲香肠在线观看| 国产成人av资源| 欧美一区二区三区婷婷月色| 国产日产欧产精品推荐色 | 国产成a人亚洲精| 欧美在线色视频| 中文在线资源观看网站视频免费不卡| 亚洲国产成人91porn| 99麻豆久久久国产精品免费| 337p粉嫩大胆色噜噜噜噜亚洲| 夜夜爽夜夜爽精品视频| 成人综合在线观看| 精品久久一区二区| 日韩av二区在线播放| 日本精品裸体写真集在线观看| 国产欧美日韩久久| 精品无码三级在线观看视频| 欧美一区二区三区四区久久| 亚洲综合激情网| 91免费版在线| 成人听书哪个软件好| 亚洲午夜久久久久久久久电影院| 国产乱子伦一区二区三区国色天香| 欧美日韩国产精品成人| 色婷婷av一区二区三区之一色屋| 久久久777精品电影网影网| 毛片av一区二区| 91麻豆精品国产91久久久| 亚洲在线观看免费| 在线观看亚洲一区| 亚洲乱码一区二区三区在线观看| 91视频一区二区三区| 中文字幕日本不卡|