请问如何在LCD1602上显示MQ2的检测到的浓度呢,我在
proteus用滑动变阻器代替了MQ2,加ADC0809连接
单片机。程序用中断,可是用了中断,我其它子模块的按键扫描就没有用了,这怎么改进呢
部分程序:
void
timer0() interrupt 1
{
TH0=(65536-2)/256;
TL0=(65536-2)%256;
CLK=!CLK;
}
uint read_yanwu()
{
TMOD=0x01; //定时器中断0
CLK=0;
TH0=(65536-2)/256;
TL0=(65536-2)%256;
EA=1;
ET0=1;
TR0=1;
ST=0; //使采集信号为低
ST=1; //开始数据转换
ST=0; //停止数据转换
while(!EOC); //等待数据转换完毕
OE=1; //允许数据输出信号
AD0809=P1; //读取数据
OE=0; //关闭数据输出允许信号
if(AD0809>=251) //电压显示不能超过5V
AD0809=250;
yw=AD0809*20; //数码管显示的数据值,其中20为采集数据的毫安值
return yw;
}
主程序:
void main()
{
uchar i=0;
sys_init();
while(1)
{
key_scan();
if(shu==0)
{
wendu=ReadTemperature();
count(wendu);
yanwu=read_yanwu();
display_yw(yanwu) ;
}
}
}
硬件上将按键接入到外部中断中。软件上只有触发中断够,才调用扫描。
一周热门 更多>