wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于18B20和單片機89C52的測溫程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年01月02日   【字體:
#include<reg51.h>
 
#include<intrins.h>
 
#include"KEY.h"
 
#include"IIC.h"
 
#define uint unsigned int
 
#define uchar unsigned char
 
#define IICADDR 0x20  //存儲地址
 
#define LEDIO    P0             //P0掃描段碼,P2掃描位選信號 
 
#define LEDCHIP   P2
 
sbit  DQ=P3^2; //18B20接口
 
sbit BEEP=P3^7; // 蜂鳴器接口
 
uchar i=0,mod=0; //掃描變量
 
uchar key1,key2=20;    //按鍵寄存
 
uchar Tmp_max=10,Tmp_min=5,Tmp;    //溫度寄存
 
uint k=0,p=0,num=5000;    //有關掃描的變量
 
/****************溫度小數部分用查表法*********************/
 
uchar code LedTab[14]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40,0x063};
 
 /***共陰數碼管段碼表  0    1    2    3    4    5    6    7    8    9    不亮  -    °  */
 
uchar code selchip[6]={0x01,0x02,0x04,0x08,0x10,0x20};//列掃描位選信號
 
uchar data temp_data[2]={0x00,0x00};//讀出溫度暫放
 
uchar data display[3][7]={{0x00,0x3f,0x3f,0x3f,0x3f,0x3f,0x00},  //顯示單元數據,共6個數據一個用作運算                   {0x00,0x3f,0x3f,0x3f,0x3f,0x76,0x00},  //顯示H設置最大值
 
  {0x00,0x3f,0x3f,0x3f,0x3f,0x38,0x00}};  //顯示L設置最小值
 
///////////////////////////////////////////////////////////////////////////////
 
void Delay_tmp(uchar time)   //延時10us  
 
{
 
while(time--)
 
{
 
_nop_();
 
_nop_();
 
}
 
}
 
void Delay_2s()    //延時兩秒開機檢測數碼管
 
{
 
    unsigned char a,b,c;
 
    for(c=23;c>0;c--)
 
        for(b=216;b>0;b--)
 
            for(a=184;a>0;a--);
 
}
 
/*********************定時器初始化***********************************/
 
void TimerInit()
 
{
 
TMOD=0x01; //定時器1定時掃描
 
ET0=1;
 
EA=1;
 
TH0=0xfc;
 
TL0=0xd8;
 
TR0=1;
 
}
 
/******************定時器中斷掃描程序**********************/
 
void timedis() interrupt 1
 
{
 
if(mod) //閃爍程序,提醒用戶正在設置
 
{
 
if(num--)  //自動退出閃爍,返回主界面
 
{
 
if(k++<190)
 
{
 
P2=0x00;
 
}
 
else
 
{
 
LEDIO=display[mod][i];
 
LEDCHIP=selchip[i];
 
if(i>=5)
 
i=0;
 
else 
 
i++;
 
if(p++>190)
 
{
 
p=0;
 
k=0;
 
}
 
}
 
}
 
else
 
mod=0;
 
}
 
else   //正常數碼管掃描顯示
 
{
 
LEDIO=display[mod][i];
 
LEDCHIP=selchip[i];
 
if(i>=5)
 
i=0;
 
else 
 
i++;
 
    }
 
TH0=0xfc;
 
TL0=0xd8;
 
}
 
/*********************DS18B20復位函數*****************************/
 
void Temp_Reset(void)
 
{
 
EA=0;
 
    CY = 1;
 
    while (CY)
 
    {
 
        DQ = 0;                     //送出低電平復位信號
 
        Delay_tmp(48);              //延時至少480us
 
        DQ = 1;                     //釋放數據線
 
        Delay_tmp(6);               //等待60us
 
        CY = DQ;                    //檢測存在脈沖
 
        Delay_tmp(42);              //等待設備釋放數據線
 
    }
 
EA=1;
 
}
 
/************************寫一字節********************/
 
void Temp_Write_byte(uchar val)
 
