/*
用打火机,液晶显示的第二行是阈值,大于该值,报警。
阈值不宜大于400
*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define IO_1602 P0 //IO 口
sbit RS_1602=P2^5;
sbit RW_1602=P2^6;
sbit E_1602=P2^7;
sbit CS=P1^0;
sbit CLK=P1^1;
sbit DIO=P1^2;
sbit beed=P1^7;
sbit key0=P3^0;
sbit key1=P3^1;
void delay_ms(unsigned int t)//11.0592MHz 1ms
{
uchar x,y;
for(t;t>0;t--)
{
for(x=0;x<114;x++)
for(y=0;y<1;y++);
}
}
void Wr1602Cmd(unsigned char dat)
{//写命令函数
E_1602=0;
IO_1602=dat;
RS_1602=0;
RW_1602=0;
E_1602=1;
delay_ms(1);
E_1602=0;
delay_ms(1);
}
void Wr1602Dat(unsigned char dat)
{//写数据函数
E_1602=0;
IO_1602=dat;
RS_1602=1;
RW_1602=0;
E_1602=1;
delay_ms(1);
E_1602=0;
delay_ms(1);
}
void Init1602(void)
{
delay_ms(20);
Wr1602Cmd(0x38);
delay_ms(5);
Wr1602Cmd(0x38);
delay_ms(5);
Wr1602Cmd(0x06);
Wr1602Cmd(0x0c);//
Wr1602Cmd(0x01);//清屏
Wr1602Cmd(0x80);//设置地址
}
uchar RdAdc0832(bit Hx)
{
uchar value0,value1,i;
CS=1;CLK=0;DIO=1;
CS=0;
DIO=1;_nop_();_nop_();_nop_();_nop_(); //写 ST 位
CLK=1;_nop_();_nop_();_nop_();_nop_();
CLK=0;_nop_();_nop_();_nop_();_nop_();
DIO=1;_nop_();_nop_();_nop_();_nop_();//写 SGL 位
CLK=1;_nop_();_nop_();_nop_();_nop_();
CLK=0;_nop_();_nop_();_nop_();_nop_();
DIO=Hx;_nop_();_nop_();_nop_();_nop_();//写通道号
//位
CLK=1;_nop_();_nop_();_nop_();_nop_();
CLK=0;_nop_();_nop_();_nop_();_nop_();
DIO=1;
for(i=0;i<8;i++)
{
CLK=1;_nop_();_nop_();_nop_();_nop_();
CLK=0;_nop_();_nop_();_nop_();_nop_();
value0<<=1;
if(DIO==1) value0|=0x01;
else value0&=0xfe;
}
for(i=0;i<8;i++)
{
value1>>=1;
if(DIO==1) value1|=0x80;
else value1&=0x7f;
CLK=1;_nop_();_nop_();_nop_();_nop_();
CLK=0;_nop_();_nop_();_nop_();_nop_();
}
CS=1;
if(value0!=value1) P1&=0X7F;
else P1|=0X80;
return value0;
}
void main()
{
unsigned long i,a,b,c,d,temp=200,x,y,z;
Init1602();
while(1)
{
Wr1602Cmd(0x80);
i=RdAdc0832(0);
i=(i*5000/255);
a=i/1000;
b=i%1000/100;
c=i%1000%100%10;
Wr1602Dat('V');
Wr1602Dat('O');
Wr1602Dat('L');
Wr1602Dat('=');
Wr1602Dat('0'+a);
Wr1602Dat('.');
Wr1602Dat('0'+b);
Wr1602Dat('0'+c);
Wr1602Dat('0'+i%1000%100%10);
Wr1602Dat('V');
d=a*100+b*10+c;
Wr1602Cmd(0xC0);
Wr1602Dat('S'); //阈值 threshold
Wr1602Dat('e');
Wr1602Dat('t');
Wr1602Dat(' ');
Wr1602Dat('V');
Wr1602Dat('a');
Wr1602Dat('l');
Wr1602Dat('u');
Wr1602Dat('e');
Wr1602Dat(':');
if(key0==0)
{
delay_ms(10); //消抖
if(key0==0)
{
while(!key0);//等待按键松开。
temp+=20;
}
}
if(key1==0)
{
delay_ms(10); //消抖
if(key1==0)
{
while(!key1);//等待按键松开。
temp-=20;
}
}
x=temp/100;
y=temp%100/10;
z=temp%100%10;
Wr1602Dat('0'+x);
Wr1602Dat('0'+y);
Wr1602Dat('0'+z);
if(d>=temp)
{
beed=0;
delay_ms(100);
beed=0;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
烟雾可燃气体甲烷天然气检测程序.rar (13个子文件)
烟雾可燃气体甲烷天然气检测程序
text3 10KB
text3.M51 12KB
text3.uvgui.Administrator 69KB
text3.plg 1015B
text.c 3KB
text.OBJ 12KB
text3_uvproj.bak 0B
text3_uvopt.bak 54KB
text3.hex 4KB
text.LST 8KB
text3.uvopt 5KB
text3.uvproj 13KB
text3.lnp 26B
共 13 条
- 1
delay(100000000000)
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0