基于AT89S52单片机的家电控制系统设计
摘要:介绍了利用AT89S52单片机开发多路家电实时控制系统的实现方案。给出了设计所用的辅助硬件设备和硬件电路,同时,从系统的功能入手,分析了软件模块的设计思路。对设计方法进行了详细阐释,并分析了该设计的一些不足之处和改进的主要方向。
Abstract:
Key words :
摘要:介绍了利用
AT89S52
单片机开发多路家电实时控制系统的实现方案。给出了设计所用的辅助硬件设备和硬件电路,同时,从系统的功能入手,分析了软件模块的设计思路。对设计方法进行了详细阐释,并分析了该设计的一些不足之处和改进的主要方向。
家电控制的智能化已成为社会需求的新趋势。基于微机控制系统的智能化家电使我们的生活更加便利。而是否能够实现远程家电的开关控制。又是否能够随时查询电器的工作状况,或者能够事先对家电的定时开关做出控制。又成为越来越感兴趣的研究方向。家电产品现已进入成熟期和稳定期。市场规模稳步上涨,但竞争日愈剧烈,其核心部件。即控制器性能及质量对企业产品的影响很大。同时,经济快速发展,人们对于家庭生活的舒适程度也提出了越来越高的要求,尤其体现在家电的便捷方面。在这个背景下,可以自主控制的
家电控制系统,就逐渐显示出竞争力,这也符合时代发展的客观需要。随着中国经济的快速稳步增长和迅速发展,家电厂家越来越意识到被喻为家电“芯片”的家电控制器的重要性,因而纷纷与专业的研发公司或厂家合作,开发符合市场需求的、具有行业领先水平的控制器。
目前。关于家电控制器的研究和设计方案提出的很多,但仍有许多问题尚待解决,如没有统一的互操作规范等。但是,一些领先技术已经开始被应用于今天的家电控制领域。如:电话远程控制、红外线遥控、语音识别等等。如将语音识别技术应用到电器产品,来实现语音提示操作,从而使系统具有更加良好的操作界面等。随着相关技术不断进步,互操作型智能家电必将向着调度智能化、灵活性和互操作性的方向发展。从而进入寻常百姓家。
1 硬件设计
本设计主要基于AT89S52单片机,并通过C语言来实现多路家电的即时开关控制、定时进行开关操作以及工作状态返回等三个功能程序,并以此为基础。结合带有HJPC5l-B的单片机开发系统来进行硬件调试。完成该基本要求以后,还可考虑加入外接键盘或外接存储器以及ISD语音芯片,并添加录放音程序,从而实现家电语音提示的控制。
本设计采用的硬件芯片为AT89S52芯片,同时选用了8盏绿色LED指示灯,8块LED数码显示管,其中3个分别与单片机的INTl、T0、Tl相连,以用来接收外部信号的按键。另外还使用了一个74LS245模块和两个74ALS573模块。整个硬件的核心是AT89S52芯片。该芯片的 P1.0~P1.7口通过74LS245与8盏LED灯相连,这8盏指示灯在即时开关中起到直接显示的作用,而在定时开关中兼有故障检验功能。 P0.0~P0.7口和P2.0~P2.7口分别通过两个74ALS573模块与八个LED数码显示管相连。8个数码管中,左起第一个用来指示具体某一路电器的开关状态,第二个指示哪一路电器被选中,第三和第四个显示小时数,第五和第六个显示分钟,第七和第八个显示秒数。另外,硬件电路中还特别配备了小灯,可作为按键是否按下的标志。
2 软件设计
2.1 即时开关与状态返回
即时开关与状态返回都是在初始时按KEYl键进入操作的,完成此功能,需要调用键盘读取子程序、灯泡开关子程序、数码管显示子程序、延时予程序等组合。其中键盘读入子程序是整个软件的基础,在键盘没有按键按下时,KEYl、KEY2、KEY3始终保持高电平,此时KEY值为0X38。而当某一个键被按下时,则该键位出现低电平。此时的KEY值必然出现变化,这样,将该值与0X38相与,然后根据得出的新值,就可以判断哪一个键被按下。
软件通常首先运行读取键盘程序,当数码管显示哪一路被选中后,再次读取键盘,以显示该路电器的工作状态,并根据外部输入决定开关操作。由于需要同时完成两个功能,所以,在程序中。设定KEY2和KEY3对电器进行操作,而KEY1用来在状态返回功能完成以后,指示该功能的结束,并开始即时开关功能。具体来说,就是先检测哪个电器对应的按键被按下,然后调用显示子程序在数码管中显示被选中的电器编号。状态返回部分是检测特定电器对应的管脚输出为低电平还是高电平,若输出为低电平,则调用显示0的数码显示子程序,反之则调用显示1的数码显示子程序。即时开关则可在按下电器对应的按键以后,将该电器(这里就是小灯泡)连接的Pl的某个端口进行取反操作,即工作状态反向。
2.2 时间显示
在确定KEY2按键被按下以后,程序将自动调用数码显示,并循环调用周期为1s的中断程序,如果需要设定时间,则可通过外部输入调用时间设定子程序来对时间进行调整。通过外部按键可改变秒、分钟、小时所对应的变量的值,并将其带入数码显示程序,在数码管中显示。在数码显示部分,应先确定段选和位选位,由于有秒、分钟、小时三个部分,故需要连续6个显示管,所以,在程序中要设定从第一个开始的6次循环,每次分别将选中的数码管的序号送到位选端,并将秒、分钟、小时所对应的变量的值作为实参送到段选端,从而使数码管依次显示对应的时间信息。
2. 3 定时开关
通过定时开关可在初始时按KEY3键进入操作。该功能是整个设计的核心和难点,综合运用到了之前几种功能的设计思想。这里也有一个定时中断子程序,但与之前以ls为基准、一分钟循环60次的固定模式不同的是,这是在事先不清楚用户的定时时间的情况下进行的,所以是以1分钟为基数,即定时时间间隔必须为1分钟的整数倍,但循环次数却是一个全局变量。这个全局变量的值可通过用户按键来实现。根据程序设定,若按下KEYl,则表示将该全局变量的值加60,若按下 KEY2,则表示将该全局变量的值加1,即KEYl代表1小时,KEY2代表1分钟。此后若再按下KEY3,则表示设定结束,此时全局变量的值表示进行1 分钟的定时的次数,在定时结束时,将该电器(这里就是小灯泡)连接的P1的某个端口进行取反操作,即可完成开关。这一功能的子程序流程图如图1所示。
3 系统功能分析
3.1 即时开关与状态返回功能
按下KEYl键,即可进入即时开关与状态返回功能。此时数码显示管和LED灯都没有变化,用户可以选择按下KEY2和KEY3中的任意一个,来选择其中一盏灯泡(模拟一路电器)作为操作对象。现以按下KEY2为例,则左起第二个数码管显示“2”,同时左起第6盏LED小灯亮,表示KEY2确实被按下(此处可用于故障检验)。
3.2 时间显示与设定功能
时间显示功能可在初始通电以后按下KEY2键开始执行。在按下KEY3键以后,数码管从左起第三个开始,到第八个为止。分别显示小时、分钟、秒数,用户可以根据需要设定时间,按下KEY3,则小时数加一,按下KEY2,则分钟数加一。该键还带有自动进位功能。整个数码管时间显示的极限是23时59分59 秒。
3.3 定时开关功能
定时开关功能是在初始通电以后按下KEY3键开始进行的。初始数码管从左起第三个开始,到第八个为止,全部显示为“0”,以等待按键输入设定时间。此时,按下KEYl,则小时显示加1,并定时中断程序中,全局变量值加60;按下KEY2,分钟显示加1,定时中断程序中,全局变量值加l;再次按下KEY3,即进入中断定时子程序,开始定时。定时结束以后,所指定的那个电器开关状态取反。在定时结束时,对应的LED自动点亮。
3.4 功能拓展与强化
该系统的现有功能还比较基础,主要局限在对于电器的开关操作中。比较现实的改进方案是加入语音提示功能。使用户在每次按键以前都可以有语音提示,如果出现错误按键,还可以有语音提示纠错。再有就是扩展键盘,现在的键盘数量的限制不仅使可操作的电器数量有限,还制约了控制系统的功能。在加入按键以后,除了可控电器数量会提升,还可以附加诸如分层次调节。在条件更好的情况下,也可以增加电话远程控制,使某个固定号码与控制系统相连,这样,当用户在较远处时,就可以通过网络与系统连接,并根据事先在程序中的设定,通过电话上的不同按键实现系统中按键的效果。从而完成远程家电的控制。
4 结束语
按照上述软硬件的分析。可在充分了解AT89S52单片机的基础上,基本实现带有即时开关、状态返回、时间显示与设定、定时开关等多种功能的多路家电控制系统。用户可以根据自己需要选择相应电器,了解其工作状态,自主设定时间进行通断操作。同时,这个系统还具有良好的拓展性,因此可以加入语音提示、多功能控制、甚至远程控制等后续功能。
此内容为AET网站原创,未经授权禁止转载。