{
 
uchar i;
 
EA=0;
 
for (i=8;i>0;i--)
 
{
 
DQ=0;_nop_();_nop_();
 
val >>=1;; //寫數據
 
DQ=CY;
 
Delay_tmp(6); //延時66us等待采樣結束
 
DQ=1; //右移一位
 
}
 
EA=1;
 
}
 
/***********************讀一字節****************************/
 
char Temp_Read_byte()
 
{
 
uchar i;
 
uchar value=0;
 
EA=0;
 
for(i=0;i<8;i++)
 
{
 
value >>=1; //18B20右移一位
 
DQ=0;_nop_();_nop_();   //2us
 
DQ=1;_nop_();_nop_(); //2us
 
if(DQ) //讀出來的是1
 
value |=0x80;
 
Delay_tmp(6);    //66us
 
}
 
DQ=1;
 
EA=1;
 
return value;
 
}
 
/***********************讀出溫度函數*****************************************/
 
void Read_temp()
 
{
 
Temp_Reset();  //總線復位
 
Temp_Write_byte(0xcc);//發skip ROM命令
 
Temp_Write_byte(0xbe);//發讀命令
 
temp_data[0]=Temp_Read_byte();//讀低8位
 
temp_data[1]=Temp_Read_byte();//讀高8位
 
Temp_Reset();
 
Temp_Write_byte(0xcc);//發skip ROM命令
 
Temp_Write_byte(0x44); //溫度變換
 
while(!DQ);
 
}
 
/************************溫度數據處理函數************************************/
 
void Temp_Change()
 
{
 
bit n=0,n1=0,n2=0;
 
Tmp= ((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4); //記錄當前的溫度值,用于比較
 
if(temp_data[1]>127) // 溫度為負時
 
{
 
temp_data[1]=(256-temp_data[1]);  //負溫度求補碼
 
temp_data[0]=(256-temp_data[0]);
 
n=1;
 
}                                                                  
 
display[0][6]=temp_data[0]&0x0f;
 
display[0][4]=LedTab[(uchar)display[0][6]*5/8]; //小數部分
 
display[0][6]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);  //整數部分
 
display[0][1]=LedTab[display[0][6]/100]; //十六進制轉BCD碼
 
display[0][6]=display[0][6]%100;
 
display[0][2]=LedTab[display[0][6]/10]; //十位段碼
 
display[0][3]=LedTab[(display[0][6]%10)]|0x80;    //個位段碼帶小數點
 
display[0][5]=LedTab[12]; //顯示度
 
if(display[0][1]==LedTab[0]) //最高位為零時都不顯示
 
{
 
display[0][1]=LedTab[10];
 
if(display[0][2]==LedTab[0]) //次高位處理
 
{
 
display[0][2]=LedTab[10];
 
}
 
}                                                            
 
if(n)  //負溫度時最高位顯示“-”
 
display[0][0]=LedTab[11];
 
else 
 
display[0][0]=LedTab[10];
 
//////////////////////////////////////////////////處理鍵盤值
 
if(Tmp_max>127) //最高溫度上限處理
 
{
 
n1=1;
 
display[1][6]=(256-Tmp_max);  //負數去反
 
}
 
else
 
display[1][6]=Tmp_max;
 
display[1][1]=LedTab[display[1][6]/100];  //求最高位
 
display[1][6]=display[1][6]%100;   //求次高位
 
display[1][2]=LedTab[display[1][6]/10];
 
display[1][3]=LedTab[display[1][6]%10]|0x80;         //求個位段碼帶小數點
 
if(display[1][1]==LedTab[0]) //最高位為0不顯示
 
{
 
display[1][1]=LedTab[10];
 
if(display[1][2]==LedTab[0])  //最高位為0次高位為0不顯示
 
{
 
display[1][2]=LedTab[10];
 
}
 
}                                                            
 
if(n1)  //負溫度時最高位顯示“-”
 
display[1][0]=LedTab[11];
 
else 
 
{
 
display[1][0]=LedTab[10];   //不顯示正
 
}
 
//////////////////////////////////////////////////////////////
 
if(Tmp_min>127) //最低溫度下限處理
 
{
 
n2=1;
 
display[2][6]=(256-Tmp_min);  //取反
 
}
 
else
 
display[2][6]=Tmp_min;
 
display[2][1]=LedTab[display[2][6]/100];   //求最高位
 
display[2][6]=display[2][6]%100;    //求次高位
 
display[2][2]=LedTab[display[2][6]/10];
 
display[2][3]=LedTab[display[2][6]%10]|0x80;    //求個位段碼帶小數點
 
if(display[2][1]==LedTab[0]) //最高位為0不顯示
 
{
 
display[2][1]=LedTab[10];
 
if(display[2][2]==LedTab[0]) //最高位為0次高位為0不顯示
 
{
 
display[2][2]=LedTab[10];
 
}
 
}                                                            
 
if(n2)   
 
display[2][0]=LedTab[11];      //負溫度時最高位顯示“-”
 
else
 
{
 
display[2][0]=LedTab[10]; //不顯示正
 
}   
 
}
 
