标题:
请求高人帮助 磁保持继电器的驱动程序如何编写?
[打印本页]
作者:
heimao
时间:
2020-4-9 14:13
标题:
请求高人帮助 磁保持继电器的驱动程序如何编写?
JRX.jpg
(624.45 KB, 下载次数: 45)
下载附件
2020-4-9 14:10 上传
见图。本人初学单片机,想写一个这个程序,由于才疏学浅,无法实现,请高人帮助指导一下,不胜感激,谢谢!
作者:
wulin
时间:
2020-4-9 20:07
按你的原理图给你写个的程序,未经实物验证,仅供参考。
/*******************************
本程序只适合STC15系列1T单片机
使用内部时钟11.0592MHz
磁保持继电器与输出端口需要对应
*******************************/
#include <reg51.h>
#include <intrins.h>
//特殊功能寄存器声明
sfr P3M0=0xB2; //端口3模式寄存器0
sfr P3M1=0xB1; //端口3模式寄存器1
//端口声明
sbit key =P3^0;
sbit OUT1=P3^2;
sbit OUT2=P3^3;
//变量声明
unsigned int count=0;//消抖计数变量
bit lock=0;//按键自锁位变量
bit flag=0;//按键状态位变量
//延时函数
void Delay100ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//主函数
void main()
{
OUT1=0;//初始化输出端口
OUT2=0;//初始化输出端口
P3M1 = 0x00;//设置P3.2/P3.3推挽模式
P3M0 = 0x0c;//设置P3.2/P3.3推挽模式
while(1)
{
if(!key)//按键按下
{
if(++count>=500 && lock==0)//消抖与自锁
{
lock=1;//自锁,防止长按重复响应
flag=~flag;//按键状态标志取反
if(flag)
{
OUT1=1;//继电器吸合
Delay100ms();
OUT1=0;
}
else
{
OUT2=1;//继电器释放
Delay100ms();
OUT2=0;
}
}
}
else//按键松手
{
lock=0;//自锁标志清0
count=0;//消抖计数清0
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1