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

发布者:创新思绪最新更新时间:2012-09-19 来源: 21ic 关键字:PIC单片机  电源定时插座  数码管 手机看文章 扫描二维码
随时随地手机看文章

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

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

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

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

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

图1 电路硬件部分
图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 端口,用RA<5 :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"往复循环显示。[page]

十位定时时间预置调整按键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 闪烁点亮速度太快,会使人看了后心理产生太"忙碌", 感受心慌,闪烁的太慢又经C1 滤波、MC7805 稳压、C3、C2 高、低频滤波后得到稳定的DC5V 直流电压作为整机的工作电源。

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

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

PIC16F627 单片机端口的设置:

单片机的RA 有6 个I/O 端口,用RA<5 :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 初始化程序】***************

START

BCF STATUS,6

BSF STATUS,5

; 置STAUUS 寄存器的RP1=0,RPO=1

MOVLW 0

MOVWF TRISB

; 设B 口为输出

MOVLW 0F8H

MOVWF TRISA

; 设A 口的R2-R0 位为输出

; 设A 口的R5-R3 位为输入

MOVLW 07H

MOVWF OPTION_REG

; 设置选项寄存器分频器:TMR0

; 分频比值设为:1 :256

BCF STATUS,5

MOVLW 07H

MOVWF CMCON

; 置数07H 到CMCON

; 关闭16F627 内部比较器

[page]

MOVLW 0

MOVWF PORTB

; 清B 口

;---------- 以下为开中断设置--------

MOVLW 0A0H

MOVWF INTCON

; 开TMR0 中断使能位

; 和全局中断使能位

BCF INTCON,T0IF

MOVLW TMR0_B

; 清TMR0 中断标志为

MOVWF TMR0

; 向TMR0 赋初值

; 并启动TMR0 定时器

;*******【初始化程序结束】*********************

程序设计流程模块,主程序框图如图2 所示。

图2 主程序流程框图
图2 主程序流程框图

1 分钟定时中断子程序流程图如图3 所示。

图2 1 分钟定时中断子程序流程图
图2 1 分钟定时中断子程序流程图

[page]

数码管显示子程序流程图如4 所示。

图4 数码管显示子程序流程
图4 数码管显示子程序流程

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

;------ 按键提示音子程序开始-----;

FMQ

; 蜂鸣器提示音子程序

BSF PORTB,7

;RB<7> 端口输出"高电平",使Q4 导通,蜂鸣器LS1 鸣响。

CALL DELAY_0.2S

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

BCF PORTB,7

;RB<7> 输出"低电平",让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)调用显示查表程序,用查表法作数码管的数码值显示是程序设计中惯用的手段之一,它可使软、硬件设计变得更加的简洁、易懂。但本定时器设计中把数码管的小数点位用作了"工作指示灯",又由于数码管采用的是"动态扫描"的方法点亮工作的,查表码会发生了变化。以下列出了本项目此共阳极数码所用的查表程序的码表见表1.

表1

如将码表的值"颠倒"书写:RETLW 0X40 写在最前面;RETLW 0X10 写在最后面,则本定时插座就变成了"正"定时插座了。

程序在总体设计上是以模块化为主,这样读起来思路较易清晰,流程更加明确。

元器件选择:电路中电源变压器T1 要选用功率大于3W、次级输出电压为AC12V ~ AC15V 的变压器,这样才能保证在继电器工作时不至于使T1次级输出的DC 电压降的太低而影响单片机的正常工作。LS1 选择5V 有源蜂鸣器。J1 也可以选择其它型号的产品,J1 线圈工作电压高,其工作电流就小,对电路电压降低值影响就小,J1 触点电流应选择大于10A 为宜,避免该定时插座在带动大的交流负载时触点被烧蚀的可能性。数码管选用2 位一体近日笔者发现,一些人在农村的街头巷尾、集贸市场高声叫卖"高效电子节能器".据商贩宣称:这种高科技产品获得国家专利,每只可带负载1500~3000W.价格便宜,一个只有十块钱,一般的家庭用1 个就行了,如果家里的电器多的可多买。好用且使用方便,买回家后,只需将电子节能器的两脚插头插在家中任意两眼插座上,即可节电30~50%,甚至更多。

为了让围观者相信该电子节能器的节电效果,商贩还在现场做演示。演示的方法是:把100W 的灯泡接在一个电表上,接通电源后,电表飞快地转动。

然后商贩又把"电子节能器"插在事先准备好的插座上,电表铝盘转速立即慢了一半还多。一些村民亲眼看了后,对电子节能器能节电的效果深信不疑。

纷纷索要产品介绍,使用说明书,询问使用方法,许多人解囊掏钱购买。这种"电子节能器"真的能节电吗?

为弄个究竟,笔者买回一只电子节能器进行了作 者街头叫卖的"电子节能器"能节电吗?

马祥琴化的共阳极数码管。晶振选用4MHz 的。

安装、制作、调试时要注意:由于电路中有AC220V 电压接入,建议定时插座在调试阶段暂时不接插座JP1 的AC220V 电压,以策人身安全。待程序调试通过后在将AC220V 电压接通,保证整机的调试阶段是在安全电压下进行的。电路中元件没有特殊要求,保证安装、焊接的正确性就可以了,PIC16F627 芯片要装在IC 插座中,以便于随时取下重新烧写程序。

程序烧写:文章附带的(。hex)文件读者可直接用来将其烧录到PIC16F627 芯片中。烧写程序中一定要注意编程器的"配置位"设置,它在PIC 单片机中起到举足轻重的作用,万万不可忽视。