/***************************鍵盤掃描***************************************/
 
void Key_scanf()
 
{
 
key1=KeyTab[KeyRvs()]; //讀取鍵盤值
 
if(key2!=key1)   //防止連續跳動,釋放按鍵
 
{
 
if(key1=='*') //mod選擇
 
{
 
mod=mod%2+1;
 
num=5000;
 
}
 
if((key1=='0')&&(mod)) //按鍵加
 
{
 
num=5000;
 
if(mod==1)
 
{
 
if(Tmp_max==125) //最高上限溫度
 
Tmp_max=202;  //最低溫度下限
 
else
 
Tmp_max++;
 
}
 
if(mod==2)
 
{
 
if(Tmp_min==125)   //最高上限溫度
 
Tmp_min=202;  //最低溫度下限
 
else
 
Tmp_min++;
 
}
 
}
 
if((key1=='#')&&(mod))   //按鍵減
 
{
 
num=5000;
 
if(mod==1)
 
{
 
if(Tmp_max==202)      //最低溫度下限
 
Tmp_max=125;   //最高上限溫度
 
else
 
Tmp_max--;
 
}
 
if(mod==2)
 
{
 
if(Tmp_min==202)      //最低溫度下限
 
Tmp_min=125; //最高上限溫度
 
else
 
Tmp_min--;
 
}
 
}
 
if(key1=='D')    //確定以后把修改的數據保存起來
 
{
 
mod=0;  //恢復正常顯示
 
EA=0;   //IIC寫時候保護
 
while(!Write_Byte_iic(IICADDR,0xaa));      //寫判斷是否設置標志
 
while(!Write_Byte_iic(IICADDR+2,Tmp_max));   //寫溫度上限
 
while(!Write_Byte_iic(IICADDR+4,Tmp_min));   //寫溫度下限
 
EA=1;
 
}
 
}
 
key2=key1;   //鍵值保存。釋放按鍵用
 
}
 
/**************************蜂鳴器報警***************************/
 
void Beep()
 
{
 
char a,b,c;
 
a=Tmp;b=Tmp_max;c=Tmp_min;
 
if((a>=b)||(a<c))    //比較上下限溫度,
 
BEEP=~BEEP;    //開蜂鳴器
 
else
 
BEEP=1;    //關閉蜂鳴器
 
}
 
///////////////////////////////////////////////////////////
 
main()
 
{
 
if(Read_Byte_iic(IICADDR)==0xaa) //判斷是否修改過,若是修改過則讀取溫度上下限
 
{
 
Tmp_max=Read_Byte_iic(IICADDR+2);  //讀取報警溫度上限
 
Tmp_min=Read_Byte_iic(IICADDR+4);  //讀取報警溫度下限
 
}
 
Temp_Reset();   //開機先轉換一次
 
Temp_Write_byte(0xcc);                 //Skip ROM
 
Temp_Write_byte(0x44);   //發轉換命令
 
while(!DQ);
 
TimerInit();
 
for(i=0;i<6;i++)
 
{
 
display[0][i]=LedTab[8];
 
}   //開機顯示“888888”
 
Delay_2s();              //顯示兩秒               
 
while(1)
 
{   //讀出溫度數據
 
  Read_temp();   //處理溫度數據
 
  Temp_Change(); //溫度數據轉換
 
Key_scanf(); //鍵盤掃描
 
Beep(); //蜂鳴器掃描;
 
  }
 
}
 
