烟雾传感器MQ2要在LCD1602显示浓度

2019-07-18 11:05发布

请问如何在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) ;
                        }
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
爱爱哒
1楼-- · 2019-07-19 07:19
可能是中断优先顺序有错误吧
爱爱哒
2楼-- · 2019-07-19 07:49
 精彩回答 2  元偷偷看……
爱爱哒
3楼-- · 2019-07-19 11:18
开中断写在主程序里面,然后就不用管了。
我建议哈这样做:
1、中断做个标记。
2、主循环里面检测标记,如果标记置位,有按键,进行按键处理,否则执行别的去。
3.介意你把程序分开调试,找出错误
爱爱哒
4楼-- · 2019-07-19 14:01
蒲公英不止流浪 发表于 2016-4-28 11:11
好想法啊我试试哈谢谢

写在按键程序里
Giliable
5楼-- · 2019-07-19 18:34
谢谢!!看看先谢谢!!看看先谢谢!!看看先

一周热门 更多>