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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1000|回復: 1
打印 上一主題 下一主題
收起左側

關于單片機+ds18b02的一些小問題,等級判定應該怎么解決?

[復制鏈接]
跳轉到指定樓層
樓主
溫度已經能正常顯示了,但是蜂鳴器和led燈一直不合適,這個邏輯應該怎么改



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

單片機源程序如下:
#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}; //定義數組

if(temp< 0)    //當溫度值為負數
   {
   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();     //先寫入轉換命令
Ds18b20ReadTempCom();   //然后等待轉換完后發送讀取溫度命令
tml=Ds18b20ReadByte();  //讀取溫度值共16位,先讀低字節
tmh=Ds18b20ReadByte();  //再讀高字節
temp=tmh;
temp<<=8;
temp|=tml;
return temp;
}



wendu.zip

96.65 KB, 下載次數: 1

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区在线 | 91精品国产91久久久久久丝袜 | 久久久久久久久久久久一区二区 | 天天爽天天干 | 青青草久久 | 久久精品久久久久久 | 国产精品亚洲一区 | 久久久久久久久久久久久久久久久久久久 | 久久精品中文 | 一区二区三区四区在线视频 | 成人免费黄色 | 手机av网 | 精品国产1区2区3区 在线国产视频 | 亚洲精品精品 | 羞羞免费网站 | 欧美日韩在线免费观看 | 亚洲一区高清 | 欧美精品欧美精品系列 | 国产色婷婷久久99精品91 | 亚洲嫩草 | 免费同性女女aaa免费网站 | 理论片87福利理论电影 | 视频一二区 | 99资源站 | 日韩欧美一区二区三区四区 | 成人国产精品久久 | 91九色porny首页最多播放 | 免费看91 | 久久久精品一区 | 中文字幕91| 国产欧美一区二区三区在线看 | 国产一区二区精品在线观看 | 精品视频一区二区三区在线观看 | 亚洲精品久久久一区二区三区 | 亚洲成年在线 | 精品视频一区二区 | 日韩乱码av | 精品av| 中文字幕在线电影观看 | 草草草草视频 | 欧美精品一区二区三区四区 |