找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2319|回复: 2
打印 上一主题 下一主题
收起左侧

单片机程序中加一个开关,模拟压力传感器开关的问题

[复制链接]
跳转到指定楼层
楼主
5黑币
这个仿真图是模拟热释电传感器使灯泡发光的。现在想在里面加一个开关,模拟压力传感器开关,当检测到压力,开关闭合,使灯泡发光,并延时20s左右,请问这个开关应该加在哪? 然后程序可以请帮忙改一下吗?

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit XinHao =P1^0;
sbit Light  =P2^0;

void Delay(void)
{
        uint x, y;

        for(x=100;x>0;x--)
           for(y=100;y>0;y--);
}

void delay1(void) //定时器延时两分钟
{
        uchar count=180;
        TMOD=0x01;     //定时器0工作方式1
        TR0=1;       //启动定时器

        TH0=0;
        do{
                TF0=0;
                TL0=0x0F;        
                while(!TF0);   //定时是否溢出
        } while((count--) > 0);
        TR0=0;
        TF0=0;

}

void dianliang(void)
{
        Light  = 1; //点亮灯泡
        XinHao = 1;
        if(XinHao == 1)  //判断是否无信号
        {
                Delay(); //延时防抖动
                XinHao = 1;
                if(XinHao == 1) //再次确定无信号
                {
                        delay1(); //利用定时器延时两分钟
                        Light  = 0; //熄灭灯泡
                }
        }
}

void main(void)
{
        Light  = 0; //初始时灯泡熄灭
        while(1)
        {
                XinHao = 1;
                if(XinHao == 0)  //检测是否有信号
                {
                        Delay(); //延时防信号抖动
                        XinHao = 1;
                        if(XinHao == 0)
                        {
                                dianliang(); //有,点亮灯泡
                        }
                }
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2019-4-9 20:02 | 只看该作者
那么多IO,随便加了。。。。。不过,单个按钮,通常接在外部中断上。

程序呢, if(XinHao == 0)  //检测是否有信号 之前判断开关状态,并做处理
回复

使用道具 举报

板凳
ID:101620 发表于 2019-4-11 10:58 | 只看该作者
这题目,要考虑一下思路的,比如你的传感器触发方式要进行考虑,比如你是模拟触发,那就要增加AD电路,将模拟量转换成数字量再连接IO端口
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表