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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于單片機+ds18b02的一些小問題,等級判定應(yīng)該怎么解決?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:944932 發(fā)表于 2021-11-4 15:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
溫度已經(jīng)能正常顯示了,但是蜂鳴器和led燈一直不合適,這個邏輯應(yīng)該怎么改



以下是主程序的代碼,根據(jù)開發(fā)板的程序修改出來的,顯示完全沒問題,就是判定等級的邏輯不合適,我覺得我寫的邏輯應(yīng)該沒啥大問題,但是根據(jù)讀取的溫度來判定等級就是不合適,判定邏輯應(yīng)該沒什么大問題,請大佬幫我看看

單片機源程序如下:
#include<common.h>
#include<l1602.h>
#include<temp.h>
sbit led1=P3^0;
sbit dz=P3^3;//蜂鳴器
uchar buf[20];
u8 s;
void LcdDisplay(int temp);
void level(int temp);
void Delay500ms()  [url=]//@12.000MHz[/url]
{
unsigned char i, j, k;

i = 23;
j = 205;
k = 120;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}
void main()
{
int x1;
float x;
led1=1;dz=1;
LCD1602_Init();//初始化液晶
delay(10);
// LCD_Clear();//清屏
// Delay500ms();
SetRowCol(0,0);
DispString("Temp:       C");
  SetRowCol(0,0);
DispString("Temp:       C");
while(1)
{
  dz=1;
  LcdDisplay(Ds18b20ReadTemp());
  Delay1ms(1000);//1秒一次
  x1=Ds18b20ReadTemp();
  x=(Ds18b20ReadTemp())*0.0625*100+0.5;
// x=22;
     
/***************************等級判定***************************/
  if(x>=20&&x<=30)
      {
      SetRowCol(1,14);
      DispString((u8*)"L");
      //LCD_Write_Char(14,1,'L');
      Delay1ms(1000);
      led1=~led1;
      Delay1ms(1000);
      dz=0;
      }
      else if(x>30&&x<=40)
      {
//      LCD_Write_Char(14,1,'N');
//      Delay1ms(1000);
      led1=~led1;
      Delay1ms(1000);
      dz=~dz;
      }
      else if(x>40&&x<=50)
      {
//      LCD_Write_Char(14,1,'H');
//      Delay1ms(1000);
      led1=~led1;
      Delay1ms(1000);
      dz=~dz;
      }
      else
      {
//      LCD_Write_String(0,1,"                ");
      led1=led1;
      dz=dz;

      }
}
  
  
/******************************************************************/

}
void LcdDisplay( int temp)   //lcd顯示
{
   float tp;
   unsigned char datas[] = {0, 0, 0, 0, 0}; //定義數(shù)組

if(temp< 0)    //當溫度值為負數(shù)
   {
   LCD_Write_Char(5,0,'-');//因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
   temp=temp-1;
   temp=~temp;
   tp=temp;
   temp=tp*0.0625*100;
  }
  
else
  {
   LCD_Write_Char(5,0,'+');
   tp=temp;
   temp=tp*0.0625*100;
  }
datas[0] = temp / 10000;
datas[1] = temp % 10000 / 1000;
datas[2] = temp % 1000 / 100;
datas[3] = temp % 100 / 10;
datas[4] = temp % 10;
LCD_Write_Char(6,0,datas[0]+0x30);
LCD_Write_Char(7,0,datas[1]+0x30);
LCD_Write_Char(8,0,datas[2]+0x30);
LCD_Write_Char(9,0,'.');
LCD_Write_Char(10,0,datas[3]+0x30);
LCD_Write_Char(11,0,datas[4]+0x30);
}




以上是主程序,以下是18b20最后的讀取溫度程序

int Ds18b20ReadTemp()
{
int temp=0;
unsigned char tmh,tml;
Ds18b20ChangTemp();     //先寫入轉(zhuǎn)換命令
Ds18b20ReadTempCom();   //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
tml=Ds18b20ReadByte();  //讀取溫度值共16位,先讀低字節(jié)
tmh=Ds18b20ReadByte();  //再讀高字節(jié)
temp=tmh;
temp<<=8;
temp|=tml;
return temp;
}



wendu.zip

96.65 KB, 下載次數(shù): 1

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

使用道具 舉報

沙發(fā)
ID:313048 發(fā)表于 2021-11-4 16:40 | 只看該作者
先確定你的分級是啥樣的,不同等級時蜂鳴器和LED的顯示是什么個狀態(tài),然后再去實現(xiàn)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线观看视频 | 日韩在线免费观看视频 | 国产精品久久久久久久久久三级 | 亚洲国产精品视频一区 | 国产精品亚洲第一 | 久久精品在线 | 午夜精品一区二区三区在线视频 | 北条麻妃99精品青青久久 | 精品国产一区二区三区性色av | 五月激情综合网 | 波多野结衣一二三区 | 91免费视频观看 | 久久综合九九 | 久久国产精品亚洲 | 在线国产视频观看 | 国产精品高清一区二区三区 | 成人在线电影在线观看 | 青青久久 | 在线日韩不卡 | 在线视频91 | 激情五月激情综合网 | 精品久久九九 | 免费国产视频在线观看 | 男人的天堂在线视频 | 国产精品久久久久久久久免费桃花 | 免费视频一区 | 精品福利视频一区二区三区 | 国产在线一区二区 | 99精品网站| 台湾佬成人网 | 中文字幕一区二区三区四区 | 免费v片 | 黄色一级片在线播放 | 国产一区二区三区免费 | 国产高清视频 | 精品欧美乱码久久久久久1区2区 | 欧美精品电影一区 | 欧美男人天堂 | 亚洲精品美女在线观看 | 免费一区 | 欧美a区|