毕业论文基于STC89C52单片机的定时插座设计_第1页
毕业论文基于STC89C52单片机的定时插座设计_第2页
毕业论文基于STC89C52单片机的定时插座设计_第3页
毕业论文基于STC89C52单片机的定时插座设计_第4页
毕业论文基于STC89C52单片机的定时插座设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、泉 州 师 范 学 院 毕业论文(设计)题 目 基于stc89c52单片机的定时插座设计 物理与信息工程学 院电子信息科学与技术专 业 07 级 学生姓名 简春龙 学 号 070303043 指导教师 洪清泉 职 称 教授 完成日期 2011年4月 教务处 制基于单片机的定时插座简春龙物理与信息工程学院学院 电子信息科学与技术专业 070303043 指导教师洪清泉 教授【摘要】本文主要描述了一个定时插座的设计与制作。该定时插座可以弥补现实生活中普通插座功能的不足,能够通过外设按键设置一天24小时内的任意开关定时时段和一个小时内的6组快速模式定时,同时也能够通过红外遥控进行无线控制,使外接电器

2、可以按照一定规律工作,既可以达到智能控制的目的,又在很大程度上起到节能的作用。【关键词】stc89c52;定时;插座;红外;继电器timing socket based on microcontroller【abstract】this paper mainly describes the design and production of a timing socket. the timing socket could compensate for the shortage of the common socket .it also could set any timding in a day

3、and six grouds of fast timing by the key.at the same time,it could also be remotly controlled through infrared remote control so that home applianes could work according to certain rules.in this way, it can achieve the purpose of being intelligently controlled and will largely save the electric ener

4、gy. 【key words】stc89c52; timing; socket; infrared; relay目 录0引言51定时插座的相关介绍52系统设计62.1系统设计任务62.2系统设计方案选择62.2.1单片机芯片的选择62.2.2显示模块选择62.2.3定时设置的选择62.2.4控制插座设备选择62.2.5按键的选择62.2.6电源选择方案62.2.8红外遥控控制方案选择73硬件电路设计及工作原理73.1主控制器stc89c5273.2稳压电源电路83.3 ds1302计时电路93.4 lcd1602显示电路103.5红外遥控电路113.6继电器电路123.7蜂鸣器电路143.8总

5、体硬件电路及其工作原理154软件设计174.1 ds1302计时程序的编写184.2 lcd1602显示电路程序编写194.3红外信号解码及按键处理程序编写204.4主程序的编写205系统调试215.1电路设计前期工作215.2硬件电路部分的调试215.3软件部分的调试225.4设计结果235.5设计中存在的不足及其改进236结束语23致谢23参考文献240引言随着经济的发展和人民生活水平的提高,能源损耗也愈是严重,因而智能节能设备越来越受到关注。普通插座虽然方便了家庭生活等方面,但是由于其只有单一功能,实现开关和借用各种电器,只能满足人们普通的日常生活需要。而定时插座不但可以实现对电器设备的

6、智能定时控制,而且也可以达到节能的目的。同时,配备无线红外遥控功能的插座也能给人们的日常生活带来更多方便。本文就我如何设计制作定时插座进行了详细的阐述。1定时插座的相关介绍 通常人们日常生活中都会用到插座,这些插座基本只有简单的功能,就是实现开关及接通各种各样的电器,可是有时候人们需要对用电设备进行某时间段的控制。因此,在这个时候,定时插座就能为你排忧解难了。生活中,数码照相机、电动车、手机电池的寿命都是有限的,充电过久容易损坏电池,而且长时间的充电浪费电力,利用定时插座在夜间充电就可以节约电力,也可以防止由于充电过久而影响电池寿命减短。上下班工作繁忙,而定时插座可以为你节省煮饭的时间,只要在

7、出门前放洗好的米水,按下煮饭按钮后把插头插到定时插座上,设置好你要开启的时间,也可以设置关闭时间,当你回家就可以吃到煮好的饭,而不需要在工作劳累之后还要临时做饭,等待饭熟。每天、隔天或偶尔出门,一回到家就想洗热水澡。如果一直开着热水器会不停的加热保温,既不安全又浪费电。电热水器的功率一般是1500w至2000w,如果您是在分时用电的地区,该定时插座可以帮你把电热水器设定在非用电高峰时间工作,在电费半价时段把水烧热,这样的话,一个月下来你家就可以节约几十元电费,既经济又环保。你同样可以想让热水器几点开始加热都能办到,完全可以按照你的要求去实现。众所周知,饮水机如果24小时连续地工作,由此产生的不

