版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、17 基于单片机的定时开关控制器摘要:本实验基于STC89C51RC为核心,设计具备按键功能和数码管显示功能的外围硬件电路,以便控制器能够在设定的开关时刻控制输出继电器的动作,进而控制负载电源的启闭,并完成软件程序设计。可以实现电源的直接启动/关闭;也可以通过按键设置负载电源的启动时间,最大预约时间为12小时。关键词:STC89C51RC;继电器 Timer Switch Controller Based On MCUAbstract: Based on the experimental STC89C51RC as the core, the design has the key functi
2、on and digital tube display peripheral hardware circuit function, so that the controller can control the output relay set the switch point of the action,then control the opening and closing load power supply, and complete the software program design. Direct start / can realize the power off; can als
3、o set the button load power start-up time, maximum reservation for 12 hours.Key Words :STC89C51RC;Relay 目录 1 硬件部分结构功能简介1 1.1 STC89C51RC单片机介绍1 1.2 STC89C51RC单片机的主要性能1 1.3 STC89C51RC单片机管脚说明2 2 硬件电路设计3 2.1 单片机最小系统3 2.1.1 复位电路3 2.1.2 时钟电路3 2.2 按键电路4 2.3 显示功能5 2.4 中断系统5 2.5 继电器7 2.6 电路设计7 3 软件设计8 总 结10 参
4、考文献11 致 谢12 附 录13 1 硬件部分结构功能简介1.1 STC89C51RC单片机介绍STC89C51RC系列单片机是深圳宏晶科技公司推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机。STC89C51RC系列单片机具有ISP(在系统中可编程)动能和IAP(在应用可编程)功能,无需购买专用编辑器,可以通过串行口直接下载用户程序。单片机主控电路的主要元件是STC89C51RC单片机,其外形如下图(图1-1): 图1-1 STC89C51RC各个引脚 1.2 STC89C51RC单片机的主要性能 与单片机产品兼容4K字节在系统可编程Flash存储器、100
5、0次擦写周期、全静态操作:0Hz33Hz、三级加密程序存储器、32个可编程/口、三个16位定时器/计数器、八个中断源、全双工UART串行通道低功耗空闲和掉电模式、掉电后中断可唤醒看门狗定时器,双数据指针、掉电标识符。1.3 STC89C51RC单片机管脚说明VCC供电电压。GND接地。P0口8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口带内部上拉电阻的8位双向I/O口
6、,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输
7、出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。在编程/校验时,P3口可接收某些控制信号。RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的
8、1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部
9、锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。 2 硬件电路设计2.1单片机最小系统 2.1.1 复位电路复位电路就是在RST端(9脚)外接的一个电路,目的是使单片机上的电开始工作时,内部电路从初始状态开始工作,或者在工作中人为让单片机重新从初始状态开始工作。在时钟工作的情况下,只要复位引脚高电平保持在两个机器周期以上的时间,STC89C51RC便能完成系统重置的各项工作,使得内部特殊功能寄存器的内容均被设置成已知状态,并且从地
10、址0000H处读入程序代码而执行程序。(图2-1) 图2-1 复位电路 2.1.2. 时钟电路时钟电路是产生CPU校准时序,是单片机的控制核心。STC89C51RC的时钟信号可通过内部振荡方式和外部振荡方式两种方式得到。本次设计使用的是片内振荡方式,通过外接12MHz的晶振来实现时钟电路的时序控制。在使用片内振荡器时,XTAL1和XTAL2分别为反向放大器的输入端和输出端。外接晶体以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。当使用外部时钟驱动时,XTAL2引脚应悬空,而由XTAL1引脚上的信号驱动,或者XTAL1引脚应悬空,而由XTAL2引脚上的信号驱动。外部振荡器再通过一个2
11、分频的触发器来形成内部时钟所需要的信号。在电容器C1、C2选择时方面,一般选择其值为530pF。本系统中所用的电容值为22pF,具体的电路接法如图2-2所示。 图2-2 晶振电路图2.2按键电路 按键电路如图2-3所示 图2-3 按键电路系统中共有四六个独立按键,分别与P2.0、P2.1、P2.2、P2.3、P2.3、P2.4、P2.5连接。开始键(P2.0):按下该键,电源和负载接通或当预约调试结束后按下该键, 电源将在设定时间到达后接通。关闭键(P2.1):按下该键,切断电源。预约键(P2.2):第一次按下该键,可以对电源的接通时间进行“小时”调整;第二次按下该键,可以对电源接通时间进行“
12、分钟”调整。加“1”键(P2.3):按下该键,调“小时”时间加1,最大可加到11;调“分钟”时间加1,最大可加到59.即最长定时时间为11小时59分钟。减“1”键(P2.4):按下该键,调“小时”时小时减1,最小值为0;调“分钟”时分钟减1,最小值为0.预留键(P2.5):在本设计中,没有作用。2.3 显示功能1.按键指示灯D1:只要有按键按下,该指示灯会点亮。2.电源开关状态指示灯D3:当电源和负载接通时,该灯点亮。3.四位数码管(图2-4):前两位显示小时,后两位显示分钟。上电即显示“-”;预约调小时前两位闪烁,预约调分钟后两位闪烁。预约时间内,倒计时显示。 图2-4 LED数码管 2.4
13、中断系统中断系统的作用主要是对外部或内部的终端请求进行管理与处理。STC89S51RC共有5个中断源,其中有2个外部中断源和3个内部中断源。中断函数如下/-外部中断0中断函数- void int0()interrupt 0 using 0 uchar keynum; display(); /动态显示程序作为去抖动 if(INT0=0) /判断是否有按键按下 keynum=GetKeyNum(); /有效键,获取键值 while(INT0=0); /等待按键释放 Keyprocess(keynum); /按键处理 /-定时器0中断子函数- void time0() interrupt 1 /处理
14、调时、显示器闪烁 static uchar ledcnt,num; /设置静态变量 TH0=(65536-50000)/256; /定时50ms TL0=(65536-50000)%256; if(Onflag && (hour | min)!=0) |! Onflag) /指示灯每隔0.5s闪烁 ledcnt+; if(ledcnt=10) / 10 X 50mS=0.5S ledcnt=0; LED=LED; if(Setflag!=0) /调时闪烁 num+;if(num=5) num=0; flag=flag;/-定时器1中断子函数-void time1() inter
15、rupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256;calculate(); /计时 2.5 继电器 本设计是用单片机控制继电器达到以弱控强的电路,下面再来介绍一下单片机和强电之间的桥梁-电磁继电器。电磁继电器是有触点电继电器是有触点电继电器的一种。它是利用电磁效应实现电路开、关控制作用的原件,广泛应用在电子设备、仪器仪表及自动化设备中。在各种自动设备中,都要求用一个低电压电路提控制一个高电压的电器电路。这样不仅可以为电子线路和电器电路提供良好的电隔离,还可以保护电子电路和人员安全。 图2-5 继电器开关电路 2.6 电路设计 根据设计要求,
16、选用STC89C51RC作为电路控制核心,电路中包含了时钟电路、复位电路作为单片机的最小系统。晶体振荡器频率为12MHz,这样单片机的机器周期恰好为1s。P0.0-P0.7作为四位七段数码管的段码输出端,P1.0-P1.3作为四位数码管(共阴极)的位码输出端。P2.0-P2.5作为键盘信号的输入端。P3.6作为控制信号的输出端控制继电器吸合与释放。 由于P0口输出端为漏极开路门,他要输出高电平才有效,必须外接上拉电阻,本设计中上空电阻阻值为10K。由于P0口输出电流有限,为减轻单片机的负担,在P0口外接了一个8路同相三态双向驱动器(起电流放大作用)。19脚是它的片选端,低电平有效,1脚是输入/
17、输出端口转换用,当该引脚接高电平时,信号由“A”端传向“B”端,当该引脚接低电平,信号由“B”端传向“A”端。P1口通过一个六反相器74LS04和数码管的位码输入端相连,故P1.0-P1.3输出低电平时,相应的数码管点亮。附录2中六个独立按键分别和P2.0-P2.5相连接,通过上拉电阻和电源相连接,当按键没有按下时,P2.0-P2.5端口输入为“1”,表示没有信号输入。这六个按键只要有一个按键按下时,8输入与非门74HC30的输出端必然输出高电平(它的逻辑功能为:全1出0,由0出1),经非门电路74LS04倒相后,按键按下时输出为低电平,该低电平信号接单片机的外部中断信号输入端(即P3.2引脚
18、),从而引起单片机中断正常执行的主程序,转而去执行中断服务程序。 3 软件设计 程序开始首先对按键变量和小时、分钟变量进行定义,对共阴极数码管的段码(字型码)以一维数组方式定义。另外对延时函数、定时器初始化子函数、求按键子函数、按键处理子函数、计时子函数、显示子函数进行声明。 主函数 图3-1 程序主函数在定时器T0、T1初始化和外部中断0()子函数中,规定定时器T0、T1的工作模式为方式1,定时时间为50ms。外部中断0采用下降沿触发方式。定时器工作在中断方式,即定时时间到,立即停止执行主函数,转而去执行中断服务函数。 图3-2 定时器T0中断服务函数 图3-3 外部中断T1中断服务函数 图
19、3-4 外部中断0中断服务函数在显示子函数中,上电复位后4位数码管显示“- - - -”。其中包括走时转换函数,负责将定时器走时数据转换为分钟的十位和个位,超过60分钟的数据再转换为小时的十位和个位。在计时子函数中,设置每50ms中断1次,秒计数器中计数值为200时,时间为1分钟。分钟计数器计数值为60时,时间为1小时预约时间到,单片机P3.6引脚输出低电平,驱动三极管饱和导通,继电器的线圈中有电流经过,从而产生吸合动作,接通电源,用电器开始工作。(程序见附录2) 总 结经过几周的辛苦设计,现在终于可以画上一个圆满句号了。回想起来做毕业设计的整个过程,其中有苦也有甜。毕业设计的难度不仅是检验大
20、学所学的深度,也是对自己能力的一种提高。下面我对整个毕业设计的过程简单的做一下总结。首先,进行选题选定。选题是毕业设计的开端,选择恰当的感兴趣的题目,这对于整个毕业设计是否能够顺利进行关系极大。好比走路,开始的第一步具有决定意义的,第一步迈向何方,需要慎重考虑。否则,就可能走许多弯路、费许多周折,甚至可能做的全是无用功。 参考文献1戴佳 戴卫.51单片机C语言应用程序设计实例精讲.电子工业出版社,20062余宏生.吴建设.电子CAD技能实训.人民邮电出版社,20063李贵庭.单片机应用技术及项目化训练.西南交通大学出版社,20094刘建清.从零开始学单片机C语言.国防工业,20065钟富昭等.
21、8051单片机典型模块设计与应用M.人民邮电出版社,20076李乃夫.可编程控制器原理、应用、实验 M.北京:中国轻工业出版社,2003.7章文浩.可编程控制器原理及实验 M.北京:国防工业出版社,2003.8谭浩强 著.C语言设计(第三版)清华大学出版社9王洪庆 主编.微型计算机控制技术 机械工业出版社 .2012.910王静霞 主编. 杨宏丽 刘俐 副主编.单片机应用技术 C语言版电子工业出版社.201211朱定华.单片机原理及接口技术实验M.北京:北方交通大学出版社,200212何立民.MCS51系列单片机应用系统设计系统配置与接口技术M.北京:北京航空航天大学出版 社,1999.11
22、致谢首先要感谢在大学两年半教育我的老师,没有他们给予我扎实的基础,我想我是不能完成这次毕业设计的。在这两个多月的毕业设计中,我真诚地感谢老师和同学们的帮助,在他们的帮助下我顺利的完成了此次毕业设计。在本次设计过程中李学明老师始终给予了我无私的帮助,在最开始的设计思路的构建、资料的选取等是我能顺利完成这次设计的关键。 13附录1系统仿真原理图 13附录2主程序 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit KEYON =P20; / 开始键 sbit KEYOFF=P21; /
23、 关闭键 sbit KEYSET=P22; / 预约键sbit KEYINC=P23; /加1键 sbit KEYDEC=P24; / 减1键 sbit KEYFREE=P25; /预留键sbit POWER=P36; /电源开关指示灯 sbit LED=P33 ; /按键指示灯uchar code dispcode=0x3f,0x06,0x05b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /0-9的字型码uchar data disbuf=0,0,0,0; /显示缓冲区uchar hour,min ; /小时、分变量bit Onflag,flag;uc
24、har Setflag;void delay(uchar); /延时子函数void init(void); /定时器初始化子函数uchar GetKeyNum(); /求按键号void Keyprocess(uchar); /按键处理子函数void calculate(); /计时子函数void display(); /显示子函数 /-主函数-void main(void) init(); P1=0x00; while(1) display(); /-定时器TO、T1初始化,外部中断0初始化子函数-void init() TMOD=0x11; /TO、T1作定时器、工作方式1 TH0=(655
25、36-50000)/256 ; /定时50ms TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; IT0=1; /选择外部中断0为下降沿触发方式 EX0=1; /开外部中断0 ET1=1; /开定时器1 ET0=1; /开定时器0 EA =1; /开总中断 TR0=1; /-显示子函数-void display() uchar i,j=0x08; if(Setflag=0)&&!(min|hour) /数码管显示“- - - -”15 for(i=0;i<4;i+) disbufi=d
26、ispcode10;else / 正常显示时间 disbuf0 = dispcodemin%10; /分个位 disbuf1 = dispcodemin/10; /分十位 disbuf2 = dispcodehour%10+0x80; /小时个位 disbuf3 = dispcodehour/10; /小时十位if(Setflag!=0)&flag) /如果调时,数码管闪烁显示 for(i=0;i<4;i+) if(disbufi=0x3f)&&(i>2) /不显示前面的0 P0=0; else P0=disbufi; if(Setflag=1) P1=j&
27、amp;0xfc; /调时,关断前两位位码 else P1=j & 0xf3; /调分,关断后两位位码 delay(5); /延时2.5ms P1=0x00; j=j>>1;else /数码管正常显示 for(i=0;i<4;i+) if(disbufi=0x3f)&&(i>2) P0=0; /不显示前面的0 else P0=disbufi; P1=j; /位选通 delay(5); /延时2.5ms P1=0X00; j=j>>1; /-外部中断0中断函数- void int0()interrupt 0 using 0 uchar
28、keynum; display(); /动态显示程序作为去抖动 if(INT0=0) /判断是否有按键按下 keynum=GetKeyNum(); /有效键,获取键值 while(INT0=0); /等待按键释放 Keyprocess(keynum); /按键处理 /-定时器0中断子函数- void time0() interrupt 1 /处理调时、显示器闪烁 static uchar ledcnt,num; /设置静态变量 TH0=(65536-50000)/256; /定时50ms15 TL0=(65536-50000)%256; if(Onflag && (hour |
29、 min)!=0) |! Onflag) /指示灯每隔0.5s闪烁 ledcnt+; if(ledcnt=10) / 10 X 50mS=0.5S ledcnt=0; LED=LED; if(Setflag!=0) /调时闪烁 num+;if(num=5) num=0; flag=flag;/-定时器1中断子函数-void time1() interrupt 3 TH1=(65536-50000)/256; TL1=(65536-50000)%256;calculate(); /计时/-求按键号-uchar GetKeyNum()uchar temp;if(KEYON=0) temp=1;if(KEYOFF=0) temp=2;if(KEYSET=0) temp=3;if(KEYINC=0) te
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赣南师范大学《临床药学》2023-2024学年第一学期期末试卷
- 《浅谈虚拟机》课件
- 上半年教职工政治理论学习个人工作参考计划范文
- 《公共心理学》课件
- 管理实务培训课件
- 常德特色美术课件小学生
- 2021年中药基础知识考试题库
- 《最佳治疗宝宝湿疹》课件
- 消息编写培训课件
- 《拉曼光纤放大器》课件
- 2025届高考语文一轮复习:小说情节结构之伏笔 练习题(含答案)
- 《化学实验室安全》课程教学大纲
- 《一元一次方程》复习学案
- 三甲医院面试自我介绍课件
- 2024文旅景区秋季稻田丰收节稻花香里 说丰年主题活动策划方案
- 单招铁路基础知识题库单选题100道及答案解析
- 高低压供配电设备检查和检修保养合同3篇
- 投资可行性分析财务数据全套表格
- 2023-2024学年福建省厦门市八年级(上)期末物理试卷
- 易查云全球智能贸易信息查询平台商业计划书
- 招标文件的保密措施
评论
0/150
提交评论