性能分析:

本定时插座1 小时产生的时间误差约8S,这个定时插座定时精准度不高是数码管"动态显示"和 TMI0 中断相互影响,TMI0 溢出时要等程序做完才发生中断,就会有延迟误差,对于我们日常生活中一般使用,其定时的精度也算是足够高的了。

编者后记:作者提出了PIC 定时器如何减小误差的问题,希望爱好者给出出主意。如果把扫描定时和计时定时结合起来,每5ms 中断一次,中断200 次计一分钟,是否能改善?

关键字:PIC单片机  电源定时插座  数码管 引用地址:用PIC单片机制作的电源定时插座

上一篇:PIC单片机矩阵键盘+线反转法
下一篇:Microchip推出15款全新8位PIC®单片机

推荐阅读最新更新时间:2024-03-16 13:08

HT48R50A的7段数码管显示程序
; ******************************************** ; Function : 7段数码管显示程序 * ; MICroProcessor : HT48R50A-1/28SKDIP-A * ; Author: www.picavr.com * ; Crystal : 4MHz * ; ******************************************** #INCLUDE HT48R50A-1.INC ;--------------------------------------------- D
[单片机]
HT48R50A的7段<font color='red'>数码管</font>显示程序
PIC单片机汽车防盗器报警声(防盗器)
; 汽车防盗器报警声 ; 频率 分两个0.1s第一个 ;0.1S频率从1.8K-3.5K匀速增加第二个0.1S频率从3.5K-1.8K匀速减少, ;程序复位后,按S2喇叭叫两声,按S3喇叭叫15秒,中途可按S5停止. ;========================================================= LIST P=16F84A,R=DEC __CONFIG B11111111110001;_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC RT CC EQU 01H ;定义各寄存器 PC EQU 02H STATUS EQU 03H C EQU 0 RP0 EQU 5 ;-
[单片机]
PIC单片机引脚中断程序设计技巧
所有的中档系列PIC单片机,PORTB端口最高的4个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产生中断。这就是通常所说的引脚状态变化中断。 在设计引脚中断程序时,有三个需要特别注意的地方。一是,在清除P0RTB中断标志位RBIF之前,必须安排一条必不可少的,以PORTB端口数据寄存器PORTB为源寄存器的读操作指令。放置这一指令的目的有时并不只是为了读取有用的数据,而是为了取消状态变化的硬件信号,以便顺利清除RBIF标志位,为下一次中断做好准备。二是,由于端口PORTB是引脚电子变化中断,即无论引脚出现上升沿还是下降沿都会产生中断请求,所以必须处理好不需要的虚假中断。三是,
[单片机]
pic单片机控制cc1101实现loral无线传输的源程序
单片机源程序如下: #include pic.h __CONFIG(0x3B31); #include board.h /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ //#include OLED.h /*typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned int INT16U; typedef signed int INT16S; typedef unsigned long INT32U; typedef signed long INT
[单片机]
51单片机(二十六)—— 独立按键数码管显示
在这片文章中,我们对独立按键的使用进行进一步研究,用数码管来显示按键的状态。这个实验的主要代码如下所示。 main() { for(n=0;n 8;n++) //给showdata数组赋初值 showdata =0; KEY1=1; KEY2=1; KEY3=1; KEY4=1; KEY5=1; KEY6=1; KEY7=1; KEY8=1; init_T0(); for(;;) { if(KEY1==0) //按键KEY1按下 { delay1ms(10); //延时10ms去抖 if(KEY1==0) //再次判断按键KEY1按下 {
[单片机]
用C51编写的74HC595驱动数码管通用程序,可显示浮点数
#include reg52.h #include intrins.h /*used for _nop_() function*/ sbit SDATA_595 =P1^3 ;/*串行数据输入*/ sbit SCLK_595 = P1^1;/*移位时钟脉冲*/ sbit RCK_595 =P1^2 ; /*输出锁存器控制脉冲*/ #define AD_WR WR #define AD_RD RD #define AD_INTR INT0 /*51的相应端口连接ADC0804的三个控制端口*/ //#define Vin_Max 5 //////////////////////////////////////// stat
[单片机]
C-51单片机最简单静态数码管显示数字
单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等,其中七段数码管显示器是常用的显示器,常用来显示设备的运行状态, 可以显示各种数字和字符,分共阴极和共阳极两种,内部电路如图1所示。 让某一数码管显示某一数字只需要 P1=0X**; // ** 表示点亮的位置 P2=0X**; // ** 表示点亮的数字 直接上代码 #include reg51.h void main() { while(1) { P1=0Xfb; P2=0X5b; //共阴极 }
[单片机]
C-51单片机最简单静态<font color='red'>数码管</font>显示数字
基于PIC单片机控制的RLC智能测量仪
在使用电子元器件时,首先需要了解其参数,这就要求能够对元器件的参数进行精确测量。采用传统的仪表进行测量时,首先要从电路板上焊开器件,再根据元件的类型,手动选择量程档位进行测量,这样不仅麻烦而且破坏了电路板的美观。经过理论分析和实验研究,采用正交采样算法,并由单片机控制实现在线测量、智能识别、量程自动转换等多种功能,可大大提高测量仪的测量速度和精度,扩大测量范围。因此这种RLC测量仪既可改善系统测量的性能,又保持了印刷电路的美观,较传统的测量仪还具有高度的智能化和功能的集成化,在未来的应用中将具有广阔的前景。 1 硬件电路设计 此测量仪硬件设计思路如图1所示。 由于PIC单片机只能正确采集0~5 V之间的电压,而输入的信
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved