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

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

?? ds18b20-lcd1602-c51.c

?? 單片機控制DS18B20溫度控制1602LCD顯示程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************
/*                                                                *
/* OK300C單片機開發系統演示程序 							      *
/*                                                                *
/* 版本: V2.0 (2008/6/20)                                       *
/* 作者: 高山流水 (Email: aoke999@sohu.com)                      *
/* 網站: www.aokemcu.cn(奧科電子)                                *
/*                                                                *
/*                                                                *
/******************************************************************/

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

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

bit presence,flag;
bit compare_th,compare_tl,alarm_on_off=0,temp_th,temp_tl;

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



uchar code  cdis1[ ] = {"  READ_ROMCORD  "};
uchar code  cdis2[ ] = {"                "};
uchar code  cdis3[ ] = {" DS18B20  ERR0R "};
uchar code  cdis4[ ] = {"  PLEASE CHECK  "};
uchar code  cdis5[ ] = {" TEMP:          "};
uchar code  cdis6[ ] = {"TH:     TL:     "};

unsigned char data  temp_data[2] = {0x00,0x00};
unsigned char data  temp_alarm[2] = {0x20,0x10};
unsigned char data  display[5] =   {0x00,0x00,0x00,0x00,0x00}; //溫度值顯示
unsigned char data  display1[3] =  {0x00,0x00,0x00}; //溫度報警值顯示

unsigned char data  RomCode[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
 
unsigned char code  mytab1[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};
unsigned char code  mytab2[8] = {0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00};//小喇叭
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

unsigned char Temp,temp_comp,timecount,count;
unsigned char  crc;
void Disp_Temp_alarm(uchar addr,uchar num);
void  spk(uchar addr);
void set_temp_alarm();
void temp_compare();
void beep();
/*******************************************************************/
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; 
}

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

/*******************************************************************/
/*                                                                 */
/*  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);

	writetab();               //自定義字符寫入CGRAM
}

/*******************************************************************/
/*                                                                 */
/*  設定顯示位置                                                   */
/*                                                                 */
/*******************************************************************/

void lcd_pos(uchar pos)
{                          
  lcd_wcmd(pos | 0x80);  //數據指針=80+地址變量
}

/*******************************************************************/
/*                                                                 */
/*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;
  }
}

/*******************************************************************/
/*                                                                 */
/* 溫度報警值寫入DS18B20                                           */
/*                                                                 */
/*******************************************************************/
Write_Temperature_alarm(void)
{
    Init_DS18B20();
  
    WriteOneChar(0xCC);           //跳過讀序號列號的操作 
    WriteOneChar(0x4e);           //將設定的溫度報警值寫入 DS18B20
	WriteOneChar(temp_alarm[0]);  //寫TH
	WriteOneChar(temp_alarm[1]);  //寫TL
    WriteOneChar(0x7f);           //12位精確度
 
	Init_DS18B20();
    WriteOneChar(0xCC);           //跳過讀序號列號的操作 
    WriteOneChar(0x48);           //把暫存器里的溫度報警值拷貝到EEROM
}

/*******************************************************************/
/*                                                                 */
/* 讀取64位序列碼                                                  */
/*                                                                 */
/*******************************************************************/
 Read_RomCord(void)
{
   unsigned char j;
   Init_DS18B20();
  
   WriteOneChar(0x33);          // 讀序列碼的操作
   for (j = 0; j < 8; j++)
   {
     RomCode[j] = ReadOneChar() ; 
   }
}

