工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->用PIC单片机制作的电源定时插座

用PIC单片机制作的电源定时插座

作者:dolphin时间:2016-09-26

  本电源定时插座有三个操作按键S1、S2、S3,并用两位LED数码管显示定时时间。其中S2、S3两个按键分别预置、设定个位和十位数的定时时间值,设定的定时时间调整范围是0~99分钟,用一个S1按键做定时插座的“启动/停止”操作按键。

  并且程序中添加了蜂鸣器提示音部分,该部分程序功能是:每按下一次S1、S2或者S3按键,蜂鸣器就会发出“嘀”的一声响,以确定按键按下的有效性。

  计时程序采用倒计时递减计数的工作方式工作,程序在运行时,时间每过一分钟数码管的个位显示值减“1”,每过十分钟数码管“十位显示值”减“1”。

  预设定时时间一到,插座自动切断AC220V电源输出,同时蜂鸣器报警。直至再次按下“启动/停止”

  按键S1才能解除蜂鸣器的报警声,同时二位数码管再次显示上一次预置的定时时间。程序也再次回复到初始状态并可随时预置下一次定时插座输出AC220V电压供给的定时时间。

  电路硬件部分如图1所示。

  电源部分电路:AC220V交流市电从电路图1中左下端的三孔插头输入到本定时插座中,其中“火线”L分为两路分别加在控制电压输出继电器J1的定触点④端和电源变压器T1的初级绕组的保险丝管上,“零线”N端加在输出插座JP1的N端和电源变压器T1的另一端,“接地线”E端则与输出插座的接地端E相连,输出插座JP1的“火线端”L则受控于继电器J1的动触点①端。由T1电源变压器将AC220V交流市电变换为AC12V电压后加在由D2~D5组成的桥式整流电路的两个桥臂端,再经C1滤波、MC7805稳压、C3、C2高、低频滤波后得到稳定的DC5V直流电压作为整机的工作电源。

  本电源定时插座的主控MCU芯片为PIC16F627单片机。PIC16F系列单片机优点之一是:

  端口驱动电流大,每个端口的拉电流或者灌电流均大于20mA,这样用它的端口驱动能力就可以直接驱动LED数码管了,无需在加驱动三极管,使得该插座的硬件电路设计变得十分简洁。

  PIC16F627单片机端口的设置:

  单片机的RA有6个I/O端口,用RA5:0

  表示。本应用中RA0-RA2设置为输出端口;其中RA0、RA1端口分别用于两个数码管的“个位”和“十位”的“位码”驱动,RA2用于控制三极管Q3的b极工作,连带控制继电器J1触点的闭合与否,进而,控制了定时插座JP1的AC220V输出电压的有无。RA3端口设置为输入/输出分时二重复用工作状态:①作输入端口时:用作定时插座的“个位定时时间预置调整键”;②作输出端口时:用于驱动LED1发光二极管做为本定时插座的工作指示灯。在定时插座没有进入定时输出供电的情况下,RA3作为输入端口,保持了用于设置定时器的个位数码预置数的设置功能;在插座工作输出电压的情况下,RA3转换为输出端口,用于驱动LED1作为插座的工作指示灯。

  RA4端口设置为输入端口,用于定时时间的十位数值预置调整键。RA5端口为输入端口,与之相接的按钮开关S1为“启动/报警解除按键”。

  RB端口的设置:电路中PIC16F627的RB端口设置为输出端口。其中RB0-RB6端口分别用于LED数码管的“a-g”7个“段码”的驱动,因这里选用的是LG5621BH(红色)共阳极LED数码管,故而,只有当RB0-RB6端口输出“低电平”时,LED数码管所对应的“a-g”码段才能被点亮。RB7端口用于驱动有源蜂鸣器,在RB7端口输出高电平时,该高电平电压通过1k电阻R9加至三极管Q4的b极上,Q4导通,蜂鸣器鸣响报警。

  电源定时插座功能:定时插座初始上电时,两位数码管显示值为:“99”,并处于停止走时的待机状态,其输出插孔JP1没有电压输出。要是此时按下个位定时时间数值预置调整键S3,则个位数码管从当前的显示值减小“1”个数,如,第一次按下S3并且释放按键后,个位数码管显示值由“9”变为“8”,再按一次S3,显示值变为“7”,……直至显示值变为“0”,再从“0”回到“9”往复循环显示。

  十位定时时间预置调整按键S2功能与S3相同,只不过每按动S2一次,并且释放后,十位数码管显示值减小“1”,同样,显示值也是从9→8→7→…→0→9往复循环显示。S1为启动/报警解除键。

  当第一次按动S1按钮时,定时插座进入工作状态:

  RA2端口输出高电平,此高电平经过1K限流电阻R8加在三极管Q3基极b上,Q3导通,继电器J1吸合,J1的①、④触点闭合,AC220V交流市电的“火线”L经继电器的定、动触点④、①加至本插座的输出JP1的L端口,从而JP1插孔输出AC220V交流电压,同时交流电压输出指示灯LED2被点亮,表示插座有AC220V电压输出。

  同时,定时时间以倒计时的方式开始计时、递减,定时时间为分钟,定时时长从数码管当前的显示值开始到显示00结束。在倒计时的时间范围内,LED1工作指示灯开始以2S的频率闪烁点亮、熄灭一次,并且每过一分钟,数码管的个位显示值递减“1”个数;每过10分钟,数码管的十位显示值减“1”,当数码管显示值为“00”时,再过60秒钟,输出插孔JP1断电,AC220V输出电压指示灯LED2同时熄灭;蜂鸣器开始报警鸣响。

  在蜂鸣器报警其间内,数码管始终显示“00”值不变、LED1工作指示灯停止闪烁,并且处于常亮状态。直至再次按下S1按键时蜂鸣器才能停止报警;数码管显示值跳回到上一次预置的定时时间的数值上,LED1熄灭。


  在倒计器的定时时间范内,S1 ~ S3 按键功能均被屏蔽、失效,不能使能。

  程序设计要点:程序设计包括PIC16F627 初始化程序,主程序,1 分钟定时中断子程序,蜂鸣器提示音子程序,查数码表子程序等组成。

  本程序设计中,LED1 闪烁点亮速度设置不宜太快或太慢,LED1 闪烁点亮速度太快,会使人看了后心理产生太“忙碌”, 感受心慌,闪烁的太慢又会使人疑惑定时插座是否在走动、工作,以每2S钟的频率点亮、熄灭一次为妥。另外电路中增加了LED2 作为AC220V 输出电源指示灯,当定时插座工作时,LED2 点亮,表示JP1 插孔有AC220V电压输出;LED2 熄灭则表示电源JP1 插孔无AC220V 电压输出,以示确认插孔有否AC 电压输出。

  PIC16F627 单片机初始化程序如下。

  ;*****【PIC16F627 初始化程序】***************STARTBCF STATUS,6BSF STATUS,5; 置STAUUS 寄存器的RP1=0,RPO=1MOVLW 0MOVWF TRISB; 设B 口为输出MOVLW 0F8HMOVWF TRISA; 设A 口的R2-R0 位为输出; 设A 口的R5-R3 位为输入MOVLW 07HMOVWF OPTION_REG; 设置选项寄存器分频器:TMR0; 分频比值设为:1 :256BCF STATUS,5MOVLW 07HMOVWF CMCON; 置数07H 到CMCON; 关闭16F627 内部比较器MOVLW 0MOVWF PORTB; 清B 口;---------- 以下为开中断设置--------MOVLW 0A0HMOVWF INTCON; 开TMR0 中断使能位; 和全局中断使能位BCF INTCON,T0IFMOVLW TMR0_B; 清TMR0 中断标志为MOVWF TMR0; 向TMR0 赋初值; 并启动TMR0 定时器;*******【初始化程序结束】*********************程序设计流程模块,主程序框图如图2 所示。


  按键提示音子程序段如下,供参考。

  ;------ 按键提示音子程序开始-----;FMQ; 蜂鸣器提示音子程序BSF PORTB,7;RB7 端口输出“高电平”,使Q4 导通,蜂鸣器LS1 鸣响。

  CALL DELAY_0.2S; 调用0.2S 延时子程序,让蜂鸣器响0.2S。

  BCF PORTB,7;RB7 输出“低电平”,让Q4 截止,蜂鸣器关闭RETURN; 蜂鸣器子程序返回。

  ;----- 按键提示音子程序结束------;

