版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、定时开关控制器的制作 魏军丞 图1、主板电路原理图定时开关控制器在各种场合都有着极为广泛的用途,例如可用于工业方面的自动控制,办公场所的电器控制,广告公司的霓虹灯控制,军事装备的武器控制等等,有比较高的应用价值。本文利用2051单片机设计的定时开关控制器具有简单易制、价格低廉、控制点数多、控制时间可精确到秒等特点,供有兴趣的朋友参考。 1、主板电路部分 本电路主要是利用单片机AT89C2051(-24PI)作为主控制元件,通过外围电路控制用电设备的电源,以达到定时开关机的目的。AT89C2051具有体积小、功能强大、运行速度快、价格低廉等优点,非常适合制作集成度较高的控制电路。按图1制作的主板
2、(双面)大小只有9570mm2,器件位置图见图2。主板电路包括MCU AT89C2051、键盘与显示、输入与输出口、复位和电源滤波等电路组成。 1.1 键盘与显示 显示电路由U2、U3、Q1Q7和L1A、L2A组成。U2为BCD7段译码器(74LS47),通过单片机U1的P1.4P1.7口将要显示字符的BCD码输出到U2的四个输入端,经U2译码后输出相应的笔段驱动LED数码管(共阳)。LED数码管显示采用动态扫描方式,即在某一时刻,只有一个数码管被点亮。数码管的位选信号由单片机U1的P3.3P3.5输出,经U3(74HC138)译码后通过Q1Q6放大,驱动相应的数码管。R17R24为限流电阻。
3、 图2、主板电路器件位置图由于U2只能输出7段笔段码,而数码管除了七段笔段外,还要控制点亮小数点,因此,小数点必须有另外的驱动电路来完成,在这里,通过Q7来驱动小数点。当需要点亮小数点时,在U1的P1.3输出高电平即可。 键盘电路跟显示电路一样,采用扫描方式,利用动态显示时的数码管驱动位置信号来判断相应按键的状态。U1的P3.3P3.5口输出的BCD码经U3译码后,相应Y口呈低电平,而U1的P3.7口平时为高电平(由于R8上拉),当某一键按下时, P3.7被下拉为低电平,这时MCU利用程序查询P3.7是否为低电平,如果P3.7为低电平,就读回U1 P3.3P3.5口的值(从缓冲区读取),就可判
4、断是那个按键按下,然后调用相应的处理程序进行处理。 1.2 控制输出、复位与电源滤波电路 MCU对控制的输出是通过P3.0P3.2口完成的。程序开始时这三个口的输出状态是低电平,MCU通过程序查询三路输出的ON或OFF状态预置时间是否已到,如果已到时间,则改变相应的输出状态,就完成了对外部电路的控制。复位电路如图1左上角所示,C3和R25完成上电复位,S6为手动复位,按键输入干扰和抖动的预防是由软件完成的。5V电源由JP2输入,经C4C9滤波后给U1和其它器件供电。 2、电源与控制电路 电源电路如图3,市电经总开关K后由B降压、V1整流、C11C14滤波、U4、U5稳压后给主板和控制电路板提供
5、稳定的工作电源。控制电路原理如图3,主板送过来的三路控制信号通过Q12Q14分别控制继电器J1、J2、J3,对外部电路实施直接控制。继电器这里没有给出具体型号,您可根据耐压及通流大小选用相应的继电器,如在大电流和强电磁场干扰的环境里工作,最好利用中间继电器来间接控制。 3、程序软件工作过程 3.1 秒脉冲发生器图3、电源与控制电路原理图 秒脉冲发生器是由定时器T0和内存空间TT0配合完成的。T0工作于16位计数器模式,当T0向上计数由全1变为全0时产生中断,本程序中T0的初值为0DC00H,大约0.01秒中断一次。这里使用的晶振频率为11.0592MHz,由此可计算出日误差约为0.7
6、8S。 工作过程:如图4流程图所示,产生中断后,首先保存ACC和PSW的值,然后为T0重装初值,判断中断次数是否小于100,是则转出中断服务,反之则为秒计数器加1,秒计数器如果大于59,则为分计数器加1,同时秒计数器清0。同样分计数器如大于59则为时计数器加1,同时分计数器清0,时计数器如大于23则清0并转出中断服务。T0中断100次的时间刚好为1秒钟。 3.2 主程序 上电复位过程:首先P0P2口全部置1,P3口高5位置1,低3位置0。设置定时器T0工作于16位计数器模式,并赋初值TH00DCH,TL000H,关闭外部中断和串行口中断,时间计数器TS、TM、TH清0,所有预置时间存储区全部赋
7、值FFH,至此所有初始化工作完成。 主程序工作过程:首先循环进行六个数码管扫描显示(DISPLY段),然后比较所有预置时间(COMP段)是否与当前时间相等,如相等则转向相应处理程序。在比较完成(或处理完成)后判断有无按键(PP2段),没有则返回继续显示、比较、判断;有按键则转向相应处理程序。按键转移采用偏移量加表格跳转转移法(KEY段),简单、明了。预置时间比较则采用逐一比较法,即对每一个预置值进行比较,如相等则做相应处理。具体比较时(COMP1段)先比较TH值,如不相等则直接转出并置“时间到”标志CCB为0,如TH、TM、TS全部对应相等,则置该标志为1。 N上电复位轮流显示判断键值相应处理
8、有键按下?NY主 程 序Y相应处理预设时间到否?YT0中断服务设常数因子中断次数减1RETIN秒分时计数TT0为0吗?图4、软件程序工作流程图本程序在显示及按键处理(设置过程)中巧妙使用R1寄存器作为公用地址寄存工具,对实时时间和预置时间的显示和修改调用同一程序完成,使源代码长度大大缩短,提高了程序的可读性和运行效率。 4、制作与调试 4.1主板的制作与调试 主板的制作稍微复杂一点。首先是制作印刷板,利用Protel99按照本文所示器件位置图放置好元器件,然后手动布线(双面),线宽为0.8mm左右,太宽做出的板子太大,太窄无法进行自制。绘好印制板图后转成BMP格式利用电脑刻字机镂空(要用进口的
9、即时贴纸,不然容易断开),贴在双面敷铜板上,就可以用FeCl3腐蚀了。具体的制作方法这里不再赘述,但最好在印制板布线时做个阻焊层,同时在即时贴上刻出来,当板子制好清洗干净后敷在上面,用浅绿色油漆或清漆喷上薄薄的一层,好看又防腐蚀。 S5 数码管显示 意 义 S1 S2 S3 S4 没有按S5 00.00.00 设 置 时 间 时计数器加1 分计数器加1 秒计数器加1 退 出 按第1次S5 95.95.95 第1路ON设置 时加1 分加1 秒加1 退 出 按第2次S5 95.95.95 第1路OFF设置 时加1 分加1 秒加1 退 出 按第3次S5 95.95.95 第2路ON设置 时加1 分加
10、1 秒加1 退 出 按第4次S5 95.95.95 第2路OFF设置 时加1 分加1 秒加1 退 出 按第5次S5 95.95.95 第3路ON设置 时加1 分加1 秒加1 退 出 按第6次S5 95.95.95 第3路OFF设置 时加1 分加1 秒加1 退 出 按第7次S5 当前时间 退 出 其次是元器件的选择。如果按照本文所附器件位置图布线的话,数码管需选用图示型号才能安装(5361BH,一拖三数码管),选用不同型号数码管时可能需修改器件位置参数,然后再布线即可。晶振为11.0592MHz。S1S5选用黑色小型轻触开关,S6则用红色同类型开关。变压器B选用15V、10W左右即可,V1硅堆应
11、与B配合选用。控制继电器根据需要选用适合的型号,如5V、12V、24V等,如果选用5V的,相应的B、V1可选小一点的,7812则不要。如选用24V的,那么B、V1、7812、7805都需同时根据实际情况来选用了。220V输出插座没有特殊要求,其耐压和通流符合受控器件要求即可。其它元器件选用通用的就行。 最后就是焊接元器件。元器件购回后应先进行预处理(引脚打磨、上焊锡),然后逐一焊接。在焊接MCU(当然2051要烧好程序后才能焊接哦J)和其它集成电路时应使用有良好接地的烙铁(断电焊接也可),以免被击穿。由于双面印刷板存在一个穿孔问题,器件引脚穿过后,两面都要点上焊锡;如只是过孔,可用细铜线穿过并
12、在两面焊接后剪掉即可。 在印刷板制作良好,连线没有不应有的开路或短路,且焊接没有虚焊的情况下,不用调试即可正常工作(本程序已制作成品并调试通过,不需再行调试)。如果您觉得自己制作的印刷板不够漂亮或太麻烦可联络凯思迪邮购(焊接好的整板也有)。 4.2 电源与控制板的制作 可以将电源与控制板做在同一个板子上,也可分开制作,视所使用的情况而定,但JP1与JZ1之间的连线不宜太长。印刷板的制作同前所述,要注意的是在布线时对220V市电进入和输出(包括中线)的线宽设计要宽一点(根据工作电流大小来定为好),还要注意市电与直流电源的隔离,以免在使用中造成触电事故。 5、操作使用 本系统在加电后数码管显示“0
13、0.00.00”,输出继电器均不动作,此时可直接按S1、S2、S3键分别对时、分、秒进行调整,使当前时间与北京时间相符,时间设置过程中将停止计时,在设置好后按S4退出,时钟即进入正常计时。如果要设置输出控制的预置时间则先按S5,数码管显示“95.95.95”,此时可再按S1、S2、S3键分别对第一路输出状态ON的时、分、秒进行设置,设好后再按一次S5键,数码管也显示“95.95.95”,然后按S1、S2、S3键则分别对第一路输出状态OFF的时、分、秒进行设置,依此类推,按第七次时退出设定(详见附表)。任一路任一状态被执行后其预置值即被清除,24小时后并不有效,如果需要每天循环执行则对程序进行简
14、单的修改即可(预置值不清除就可)。 6、改进与扩展 本文所述的AT89C2051在控制输出时只使用了P3.0P3.2三个口,所以只能控制三路六个状态,如果把不用的P1.0P1.2三个口用起来,则可控制六路十二个状态,外围电路相应增加三路继电器,程序软件只需稍事修改即可。当然如果需要控制更多路输出状态,那么在使用锁存器、译码器、触发器等后最多可以扩展到控制2664路128个状态。在对控制输出的路数要求不多,而显示部分需要比较多的情况下,如还要显示年月日、农历、星期等,只要对其进行扩展就可实现:P1.4P1.7不动,选通端用两个138,输出口用P3.2P3.5就有2416个数码显示。这时仍然利用上
15、述方法最多可扩展到控制2532路64个状态。当然年月日、农历、星期的计算(如大月小月、闰年、闰月等)分别汇编相应的子程序插入即可,这方面的资料8951论坛讨论的很多,这里不再赘述。如您对源程序有不明白的地方或有兴趣交流可与我联系E-mail:luckybirds。 ;* ;* 三路六个状态定时开关控制器 * ;* ;* S1-对时按钮;S2对分按钮 * ;* S3对秒按钮;S4退出对时 * ;* S5设定预设值按钮 * ;* TS EQU 2DH ;* TS 为秒计数器(二进制,024) TM EQU 2EH ;* TM 为分计数器(二进制,060) TH EQU 2FH ;*
16、TH 为时计数器(二进制,060) 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 ;时十位选通
17、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 0000HAJMP MAIN ORG 000BH;定时器0(T0)中断入口 SJMP I_T0 ORG 001BH;定时器1(T1)中断入口 I_T1:AJMP MAIN1 RETI ;* 定时
18、器0中断服务 * ORG 0060H;定时器T0中断服务程序 I_T0: PUSH ACC PUSH PSW MOV TH0,#0DCH;0.01s时间,常数因子DC00H MOV R3,TT0DJNZ R3,I_T01;中断次数<100(每次中断0.01S),转出. MOV R3,#100;中断次数100次,重新下一个计数. MOV A,TS ;秒计数器加1 ADD A,#01H MOV TS,A SUBB A,#60 ;秒计数器>59? Y,秒计数器00 JC I_T01 MOV TS,#00H MOV A,TM ;分计数器加1 ADD A,#01H MOV TM,A SUBB
19、 A,#60 ;分计数器>59? Y,分计数器00 JC I_T01 MOV TM,#00H MOV A,TH ;时计数器加1 ADD A,#01H MOV TH,A SUBB A,#24 ;时计数器>23? Y,时计数器00 JC I_T01 MOV TH,#00H I_T01:MOV TT0,R3 POP PSW POP ACC NOP NOP RETI ;* 主程序 * ORG 00F0H MAIN:MOV P0,#0FFH;主程序,初始化 MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0F8H ;p3.0p3.2置低电平,使三个控制口关闭
20、 MOV SP,#50H ;初始化堆栈指针MOV TMOD,#11H;T0工作于16位定时器 MOV TT0,#100 ;中断次数,每次0.01s*100=1s MOV TH0,#0DCH;T0初值 MOV TL0,#00H MOV TS,#00H ;时间赋初值 MOV TM,#00H MOV TH,#00H CLR EX0 ;外部中断0失效 CLR EX1 ;外部中断1失效 CLR ES ;串行口中断失效 SETB ET0 ;开T0 SETB TR0 ;激活T0 SETB EA ;开总中断 MOV K5,#00H ;S5键状态赋0 mov r5,#14H ;预设值全部赋FFH,数码管显示95
21、.95.95 mov r1,#K1ON kk:mov r1,#OFF INC R1 DJNZ r5,kk MAIN1:MOV R6,#50H;循环显示80次,消除按键抖动 DISP:MOV KEYCODE,#00H MOV R1,#TS ;R1保存时间存储区的首地址 MOV A,K5 ;K5为S5的状态,在设定预设值时则为增量 ADD A,R1 MOV R1,A NOP NOP ACALL DISPLY ;调用显示子程序 DJNZ R6,DISP MOV A,K5 ;S5按下时不进行比较 JNZ PP2 NOP NOP ACALL COMP ;判断预设置是否与当前时间相等, PP2:MOV D
22、PTR,#KEY ;设置转移表增量 MOV A,KEYCODE ;读键盘值 JMP A+DPTR ;按键值跳到相应处理程序 KEY:SJMP MAIN1 SJMP KEY1 ;设置小时值 SJMP KEY2 ;设置分钟值 SJMP KEY3 ;设置秒钟值 SJMP KEY4 ;退出设置 SJMP KEY5 ;设定预设置 KEY1:MOV A,K5 ;如果S5按下,则TR0不停止计数 JNZ KEY12 ;在设定预设置值时时钟不停止 CLR TR0KEY12:MOV A,R1 CLR C INC A ;时计数器加1 MOV R1,A SUBB A,#24;24D JC KEY11 MOV R1,
23、#00H KEY11: SJMP MAIN1 NOP KEY2:MOV A,K5 ;如果S5按下,则TR0不停止计数 JNZ KEY22 CLR TR0KEY22:DEC R1 MOV A,R1 CLR C INC A ;分计数器加1 MOV R1,A SUBB A,#60 ;60D JC KEY21 MOV R1,#00H KEY21: SJMP MAIN1 NOP KEY3:MOV A,K5 ;如果S5按下,则TR0不停止计数 JNZ KEY32 CLR TR0;秒计数器加1 KEY32:DEC R1 DEC R1 MOV A,R1 CLR C INC A MOV R1,A SUBB A,
24、#60 ;60D JC KEY31 MOV R1,#00H KEY31: SJMP MAIN1NOP KEY4:MOV K5,#00H ;退出时将K5清0 MOV TH0,#0DCH ;退出校时状态 MOV TL0,#00H SETB TR0 SJMP MAIN1 KEY5: MOV A,K5 ;修改预设置 CLR C SUBB A,#12H ;判断S5按钮是否越过设定区,如果越过则将K5清0并退出设定 JZ KEY51 MOV A,K5 ADD A,#03H MOV K5,A AJMP KEY52 KEY51: MOV K5,#00H KEY52: LJMP MAIN1 ;*
25、键盘和显示子程序 * ORG 0200H ;显示子程序 DISPLY: MOV A,R1 ;秒计数器调入A MOV B,#0AH DIV AB ;秒计数值÷10(结果十位从A,个位存于B)SWAP A ORL A,#0FH ;显示秒的十位 MOV P1,A MOV A,P3 ;输出位选信号,以下相同 ANL A,#0FH ORL A,#DPS1 MOV P3,A NOP NOP ACALL DSPDEL ;延时 MOV C,P3.7 ;读S4按键状态 JC NP1 MOV KEYCODE,#08H;S4按下,键盘值8NP1:MOV P1,#0FFH;消隐 NOP NOP MOV A,
26、B ;显示秒的个位 SWAP A ORL A,#0FH MOV P1,A MOV A,P3 ANL A,#07H ORL A,#DPS0 MOV P3,A ACALL DSPDEL MOV C,P3.7 JC SS5 MOV KEYCODE,#0AH ;S5按下,键值=#0AH SS5:MOV P1,#0FFH ;消隐 NOP INC R1 MOV A,R1 ;调入分值 MOV B,#0AH DIV ABSWAP A ;显示分的十位 ORL A,#0FH MOV P1,A MOV A,P3 ANL A,#07H ORL A,#DPM1 MOV P3,A ACALL DSPDEL MOV C,P
27、3.7 ;检测S2是否按下 JC NP2 MOV KEYCODE,#04H;S2按下,键盘值4 NOP NP2:MOV P1,#0FFH;消隐 NOP NOP MOV A,B SWAP A ;显示分的个位 ORL A,#07H MOV P1,A MOV A,P3 ANL A,#07H ORL A,#DPM0 MOV P3,A ACALL DSPDEL MOV C,P3.7 ;判断S3是否按下 JC NP3 MOV KEYCODE,#06H;若S3按下,键盘值6 NOPNP3:MOV P1,#0F7H ;消隐 NOP INC R1 MOV A,R1 ;调入时值 MOV B,#0AHDIV ABS
28、WAP A ;显示时的十位 JNZ DISPLY1 MOV A,#0FFH DISPLY1: ORL A,#0FH MOV P1,A MOV A,P3 ANL A,#07H ORL A,#DPH1 MOV P3,A ACALL DSPDEL NOP MOV A,B SWAP A ;显示时的个位 ORL A,#07H MOV P1,A MOV A,P3 ANL A,#07H ORL A,#DPH0 MOV P3,A ACALL DSPDEL MOV C,P3.7 ;判断S1是否按下 JC NP4 MOV KEYCODE,#02H;S1按下,键盘值2 NOP NP4:MOV P1,#0F7H;消隐
29、 NOP RET DSPDEL:MOV R7,#0FFH ;延时程序0.5ms DJNZ R7,$ RET ;* 比较设定值 * COMP: NOP YY1_1:CLR C MOV R0,#K1ON NOP NOP ACALL COMP1 MOV A,CCB JZ YY1_2 ;CBB标志为0则转移('时间到'标志) MOV A,P3 ;取P3口原值 ORL A,#01H ;置位P1.0 MOV P3,A YY1_2:CLR C MOV R0,#K1OFF NOP NOP ACALL COMP1 MOV A,CCB JZ YY2_1 ;CBB标志为0则转移 MOV A,P3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江台州市荣远客运有限公司招聘备考题库带答案详解(完整版)
- 2026山东潍坊坊子区龙泉实验小学课程岗位服务人员招聘1人备考题库附答案详解(精练)
- 2026广东珠海市市直机关事业单位招聘合同制职员65人备考题库附答案详解(模拟题)
- 2026安徽蚌埠市城市投资控股集团有限公司所属公司校园招聘4人备考题库附答案详解(典型题)
- 2026江苏徐州市中医院招聘非在编人员106人备考题库及答案详解一套
- 2026山东枣庄市口腔医院第一批青年就业见习招募22人备考题库含答案详解(培优b卷)
- 2026湖北大学医院招聘工作人员1人备考题库及完整答案详解
- 2026广东财经大学招聘教学科研人员38人备考题库含答案详解(精练)
- 2026广东江门市中心医院博士后研究人员招聘备考题库附答案详解(能力提升)
- 2026年西安思源学院教师招聘备考题库及1套参考答案详解
- 部编版五年级道德与法治下册全册全套课件【审定版】
- GA 526-2025监室门
- 2026年中盐甘肃省盐业(集团)有限责任公司管理人员招聘笔试参考题库及答案解析
- 拒绝暴力创建和谐校园-主题班会课件
- 2026年东营市人民医院(东营市妇幼保健院)人才引进(25人)考试备考题库及答案解析
- 2026年高考化学命题逻辑深度解析与备考策略
- 2026年四川省泸州市江阳区中考语文一模试卷
- 2026吉林省职工服务有限责任公司(拟成立) 招聘10人备考题库含答案详解(典型题)
- 上海中国极地研究中心(中国极地研究所)2025年招聘20人笔试历年参考题库附带答案详解(5卷)
- 2026年中考语文一轮复习:文言文词类活用 专项练习题(含答案解析)
- “十五五规划纲要”解读:乡村振兴促城乡融合
评论
0/150
提交评论