智能时控开关设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能时控开关设计
摘要
本系统通过单片机的定时器功能,利用8279键盘及显示功能,实现了5路开关的时控功能。通过8279控制的键盘0-9输入调节时间的数字键,A为启动定时器,B设置时间,C时间清零,D停止,E通过外部干预停止提示,F设置开关通道和开关时间。通过设置定点时间的子程序中添加判断语句实现开关选中有LED亮灯提示;定点到达通过显示程序添加判断语句实现LED闪烁提示,使得程序简洁。合理利用定时中断T0中断程序控制P1.5输出1kHz方波控制蜂鸣器鸣叫提示。外部干预后LED灭,蜂鸣器停止鸣叫。
关键字:定时器失控开关 8279 键盘显示
引言
随着科学技术和社会经济的迅猛发展,人类社会中自动控制,智能控制越来越普及,而单片机正是这种技术普及的基础。顺着单片机的生产技术和其本身的性能的快速提高,以及单片机的价格便宜等因素,单片机被应用于非常广泛的领域。本文中的智能时控开关就是应用单片机来实现的。主要应用到了单片机的定时器模块,输入输出模块结合8279的键盘输入和显示功能来实现了对外部5路开关的实时控制。
同时,近年来顺着声控开关的广泛应用,其方便人们的同时,缺点也是逐渐被人们发现。例如外部噪音的存在也会使声控开关点亮电灯,那样会使得开关的节能性能不是很好。所以人们希望通过实时控制开关来控制电灯。顺着单片机的功能不断完善和其价格的大众化,使得智能时控开关得到广泛的应用。与此同时,智能时控开关还能运用于其他很多的领域,所以本文所研究的智能失控开关具有重要的意义。
本文所应用的基本程序来之实验室的实验系统的帮助文档中的8279显示实验中的时钟功能实验。在基础程序之上进行改进添加自己的元素实现实验的基本功能。
李晶 2010-6-7
目录
摘要 ....................................................................................................................... I 引言 ...................................................................................................................... I I 1功能要求 (1)
1.1主要内容 (1)
1.2基本要求 (1)
1.3提高部分 (1)
2准备知识 (2)
3系统设计 (2)
3.1控制端口分配及开关状态定义 (2)
3.2控制键的分配和主要寄存器功能 (3)
3.21按键分配 (3)
3.22寄存功能 (3)
3.3程序设计 (3)
3.31主程序的设计 (3)
3.32设置时间的设计 (4)
3.33键盘输入设计 (5)
3.34读键盘子程序 (6)
3.35设置开关时间 (7)
3.36时钟T1中断服务程序 (8)
3.37 显示的实现 (8)
3.38开关时间到达判断和蜂鸣器 (9)
3.39开关通道置位和灯的闪烁控制 (9)
4主要参数的计算 (10)
5实验仿真 (10)
6实验程序 (11)
6 功能扩展 (23)
7参考文献 (23)
8附录 (24)
1功能要求
1.1主要内容
利用单片机中的定时器、IO接口、中断系统等资源,设计一智能时控开关系统,能根据时刻信息或倒计时信息对多路开关进行控制。
1.2基本要求
系统含24小时时钟,用数码管可显示小时、分钟及秒时间信息;可通过按键对时钟进行校准,可对定时时刻或倒计时时间进行设置;定时时间到时,用发光二极管闪烁及蜂鸣器发声提示。人工干预后停止闪烁及发声,并用发光管指示开关状态。
1.3提高部分
可对多路(3~5路) 开关进行定时控制;可对每路按多个时间顺序设置开关控制。(如:8:00开,12:00关,14:00开,16:00关;尝试为系统设置语音提示功能。
2准备知识
试验箱内部理解图如图1所示
图1 8279键盘显示电路
在程序中需要用到8279的键盘显示功能,那么在做实验之前必须先弄清楚8279的基本功能,8279的基本功能表见附录1。通过控制8279可以很方便的实现键盘的输入和LED的显示功能。
3系统设计
3.1控制端口分配及开关状态定义
根据题目的要求,需要实现(3-5)路开关的控制,那么需要用到单片机的输出口,由于实验电路板上面只有p1和p3口可以外接,其次可以用p0口通过数据锁存器输出控制LED灯来表示开关的状态,但是p0口的控制需要每次选通74LS373再输出数据,而且访问外部数据存储器只能用寄存器A,不方便操作,所以在这里不选用p0口;因为p3口做一般的输入输出不常用,所以这里也不选。那么本文用p1口的p1.0-p1.4四个口实验控制四路开关的状态。用p1.5输出方波来控制蜂鸣器的鸣叫。具体分配如表1所示
表1 控制端口分配
选择LED的亮表示开关的开,LED灯的灭来表示开关的关,因为p1.1在单片机
复位之后是高电平状态,那么可以再程序的初始化时给p1口输出低电平即可方便实现开关状态的控制。
3.2控制键的分配和主要寄存器功能
3.21按键分配
在与8279相连的键盘上,除了基本的0-9十个数字键之外,还有A-F六个键,那么可以通过这六个按键来实现所需要的控制,因为键盘上有0-9数字键,在设置时间时候就可以直接通过按键来设置,不需要用加1、减1的方式来控制了。通过分析可以知道,实现智能开关的控制,首先需要实现数字时钟的显示控制功能。那么这里需要的控制键有,时钟起动、设置时间、清零、停止四个键,需要实现开关的控制,那么开关状态改变时间设置需要一个键,再次外部干涉需要一个键。所以按键的功能分配如表2所示
寄存器的分配在整个程序的设计过程中式非常重要的,如果不能分配好寄存器作用,在整个程序的设计工程中需要在很多的地方用到堆栈保护,那样不但增加工作量,也使得程序变得冗长,可读性变差。所以,在程序设计之前应该对程序中用到的主要功能的寄存器进行分配处理。表3是本文中的主要的寄存器的功能分配,在一些小程序中用到的功能这里不列出
表3 主要寄存器功能
3.3程序设计
主要的程序是由主程序、定时中断程序、设置时间子程序、设置开关时间子程序、键盘输入子程序、显示子程序等部分组成,下面分别就这几个部分的设计过程详细介绍
3.31主程序的设计
主程序主要实现主程序的初始化,8279的初始化(调用子程序实现),设置定时模式和状态,实现显示(调用显示子程序),开定时中断T1,定时器开始工作。读键盘的状态(通过子程序调用实现),通过查询的方式判断键盘值来实现键盘功能的子程序调用。主程序流程图如图2所示