|
第一届51测试网有奖征文精彩回放,深圳学林电子版权所有 www.51c51.com (专业51单片机学习网站)转载注明出处! 更多精彩稿件请访问论坛http://www.51c51.com/bbs/index.asp |
|
| 作品1:字符型液晶显示模块
作者联系: 邓杰 |
|
| 作品2:用8X8LED点阵屏循环显示 | 作品7:用虚拟IIC总线实现24C02
的应用
|
| 作品3:虚拟仿真仪器UMPS的应用:牛余朋 |
作品8:语音编程、远程控制试验板
社区乞丐 |
| 作品4:万年历数字钟及可调时钟系统 |
作品9:定时开关控制器的制作 |
|
定时开关控制器的制作 魏军丞 定时开关控制器在各种场合都有着极为广泛的用途,例如可用于工业方面的自动控制,办公场所的电器控制,广告公司的霓虹灯控制,军事装备的武器控制等等,有比较高的应用价值。本文利用2051单片机设计的定时开关控制器具有简单易制、价格低廉、控制点数多、控制时间可精确到秒等特点,供有兴趣的朋友参考。 1、主板电路部分
1.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为限流电阻。
键盘电路跟显示电路一样,采用扫描方式,利用动态显示时的数码管驱动位置信号来判断相应按键的状态。U1的P3.3~P3.5口输出的BCD码经U3译码后,相应Y口呈低电平,而U1的P3.7口平时为高电平(由于R8上拉),当某一键按下时,
P3.7被下拉为低电平,这时MCU利用程序查询P3.7是否为低电平,如果P3.7为低电平,就读回U1
P3.3~P3.5口的值(从缓冲区读取),就可判断是那个按键按下,然后调用相应的处理程序进行处理。 1.2
控制输出、复位与电源滤波电路 MCU对控制的输出是通过P3.0~P3.2口完成的。程序开始时这三个口的输出状态是低电平,MCU通过程序查询三路输出的ON或OFF状态预置时间是否已到,如果已到时间,则改变相应的输出状态,就完成了对外部电路的控制。复位电路如图1左上角所示,C3和R25完成上电复位,S6为手动复位,按键输入干扰和抖动的预防是由软件完成的。+5V电源由JP2输入,经C4~C9滤波后给U1和其它器件供电。 2、电源与控制电路 电源电路如图3,市电经总开关K后由B降压、V1整流、C11~C14滤波、U4、U5稳压后给主板和控制电路板提供稳定的工作电源。控制电路原理如图3,主板送过来的三路控制信号通过Q12~Q14分别控制继电器J1、J2、J3,对外部电路实施直接控制。继电器这里没有给出具体型号,您可根据耐压及通流大小选用相应的继电器,如在大电流和强电磁场干扰的环境里工作,最好利用中间继电器来间接控制。 3、程序软件工作过程 3.1 秒脉冲发生器
工作过程:如图4流程图所示,产生中断后,首先保存ACC和PSW的值,然后为T0重装初值,判断中断次数是否小于100,是则转出中断服务,反之则为秒计数器加1,秒计数器如果大于59,则为分计数器加1,同时秒计数器清0。同样分计数器如大于59则为时计数器加1,同时分计数器清0,时计数器如大于23则清0并转出中断服务。T0中断100次的时间刚好为1秒钟。 3.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。
4、制作与调试 4.1主板的制作与调试 主板的制作稍微复杂一点。首先是制作印刷板,利用Protel99按照本文所示器件位置图放置好元器件,然后手动布线(双面),线宽为0.8mm左右,太宽做出的板子太大,太窄无法进行自制。绘好印制板图后转成BMP格式利用电脑刻字机镂空(要用进口的即时贴纸,不然容易断开),贴在双面敷铜板上,就可以用FeCl3腐蚀了。具体的制作方法这里不再赘述,但最好在印制板布线时做个阻焊层,同时在即时贴上刻出来,当板子制好清洗干净后敷在上面,用浅绿色油漆或清漆喷上薄薄的一层,好看又防腐蚀。
其次是元器件的选择。如果按照本文所附器件位置图布线的话,数码管需选用图示型号才能安装(5361BH,一拖三数码管),选用不同型号数码管时可能需修改器件位置参数,然后再布线即可。晶振为11.0592MHz。S1~S5选用黑色小型轻触开关,S6则用红色同类型开关。变压器B选用15V、10W左右即可,V1硅堆应与B配合选用。控制继电器根据需要选用适合的型号,如5V、12V、24V等,如果选用5V的,相应的B、V1可选小一点的,7812则不要。如选用24V的,那么B、V1、7812、7805都需同时根据实际情况来选用了。~220V输出插座没有特殊要求,其耐压和通流符合受控器件要求即可。其它元器件选用通用的就行。 最后就是焊接元器件。元器件购回后应先进行预处理(引脚打磨、上焊锡),然后逐一焊接。在焊接MCU(当然2051要烧好程序后才能焊接哦J)和其它集成电路时应使用有良好接地的烙铁(断电焊接也可),以免被击穿。由于双面印刷板存在一个穿孔问题,器件引脚穿过后,两面都要点上焊锡;如只是过孔,可用细铜线穿过并在两面焊接后剪掉即可。 在印刷板制作良好,连线没有不应有的开路或短路,且焊接没有虚焊的情况下,不用调试即可正常工作(本程序已制作成品并调试通过,不需再行调试)。如果您觉得自己制作的印刷板不够漂亮或太麻烦可联络凯思迪邮购(焊接好的整板也有)。 4.2
电源与控制板的制作 可以将电源与控制板做在同一个板子上,也可分开制作,视所使用的情况而定,但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个状态。当然年月日、农历、星期的计算(如大月小月、闰年、闰月等)分别汇编相应的子程序插入即可,这方面的资料8951论坛讨论的很多,这里不再赘述。如您对源程序有不明白的地方或有兴趣交流可与我联系E-mail:luckybirds@sina.com。 ;***************************************** ;* 三路六个状态定时开关控制器
* ;***************************************** ;* S1----对时按钮;S2--对分按钮
* ;* S3--对秒按钮;S4--退出对时
* ;* S5--设定预设值按钮
* ;***************************************** TS EQU
2DH ;* TS
为秒计数器(二进制,0~24) TM EQU
2EH ;* TM
为分计数器(二进制,0~60) TH EQU
2FH ;* TH
为时计数器(二进制,0~60) K5 EQU
26H ;S5状态 KEYCODE EQU 29H
;*KEYCODE 为键盘值 TT0 EQU
2BH ;*与T0配合构成为秒脉冲发生器 CCB EQU
20H ;预设‘时间到’标志,为01H时表示时间到 OFF EQU
0FFH ;预设值复位标志 DPS0 EQU
11000000B ;秒个位选通 DPS1 EQU
11001000B ;秒十位选通 DPM0 EQU
11010000B ;分个位选通 DPM1 EQU
11011000B ;分十位选通 DPH0 EQU
11100000B ;时个位选通 DPH1 EQU
11101000B ;时十位选通 K1ON DATA
30H ;*第一个开启时间
30H K1OFF DATA
33H ;*第一个关闭时间
33H K2ON DATA
36H ;*第二个开启时间
36H K2OFF DATA
39H ;*第二个关闭时间
39H K3ON DATA
3CH ;*第三个开启时间
3CH K3OFF DATA
3FH ;*第三个关闭时间
3FH
ORG
0000H
AJMP MAIN
ORG
000BH
;定时器0(T0)中断入口 SJMP I_T0
ORG
001BH
;定时器1(T1)中断入口 I_T1:
AJMP MAIN1
RETI
;*********
定时器0中断服务 **************
ORG
0060H
;定时器T0中断服务程序 I_T0:
PUSH
ACC
PUSH PSW
MOV TH0,#0DCH
;0.01s时间,常数因子DC00H MOV &nbs | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||