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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

新手基于51單片機的溫度報警系統問題

[復制鏈接]
跳轉到指定樓層
樓主
設計一個具有溫度實時顯示的溫度檢測系統:
1.液晶屏LCD顯示當前溫度和設定溫度;
2.每1s采樣溫度,LCD更新顯示值;
3.溫度測量精度: 0.1"C;
4.通過按鍵設定溫度的上、下限,超過所設定的閾值,聲光報警。
但是我通過程序后液晶屏和燈無反應
程序如下
1602.h
#include<reg51.h>
#include<intrins.h>
sbit RS=P3^6;
sbit RW=P3^5;
sbit E=P3^3;
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
unsigned char lcd_r_start();
void int1();
void delay(unsigned char t);
void delay1();

void delay(unsigned char t)
{
unsigned char j,i;
for(i=0;i<t;i++)
for(j=0;j>50;j++);
}
void delay1()
{
_nop_();
_nop_();
_nop_();
}
void int1()
{
lcd_w_cmd(0x38);
lcd_w_cmd(0x0C);
lcd_w_cmd(0x01);
lcd_w_cmd(0x06);
}
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P0;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}
while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P0=com;
delay1();
E=0;
delay1();
RW=1;
delay(25);
}
void lcd_w_dat(unsigned char dat)
{
unsigned  char i;
do{
i=lcd_r_start();
i=i&0x80;
delay(2);
}
while(i!=0);
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P0=dat;
delay1();
E=0;
delay1();
RW=1;
delay(25);
}


18b20.h
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P2^7;
uint temp,t;
uchar data disdata[5];
void delay_18B20(unsigned int i)
{
while(i--);
}
void delay1ms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
//DS18B20初始化
void Init_DS18B20(void)          
{
unsigned char x=0;
DQ=1;
delay_18B20(80);
DQ=0;
delay_18B20(800);
DQ=1;
delay_18B20(140);
x=DQ;
delay_18B20(200);
}
unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay_18B20(40);
}
return(dat);
}
void WriteOneChar(uchar dat)
{
unsigned char i;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay_18B20(50);
DQ=1;
dat>>=1;
}
}
unsigned int ReadTemp(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(100);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(100);
a=ReadOneChar();
b=ReadOneChar();
temp_value=b<<8;
temp_value|=a;
return temp_value;
}
void writete()
{
uchar tflag;
while(1)
{
temp=ReadTemp();
if(temp<0x7ff)
{
tflag=0;
}
else
{
tflag=1;
temp=(~temp)+1;
}
t=temp*0.625;
}
}


main.c(123456.c)
#include<reg51.h>
#include<1602.h>
#include<18b20.h>
#define uchar unsigned char
sbit key_c=P2^3;           //切換
sbit key_jia=P2^4;           //增加
sbit key_jian=P2^5;           //減少
sbit led1=P2^1;                   //綠燈
sbit led2=P2^0;                   //紅燈
sbit BEEP=P2^2;                   //蜂鳴器
void key();
uchar th=30,tl=20;
uchar num=0;
unsigned char we[]={"T:     "};
unsigned char table[]={"H:     L:     "};
void display_lcd1();
void display_lcd(unsigned char th,tl);
void display_lcd1()
{
unsigned char k;
we[2]=t/1000+0x30;
we[3]=t%1000/100+0x30;
we[4]=t%1000%100/10+0x30;
we[5]='.';
we[6]=t%1000%100%10+0x30;
lcd_w_cmd(0x80);
delay(2);
for(k=0;k<9;k++)
{
lcd_w_dat(we[k]);
delay(2);
}
}

void display_lcd(unsigned char th,tl)
{
unsigned char i;
table[2]=th/10+0x30;
table[3]=th%10+0x30;
table[9]=tl/10+0x30;
table[10]=tl%10+0x30;
lcd_w_cmd(0xc0);
delay(2);
for(i=0;i<15;i++)
{
lcd_w_dat(table[i]);
delay(2);
}
}

void main()
{
while(1)
{
display_lcd(th,tl);
display_lcd1();
}
led1=0;
led2=1;
BEEP=1;

if(temp>th*10||temp<tl*10)
{
led1=1;
led2=~led2;
BEEP=~BEEP;
}
else
{
led1=0;
led2=1;
BEEP=1;
}
}

void key()
{
if(!key_c)
{
delay(5);
if(!key_c)
{
num++;
while(key_c==0);
if(num==2)
{
num=0;
}
}
}
if(!key_jia && num==0)
{
delay(5);
if(!key_jia && num==0)
{
th++;
while(key_jia);
lcd_w_cmd(0x80);
}
}
else if(!key_jian && num==0)
{
delay(5);
if(!key_jian && num==0)
{
th--;
while(key_jian);
lcd_w_cmd(0x80);
}
}
if(!key_jia && num==0)
{
delay(5);
if(!key_jia && num==0)
{
tl++;
while(key_jia);
lcd_w_cmd(0x80);
}
}
else if(!key_jian && num==0)
{
delay(5);
if(!key_jian && num==0)
{
tl--;
while(key_jian);
lcd_w_cmd(0x80);
}
}
}


報出的警告
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?INT1?123456
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_DELAY1MS?123456
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?WRITETE?123456
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?KEY?123456
Program Size: data=45.0 xdata=0 code=1562

屏幕截圖 2024-06-19 091557.png (309.83 KB, 下載次數: 24)

屏幕截圖 2024-06-19 091557.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2024-6-20 20:17 | 只看該作者
程序中不要用DELAY!否則你照顧不過來這許多項。
回復

使用道具 舉報

板凳
ID:1126908 發表于 2024-6-25 12:08 | 只看該作者
卡在哪個delay里面了
回復

使用道具 舉報

地板
ID:53813 發表于 2024-6-27 11:02 | 只看該作者
while(1)
{
display_lcd(th,tl);
display_lcd1();
}
......

也就是說,你上電初始化完成進入主函數后,一直在循環這些;然后,其他呢?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线看片 | av黄色在线| 日韩精品成人免费观看视频 | 国产精品久久亚洲 | 久久精品综合 | h视频在线看 | 日本久久久久久久久 | 久久久激情视频 | 激情欧美日韩一区二区 | 欧美极品在线播放 | 中文字幕日韩一区 | 网址黄| 国产精品99久久久久久久久久久久 | 国内精品一区二区三区 | 亚洲激精日韩激精欧美精品 | av福利网| 色片在线观看 | 日本aa毛片a级毛片免费观看 | 国产原创视频 | 欧美日日| 色婷婷精品久久二区二区蜜臂av | 日韩一三区 | 国产成人精品网站 | 国产欧美日韩综合精品一区二区 | 国产偷录视频叫床高潮对白 | 91在线免费视频 | 色视频成人在线观看免 | 日韩无 | 欧美日韩在线一区二区 | 在线成人一区 | 久久国产一区 | 日韩波多野结衣 | 中文字幕精品一区 | 美国一级毛片a | 亚洲精品久久久一区二区三区 | 国产精品精品视频一区二区三区 | 亚洲欧美一区二区三区情侣bbw | 这里只有精品99re | 日韩欧美在 | 精品产国自在拍 | 自拍偷拍欧美 |