导航:首页 > 操作系统 > 单片机继电器控制程序

单片机继电器控制程序

发布时间:2022-06-30 14:34:51

⑴ 51单片机控制继电器每隔一小时闭合5分钟程序怎么写

一、选用12M的晶振,则单指令周期为
1us
二、TMOD
设置为
0x21,即定时器0为
16
位计数器
三、TH0=0x3c,TL0=0xb0,即定时器
0
初始值为
15536,50ms
定时器溢出
四、设一个
5
分钟的计时器
timer_50ms,以
50ms
为计时单位,300*20=6000,计时器到
6000
即复位,即
if
(timer_50ms>=6000)
timer_50ms=0x0000;
五、再设一个计时器timer_hour,以
5
分钟为计时单位,计时器计到
12
即复位,即
if
(timer_hour>=12)
timer_hour=0x00;
可以在计时器任何一个位置控制继电器闭合,在其它时间继电器打开。如在主程序中可以加入
if
(timer_hour==0x02){//继电器闭合}
else
{//继电器打开}

⑵ 51单片机通过继电器模块控制减速电机启动的程序

51单片机控制继电器,去实现对减速电机启动和关闭。这只需要定义一个io口输出高低电平即可。

⑶ 如何用单片机控制继电器

不要用三极管放大,接上拉电阻即可。

做实验直接选用线圈电压为5V的继电器就可以。单片机输出引脚与继电器之间要接一个三极管,单片机I/O直接继电器电流不够。

单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的。

在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件。


(3)单片机继电器控制程序扩展阅读:

现在,单片机的某一个需要控制这个继电器电路的输出引脚就是一只"手",当单片机的这个引脚输出低电平的时候,就像"手"在打开三极管"水龙头",水就从上往下流,继电器"水轮机"就开始转起来了。

反之,如果是输出高电平,"手"就开始关"水龙头",继电器"水轮机"因为没有水流下来,就会停止。

这就是三极管的开关作用。

简单的理解和记忆就是:三极管是一个开关器件,其实真的可以将它看成是一个开关,只不过它不是用手来控制,而是用电压(电流)来控制的,因此,三极管有些时候也被称做电子开关(与机械开关相区别)。

⑷ 单片机控制继电器定时开关的程序流程

板设计的定时开关控制器具有简单易制、价格低廉、控制点数多、控制时间可精确到秒等特点:
1.主板电路部分
本电路主要是利用单片机AT89C2051(-24PI)作为主控制元件,通过外围电路控制用电设备的电源,以达到定时开、关机的目的。AT89C2051具有体积小、功能强大、运行速度快、价格低廉等优点,非常适合制作集成度较高的控制电路。图1为主电路原理图,图2为按其制作的主板(双面)大小只有95mm×70mm的器件位置图。主板电路包括MCUAT89C2051、键盘与显示、输入与输出口、复位和电源滤波等电路组成。
(1)键盘与显示显示电路由U2、U3、Q1~Q7和L1A、L2A组成。U2为BCD-7段译码器(74LS47),通过单片机U1的P1.4~P1.7口将要显示字符的BCD码输出到U2的四个输入端,经U2译码后输出相应的笔段驱动LED数码管(共阳)。LED数码管显示采用动态扫描方式,即在某一时刻,只有一个数码管被点亮。数码管的位选信号由单片机U1的P3.3~P3.5输出,经U3(74HC138)译码后通过Q1~Q6放大,驱动相应的数码管。R17~R24为限流电阻。
由于U2只能输出7段笔段码,而数码管除了七段笔段外,还要控制点亮小数点,因此,小数点必须有另外的驱动电路来完成,在这里,通过Q7来驱动小数点。当需要点亮小数点时,在U1的P1.3输出高电平即可。
键盘电路跟显示电路一样,采用扫描方式,利用动态显示时的数码管驱动位置信号来判断相应按键的状态。U1的P3.3~P3.5口输出的BCD码经U3译码后,相应Y口呈低电平,而U1的P3.7口平时为高电平(由于R8上拉),当某一键按下时,P3.7被下拉为低电平,这时MCU利用程序查询P3.7是否为低电平,如果P3.7为低电平,就读回U1P3.3~P3.5口的值(从缓冲区读取),则可判断是哪个按键按下,然后调用相应的处理程序进行处理。
(2)控制输出、复位与电源滤波电路MCU对控制的输出是通过P3.0~P3.2口完成的。程序开始时这三个口的输出状态是低电平,MCU通过程序查询三路输出的ON或OFF状态预置时间是否已到,如果已到时间,则改变相应的输出状态,就完成了对外部电路的控制。复位电路如图1左上角所示,C3和R25完成上电复位,S6为手动复位,按键输入干扰和抖动的预防是由软件完成的。+5V电源由JP2输入,经C4~C9滤波后给U1和其它器件供电。
2.电源与控制电路
电源及控制电路。其中,市电经总开关K后由B降压、V1整流、C11~C14滤波、U4、U5稳压后给主板和控制电路板提供稳定的工作电源;主板送过来的三路控制信号通过Q12~Q14分别控制继电器J1、J2、J3,对外部电路实施直接控制。继电器这里没有给出具体型号,您可根据耐压及通流大小选用相应的继电器,如在大电流和强电磁场干扰的环境里工作,最好利用中间继电器来间接控制。
3.程序软件工作过程
(1)秒脉冲发生器秒脉冲发生器是由定时器T0和内存空间TT0配合完成的。T0工作于16位计数器模式,当T0向上计数由全1变为全0时产生中断,本程序中T0的初值为0DC00H,大约0.01s中断一次。这里使用的晶振频率为11.0592MHz,由此可计算出日误差约为0.78s。
图4为程序流程图。系统产生中断后,首先保存ACC和PSW的值,然后为T0重装初值,判断中断次数是否小于100,是则转出中断服务,反之则为秒计数器加1,秒计数器如果大于59,则为分计数器加1,同时秒计数器清0。同样分计数器如大于59则为时计数器加1,同时分计数器清0,时计数器如大于23则清0并转出中断服务。T0中断100次的时间刚好为1秒钟。
(2)主程序上电复位过程:首先P0~P2口全部置1,P3口高5位置1,低3位置0。设置定时器T0工作于16位计数器模式,并赋初值TH0=0DCH,TL0=00H,关闭外部中断和串行口中断,时间计数器TS、TM、TH清0,所有预置时间存储区全部赋值FFH,至此所有初始化工作完成。
主程序工作过程:首先循环进行六个数码管扫描显示(DISPLY段),然后比较所有预置时间(COMP段)是否与当前时间相等,如相等则转向相应处理程序。在比较完成(或处理完成)后判断有无按键(PP2段),没有则返回继续显示、比较、判断;有按键则转向相应处理程序。按键转移采用偏移量加表格跳转转移法(KEY段),简单、明了。预置时间比较则采用逐一比较法,即对每一个预置值进行比较,如相等则做相应处理。具体比较时(COMP1段)先比较TH值,如不相等则直接转出并置“时间到”标志CCB为0,如TH、TM、TS全部对应相等,则置该标志为1。
本程序在显示及按键处理(设置过程)中巧妙使用R1寄存器作为公用地址寄存工具,对实时时间和预置时间的显示和修改调用同一程序完成,使源代码长度大大缩短,提高了程序的可读性和运行效率。在本刊的网站(www.eleworld.com)上给出了源程序,供读者参考。
4.制作与调试
(1)主板的制作与调试主板的制作稍微复杂一点。首先是制作印刷板,利用Protel99按照本文所示器件位置图放置好元器件,然后手动布线(双面),线宽为0.8mm左右,太宽做出的板子太大,太窄无法进行自制。绘好印制板图后转成BMP格式利用电脑刻字机镂空(要用进口的即时贴纸,不然容易断开),贴在双面敷铜板上,就可以用FeCl3腐蚀了。具体的制作方法这里不再赘述,但最好在印制板布线时做个阻焊层,同时在即时贴上刻出来,当板子制好清洗干净后敷在上面,用浅绿色油漆或清漆喷上薄薄的一层,好看又防腐蚀。
(2)元器件的选择如果按照本文所附器件位置图布线的话,数码管需选用图示型号才能安装(5361BH,一拖三数码管),选用不同型号数码管时可能需修改器件位置参数,然后再布线即可;晶振为11.0592MHz;S1~S5选用黑色小型轻触开关,S6则用红色同类型开关;变压器B选用15V、10W左右即可,V1硅堆应与B配合选用;控制继电器根据需要选用适合的型号,如5、12、24V等,如果选用5V的,相应的B、V1可选小一点的,7812则不要。如选用24V的,那么B、V1、7812、7805都需同时根据实际情况来选用;交流220V输出插座没有特殊要求,其耐压和通流符合受控器件要求即可。其它元器件选用通用的就行。
(3)焊接元器件元器件购回后应先进行预处理(引脚打磨、上焊锡),然后逐一焊接。在焊接MCU(当然2051要烧好程序后才能焊接)和其它集成电路时应使用有良好接地的烙铁(断电焊接也可),以免被击穿。由于双面印刷板存在一个穿孔问题,器件引脚穿过后,两面都要点上焊锡;如只是过孔,可用细铜线穿过并在两面焊接后剪掉即可。
在印刷板制作良好,连线没有不应有的开路或短路,且焊接没有虚焊的情况下,不用调试即可正常工作(本程序已制作成品并调试通过,不需再行调试)。如果您觉得自己制作的印刷板不够漂亮或太麻烦可联络凯思迪邮购(焊接好的整板也有),本刊网站有与凯思迪公司网站的链接。
(4)电源与控制板的制作可以将电源与控制板做在同一个板子上,也可分开制作,视所使用的情况而定,但JP1与JZ1之间的连线不宜太长。印刷板的制作同前所述,要注意的是在布线时对220V市电进入和输出(包括中线)的线宽设计要宽一点(根据工作电流大小来定为好),还要注意市电与直流电源的隔离,以免在使用中造成触电事故。
5.操作使用
本系统在加电后数码管显示“00.00.00”,输出继电器均不动作,此时可直接按S1、S2、S3键分别对时、分、秒进行调整,使当前时间与北京时间相符,时间设置过程中将停止计时,在设置好后按S4退出,时钟即进入正常计时。如果要设置输出控制的预置时间则先按S5,数码管显示“95.95.95”,此时可再按S1、S2、S3键分别对第一路输出状态ON的时、分、秒进行设置,设好后再按一次S5键,数码管也显示“95.95.95”,然后按S1、S2、S3键则分别对第一路输出状态OFF的时、分、秒进行设置,依此类推,按第七次时退出设定。任一路任一状态被执行后其预置值即被清除,24小时后并不有效,如果需要每天循环执行则对程序进行简单的修改即可(预置值不清除就可)。
6.改进与扩展
本文所述的AT89C2051在控制输出时只使用了P3.0~P3.2三个口,所以只能控制三路六个状态,如果把不用的P1.0~P1.2三个口用起来,则可控制六路十二个状态,外围电路相应增加三路继电器,程序软件只需稍事修改即可。当然如果需要控制更多路输出状态,那么在使用锁存器、译码器、触发器等后最多可以扩展到控制26=64路128个状态。在对控制输出的路数要求不多,而显示部分需要比较多的情况下,如还要显示年月日、农历、星期等,只要对其进行扩展就可实现:P1.4~P1.7不动,选通端用两个138,输出口用P3.2~P3.5就有24=16个数码显示。这时仍然利用上述方法最多可扩展到控制25=32路64个状态。当然年月日、农历、星期的计算(如大月小月、闰年、闰月等)分别汇编相应的子程序插入即可

⑸ 单片机89c51控制多个继电器程序

我来帮你做,你稍等。
差不多肯定你这里条件没说明白,因为全是断开没有吸合,先按字面意思来。
假设八个继电器由P1口驱动,高电平有效,及你所谓的打开,这是一个子程序,按键扫描你自己处理,当前键值为KEY,并将1-4键键值定义成KEY1、KEY2、KEY3、KEY4。
。。。。。。
MOV P1,#0C3H;这个加入你的主程序初始化中,1、4键控制的继电器吸合
。。。。。。
MOV A,KEY;这个加入你的主程序键盘处理部分,键值送入A然后调用下面子程序
LCALL ONOFF
。。。。。。
ONOFF:

CJNE A,KEY1,CKEY2;不是1号键转去判断2号键

ANL ,#C3H;2-3键控制的继电器断开

RET
CKEY2:

CJNE A,KEY2,CKEY3;不是2号键转去判断3号键

ANL ,#CCH;1-3键控制的继电器断开

RET
CKEY3:

CJNE A,KEY3,CKEY4;不是3号键转去判断4号键

ANL ,#0F0H;1-2键控制的继电器断开

RET
CKEY4:

CJNE A,KEY4,ERROR;不是4号键键值错误,退出

ANL ,#C0H;1-2-3键控制的继电器断开

ERROR:
RET

⑹ 单片机控制继电器程序

这个是简单的电路图,因为单片机上电时,各IO口有个瞬间高电平脉冲;这里选用PNP三极管来驱动。至于你说的按任意键启动。。。。这个没多大意义了,这里给你的是按键开、关继电器。 //按K1 继电器吸合
//按K2 继电器断开
/*********************************************************/#include <reg52.h>
sbit K1 =P3^2 ; //K1
sbit K2 =P3^3 ; //K2
sbit JDQ=P1^0; //继电器/*********************************************************/
void Delay(unsigned int ii) //1MS
{
unsigned int jj;
for(;ii>0;ii--)
for(jj=0;jj<125;jj++)
{;}
}
void main()
{ while(1){

if (K1==0)
{
Delay(10);
if(K1==0){
JDQ=0;//吸合
P0=0x00;//P0口LED亮
}
}if (K2==0){
Delay(10);
if(K2==0){
JDQ=1; //释放
P0=0xff; //P0口LED灯灭
}
}
}
}

⑺ 求一个单片机控制继电器的程序。

如果是做产品的话,高电平驱动不好,复位的时候管脚默认状态是高电平,就算程序中开机立即拉低IO口,上电的时候也可能继电器颤抖一下

⑻ 求51单片机控制继电器程序

程序就免了,给你几个建议。

  1. 你最好把按键的程序和逻辑控制分开写,这样比较清晰,按键驱动的结果就是消抖以后的按键状态,处理完清除,最好用固定时钟驱动少用延时,按键驱动看着容易做好了还是不容易的。

  2. 逻辑控制无非就是if else。。。用全局量记录之前的状态,最好有个简单明了的逻辑状态图否则很容易乱套,然后操作继电器就是两个io口就是了。

  3. 你用的这个和89c都是stc比较老的型号了,建议你到官网看看,很多新型号跑得更快,程序上能不能通用注意两点,死等延时的时间和硬件上的区别。

  4. stc很多型号都用3.0和3.1口下载程序,所以按键会有影响,建议换个io口

  5. 继电器的常开和常闭是接线决定的,按键常开和常闭可以用上下拉电阻来控制,硬件上处理一下,主要是要保证系统刚上电之前的这段时间的状态是对的。

  6. 51和stm32是完全不同的cpu,如果要移植到stm32上初始化和寄存器操作是不一样的,c语言的层面上大概只有逻辑控制这块儿能用,而且stm32是3.3V硬件上也要处理。

  7. 这个做成并不难,做好就要花些心思,自己做才有意义解决问题就是学习的过程。

⑼ 用单片机控制继电器和蜂鸣器的程序

sbit
pluse=P1^0;
sbit
jdq=P1^1;
sbit
beep=P1^2;
继电器和
蜂鸣器
保持吗?
如果保持的话:
while(1)
{
if(pluse==1)
{
jdq=1;
beep=1;
}
}
如果不保持的话:
while(1)
{
if(pluse==1)
{
jdq=1;
beep=1;
}
else
{
jdq=0;
beep=0;
}
}

阅读全文

与单片机继电器控制程序相关的资料

热点内容
文件夹怎么做标题 浏览:31
腾讯云服务器如何防止被攻击 浏览:879
六棱柱的体积算法 浏览:933
淘宝什么云服务器好用 浏览:340
pythonoa项目 浏览:307
android杜比音效 浏览:341
杀手47为什么连接不了服务器 浏览:108
静态路径命令 浏览:533
一直编译不过怎么办 浏览:829
汽车串联并联算法 浏览:458
助眠解压的声音音频小哥哥 浏览:277
pythoncmd换行 浏览:376
linux取消行号 浏览:355
安卓原生系统官网是什么 浏览:444
底部主图源码 浏览:878
服务器崩了有什么提示 浏览:780
远程海康服务器用什么浏览器 浏览:232
解压报纸图片 浏览:956
python微信公众号开发平台 浏览:895
知识付费网站java源码 浏览:255