找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助用80c51单片机做个控制电路的小程序的思路

[复制链接]
回帖奖励 100 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:454930 发表于 2020-3-1 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助大神帮我写个小程序,大概电路图如图,80c51单片机各个接口如图;
说明:整个电路主要由一个3.7v直流电源供电,一个开关,一个小电机。      
需求:
1.开关s1闭合,延时10秒后,3.7v直流小电机M通电转动
2.电机转动60秒后,断电
3.希望有电路图,和说明一下电路每条线路接单片机哪个接口
4.程序,每条程序有注释,有什么作用。
新手,想研究一下,谢谢大佬!


批注 2020-03-01 195530.jpg (49.54 KB, 下载次数: 7)

大概电路图

大概电路图

批注 2020-03-01 195530.jpg (113.94 KB, 下载次数: 8)

80c51单片机

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

使用道具 举报

沙发
ID:519251 发表于 2020-3-1 21:38 | 只看该作者
我有点还不大清楚的地方,1开关是常开的点动开关吗?就是要用的时候按一下马上就断开 2这个程序是执行一次就啥活也不干了还是要可以重复执行?3对接在哪个引脚上有要求吗?可以使用P3.3或者P3.2上吗?望解惑
回复

使用道具 举报

板凳
ID:84765 发表于 2020-3-2 00:02 | 只看该作者
这程序很简单,如果用定时器就更好去控制时间的精准度,新手要慢慢了解,一下子给你写复杂的你也一时理解不了,这程序写了两种按键方式,一种是点动按键开关方式,另一种是自锁开关,需要闭合复位后才能再次运行 按键延时.zip (28.48 KB, 下载次数: 7)
回复

使用道具 举报

地板
ID:699902 发表于 2020-3-2 08:55 | 只看该作者
每条程序注释
其实很简单,便于写完以后检测,如果有错误,很快就知道哪里错了。如果自己不知道,也便于别人检查
回复

使用道具 举报

5#
ID:56665 发表于 2020-3-2 09:15 | 只看该作者
13976778401 发表于 2020-3-2 00:02
这程序很简单,如果用定时器就更好去控制时间的精准度,新手要慢慢了解,一下子给你写复杂的你也一时理解不 ...

这个按键程序有一个缺点就是按键会不灵敏,失效,我以前用这个方法试过,延时太长,在延时过程中再按按键,按键时会没反应。
回复

使用道具 举报

6#
ID:84765 发表于 2020-3-2 14:14 | 只看该作者
是呀,要是用中断就可以去执行其他的任务
回复

使用道具 举报

7#
ID:697917 发表于 2020-3-2 17:43 | 只看该作者
里面有些细节东西,80C51直接3.7V供电是否可行?80C51的最小系统+按键方法+直流电机驱动网上很多,分开找,最后程序只是检测按键,延迟,控制的过程。
回复

使用道具 举报

8#
ID:687694 发表于 2020-3-2 22:17 | 只看该作者
#include<reg51.h>
#define YC 10       //闭合延迟时间
#define QDTIME 60   //工作时间
#define u8 unsigned char
#define u16 unsigned int
sbit K1a=P1^0;      //开关引脚a
sbit K1b=P1^1;      //开关引脚b
sbit OUT=P2^0;      //输出引脚
u8 Tm=0;            //状态检测,0位初始状态,1为延迟状态,2为输出状态,3为待复位状态
u16 i=0,j=0;        //计时变量
void Tim_init()     //定时器0初始化函数
{
            TMOD = 0x01;  //定时器0设置16位计时器
                TH0 = 0x0FC;  //高值1ms
                TL0 = 0x18;   //低值1ms
                EA = 1;       //开总中断
                ET0 = 1;      //开定时器中断       
}

void Tim() interrupt 1//计时器中断
{
                TH0 = 0x0FC;  //重装初始值
                TL0 = 0x18;
                i++;          //ms计时累加
}
       
void S1()
{
        if(K1b==0&&Tm==0)//启动状态判断,必须是复位状态,且开关闭合。
        {
                TR0=1;                //定时器开始工作
        Tm=1;       //进入状态1开始延迟
        }
        if(K1b==1&&Tm==3)//复位状态判断,条件必须打开开关,且一次任务完成。
        {
                Tm=0;      //复位状态值
        }
}

void main()
{
        K1a=0;        //开关一端低电平
        OUT=0;  //输出低电平,电机停止
        Tim_init();     //定时器初始化
        while(1)       //主循环
        {
                S1();      //按键检测
                if(i==1000)//1S计时
                {
                        j++;   //秒计时累加
                        i=0;
                }
                if(j>YC&&Tm==1)  //如果检测到j大于10则进入输出状态
                {
                        OUT=1;      //进入输出状态
                        Tm=2;       //设置输出状态为2,即输出状态
                        j=0;        //秒计时清零
                }
                if(j>QDTIME&&Tm==2)//如果检测到j大于60则且在输出状态,则停止输出进入待复位状态
                {
                        OUT=0;      //停止输出
                        Tm=3;       //进入待复位状态
                        j=0;        //秒计时清零
                        i=0;       //ms计时清零
                        TR0=0;      //关闭计时器
                }
        }               
}

程序如上,仿真图如下。
       
回复

使用道具 举报

9#
ID:687694 发表于 2020-3-2 22:28 | 只看该作者
附上打包代码及仿真

电机控制.rar

89.56 KB, 下载次数: 8

回复

使用道具 举报

10#
ID:454930 发表于 2020-3-2 22:59 | 只看该作者
man_of_freedom 发表于 2020-3-1 21:38
我有点还不大清楚的地方,1开关是常开的点动开关吗?就是要用的时候按一下马上就断开 2这个程序是执行一次 ...

普通开关,按着开,松开断,作用类似于长按启动;执行一次,无需执行二次;引脚没要求,,谢谢
回复

使用道具 举报

11#
ID:454930 发表于 2020-3-2 23:00 | 只看该作者
51hei**1140 发表于 2020-3-1 22:24
这是师傅在考核学生,请认真对待

不是师傅,,我学徒,小白,,,
回复

使用道具 举报

12#
ID:454930 发表于 2020-3-2 23:02 | 只看该作者
13976778401 发表于 2020-3-2 00:02
这程序很简单,如果用定时器就更好去控制时间的精准度,新手要慢慢了解,一下子给你写复杂的你也一时理解不 ...

谢谢大佬
回复

使用道具 举报

13#
ID:454930 发表于 2020-3-3 09:49 | 只看该作者
lovexulu 发表于 2020-3-2 22:17
#include
#define YC 10       //闭合延迟时间
#define QDTIME 60   //工作时间

谢谢大佬
回复

使用道具 举报

14#
ID:454930 发表于 2020-3-3 09:53 | 只看该作者
lovexulu 发表于 2020-3-2 22:28
附上打包代码及仿真

谢谢大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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