8、良后果一是浪费电,二是使饮水机的使用寿命大为缩短。另外多次烧开的水含有亚硝酸盐,可致癌、产生血管疾病等,对人体有害无益。面对此问题,定时插座能给你最好的解决方案。通过定时插座,有人在家时让饮水机开,无人在家时让饮水机关,这样既节约了电,又可以保护好饮水机,也能喝到健康的水。养鱼的朋友们,你们是不是正在为你们自己的氧气机一直开机而烦恼呢?那么现在有了定时插座,你就可以让你的氧气机根据你的定时设置有规律的开机充氧和关机了。早上起床,你不用再被单调的闹钟叫醒,完全可以让音响放一首动听的歌曲,然后清新自然地起床。中午回家,一开门就有一股冷空气扑面而来,因为定时插座已经为你开启了空调。晚上下班,不用再担

9、心黑灯瞎火,“超级管家”已经帮你开好了夜灯,等待你的归来。 定时插座是家电的良好伴侣,可对路灯、广告灯、电饭煲、饮水机、水族箱、电热水器、电热毯、抽水机排气扇空调机、防盗器、台灯等多数用电器进行定时控制,方便你的日常生活。由于人们慢慢认识到了定时插座在日常生活中的实用性,市面上也不断出现了各种品牌的定时插座,其功能层出不穷。定时插座可控的插座路数由一路到多路,可以设置的定时组也从单一的一组不断提高到九组甚至更多。并且,随着人们生活上的需求不断的提高,在定时插座功能上仍然有很大的发展空间。2系统设计2.1系统设计任务 设计一个以单片机stc89c52控制的定时开关插座,要求能控制一路220v/1

10、0a的插座,使其可以在24小时内能预先设定定时范围,每天周而复始地控制用电器具的自动开启和关闭,同时还能通过红外遥控随时控制插座的开关,从而达到方便、智能、节电的目的。2.2系统设计方案选择2.2.1单片机芯片的选择本次设计采用的是stc89c52主控芯片。用stc89c52代替at89c52,功能更加强大,速度更快,寿命更长,价格也更低。stc89c52可以完成isp在线编程功能,利用伟福软件、keil软件等可直接将编写好的程序下载到stc89c52中,mcu则可执行相应的功能,而且stc89c51芯片还可以反复的进行擦写,断电不丢失【1】。2.2.2显示模块选择采用lcd1602液晶显示。

11、lcd1602液晶能够同时显示16*02即32个字符,1602液晶显示模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等。2.2.3定时设置的选择采用ds1302时钟芯片实现计时。ds1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,用于高速数据暂存的31*8ram,工作电压在2.5v5.5v范围内,2.5v时耗电小于300na,采用这种专用时钟芯片可以更精确地实现定时插座的定时目的,定时准确又不占用太多系统资源。2.2.4控制插座设备选择采用s

12、ongle srd-05vdc-sl-c继电器。该继电器最大可以耐压交流250v,最大可通过10a的交流电流。继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用,实现小电压控制大电压的目的。2.2.5按键的选择采用独立式按键独立式按键每个键单独占一个i/o口,工作状态互不影响,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。独立式按键电路配置灵活,软件结构简单。此次定时插座的制作,空留出的i/o口较多,且需要的按键不多,故

13、本设计采用独立式按键。2.2.6电源选择方案采用5v稳压电源加在电路板上。因为继电器等器件要求电压电流比较大,所以将12v电源通过78l05稳压芯片输出5v给单片机等外部设备供电。实验调试时从电脑的usb电源取电给单片机供电。2.2.8红外遥控控制方案选择 本系统采用已编码的38khz红外遥控器发射接收模块,介于自制红外编码发送接收模块的设计复杂,成本也会增加不少,因而采用已编码完成的红外遥控器和红外接收管实现红外控制的目的。3硬件电路设计及工作原理 定时插座系统在未设置任何定时的时候显示界面显示时间,通过按键设置可设置在24小时内的两组定时开关时间和六组一小时内的固定模式定时,分别控制插座的

14、开关,从而控制外部电器的工作与否。红外遥控要实现的就是通过遥控器的电源键一键控制定时开关插座的开关状态,也可通过红外遥控器的六个数字按键分别实现一键设定从当前开始的固定模式的定时。 总体的硬件电路框图如下图所示:stc 89c52ds1302计时模块继电器模块红外接收模块蜂鸣器按键模块5v稳压模块 图1 硬件电路框图3.1主控制器stc89c52stc89c52是宏晶公司生产的40引脚双列直插芯片,具有许多独特的优点,即体积小、重量轻、单一电源、低功耗、功能强、价格低廉、运算速度快、抗干扰能力强、可靠性高等,所以特别适用于实时测控系统,应用领域很广,已成为传统工业技术改造,各类产品跟新换代,实