程序设计要点:
1) 本定时器使用了PIC16F627 的一个定时器模块TMI0,并用TMI0 做了50mS 定时中断,再用寄存器“递减、判零”语句:

  “DECFSZ F”判断20×60 次中断到了与否来确定显示1 分钟时间的界限,1 分钟未到,继续显示当前的数码值,1 分钟到了,从当前显示的数码值减“1”后在显示1 分钟……,这样:每过1 分钟数码管个位显示值就减“1”,每过10 分钟,十位数码管显示值就减“1”,直到两位数码管的显示值减到“00”为止。

2)定时器如何区分:预置显示程序和定时工作显示程序。在此程序设计中是用了一个寄存器的标志位加以区分的,标志位为“0”,执行预置显示程序;标志位为“1”,执行定时器工做程序。

  3)按键的防抖动问题,机械按键在按下和抬起的瞬间均存在着多次接通与断开的情况,加之单片机执行程序的速度非常之快,即在瞬间(1μS 时间内)即可检测到开关的闭合与断开的状态,故而,必须要做好S1-S3 按键开关的防抖问题,防抖使用软件来解决,具体方法是在按键按下和抬起的过程中均加有延时程序,一般延时时间取10mS 左右为宜,这样即解决了按键的防抖问题,又不至于让人感觉按键反映的速度太慢。

4)调用显示查表程序,用查表法作数码管的数码值显示是程序设计中惯用的手段之一,它可使软、硬件设计变得更加的简洁、易懂。但本定时器设计中把数码管的小数点位用作了“工作指示灯”,又由于数码管采用的是“动态扫描”的方法点亮工作的,查表码会发生了变化。如将码表的值“颠倒”书写:RETLW 0X40 写在最前面;RETLW 0X10 写在最后面




评论

技术专区