找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何用stc15f104单片机写代码做一个延时约500ms控制电路?谢谢!

[复制链接]
跳转到指定楼层
楼主
求助各位大神!!如何用stc15f104写代码做一个延时约500ms控制电路,谢谢!



本人不会写代码,怎么弄才能实现以下逻辑功能:

逻辑是这样的:
1,当深夜上下班回家,打开房门,门磁接通12V电池供电给降压7805供电给单片机工作,单片机第8PIN检测到高电平或者持续的高电平,也只能输出一次约500ms的高电平控制三极管Q1导通拉低易微联的通道按键执行回家场景开灯。

特别留意的是,因为有时候回家门一直是打开的,第8Pin一直处于检测高电平状态,所以第7Pin只能输出一次高电平,如果重复输出或者持续输出,易微联模块就会出现关灯或者又进入配网模式了影响使用(因为易微联模块通道的手动按键,长按3秒以上进入配网模式了,所以第7Pin不能持续输出高电平或者重复输出高电平)。

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

使用道具 举报

沙发
ID:388197 发表于 2019-8-20 13:35 | 只看该作者
这个根本不需要用单片机,用555或者运放加RC电路就可以了
回复

使用道具 举报

板凳
ID:388809 发表于 2019-8-20 19:46 | 只看该作者
实现的方法很几种   不需要精准的话做个简易的延时函数就可以了,需要精准的时间 就用定时器做一个时间出来。
void Delay500ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 22;
        j = 3;
        k = 227;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
这段代码就可以延时500ms,在11.0592M的频率下
逻辑的话,设置1个标志位
检测到有高电平而且标志位没有置位,7脚输出,将标志位置位,然后延时500ms,再停止输出
因为有标志位,所以只会导通一次
建议用定时器做,这样你的单片机就还可以做其他的事情。
第二种逻辑  不使用标志位
检测到有高电平,7脚输出,,然后延时500ms,再停止输出,接一个死循环while(1);
因为是个死循环,所以整个代码只会执行一次,这样的方式 你这个电路可以使用,你是直接断掉单片机的电了,每次开门相当以重启单片机,单片机启动后只能执行一次
回复

使用道具 举报

地板
ID:46241 发表于 2019-8-20 20:20 | 只看该作者
好想法的一个电路,值得学习
回复

使用道具 举报

5#
ID:138097 发表于 2019-8-21 08:07 | 只看该作者
是啊,可以不需要单片机,直接用555就可以哈,上网搜一下555的应用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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