15、现自动化智能化的理想模型。其内部包含以下功能部件: 8位cpu; 振荡器和时钟电路; 8k字节的程序存储器eprom; 256字节的数据存储器ram; 可寻址外部存储器和数据存储器各64字节; 20多个特殊功能寄存器; 32线并行i/o口; 一个全双工串行i/o口; 3个16位定时器/计时器; 6个中断源,2个优先级,统计中断按优先顺序查询; 具有较强功能的位处理能力【2】;图2为单片机部分的电路原理图。 图2 单片机部分的原理图3.2稳压电源电路 这里用到78l05稳压芯片。设计中的继电器是比较耗电的器件,而且如果电量不足会使得继电器无法工作,因为通过78l05稳压芯片把12v电源稳压输出5

16、v给单片机供电。78lxx系列是三端正电源稳压电路,封装形式为to-220。 它具有一系列固定的电压输出,应用非常广泛。每种类型由于内部电流的限制,以及过热保护和安全工作区的保护,使它基本不会损坏。如果能提供足够的散热片,它们就能够提供大于1.5a的输出电流。当接入适当的外部器件后就能获得各种不同的电压和电流【3】。如图3,78l05具有以下特点特点 最大输出电流为1.5a; 输出电压为5v; 热过载保护; 短路保护; 输出晶体管安全工作区保护; 图3 78l05在系统设计时,由于需要获得稳定的5v电源,因而采用12v电源通过78l05稳压电路后获得5v稳定电源给单片机和外部器件供电。图4为5

17、v稳压电路。 图4 5v稳压电路3.3 ds1302计时电路系统采用ds1302作为计时器,从而实现定时插座能在24小时内实现任意时间的可变定时和一小时内的固定模式定时。这样可以使得定时准确,方便,节约系统资源,同时程序编写上也能相对简单。ds1302 是高性能时钟芯片,具有以下特性: 实时时钟,可对秒、分、时、日、周、月、以及带闰年补偿的年进行计数; 用于高速数据暂存的31*8ram; 最少引脚的串行i/o; 2.5-5.5v满肚工作范围; 2.5v时耗电小于300na; 用于时钟或数据读/写的单字节或多字节数据传送; 8引脚dip或可选的用于表面的8引脚soic封装; 简单的3线接口; t

18、tl兼容(vcc=5v); 可选的工业温度范围-40至+85; 在ds1202基础上增加的特点:可选的慢速充电的能力;用于主电源和备份电源的双电源引脚;备份电源引脚可用作电池或超容量电容器的输入端;附加的告诉暂存存储器(7字节)【4】。 图5为ds1302的芯片引脚图。表1为ds1302各引脚的功能。图5 ds1302的芯片引脚图表1 ds1302引脚功能引脚号引脚名称功能1vcc2主电源2、3x1、x2振荡器,外接32768hz晶振4gnd电源地5rst复位6i/o数据输入/输出(双向)7sclk串行时钟8vcc1后备电源 系统中的计时电路则如下图6所示,通过该电路可以很好地实现定时插座的各

19、项定时设置,如任意时间定时和固定模式定时。其中干电池的作用是使ds1302在断电后仍可以构成内部振荡电路继续计时,当系统再次开启时不需要重新调整时间。 图6 ds1302计时电路3.4 lcd1602显示电路本设计采用的是lcd1602字符型液晶显示器。lcd液晶显示器是一种低功耗的显示器件,它广泛应用于工业控制、消费电子及便携式电子产品中。它不进省电,而且能够显示大量的信息,如文字、曲线、图形、动画等,其功能比数码管强大得多【5】。lcd1602液晶显示模块可同时显示16*2即32个字符,内部含有的字符发生存储器里面存储了160个不同的点阵字符图形,包括阿拉伯数字、英文字母的大小写、常用的符

20、号和日文的片假名等,每个字符都有一个固定的代码,比如大小写英文字母的a的代码是01000001b(41h),显示模块在显示a时就把地址41h中的点阵字符图像显示出来,我们就能看到屏幕显示字母a了。表2 lcd 1602引脚功能编号符号引脚说明编号符号引脚说明1vss电源地9d2data i/o2vdd电源正极10d3data i/o3vl液晶显示偏压信号11d4data i/o4rs数据/命令选择端12d5data i/o5r/w读/写选择端13d6data i/o6e使能信号14d7data i/o7d0data i/o15bla背光源正极8d1data i/o16blk背光源负极3.5红外

