登录
|
立即注册
|
使用QQ帐号登录
论坛
>
24小时必答区
发帖
|
在原单片机程序加按键程序怎么加?
看2720
|
回0
|
收藏
楼主
ID:491046
只看他
2019-4-15 17:20
这是一个温度和烟雾传感器报警程序,(图中的P1.3脚输入低电平和温度传感器到达31度后报警,LED等都亮起,也就是P3.0-P3.4脚都输出低电平),现在需要加4个按键,(图中已经画好)一个手动报警,一个进入设置模式,一个加键,一个减键,显示屏显示报警温度和现在室内温度。图和C程序在附件,希望有人帮忙解决一下。
单片机源程序如下:
代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[]={" T: "};
uchar table1[]={" Tmax 31 "};
/********IO????**********/
sbit rs=P2^7;
sbit rw=P2^6;
sbit en=P2^5;
sbit dq=P1^6;
sbit yw=P1^5;
sbit D1=P3^0;
sbit D2=P3^1;
sbit D3=P3^2;
sbit D4=P3^3;
sbit D5=P3^4;
uchar num;
uint tempwarn,d=0,h=0;
void delay(uint n)
{
while(n--);
}
//?????
void write_com(uchar com)
{
rs=0;
en=0;
P0=com;
delay(100);
en=1;
delay(100);
en=0;
}
void write_data(uchar date)
{
rs=1;
en=0;
P0=date;
delay(100);
en=1;
delay(100);
en=0;
}
void init()
{
en=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void Writebyte(uchar dat)
{
uchar j;
for(j=0;j<8;j++)
{
dq=0;
dq=dat&0x01;
delay(5);
dq=1;
dat>>=1;
}
}
uchar Readbyte(void)
{
uchar i,dat=0;
for(i=0;i<8;i++)
{
dq=0;
dat>>=1;
dq=1;
if(dq==1)
dat|=0x80;
delay(4);
}
return dat;
}
void initds18b20(void)
{
uchar x=0;
dq=1;
delay(8);
dq=0;
delay(80);
dq=1;
delay(14);
x=dq;
delay(20);
}
void Readtemp(void)
{
initds18b20();
Writebyte(0xcc);
Writebyte(0x44);
initds18b20();
Writebyte(0xcc);
Writebyte(0xbe);
d=Readbyte();
h=Readbyte();
}
get()
{
uint temp,tmp;
float tt;
tmp=d;
temp=h;
temp<<=8;
temp|=d;
if((h&0x80)!=0)
{
table[7]='-';
temp=temp-1;
temp=~temp;
}
else
table[7]='+';
temp>>=4;
table[8]=(temp/100)+'0';
table[9]=(temp/10)%10+'0';
table[10]=(temp%10)+'0';
tmp=tmp&0x0f;
tt=tmp*0.0625;
table[11]='.';
table[12]=((uchar)(tt*10))%10+'0';
tempwarn=temp;
return tempwarn;
}
void warn(uint tempwarn)
{
if(tempwarn>=31&yw==0)
{
D1=0;
D2=0;
D3=0;
D4=0;
D5=0;
}
else
{
D1=1;
D2=1;
D3=1;
D4=1;
D5=1;
}
}
void main()
{
rw=0;
init();
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_data(table1[num]);
}
while(1)
{
Readtemp();
get();
warn(tempwarn);
write_com(0x80);
for(num=0;num<15;num++)
{
write_data(table[num]);
}
}
}
所有资料51hei提供下载:
图和程序.zip
(22.74 KB)
(下载次数: 8, 2019-4-15 17:19 上传)
51黑电子论坛
Powered by
Discuz!
X3.1
首页
|
标准版
|
触屏版
|
电脑版