单片机控制继电器定时开关的程序流程 板设计的定时开关控制器具有简单易制、价格低廉、控制点数多、控制时间可精确到秒等特点: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来驱动小数点。当。
求一个单片机控制继电器的程序。
求51单片机控制继电器程序 程序就免了,给你几个建议。你最好把按键的程序和逻辑控制分开写,这样比较清晰,按键驱动的结果就是消抖以后的按键状态,处理完清除,最好用固定时钟驱动少用延时,按键驱动看着容易做好了还是不容易的。逻辑控制无非就是if else。用全局量记录之前的状态,最好有个简单明了的逻辑状态图否则很容易乱套,然后操作继电器就是两个io口就是了。你用的这个和89c都是stc比较老的型号了,建议你到官网看看,很多新型号跑得更快,程序上能不能通用注意两点,死等延时的时间和硬件上的区别。stc很多型号都用3.0和3.1口下载程序,所以按键会有影响,建议换个io口继电器的常开和常闭是接线决定的,按键常开和常闭可以用上下拉电阻来控制,硬件上处理一下,主要是要保证系统刚上电之前的这段时间的状态是对的。51和stm32是完全不同的cpu,如果要移植到stm32上初始化和寄存器操作是不一样的,c语言的层面上大概只有逻辑控制这块儿能用,而且stm32是3.3V硬件上也要处理。这个做成并不难,做好就要花些心思,自己做才有意义解决问题就是学习的过程。
求51单片机控制继电器的汇编程序或c语言程序!!!! #includeincludesbit key=P1^0;sbit key1=P1^1;sbit d1=P0^0;sbit d2=P0^1;void delay1s(void)/误差 0us{unsigned char a,b,c;for(c=167;c>;0;c-)for(b=171;b>;0;b-)for(a=16;a>;0;a-);nop_();if Keil,require use intrins.h}main(){while(1){ if(key=0){ while。key);d1=0;}if(key1=0){ while。key);d2=0;}if(d1=0){delay1s();delay1s();d1=1;}if(d2=0){delay1s();delay1s();d2=1;}}}8255不要 继电器接P0^0 P0^1
怎样编单片机控制继电器程序 继电器控制十分简单,给个使能信号就可以了,比如低有效那么就clr io口,高有效就setb io口。
需要一个单片机控制继电器的程序,哪位高手能讲一下原理,万分感谢!!! 可以用三极管放大电流。继电器要加一个反向二极管。有5v的继电器。你要做成电脑控制的还是要做成遥控的?
单片机控制继电器程序
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单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。 #includeincludedefine uint unsigned intsbit a=P1^4;a继电器控制端sbit b=P2^3;b继电器控制端sbit c=P2^5;c继电器控制端sbit d=P2^7;d继电器控制端uint t;void Init_t0(void)/定时器初始化{TMOD=0x01;定时器0工作于方式1,16位定时器TH0=0x4C;TL0=0x00;定时时间50msET0=1;允许定时器0中断TR0=1;定时器0启动}void time0_server_(void)interrupt 1/定时器0中断函数{TH0=0x4C;TL0=0x00;定时时间50mst+;t每50ms加1}void main()/主函数{Init_t0();a=0;初始化,所有继电器释放b=0;c=0;d=0;t=0;计时器从0开始计时EA=1;开启总中断while(1)/循环{switch(t)/以t为参数的分支程序,t每50ms加1{case 0:/如果t=0(最初2秒),继电器a吸合,其他释放a=1;b=c=d=0;break;case 40:/如果t=40(第二个2秒),继电器b吸合,其他释放b=1;a=c=d=0;break;case 80:/如果t=80(第三个2秒),继电器c吸合,其他释放c=1;a=b=d=0;break;case 120:/如果t=120(第四个2秒),继电器d吸合,其他释放d=1;a=b=c=0;break;case 160:/如果t=160(第四个2秒结束),t=0,重复最初2秒情况t=0;break;default:/如果t与上述数字都不想等,啥也不做,免得干扰继电器状态break。
单片机89c51控制继电器程序 #includesbit key=P1^0;sbit jdq=P2^0;main(){unsigned int times;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;while(1){if(key=0){while(key=0);jdq=0;TR0=1;times=0;while(times>;=2400){while(TF0=0);TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;times+;}jdq=1;TR0=0;}}}