21、遥控电路 这里使用的是已编码完成的红外遥控器如图7和对应的红外线接收管如图8所示。 图7 红外遥控器 图8 红外接收管 键盘编码调制led解码解调光/电放大遥控发射器遥控接收器 图9 红外遥控系统框图如图9为红外遥控系统框图。遥控器的每个按键都已经经过编码,当发射器拨键开关拨到on档时,即有遥控码发出(可以发送任意数字暂定为发送0aah(二进制:10101010b),这种遥控码具有以下特征:采用脉宽调制的串行码,刚开始发送38k码5ms来判定发射码开始标志,以脉宽为1.5ms、间隔0.5ms、周期为2ms的组合表示二进制的“1”;以脉宽为0.5ms、间隔1.5ms、周期为2ms的组合表示二进制

22、的“0”。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现接收判定“0”、“1”就是判定每个周期开始时低电平(注意发射与接收码正好反相)出现时间的长短,如果接收到为0的时间为1.5ms则为1,如果接收到0的时间为0.5ms则接收到的值为0。图10为红外接收管电路,通过红外遥控即可通过单片机解码红外信号得出对应的键码,执行相应的动作。 图10 红外接收电路3.6继电器电路 本设计采用的是如图11所示的songle srd-05vdc-sl-c继电器,其参数如图所示。 图11 5v继电器 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动

23、控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用,实现小电压控制大电压的目的【6】。在本系统中,主要是用于控制插座的开关状态,通过单片机i/o输出信号控制继电器的工作已否从而达到控制插座开关的目的。同时,为了防止倒流,实验电路中加入了光电耦合器4n25。4n25器件由砷化镓红外发光二极管和硅光电晶体管检测器光电耦合构成,是一种发光二极管与光电晶体管面对面得封装的单回路、内光路光电耦合器,也是一种晶体管输出6引脚dip封装光电耦合器。4n25光电耦合器具有体积小、寿命长、无触点、抗干扰性能强等特点,因而是开关电路、逻辑电路、长线

24、传书、模/数变换、微控制器的隔离电路、高压控制、过流保护、电平匹配、线性放大等领域中的首选芯片【7】。 其主要性能如下: 经济型光电耦合器; 晶体管输出光电耦合器; 满足火超过左右jedec注册规格; 输出集电极电流(ip=10ma,vce=10v); c-e饱和电压(ic=2ma,if=50ma);0.15v(typ); 隔离电压(f=60hz,t=1);7500v(交流峰值); 隔离电阻(v=500v);10(min); 隔离电容(v=0v,f=1mhz);0.2pf(typ)。其功能框图如图12所示,引脚图如图13所示。 图12 4n25功能框图 图13 4n25引脚图基于以上两个主要器

25、件就可以构成控制外部插座的继电器电路,从而实现对外部插座开关的控制。如图14所示,当给io输入端输入1时光电耦合器导通构成回路,继电器部分处于非工作状态,而输入为0时,光电耦合器不工作,使得继电器部分处于工作状态。由于单片机初始化是i/o输出为高电平,正好可以使外部继电器处于常开开关处,当通过按键或者红外定时到关闭时间时,i/o输出低电平即可让继电器处于常闭开关处,从而让外部插座可用,这样就能够实现定时设置的智能开关功能。图14 继电器电路3.7蜂鸣器电路 图15 蜂鸣器电路 设计中加入了蜂鸣器电路,如图15,一是为了检测是否收到红外信号,当收到红外信号时蜂鸣器发出轻微的鸣叫,二是为定时到达时

26、发出短暂蜂鸣以提醒我们定时插座的开关状态改变了。同时开关的开关状态也用一个红色led灯反映插座的开关状态,当红灯亮时,插座处于工作状态,反之则不工作。3.8总体硬件电路及其工作原理整个定时插座系统由12v电源通过7805稳压模块输出5v电源供电。系统可通过外设四个独立式按键设置两组24小时内的任意开关定时和六组一小时以内的模式定时,分别为10分钟,20分钟,30分钟,40分钟,50分钟,60分钟。任意时间定时模式可以让定时插座在已设置的开启时间工作,而到达定时设置的关闭时间停止工作;模式定时则让插座在设置的模式定时开始时使定时插座工作,到达模式定时的时间,如十分钟时让定时插座停止工作。同时,定

27、时插座也可以通过红外遥控执行相应的设置,遥控的电源按键可以随时让定时插座工作与不工作,其数字键16按键也可以分别设置一小时内的模式定时,工作原理和通过外设按键设置的模式定时一致。当未设置任何定时的时候显示器显示日历,当检测到有外设按键和红外遥控器按键按下时执行相应的定时任务。定时插座的工作状态由红色led 显示,在切换工作状态的时刻,蜂鸣器也会发出短暂的响声。系统电路由前文所述的各硬件电路整合而成如附录2的电路原理图所示,单片机由5v电源输入,开机时各模块分别初始化开始工作,插座的工作与否由继电器控制。单片机从ds1302模块中读取计时参数,显示在lcd1602液晶显示器上,具体显示为年、月、

28、日、周、时、分、秒,开始时继电器电路不工作,红色指示灯不亮,蜂鸣器也不响。当单片机检测到外接的独立式按键有键按下而且进行了任意定时设置时,系统记录下定时时间并执行定时任务,当到达第一个定时时间时,单片机发出开启信号让继电器电路开始工作,同时红色指示灯亮,蜂鸣器发出短暂鸣叫,待到下一个定时时间时单片机发出一个关闭信号让继电器停止工作,红色指示灯熄灭,同时蜂鸣器再次发出短暂的鸣叫。而当独立式按键所设置的是固定模式的定时的时候,单片机在定时设置完成时立刻发出开启信号给继电器电路,让继电器工作,指示灯亮,蜂鸣器鸣叫,同时记录下定时关闭的时间,待到计时到定时关闭时间比如20分钟后,单片机发出关闭信号给继

29、电器关闭继电器,从而达到关闭插座的目的。红外遥控处理方面,当红外遥控器上有键按下的时候,红外接收管接收红外编码信号,传送给单片机进行解码处理得到对应键码,单片机判断该键码为电源键时则发出控制信号控制继电器开启,当再次检测到电源键按下时,执行反动作即关闭继电器。若单片机解码得到的键码为数字键16按键的任何一个时,立刻开启继电器并记录对应的定时参数,待到下一个定时时间时发送关闭信号,让继电器停止工作。整体电路的实物连接图如图16,其中的排插右边两列插座的内部电路已经过线路改装,使得一列中的两个插座内部电路在同一条线路上,当接通其中一个插座后,另一个插座就构成了可用插座。图16 整体电路实物连接4软

30、件设计本设计中用到的单片机是stc89c52,为了使编写的程序更加简单明了,采用c语言进行编程,用keil软件进行编译,stcisp软件进行下载。软件设计部分包括液晶显示程序、ds1302计时程序、独立式按键处理程序、红外遥控处理程序等。由于定时设置是通过独立式按键或者红外遥控器的16按键进行设置的,程序在按键扫描部分和红外信号的解码部分相对重要。在检测到被设置了定时任务时,系统要检测是否到达定时时间,执行相应的动作。图17为主程序的流程图。开始系统初始化是否设置定时执行定时程序是否到达定时时间执行相应开关程序ynyn按键任意定时按键模式定时遥控模式定时y图17 程序流程图4.1 ds1302

31、计时程序的编写 ds1302串行时钟芯片的主要组成部分:移位寄存器控制逻辑、振荡器、实时时钟以及ram。为了初始化任何的数据传送,把rst置为高电平且把提供地址和命令信息的8位装入到移位寄存器中。数据在sclk的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节传送还是多字节传送,开始8位指定的40个字节中的那个将被访问。在开始8个时钟周期把命令字装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加最大可达248的数。 如图18为ds1302的命令字节,每一数据传送由命令字节初始化。最高位有效位msb必

32、须为1。如果它是零,禁止写ds1302,位6为逻辑0指定时钟日历数据;逻辑1指定ram数据。位1和5指定进行输入或输出的特定寄存器。最低位lsb为逻辑0指定进行写操作;逻辑1指定进行读操作,命令字节总是从最低有效为lsb开始输入。图18 ds1302的命令字节图19所示为ds1302的读写时序。多字节方式下,通过对地址31寻址,可以把时钟/日历或ram寄存器规定为多字节方式。如前所述,位6规定为时钟或ram而位0规定为读或写,在时钟/日历寄存器中的地址9至31或ram寄存器的地址31不能存储数据,在多字节方式中读或写从地址0的位0开始。当以多字节方式写ram时,为了传送数据不必写所有31字节,

33、不管是否写了全部31字节,所写的每一个字节都将传送至ram。 图19 ds1302的读写时序ds1302总共有12个寄存器,其中的7个寄存器分别与日历、时钟相关,存放的数据位为bcd码形式。表3为它的日历、时间寄存器及控制字,其中奇数为读操作,偶数为写操作【4】。表3寄存器地址和内容写寄存器读寄存器bit7bit6bit5bit4bit3bit2bit1bit0秒80h81hch10秒秒分82h83h010分分小时84h85h12/24010时时a/p日86h87h0010日日月88h89h00010月月星期8ah8bh00000星期年8ch8dh10年年控制8eh8fhwp0000000这部

34、分的编程中设置固定模式定时的时候,主要用到的是计时过程中的分的数值变化,执行定时时把分的数值提取出来,在这基础上加上模式定时时间,待到下一个时间到达定时时间时执行相反动作。4.2 lcd1602显示电路程序编写这部分的显示过程主要是显示从ds1302读取的日历和时钟数值,同时当检测到独立式按键有键按下时,显示相应的设置菜单等。基本操作时序:读状态:输入:rs=l,rw=h,e=h 输出:dod7=状态字写状态:输入:rs=l,rw=l,d0d7=指令码,e=高脉冲 输出:无读数据:输入:rs=h,rw=h,e=h 输出:dod7=数据写数据:输入:rs=h,rw=l,d0d7=数据,e=高脉冲

35、 输出:无【8】 图20为lcd1602的具体读写时序。a.读操作时序b.写操作时序图20 lcd1602的读写时序4.3红外信号解码及按键处理程序编写当红外线接收管接收到红外信号时,通过单片机执行相应的程序进行红外信号的解码,具体解码原理前文已详细叙述,解码得到的键码赋值给key,通过检测key的值即可执行相应的动作。当检测到电源键被按下时即可执行定时插座的开机与关机;当检测到数字键16按键时则进行相应的模式定时设置,同时开启定时插座,待到下一定时时间关闭定时插座。具体程序编写如下所示:void key_handle(void) /红外按键处理 switch(key) case 0x12:

36、p0_1=p0_1;p0_2=p0_2; key=255;break; case 0x01: p0_1=0;p0_2=0;flag7=1; gg0=fen+10;key=255;break;case 0x02: p0_1=0;p0_2=0;flag8=1; gg1=fen+20;key=255;break; case 0x03: p0_1=0;p0_2=0;flag9=1; gg2=fen+30;key=255;break;case 0x04: p0_1=0;p0_2=0;flag10=1;gg3=fen+40;key=255;break;case 0x05: p0_1=0;p0_2=0;fl

37、ag11=1;gg4=fen+50;key=255;break; case 0x06: p0_1=0;p0_2=0;flag12=1;gg5=fen+60;key=255;break; default: key=255;break; 4.4主程序的编写 如以上所述,编程过程中需要注意的主要有ds1302计时程序、lcd1602显示程序、按键处理程序和红外信号解码及处理的相关程序,通过各项整合,就得到了下列主函数。主函数的编写如下所示:void main() /主函数sysinit(); /系统初始化(红外初始化、lcd初始化和1302初始化) while(1) ea=0; keyscan();

38、 /独立式按键扫描及处理 if(flag=0) display(); /显示时间 dingshi(); / 定时处理 ea=1; key_handle(); /红外按键处理 5系统调试5.1电路设计前期工作设计电路前先查询相关资料,通过上网查找资料,去图书馆查询等确定系统的主要模块及其工作原理,如红外遥控编解码的原理、ds1302时钟芯片的工作原理、lcd1602液晶显示原理等。初步熟悉这些主要器件的外部电路后,在条件允许的情况下先分别制作主要模块的电路,测试其可用性,比如继电器部分的电路,因为之前没有使用过继电器,对这块的外部电路完全不熟,只能先制作模块部分的电路测试是否可用。 在基本掌握了

39、这些模块的电路及其工作原理以后开始用protel软件设计电路原理图。在设计电路图的过程中由于对继电器不熟,开始没有继电器的封装,通过查阅书籍,请教同学等方式最后完成了电路原理图的设计和电路pcb板的设计。5.2硬件电路部分的调试在这些基础上开始制作硬件电路,当把电路板腐蚀完成准备焊接元器件时发现在用protel设计电路板时犯了很不小心的错误,电源和地的标号网络没有保持一致,导致生成的网络错误【9】。虽然软件没有检测出错误,但是实际是个错误的电路。由于这部分的疏忽,导致制作的电路板无效。紧接着在认真修改错误后继续制作电路板,焊接元器件,怀着满心的喜悦完成了硬件电路的制作。然而当接通电源时又发现电

40、源指示灯不亮,开始完全是一头雾水。当然,有问题就要想办法解决,冷静下来仔细再检查了protel上的原理图,没有发现错误,检查了电路的电源部分,发现电源输入5v正确。接着转向单片机部分,用万用表检查单片机部分的电路的i/o输出都为高电平,满足正常单片机复位时的情况。可是问题还是没有解决,然后把单片机拔出放到可用单片机板上下载流水灯程序后再放置在所制作的电路板上,发现流水灯程序没有执行,单片机i/o仍然保持高电平输出状态。检查电路,是否出现虚焊,没有结果,之后询问同学,查看书籍,最后才发现是由于封装库错误导致单片机的接地端没有连接,使得单片机i/o输出始终是高电平,单片机不能正常工作。连接接地端后

41、单片机流水灯程序可以正常运行,表明单片机正常工作。 ds1302部分的电路检查过程没有发现问题,给单片机加上可用程序后发现单片机可以正常读取ds1302的数据,并能正常显示在lcd1602上。 继电器部分的电路检查时开始用3节干电池给单片机供电,发现继电器无法工作,检查原因后才知道继电器的供电电压不足,因而用12v转5v的稳压电源时工作正常。 而红外线接收部分的电路的检查时,给单片机植入红外信号解码的程序后,单片机可以正常解码红外遥控器所发送的信号。 其中蜂鸣器电路出现的问题最大,所设计的蜂鸣器电路是低电平时发出响声的,可是当给蜂鸣器低电平时,发现不响。用万用表测量蜂鸣器两端电压,正端为3.5

42、v左右,而另一端为2.1v左右,蜂鸣器两端的电压值没有达到理论上的电压值,因而不能发出声音【10】。开始认为是三极管问题导致电路两端不能构成超过3.7v的电压差才不响,更换三极管后发现还是不响。通过反复检查测量后才知道所购的蜂鸣器坏了,更换蜂鸣器后问题得以解决。 外接插座上,开始选择将插座内部电线引出,再连接到印制电路板上,后来发现这样不够安全,所以选择通过改装内部电路,使得排插的两个插座连成一线,这样就可以直接用如图16所示的连接方法构成安全的定时插座电路,使得上下两个插座只要其中一个导通,另一个就可以构成可用插座。5.3软件部分的调试 在软件设计前,先把大致的程序流程理清,然后再分模块调试

43、,将各模块部分的程序先调试可行后再整合到一起,编写主程序。首先是lcd1602显示程序,通过编写过的程序掌握了1602的显示原理及其显示过程用到的指令如清屏,开关显示等。初步设计了显示器需要显示的显示菜单。然后通过独立式按键设置显示菜单,执行相应的功能。因为所有的设置在独立式按键处理上都要实现,使得按键处理程序必须有条不紊的编写,先列好按键处理的大致流程,需要设置的的显示菜单和各个按键按下后必须实现的菜单选项等。有了这些流程后才能在编程过程中减少一些不必要的麻烦【11】。编程上最主要的是ds1302的计时程序,当分模块调试时ds1302可以正常读取时间,显示时间。当把独立式按键扫描程序加入总程

44、序时,发现时间不动了,原因可能是单片机无法从ds1302里面读取数据了,也可能是采集到的数据无法在显示器上显示,或者是在按键处理过程中出现了问题。通过检查程序和修改程序,发现可能是因为i/o无法驱动问题,当更换i/o口时发现计时正常了,显示菜单也基本完成预期效果。至于后期需要继续扩展功能可以继续添加。软件过程中遇到的最大问题是红外信号解码和红外按键处理部分。当分模块调试时单片机确实可以接收到红外编码信号,也可以将解码得到的键值显示在流水灯上。可是,当把红外信号解码程序和红外按键处理程序植入主程序中时,单片机可以收到红外编码信号,也可以正常解码红外信号,执行相应动作,但是同时也让整个系统工作不正

45、常了,具体反映到了显示时间上,时间显示变成每隔两秒跳一次。针对这个问题,我非常不解,因为先前对红外编码解码原理和编程不了解,一时找不出具体原因。通过询问同组使用过红外遥控的同学才知道,未执行红外信号扫描时应该先关闭总中断,执行完主要程序后开启中断扫描红外编码信号。通过修改程序后发现系统可以正常工作,设置定时正常,显示也正常了。可是还出现了个问题,当通过红外遥控器按键设置开关插座后,系统虽然还能正常显示,但想再通过独立式按键设置定时的时候,出现了系统延迟,按键设置缓慢,甚至有时候不能继续设置定时。问题可能出在系统只能执行一种控制模式,而不能同时有两种控制模式,程序可能在红外检测解码过程中出问题,

46、也可能在中断控制过程。通过各种调试,还是无法解决此问题,只能通过复位键使系统复位,再执行按键定时设置。而在控制定时方面,开始只是让系统可以通过独立式按键设置一组定时开关时间,后面意识到可设置的定时组数太少,功能过于简单,就再加入了一组定时设置,使系统可以通过独立式按键设置两组定时开关时间。后来再经过多番考虑后发现。定时插座设置时间有时候需要快速定时,如果通过按键设置一定时间段的定时可能比较耗时,于是就加入了固定定时模式,可以在简单的操作中设置一个小时内的6组固定模式定时。因为按键处理这块加入了大部分的设置功能,所以编写过程比较费力,通过反复调试,系统已经可以达到预期的效果。5.4设计结果 通过

47、一番努力,终于在此次设计中完成了预期设计任务。所设计的定时插座已经可以实现预期功能。该定时插座可以控制一路220v/10a的插座,可以设置在一天24小时内的两组任意定时开关时间和6组一小时内的固定模式定时。同时,通过红外遥控的电源键可以一键控制插座的工作状态,而遥控器的16个数字键则同样可以实现无线设置一个小时内的固定模式定时。当定时插座变换工作状态时,蜂鸣器发出短暂的蜂鸣。定时插座工作时红色指示灯亮,不工作时指示灯不亮。5.5设计中存在的不足及其改进 本次设计的定时插座虽然可以实现定时控制一路插座的功能,但是可定时的路数和定时组数仍然不够。现实生活中,随着人们的生活水平不断的提高,家电等用电

48、器具越来越多,单一的一路控制明显不能满足要求。因而,如果在设计时多加入几路的插座控制,而且各路控制互不干扰,各司其职的话,用户只需要将要定时控制的用电器具都插在定时插座上,通过各自的定时设置,就可以使各电器按照人们的习惯有规律地工作,很大程度上方便人们的日常生活。同时,可以给定时插座加上保护措施,如漏电保护开关等,达到安全的目的。另外,本次设计中所使用的红外遥控器基本只能在同一室内控制插座,如果采用无线电遥控器等更加先进的遥控器的话,人们或许就可以在室内的任何地方随时控制家电的开关状态了。再者,设计中的定时插座开关状态变换只是用单一红色指示灯和短暂蜂鸣声体现,如果可以加入扬声器等反应更加明显的

49、指示,甚至是自动语音指示等比较能引起人们注意的外部设备,会让定时插座变得更加人性化,实用性也更高。6结束语本次毕业设计基于单片机的定时插座到此就告一段落了,所设计的硬件和软件都可以正常工作,各项设计均达到了设计任务的要求。定时插座已经可以完成一天24小时内的两组定时开关设置和六组一小时内的固定模式定时,同时也可以通过红外遥控一键控制插座开关和设置固定模式定时。设计过程中有喜有忧,但是经过多次反复的问题分析和系统调试,还是解决了各个难题,也使我在设计电路及分析电路问题上学到了很多。而在编程上,通过这次设计,我对c语言编程有了进一步的熟悉,巩固了所学知识。但是,在这过程中,我也发现了自己所学知识的

50、不足,在今后仍需不断努力学习。致谢本次设计是在洪清泉老师的细心指导和关怀下顺利完成的。在此期间,洪老师定期召集同组人员开会指导工作,在整个设计中不断给予我们良好的建议,使我们的设计更加顺利。同时,这次设计业也离不开其他同学和老师的帮助,在硬件软件设计方面给我提供了不少建议和帮助,让我在设计过程中少走了不少弯路,更好得完成了设计。在此谨向他们表示衷心的感谢。参考文献1 李华.mcs-51系列单片机实用接口技术m.北京航空航天大学出版社,1993.8.2 孙育才.mcs-51系列单片微型计算机及应用(第4版)m.东南大学出版社,2004.3 7805中文资料.4 ds1302芯片资料.5 曹建树,

51、夏云生,曾林春.51单片机实用教程m.中国石化出版社,2008.8. 6 /view/39560.htm.7 4n25中文资料.8 通用1602液晶资料.9 江思敏,姚鹏翼,胡荣.protel电路设计教程m.清华大学出版社,2002.10 童诗白模拟电子技术基础(第四版)m.高等教育出版社,2006.11戴仙金.51单片机及其c语言程序开发实例m.清华大学出版社,2008.2.附录1 电路原理图附录2 pcb电路板附录3 程序#include#define uchar unsigned char#define uint unsigned intsbit lcdrs=p37;sbit lcdrw=p36;sbit lcden=p35;sbit inf=p33;sbit sclk=p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论