//////////////////////////////////////////////////////////
 
頭文件與電子鐘類似
關閉窗口

相關文章

欧美理论电影| 97精品久久久午夜一区二区三区| 四虎影视国产在线视频| 免费福利在线| 在线观看免费观看在线| 蜜桃福利午夜精品一区| 日韩免费三级| 欧美在线一级视频| 欧美一二三区精品| 中文字幕亚洲一区二区va在线| 欧美福利在线| 欧美国产日韩电影| yourporn在线观看视频| 91高清视频| 天堂在线精品视频| 欧美日韩国产综合在线| 97视频在线播放| 日韩av影视在线| 亚洲国产精品久久一线不卡| 国产精品66部| 好吊一区二区三区| 偷拍自拍一区| 欧美va在线| 国产在线观看免费麻豆| 激情婷婷丁香| 91av日本| 亚洲视频网站在线| 三级网站在线播放| 国产农村妇女精品一区| 青青草久久伊人| 97超碰人人澡| 欧美亚州在线观看| 亚洲wwwav| 成人在线综合网| 天堂一区二区在线| 日韩精品二区| 国产精品一区二区三区av | 国产999在线观看| 在线观看国产精品91| 欧美精品久久久久久久多人混战| 亚洲伦在线观看| 久久这里只有精品6| 另类小说视频一区二区| 91久久在线| 三区四区不卡| 噜噜噜天天躁狠狠躁夜夜精品 | 91麻豆精品视频| 秋霞午夜鲁丝一区二区老狼| 精品91在线| 欧美极品影院| 免费在线国产视频| yw在线观看| 亚洲网友自拍| 神马久久影视大全| 久久小说免费下载| 超碰色偷偷男人的天堂| 三级福利视频| 三级黄色视屏| 毛片网站免费| 狠狠操五月天| 成看片vvv222| fc2ppv在线观看| 51免费午夜啪啪| av电影在线观| 狠狠激情五月综合婷婷俺| 成年网在线观看免费观看网址| 99久久99久久免费精品小说| 国产精品伦一区二区三区级视频频 | 资源视频在线播放免费| 久久久久成人精品无码| 国产主播av在线| 中文字幕第69页| 黑人操日本美女| 国产精品免费人成网站酒店| 久久久久久久久毛片| 日本a级片视频| 国产在线观看免费av| 久久久久人妻一区精品色欧美| 69xx绿帽三人行| av天堂永久资源网| 男人添女荫道口图片| 免费看日本毛片| 成人一区二区免费视频| 高清无码一区二区在线观看吞精| 91视频 - 88av| 91久久国产精品91久久性色| 91麻豆蜜桃| 成人h猎奇视频网站| 国产精品电影观看| 国产精品国产三级国产专播精品人 | 国产精品女视频| 2021久久精品国产99国产精品| 久久视频在线直播| 成人av在线观| 国产乱码精品一区二区三区忘忧草 | 国产在线资源| 女人偷人在线视频| 国产日产一区二区| 国产成人高清精品| av免费在线观看网址| av免费在线免费| 黄色羞羞视频在线观看| www.综合网.com| 中国色在线日|韩| 91精品短视频| 亚洲素人在线| 成人毛片免费看| 国产精品99久久久久久动医院| 五月激情综合| 国产视频一区免费看| 欧美亚洲三区| 久久嫩草精品久久久精品| 久久久噜噜噜久噜久久综合| 最新国产の精品合集bt伙计| 亚洲成人激情自拍| 欧美日韩中文字幕一区| 日韩视频免费直播| 日韩国产欧美精品在线| 日韩中文字幕不卡视频| 97香蕉久久超级碰碰高清版 | 国产欧美一区在线| 欧美激情一区二区三区| 亚洲综合在线免费观看| 亚洲永久精品大片| 亚洲国产精品视频在线观看| 日韩中文字幕在线看| 97视频色精品| 国产无套精品一区二区| 正在播放一区| 欧美极品欧美精品欧美| 国精产品一区一区三区免费视频| www.av视频| 一级黄色大片免费| 天堂中文在线免费观看| 黑吊大战白xxxxxx| 一起操在线观看| 91桃色在线观看| 91在线一区| 国产精品不卡| 蜜臀精品久久久久久蜜臀| 日韩成人精品一区| 久久久久久黄| 欧美韩日一区二区三区四区| 一本到一区二区三区| 在线精品91av| 国产在线a不卡| 久久艳妇乳肉豪妇荡乳av| 少妇黄色一级片| 伊人网在线视频观看| 黄网在线观看视频| 最好2018中文免费视频| 高清中文字幕在线| 男女免费观看在线爽爽爽视频| 亚洲大奶少妇| 香蕉国产精品| 国产亚洲精品7777| 欧美最新大片在线看| 爽爽爽爽爽爽爽成人免费观看| 国产精品久久久久久久久久99 | 欧美精品电影免费在线观看| 国产chinese精品一区二区| 欧美乱妇一区二区三区不卡视频| 日韩专区在线观看| 国产日产亚洲精品| 久久久久久久久久久综合| 国产成人精品无码片区在线| 国产中文字幕视频| 精品卡一卡卡2卡3网站| 国内精品卡一卡二卡三新区| 天堂电影一区| 国产精品福利在线观看播放| 国产精品香蕉一区二区三区| 精品国产乱码久久久久久婷婷| 一区二区欧美久久| 成人精品一二区| av7777777| 日本三级一区二区| 免费国产高清| porn视频在线观看| 国产精品15p| 久色婷婷小香蕉久久| 婷婷亚洲久悠悠色悠在线播放| 一区二区三区视频观看| 亚洲影院色无极综合| 女女调教被c哭捆绑喷水百合| 午夜一区二区三区四区| 国卡一卡二卡三免费网站| 色yeye免费人成网站在线观看| 久久99国内| 99视频热这里只有精品免费| 91精品国产综合久久久蜜臀粉嫩| 青青草99啪国产免费| 日本电影一区二区三区| jizz日本在线播放| 中文字幕2022永久在线| 经典三级在线| 一道本一区二区三区| 99久久777色| 精品国产91乱码一区二区三区| 国产精品嫩草影院久久久| 日韩极品视频在线观看| 国产香蕉在线视频| h片在线观看视频| 欧美一级在线| 久久国产视频网| 欧美日韩一区二区三区四区五区| 国产精品福利小视频| 韩国中文字幕av| 男人插女人下面免费视频| 夜夜爽妓女8888视频免费观看| 在线视频xx| 国产激情精品一区二区三区| 黄网站免费久久| 日韩精品中午字幕| 国外成人在线视频网站| 亚洲做受高潮无遮挡| www.四虎网站| 黄色在线网站噜噜噜| 欧美成人嫩草网站| 欧美日韩高清一区二区不卡| 久久视频在线播放| 少妇高潮毛片色欲ava片| 欧美性猛交bbbbb精品| 免费亚色电影在线观看| 特黄特色欧美大片| 国产精品视频在线看| 国产一区二区三区欧美| 三年中文高清在线观看第6集| sm捆绑调教视频| www.色香蕉| av自拍一区| 久久爱www.| 欧美国产精品专区| 欧美成人精品在线| 高清在线观看免费| aaaa一级片| 欧美一区久久久| 国产成人综合在线| 午夜精品www| av无码精品一区二区三区| 亚洲色欧美另类| 欧美私密网站| 国产成人av一区二区三区在线| 亚洲欧美日韩中文视频| youjizz.com在线观看| 怡红院男人的天堂| 欧美jizz18性欧美| 日韩电影免费一区| 精品国产一区二区三区忘忧草 | 国产精品天天干| 狠狠操五月天| 亚欧日韩另类中文欧美| 在线视频综合导航| 欧美一区免费视频| 99久久99久久久精品棕色圆| 色呦呦视频在线观看| 国产精品综合网| 欧美成人全部免费| 亚洲欧美另类动漫| 免费三级毛片| 成人看的视频| 91精品国产综合久久久蜜臀图片| 中文字幕日韩一区二区三区| 国产精品污视频| jzzjzzjzz亚洲成熟少妇| 国产成人高清视频| 久久久久久久久久久人体| 亚洲AV无码久久精品国产一区| 国产亚洲精品久久久网站好莱| 天堂久久av| 性久久久久久久久久久久| 亚洲一区三区| 男女啪啪免费体验区| 91亚洲精品在看在线观看高清| 偷窥国产亚洲免费视频| 狠狠色综合网站久久久久久久| 91狠狠综合久久久| 一本一道波多野毛片中文在线| 久久不射网站| 日韩亚洲第一页| 曰本三级日本三级日本三级| 国内a∨免费播放| 老司机亚洲精品一区二区| 岛国av午夜精品| 亚洲va韩国va欧美va精四季| 亚洲视频久久久| 韩日成人影院| 亚洲黄色在线视频| 99免费在线视频观看| 在线免费观看视频网站| 性爽视频在线| 亚洲欧美一区二区在线观看| 亚洲欧美日韩国产yyy| 国产露脸国语对白在线| 亚洲伊人精品酒店| 有坂深雪av一区二区精品| 欧美aaaaa喷水| www.综合色| 高潮久久久久久久久久久久久久| 五月激情丁香一区二区三区| 亚洲人成人77777线观看| 噜噜噜久久,亚洲精品国产品| 自拍偷拍亚洲| 欧美色视频日本版| 国产欧美精品aaaaaa片| 九九热精品在线视频| 国产精品密蕾丝视频下载| 欧美一区二区福利在线| 免费av网址在线| www.毛片| 午夜久久久精品| 欧美日韩一区二区电影| 精品不卡视频| 久草福利在线| 精品国产99久久久久久| 午夜性色福利影院| 成人勉费视频| 天天影视网天天综合色在线播放| 超碰成人在线免费观看| 78国产伦精品一区二区三区| 欧美日韩爆操| 欧美黄网免费在线观看| 综合五月激情网| 色是在线视频| 欧美天堂在线观看| 国产免费黄视频| 国产在线视频你懂| 国产成人aaa| 精品久久中出| 姝姝窝人体www聚色窝| 红杏视频成人| 欧美性开放视频| 国产又黄又嫩又滑又白| 精品亚洲成a人片在线观看| 国产女人aaa级久久久级| 欧美久久久久久一卡四| 国产在线视频自拍| 中国女人久久久| 国产精品久久久久久久久男 | 国产精品一区视频| 黄色av网站免费在线观看| 激情五月综合| 精品少妇一区二区30p| 吴梦梦av在线| xx免费视频| 不卡的av网站| 亚洲欧洲精品在线| 日本黄视频网站| 久久综合导航| 日本在线观看一区二区三区| 国产高清免费视频| 久久久亚洲人| 91在线免费看片| 国产高清在线视频| 国产一区二区在线观看免费| 欧美精品与人动性物交免费看| 国产精品国产三级国产试看| 国产亚洲精品自拍| 91午夜理伦私人影院| 严阵以待中文社区| 蜜桃视频一区| 国产成人免费观看| 影音av资源网| 国产视频一区不卡| 日本丰满少妇xxxx| 日韩专区一区二区| 亚洲乱码精品一二三四区日韩在线| 国产老头和老头xxxx×| 色网在线观看| 欧美成人福利视频| 欧美极品视频在线观看| 国产亚洲精品美女久久久久久久久久| 欧美第一淫aaasss性| 999av视频| 都市激情在线视频| 在线观看网站黄不卡| 亚洲熟女乱综合一区二区三区| 另类中文字幕国产精品| 亚洲欧美另类人妖| 999久久久久久| 国产一区成人| 欧美一区激情视频在线观看| av一线二线| 亚洲欧洲国产专区| 久国产精品视频| 国产夫妻在线| 亚洲男人天堂2024| 亚欧视频在线观看| 永久亚洲成a人片777777| 国产91精品入口17c| 1插菊花综合| 亚洲自拍偷拍综合| 日日操免费视频| 永久av在线| 亚洲丁香婷深爱综合| 国产一级做a爰片在线看免费| 亚洲性色视频| 美国av一区二区三区| 伊人资源视频在线| 日韩丝袜美女视频|