/*******************************************************************/
/*                                                                 */
/*DS18B20的CRC8校驗程序                                            */
/*                                                                 */
/*******************************************************************/
uchar CRC8() 
{ 
   uchar i,x; uchar crcbuff;
   
   crc=0;
   for(x = 0; x <8; x++)
   {
    crcbuff=RomCode[x];
    for(i = 0; i < 8; i++) 
     { 
      if(((crc ^ crcbuff)&0x01)==0) 
      crc >>= 1; 
       else { 
              crc ^= 0x18;   //CRC=X8+X5+X4+1
              crc >>= 1; 
              crc |= 0x80; 
            }         
      crcbuff >>= 1;       
	 }
   }
     return crc;	
}
/*******************************************************************/
/*                                                                 */
/* 數據轉換與顯示                                                  */
/*                                                                 */
/*******************************************************************/

 Disp_RomCode(uchar H_num)
{
   uchar j;
   
   if(H_num==1)
   lcd_pos(0x00); 
   if(H_num==2)
   lcd_pos(0x40);
     
   for(j=0;j<8;j++)
   {
    Temp = RomCode[j];

    display[0]=((Temp&0xf0)>>4);
    if(display[0]>9)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷国产在线综合| 99re8在线精品视频免费播放| 国产综合久久久久久鬼色 | 成人福利电影精品一区二区在线观看| 色综合天天性综合| 精品播放一区二区| 亚洲综合视频在线观看| 国产精品77777| 3751色影院一区二区三区| 国产精品私人影院| 欧美丝袜丝交足nylons| 亚洲精品在线免费播放| 亚洲成人免费在线| 一本大道av伊人久久综合| 久久久久88色偷偷免费| 日韩成人精品在线| 欧美日韩视频一区二区| 亚洲天堂精品视频| 成人免费视频国产在线观看| 欧美日本一道本在线视频| 亚洲女与黑人做爰| 99re这里都是精品| 国产精品久线在线观看| 国产福利电影一区二区三区| 日韩午夜电影在线观看| 午夜久久久影院| 在线观看一区不卡| 一区二区三区中文字幕| 色呦呦网站一区| 国产精品乱人伦中文| 国产mv日韩mv欧美| 国产丝袜在线精品| 成人综合在线观看| 国产欧美日韩另类一区| 国产真实乱子伦精品视频| 日韩免费观看2025年上映的电影| 午夜精品久久一牛影视| 欧美久久久久免费| 秋霞国产午夜精品免费视频| 91精品国产综合久久小美女| 强制捆绑调教一区二区| 欧美一区二区播放| 免费人成精品欧美精品| 日韩欧美国产成人一区二区| 久久99精品久久久久| 亚洲欧美激情在线| 91麻豆蜜桃一区二区三区| 一区在线播放视频| 欧美综合视频在线观看| 日韩制服丝袜av| 欧美成人精品1314www| 国产一区二区日韩精品| 国产精品久久久久一区二区三区共| 成人18视频在线播放| 亚洲综合色噜噜狠狠| 91精品麻豆日日躁夜夜躁| 国产老妇另类xxxxx| 国产精品女同一区二区三区| 91福利精品视频| 日韩中文字幕一区二区三区| 欧美成人女星排名| 一本久道中文字幕精品亚洲嫩| 亚洲第一在线综合网站| 久久久美女毛片| 91美女片黄在线观看91美女| 国产女人水真多18毛片18精品视频| 91麻豆视频网站| 美女精品一区二区| 亚洲色图制服诱惑| 欧美大片日本大片免费观看| av一二三不卡影片| 日本成人在线看| 国产精品高潮呻吟| 日韩一级免费一区| 99久久精品99国产精品| 日韩国产精品久久久久久亚洲| 久久久亚洲综合| 亚洲日本va在线观看| 91精品欧美福利在线观看| 懂色av一区二区三区免费观看| 亚洲成人黄色小说| 国产精品毛片久久久久久久| 4438x亚洲最大成人网| 99精品欧美一区二区蜜桃免费| 午夜欧美电影在线观看| 国产精品二区一区二区aⅴ污介绍| 欧美男生操女生| 91亚洲精品乱码久久久久久蜜桃 | 中文字幕成人av| 337p亚洲精品色噜噜狠狠| 丁香六月综合激情| 美女在线视频一区| 亚洲资源中文字幕| 亚洲欧美在线视频观看| 久久综合九色综合欧美98| 欧美丝袜丝nylons| 色一区在线观看| 成人一区在线看| 国产一区二区三区国产| 日本不卡中文字幕| 亚洲午夜久久久| 国产精品久久久久永久免费观看 | 日韩免费高清电影| 欧美日本在线一区| 欧美性受极品xxxx喷水| 91视频免费看| 一本大道久久a久久综合| 成人免费高清视频在线观看| 国产乱码字幕精品高清av| 美国十次综合导航| 麻豆国产一区二区| 另类综合日韩欧美亚洲| 蜜桃av噜噜一区| 秋霞国产午夜精品免费视频| 肉肉av福利一精品导航| 亚洲va国产天堂va久久en| 亚洲国产一区二区a毛片| 一区二区免费在线播放| 亚洲影视资源网| 亚洲成人中文在线| 日本成人在线一区| 九一久久久久久| 国产裸体歌舞团一区二区| 国产一区中文字幕| 国产99久久久久久免费看农村| 国产精品自产自拍| 成人a免费在线看| 色婷婷综合久久| 欧美日韩精品三区| 日韩精品一区二区三区在线| 欧美成人精品福利| 国产精品久久久久久一区二区三区 | 91精品免费在线观看| 国产无人区一区二区三区| 国产精品系列在线| 亚洲欧美偷拍卡通变态| 亚洲成人手机在线| 国产精选一区二区三区| 成人一级片在线观看| 91看片淫黄大片一级在线观看| 日本韩国视频一区二区| 日韩一卡二卡三卡四卡| 国产亚洲欧美日韩在线一区| 亚洲欧美怡红院| 首页国产欧美日韩丝袜| 韩国欧美国产一区| 色综合视频在线观看| 5858s免费视频成人| 国产婷婷色一区二区三区在线| 综合久久久久综合| 免费看日韩a级影片| 国产盗摄视频一区二区三区| 色综合天天综合网国产成人综合天| 欧美日韩中文字幕一区| 久久精品夜色噜噜亚洲aⅴ| 亚洲精品第一国产综合野| 麻豆久久久久久| 91日韩一区二区三区| 日韩精品一区二区三区中文不卡 | 国产精品一区久久久久| 色欧美片视频在线观看| 日韩欧美国产一区二区三区 | 亚洲国产色一区| 国产69精品久久久久毛片| 欧美三级乱人伦电影| 欧美激情综合在线| 免费国产亚洲视频| 欧美性受极品xxxx喷水| 欧美韩国一区二区| 国产专区欧美精品| 在线成人av影院| 亚洲精品福利视频网站| 国产成人在线视频免费播放| 91精品久久久久久蜜臀| 有码一区二区三区| 成人黄色在线网站| 久久久91精品国产一区二区精品| 亚洲高清免费视频| 99久久99久久精品国产片果冻 | 欧美成va人片在线观看| 亚洲精品福利视频网站| 成人综合婷婷国产精品久久蜜臀| 欧美一区二区三区四区在线观看| **欧美大码日韩| 成人性生交大片| 国产亚洲精品aa| 精品一区二区影视| 欧美一级精品大片| 日韩黄色免费电影| 欧美区视频在线观看| 一区二区三区在线视频免费| 高清视频一区二区| 久久久一区二区| 国产精品亚洲专一区二区三区| 欧美一区二区三区影视| 日韩高清欧美激情| 欧美一区二区女人| 丝袜美腿一区二区三区| 欧美精品自拍偷拍动漫精品| 亚洲午夜一区二区三区|