久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3772|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)DS18b20溫度傳感器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:391775 發(fā)表于 2018-8-31 08:05 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include<reg52.h>
#include<port.h>
#include<18b20.h>
#include<1602.h>
#include<delay.h>
char InitTemp=26;
int i=0;
unsigned int temphex;
float tempfloat;//存放DS18B20采集的溫度值-小數(shù)
unsigned char temp[];
sbit KEYPLUS=P3^2;  //定義溫度加按鍵輸入端口
sbit KEYMINUS=P3^3;  //定義溫度減按鍵輸入端口
void InitKey(void)           //外部按鍵中斷初始化
{
  EA=1;          //全局中斷開
  EX0=1;         //外部中斷0開
  IT0=1;         //邊沿觸發(fā)

  EX1=1;         //外部中斷1開
  IT1=1;         //IT1=1表示邊沿觸發(fā)
}
void Init_Port(void)    //串口初始化
{
  SCON=0x40;         //
  TMOD=0x20;        //定時器T1初始化
  PCON=0x00;               
  TH1=0xFD;
  TL1=0xFD;
  TR1=1;
}
void Init_Timer0(void)    //定時器0初始化
{
TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
TH0=0x00;              //給定初值,這里使用定時器最大值從0開始計數(shù)一直到65535溢出
TL0=0x00;
EA=1;            //總中斷打開
ET0=1;           //定時器中斷打開
TR0=1;           //定時器開關(guān)打開
}
void  Init_Temp_OnComputer(char temperature)
{  
  SendByte(temperature/10+0x30);
  SendByte(temperature%10+0x30);
  SendByte('C');
}
void  Display_18b20_OnComputer(float temperature)
{
  unsigned long int wendu;
  wendu=temperature*10000;//此變量類型一定要設(shè)置為unsigned long int,若定義為unsigned int則溢出
  SendStr("實(shí)時溫度:");
  SendByte(wendu/1000000+0x30); //百位
  SendByte(wendu%1000000/100000+0x30);//十位
  SendByte(wendu%100000/10000+0x30);//個位
  SendByte('.');
  SendByte(wendu%10000/1000+0x30);//小數(shù)點(diǎn)后第1位,小數(shù)點(diǎn)后千位
  SendByte(wendu%1000/100+0x30);//小數(shù)點(diǎn)后第2位,小數(shù)點(diǎn)后百位
  SendByte(wendu%100/10+0x30);//小數(shù)點(diǎn)后第3位,小數(shù)點(diǎn)后十位
  SendByte(wendu%10+0x30);//小數(shù)點(diǎn)后第4位,小數(shù)點(diǎn)后個位
  SendByte('C');//溫度單位
  SendByte('\r');    //SendByte(0x0D);  SendByte(0x0A);                  換行
  SendByte('\n');
}
void Display_LCD_OnLCD(float temperature)
{
unsigned long int wendu;
  wendu=temperature*10000;//此變量類型一定要設(shè)置為unsigned long int,若定義為unsigned int則溢出
  LCD_Write_Char(6,1,'+');
  LCD_Write_Char(7,1,wendu/1000000+0x30);
  LCD_Write_Char(8,1,wendu%1000000/100000+0x30);
  LCD_Write_Char(9,1,wendu%100000/10000+0x30);
  LCD_Write_Char(10,1,'.');
  LCD_Write_Char(11,1,wendu%10000/1000+0x30);
  LCD_Write_Char(12,1,wendu%1000/100+0x30);
  LCD_Write_Char(13,1,wendu%100/10+0x30);
  LCD_Write_Char(14,1,wendu%10+0x30);
  LCD_Write_Char(15,1,'C');
}
void main()
{
        InitKey();
        Init_Port();
        LCD_Init();
        LCD_Write_String(0,0,"SetTemp:");
        LCD_Write_String(0,1,"MTemp:");
    LCD_Write_Char(8,0,'2');
        LCD_Write_Char(9,0,'6');
        LCD_Write_Char(10,0,'C');
        Init_Timer0();
        while(1);
}
/*------------------------------------------------
                 定時器中斷子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
static unsigned int j;
// ET0=0;           //定時器中斷打開
// TR0=0;


j++;
if(j==51)
{
   j=0;
   temphex=ReadTemperature();    //定時時間1s到,采集一次溫度數(shù)據(jù)
   tempfloat=(float)temphex*0.0625;//16進(jìn)制溫度數(shù)據(jù)轉(zhuǎn)換為實(shí)際溫度值
   Display_18b20_OnComputer(tempfloat);
   Display_LCD_OnLCD(tempfloat);
}

TH0=(65536-10000)/256;                  //重新賦值 12M晶振計算,指令周期1uS,
                              //采集間隔10s,由于定時器
                              //最大值65536 即65.536ms 所以
TL0=(65536-10000)%256;       //直接定時器不夠用,需要用循環(huán)處理,
                              //定時10ms,然后循環(huán)1000次后輸出 1000x10ms=10s
// ET0=1;           //定時器中斷打開
//TR0=1;

}
/*------------------------------------------------
                 外部中斷0程序-溫度加
------------------------------------------------*/
void ISR_INT0(void) interrupt 0
{
   DelayMs(5);
   if(!KEYPLUS)     //再次確認(rèn)按鍵是否按下,沒有按下則退出
           {
        while(!KEYPLUS);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有釋放則一直等待
           {
              InitTemp++;            //KEYPLUS按下觸發(fā)一次,溫度值加1
              LCD_Write_String(0,0,"SetTemp:");
                      LCD_Write_Char(8,0,InitTemp/10+0x30);
                          LCD_Write_Char(9,0,InitTemp%10+0x30);
                          LCD_Write_Char(10,0,'C');
                          SendStr("設(shè)置溫度值:");
                          Init_Temp_OnComputer(InitTemp);   //發(fā)送設(shè)定的加減溫度值
                          SendByte('\r');
                            SendByte('\n');
            }
       }
       

}
/*------------------------------------------------
                 外部中斷1程序-溫度減
------------------------------------------------*/
void ISR_INT1(void) interrupt 2
{
   DelayMs(5);
   if(!KEYMINUS)     //再次確認(rèn)按鍵是否按下,沒有按下則退出
           {
        while(!KEYMINUS);//如果確認(rèn)按下按鍵等待按鍵釋放,沒有釋放則一直等待
           {
              InitTemp--;            //KEYMINUS按下觸發(fā)一次,溫度值減1
                          LCD_Write_String(0,0,"SetTemp:");
                      LCD_Write_Char(8,0,InitTemp/10+0x30);
                          LCD_Write_Char(9,0,InitTemp%10+0x30);
                          LCD_Write_Char(10,0,'C');
                             SendStr("設(shè)置溫度值:");
                          Init_Temp_OnComputer(InitTemp);   //發(fā)送設(shè)定的加減溫度值
                             SendByte('\r');
                            SendByte('\n');
            }
       }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-8-31 15:16 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

板凳
ID:1 發(fā)表于 2018-8-31 15:17 | 只看該作者
還有頭文件
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久av网 | 日韩中文字幕在线观看 | 国产激情91久久精品导航 | 亚洲精品一区在线 | 国产一区二区三区四区 | 狠狠草视频| 亚洲福利免费 | 视频一区二区国产 | 欧美黄色网 | 久久精品国产一区二区电影 | 免费一级淫片aaa片毛片a级 | 91av在线免费观看 | 欧美国产精品一区二区三区 | 亚洲一区二区精品视频 | 欧美在线观看一区 | 欧美精品综合 | 一区二区久久 | 特a毛片 | 黄免费观看视频 | 新91视频网| 久草免费在线视频 | 久在线| 天天色图| 成人午夜影院 | 国产精品久久久久久久久动漫 | 在线精品观看 | 欧美专区在线 | 欧美日韩综合精品 | 国产精品久久久久久久久久久久冷 | 亚洲精品久久久久久一区二区 | 久久久久亚洲精品 | 中文字幕在线第一页 | 亚洲综合区 | 盗摄精品av一区二区三区 | 亚洲国产精品久久 | 国产在线视频三区 | 日本精品视频在线 | 国产精品久久久久久久久久99 | 国产精品久久久久久久久久久久 | 成人在线播放 | 日韩精品一区二 |