基于单片机的教室灯光自动控制器的研究
- 格式:doc
- 大小:130.00 KB
- 文档页数:35
基于单片机的教室灯光自动控制器的研究专业:电气自动化班级学号:08电气自动化学生姓名: 龙广龙指导教师: 杨红
基于单片机的教室电灯自动监测器设计
目录
第 1 节引言
1.1 教室电灯自动监测器概述
1.2 51系列单片机(型号:STC89C51)简介
1.3 外扩存储器芯片简介
系统实现的主要功能 1.4
1.4.1 自动模式
1.4.2 延时模式
1.5 自动监测功能实现方案
第 2 节系统主要硬件电路设计
2.1 原理图与原理框图
2.2 主控板电路模块
2.2.1 单片机工作模块
2.2.2 时钟模式
2.2.3 蜂鸣报警器模块
2.2.4 键盘控制模块
2.2.5 后备供电电源模块
第 3 节系统软件设计
3.1 程序流程图
3.2 系统主程序设计
3.3 加减人数子程序设计
3.4 设定时钟段程序设计
第 4 节结束语
第 5 节致谢
参考文献
第1节引言
随着社会经济和科学技术的发展,人们的生活水平也不断提高,导致用电负荷的加剧,能源缺乏已成为世界所面临的严峻问题。
而此问题对我国来说尤为严重。
随着教室的扩建,教室照明的需求也越来越多,而教室照明的管理不到位,往往造成电能的巨大浪费,这样,提高教室用电效率就成为首要考虑的问题。
目前对电灯的智能控制,国外已经开始采用,但对教室电灯的控制,尤其是我国教室电灯的智能控制尤为缺乏和不完善,依然是传统式的人工管理。
教室不断扩建,教室的用电负荷不断加大,教室用电管理不善,造成学校电能浪费,经济损失,这种的浪费与当今的节约能源理相违背。
并且,现代自动化程度不断提高,电灯的管理也在朝着自动化、智能化方向发展,于是,开发简便实用的教室电灯自动控系统便具有重要的现实意义。
该电灯自动监测器的系统设计原理,提出了51系列单片机为核心,控制
DS1302时钟芯片电路以及数码显示管、蜂鸣报警器的硬件设计和软件设计方案,该系统具有体积小,控制方便,可靠性高,专用性强,性价比合理等优点,可以满足各类大、中专院校教室灯光控制
的要求,很大程度的达到节能目的。
1.1 教室电灯自动监测器设计概述
针对教室电灯的能源节省,尤其是教室电灯的智能控制方面的发展现状,分析了教室电灯智能控制的原理和实现方法,提出了基于单片机的教室电灯智能控制系统的设计思路,并在此基础上制作出智能控制系统的硬件装置和相应软件。
该系统以AT89C51单片机作为主控制装置的智能部件,令设计延时作为子程序,该延时采用加法器按键,进行加减进入教室的人数(原想使用热释红外人体传感器检测人体的存在,但考虑到实际,因为改用加法器按键),在每次下课后监测到电灯未关,一分钟后发出报警提示音,提醒教室人员离开时关闭教室电源;发出报警时可以选择延时关闭、立即关闭、或不与理睬。
若选择延时关闭或立即关闭时,报警器都会停止报警。
立即关闭时,人工切断电源,系统不再作监测;延时关闭时,系统会一直监测教室人数,如发现无人时会自动关闭电源。
不与理睬时系统会持续报警10分钟,并在10分钟后自动切断电源。
1.2 51系列单片机(型号:STC89C51)简介
AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。
此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求
U2139 P10P00238P11P01 337P12P02436 P13P03535P14P04
634P15P05733P16P06 832P17P07 1321INT1P20 1222INT0P2123P22 1524T1P231425 T0P2426P25 3127EA/VPP2628P27 19X118 X2
910RESETRXD11TXD 1730RDALE/P1629 WRPSEN
AT89C51
图3-1 AT89C51芯片引脚图
其主要功能特性:
兼容MCS-51指令系统 4k128x8 bit内部RAM 可反复擦写(>1000次)Flash ROM 2个外部中断源
32个双向I/O口低功耗空闲和省电模式 4.5-5.5V工作电压中断唤醒省电模式 3
2个16位可编程定时/计数器时级加密
钟频率0-33MHz 软件设置空闲和省电功能全双工UART串行中断口线双数据寄存器指针
可以看出AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内
部RAM,32个I/O口线,两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,以及片内振荡器和时钟。
同时, AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式时停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式是在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到一个硬件复位。
1.3外扩存储器芯片简介
特殊功能寄存器:特殊功能寄存器的片内空间分布如下图3-3所示。
这些地址
并没有全部占用,没有占用的地址不可使用,读这些地址将得到一个随意的数值。
而写这些地址单元将不能得到预期的结果。
中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。
表3-3为 AUXR辅助寄存器。
ARXR 地址=8EH 复位状态=XXX00XX0B
Not Bit
Addressable
——— WDIDLE DISRTO —— DISALE
Bit 7 6 5 4 3 2 1 0
—保留为将来扩展用途位
DISALE ALE禁止/使用
DISALE
操作模式
0 ALE 输出1/6震荡时钟频率脉冲
1 ALE 仅在执行MOVX或MOVC指令期间输出脉冲
DISRTO 禁止/使能复位输出
DISRTO
0 复位引脚在WET溢出时变高
1 复位引脚仅为输入
WDIDLE 禁止/使能IDLE模式的WDT
WDIDLE
0 IDLE模式WDT继续计数
1 IDLE模式WDT停止计数
双时钟指针寄存器:为方便地访问内部和外部数据存储器,提供了两个16位数据指针寄存储器:PD0位于SFR区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0时选择DP0,而DPS=1时选择DP1。
在使用前初始化DPS。
表3-4 双时钟指针寄存器
AUXR1
地址=A2H
不可寻址位复位状态=XXXXXXX0B
——————— DPS
Bit 7 6 5 4 3 2 1 0
保留为今后扩展用途
DPS 数据指针选择位
DPS
0 选择DPTR寄存器DP0L.DP0H
1 选择DPTR寄存器DP1L.DP1H
电源空闲标志:电源空闲标志(POF)在特殊功能寄存储器SFR中PCON的第4位(PCON.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。
存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结
构,均具有64KB外部程序和数据的寻址空间。
程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如接至VCC(电源,),程序首先执行从地址0000H,0FFFH(4KB)内部程序存储器,再执行地址为1000H,FFFFH(60KB)的外部程序存储器。
数据存储器:在AT89C51的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
系统实现的主要功能 1.4
教室电灯自动监测器可实现有效的教室电灯智能控制,结合学校的作息时间对
教室电灯进行实时控制,达到方便和节约能源的目的。
能自动关闭电灯及及时提醒
教室内的同学关闭电源,同时为考虑到下课后仍有同学在教室内自习,必须进行延时关闭电灯,因此该系统存在两种模式:自动模式和延时模式
1.4.1 自动模式
系统复位默认工作在自动控制模式,模式是结合学校作息的时间段,在每节课下课一分钟后,发出报警提示音,提醒教室内的同学离开时关闭教室电灯电源。
(即下课时间为10:00,报警提示音将在10:01分进行响起提示。
)达到节约用电的效果。
发出报警提示音后,可以选择立即关闭、延时关闭、或不予理睬。
当选择立即关闭时,人工切断电源,系统将不再作监测;当选择不予理睬时,系统报警提示音将会持续报警10分钟,并在10分钟后自动切断电源。
(即下课时间为10:00,报警提示音将在10:01分进行响起提示,当选择不予理睬时,系统在10:11分自动切断电源。
)若选择延时关闭,即进入到延时模式,通过报警提示音后的三种选择,体现了系统设计的灵活性。
1.4.2 延时模式
系统正常工作的情况下,通过按下延时按钮,就能对电灯进行延时模式的控制。
系统考虑到下课后,同学因某种需求留在教室自习,那么必须延时系统对电灯的监测,直到教室无人后自动关闭电灯。
假设下课时间为10:00,报警提示音将在10:01分进行响起提示,当选择延时关闭模式后,系统会一直监测教室内的人数,若发现无人后即自动关闭电源。
(进入教室与走出教室人数的监测,将由按钮模拟人数进入和走出进行加或减。
)
1.5自动监测功能实现方案分析
所研制的监测器以结合学校作息时间和教室进出人数作为监测器的主要监测参数。
可以实现自动模式与延时控制相兼容。
在正常上课作息时间段内,设定相应的下课报警提示音,提醒学生及时关闭电源;在考虑到学生大意并不予理睬报警提示音
时,将延时一定时间后关灯。
同时,还要按考虑下课后仍有学生留下自习来控制,若还有人存在,则进入延时模式运行,改用按钮加减人数手动控制,以解决因特殊情况下,自动控制器的不人性化运行。
本文所做的教室电灯控制器主要是由硬件和软件两大部分组成。
硬件部分是前提,是整个系统执行的基础,它主要为软件提供程序运行的平台。
而软件部分,是对硬件端口所体现的信号,加以采集、分析、处理,最终实现控制器所要实现的各项功能,达到控制器自动与手动相结合的教室电灯智能控制。
第2节系统主要硬件电路设计
2.1 原理图与原理框图
图2-1
考虑到本监测器所安装的物理影响因素比较多,且教室控制设备中的进出人数会因上课情形变化而不稳定,所以在设计过程中,电子元器件的选用、线路布置和设备的安放要充分考虑到抗干扰问题。
下图为原理框图:
电源输入键盘输入
时钟电路 AT89C51
复位电路报警电路
延时电路
2.2 系统主要硬件电路设计
系统控制单元是以单片机主控模块为核心,其它外围电路主要包括:AT89C51单片机主控制模块、系硬件时钟模块、蜂鸣器报警提示音模块、按键模块、后备电源模块、延时模块数码管驱动显示模块、主电路原理图见图2-1所示。
2.2.1 单片机工作电路及时钟输出电路
本系统的主控模块主要采用51系列单片机型号为STC89C51作为主控芯片。
89S52引脚外围器件引脚说明
VCC:电源电压
GND:地
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。
P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问,位地址的外部数据存储器(如执行:MOVX @Ri 指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。
Flash 编程或校验时,P2也接收高位地址和其它控制信号。
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表3-2。
表3-2 为 P3口的第二功能
端口功能第二功能端口引脚第二功能 RXD(P3.0) 串行输入口 T0(P3.4) 定时/计数器0外部输入 TXD(P3.1) 串行输出口 T1(P3.5) 定时/计数器1外部输入INT0(P3.2) 外中断0 WR(P3.6) 外部数据存储器写选通 INT1(P3.3) 外中断1 RD(P3.7) 外部数据存储器读选通
RST:复位输入。
当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不再访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置禁位后,只有一条MOVX 和MOVC指令ALE才会被激活。
此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51
由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,高有两次有效的PSEN信号。
EA/VPP:外部访问允许。
欲使CPU访问外部程序存储器(地址0000H,FFFFH),EA 端必须保持低电平(接地)。
需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上,12V的编程电压VPP。
XTAL1:振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
2.2.2 时钟输出电路
根据教室电灯使用特性,该系统还应受到时间的控制,控制系统的时间应符合学校的作息时间。
比如晚间休息、假期等时间段应该关掉教室电灯监测系统,以节约能源,因此本监测器还加入硬件时钟电路以保证系统的智能化运行,如
MCl46818、(,iC68H68T、LM8365等,这些芯片的引脚太多,体积大,占用的口线多。
而现在流行的串行时钟芯片很多,如DSl302、DSl305、DSl307、PCF8485等,这些电路的接口简单、价格低廉、使用方便,被广泛的使用。
考虑到本系统停电时只需对时钟电路提供电源、且不需要占用太多单片杌资源,
8的用于临时性存放数据的本系统采用美国DALLAS公司推出的具有充电能力的低功耗3l×
RAM寄存器的实时时钟芯片DS1302。
此芯片采用的是串行通信方式,还可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2(5V,5(5V,DSl302是DSl202的升级产品,与DS1202兼容,但增加了主电源,后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
而且本系统采用的DS1302只需三根线即可与单片机进行通信,体积小,使用简单,时钟精度较高,可以满足系统的要求,在DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外
接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST 为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc?2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向), SCLK始终是输入端。
DS1302主要用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。
因此在本监测器中,DS1302时钟芯片主要体现于结合学校的作息时间,设定相应的时间下课报警提示音。
2.2.3蜂鸣报警器模块
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。
而本监测器使用的蜂鸣器是多谐振荡器由晶体管或集成电路构成。
当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
图2.2.3教室电灯监测器之蜂鸣器模块
2.2.4 键盘控制模块
本设计所用到的按键数量较多而不适合用独立按键式键盘。
采用的是由行线和列线组成的四方阵形式布局,能避免使用混乱和功能错乱。
图2.2.4按键其功能与原理图对应分析
2.2.5 后备供电电源模块
考虑到教室可能会出现供电问题或停电等问题,为确保硬件时钟的正常运行,因此设计一个3V的可充电锂电池作为备用电源。
纽扣电池也称扣式电池,是指外形尺寸象一颗小纽扣的电池,一般来说直径较大,厚度较薄(相对于柱状电池如市场上的5号AA等电池)。
纽扣电池是从外形上来对电池来分,同等对应的电池分类有柱状电池,方形电池和异形电池。
纽扣电池一般来说常见的有充电的和不充电的两种,充电的包括3.6V可充锂离子扣式电
池(LIR系列),3V可充锂离子扣式电池(ML或VL系列);不充电的包括3V锂锰扣式电池(CR系列)及1.5V碱性锌锰扣式电池(LR
)。
而监测器使用的则是型号为CR2032的锂二氧化锰电池。
及SR系列
同时必须注意:1、正确连接电池的“,”,“-”极性; 2、不同种类的电池不要在一起使用; 3、不要直接将焊料加在电池上; 4、避免电池储存在直射光、高温、高湿的环境下。
第 3 节系统软件设计
3.1 程序流程图
3.2 系统主程序设计
#include <reg52.h>
sbit CLK= P1^0;
sbit DIO= P1^1;
sbit CE= P1^2;
sbit setTime= P1^3;
sbit tiaoshi= P1^4;
sbit tiaofen= P1^5;
sbit seeAlamT= P1^6; //查看报警时间
sbit delay_Lock=P3^1; //延时关灯
sbit countIn= P3^2; //计数进来人员数
sbit countOut= P3^3; //计数出去人员数
sbit speeker= P3^5; //报警输出
sbit switchSign =P3^6; //灯状态
sbit lampswitch=P3^7; //灯开关模拟
bit xsd;
bit disp_model=0; //显示模式切换,=0时,显示主时间,=1时,显示提醒时
间
bit set_Time_En=0; //时间设置允许标志,=0,不可以设置,=1时,可以调
节时间
bit kaiguan=0; //内部开头标志位,=0时表示关,=1时表示开,
bit chaoshi=0; //超时未关灯标志位,=0时表示未超时,=1表示超时未关。
bit delay_Lock_En=0; //延时关灯允许标志位,=1时,允许延时 //bit
time_Control=1; //时间控制标志,为0时可以自由开放,有人进入灯可以开启,为1时时间限制,不允许随便开灯
unsigned char xiaoshi,fenzhong,miao,shang_yi_miao;
unsigned char
xs1=9,fz1=40,xs2=11,fz2=50,xs3=15,fz3=40,xs4=17,fz4=50,xs5=20,fz5=40;
//设定五组时间
unsigned char alam_Time_Count=0;
//count=1-5,共五组,表示设定的四个时间值
unsigned char Population=0; //教室人数计数
unsigned char count0;
//time0中断计数器
unsigned char
LED_SEG[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 共阴//{0x28,0xEE,0x32,0xA2,0xE4,0xA1,0x21,0xEA,0x20,0xA0}; //共阳void yan_shi(unsigned int shuju) {
while(--shuju); }
unsigned char du1302(unsigned char dizhi)
{
unsigned char i,jieguo;
CLK=0;
CE=1;
for(i=0;i<8;i++)
{
DIO=dizhi& 0x01;
CLK=1;CLK=0;
dizhi=dizhi>>1;
}
DIO=1;
jieguo=0;
if(DIO==1){jieguo=jieguo|0x80;}
for(i=0;i<7;i++)
{
CLK=1;CLK=0;
jieguo=jieguo>>1;
if(DIO==1){jieguo=jieguo| 0x80;}
}
CE=0;
return(jieguo); }
void xie1302(unsigned char dizhi,shuju) {
unsigned char i;
CE=1;
for(i=0;i<8;i++)
{
DIO=dizhi& 0x01;
CLK=1;CLK=0;
dizhi=dizhi>>1;
}
for(i=0;i<8;i++)
{
DIO=shuju& 0x01;
CLK=1;CLK=0;
shuju=shuju>>1;
}
CE=0;
}
void display(void)
{
unsigned char D1,D2,D3,D4,D5,D6,D7; miao= du1302(0x81);
fenzhong= du1302(0x83);
xiaoshi= du1302(0x85);
if(miao!=shang_yi_miao)
{
xsd=1;
TR0=1;
}
shang_yi_miao=miao;
if(disp_model==0)
{
D1=xiaoshi>>4;
D2=xiaoshi&0x0f;
D3=fenzhong>>4;
D4=fenzhong&0x0f;
// D5=miao>>4; D6=miao&0x0f;
}
else
{
if(alam_Time_Count==1) {
D1=xs1/10; D2=xs1%10; D3=fz1/10; D4=fz1%10; // D5=0; D6=0;
}
if(alam_Time_Count==2) {
D1=xs2/10; D2=xs2%10; D3=fz2/10; D4=fz2%10; // D5=0; D6=0;
}
if(alam_Time_Count==3) {
D1=xs3/10; D2=xs3%10; D3=fz3/10; D4=fz3%10; // D5=0; D6=0;
}
if(alam_Time_Count==4) {
D1=xs4/10; D2=xs4%10; D3=fz4/10; D4=fz4%10; // D5=0; D6=0;
}
if(alam_Time_Count==5)
{
D1=xs5/10; D2=xs5%10;
D3=fz5/10; D4=fz5%10;
// D5=0; D6=0;
}
}
D5=Population/100;
D6=Population%100/10;
D7=Population%10;
P0= LED_SEG[D1]; //display hour P2= 0x7F;
yan_shi(200);
P2= 0xFF;
if((disp_model==0)&&(xsd==0))
P0= LED_SEG[D2];
else
P0= LED_SEG[D2]|0x80;
P2= 0xBF;
yan_shi(200);
P2= 0xff;
P0= LED_SEG[D3]; //display minit P2= 0xDF;
yan_shi(200);
P2=0xff;
P0= LED_SEG[D4];
P2= 0xEF;
yan_shi(200);
P2=0xff;
P0= LED_SEG[D5]; //display Population P2= 0xF7;
yan_shi(200);
P2=0xff;
P0= LED_SEG[D6];
P2= 0xFB;
yan_shi(200);
P2=0xff;
P0= LED_SEG[D7];
P2= 0xFD;
yan_shi(200);
P2=0xff;
}
void keyscan(void) {
if(set_Time_En==1)
{
if(disp_model==0) //主时间模式
{
if(!tiaoshi)
{
xie1302( 0x8E, 0x00);
xie1302( 0x80, 0x80);
xiaoshi++;
if((xiaoshi& 0x0f) >=10){xiaoshi=xiaoshi+
0x10;xiaoshi=xiaoshi& 0xf0;}
if(xiaoshi >= 0x24){xiaoshi=0;}
xie1302( 0x84,xiaoshi);
xie1302( 0x8E, 0x80);
do
{
display();
}
while(!tiaoshi);
}
if(!tiaofen)
{
xie1302( 0x8E, 0x00);
xie1302( 0x80, 0x80);
fenzhong++;
if((fenzhong& 0x0f) >=10){fenzhong=fenzhong+ 0x10;fenzhong=fenzhong& 0xf0;}
if(fenzhong >= 0x60){fenzhong=0;}
xie1302( 0x82,fenzhong); xie1302( 0x8E, 0x80);
do
{
display();
}
while(!tiaofen);
}
}
else
{
if(!tiaoshi)
{
if(alam_Time_Count==1) {
xs1++;
if(xs1==24)
xs1=0;
}
if(alam_Time_Count==2) {
xs2++;
if(xs2==24)
xs2=0;
}
if(alam_Time_Count==3) {
xs3++;
if(xs3==24)
xs3=0;
}
if(alam_Time_Count==4) {
xs4++;
if(xs4==24)
xs4=0;
}
if(alam_Time_Count==5) {
xs5++;
if(xs5==24)
xs5=0;
}
do
{
display();
}
while(!tiaoshi);
}
if(!tiaofen)
{
if(alam_Time_Count==1) {
fz1++;
if(fz1==60)
fz1=0;
}
if(alam_Time_Count==2) {
fz2++;
if(fz2==60)
fz2=0;
}
if(alam_Time_Count==3) {
fz3++;
if(fz3==60)
fz3=0;
}
if(alam_Time_Count==4) {
fz4++;
if(fz4==60)
fz4=0;
}
if(alam_Time_Count==5)
{
fz5++;
if(fz5==60)
fz5=0;
}
do
{
display();
}
while(!tiaofen);
}
}
}
if(!setTime)
{
if(set_Time_En==0)
set_Time_En=1;
else
set_Time_En=0;
if((set_Time_En==1)&&(alam_Time_Count==0))
{
xie1302( 0x8E, 0x00);
xie1302( 0x80, 0x80); //停止计时xie1302( 0x8E, 0x80);
}
else
{
xie1302( 0x8E, 0x00);
xie1302( 0x80, 0x00); //启动计时xie1302( 0x8E, 0x80);
}
do
{
display();
}
while(!setTime);
}
if(!seeAlamT)
{
disp_model=1;
alam_Time_Count++;
if(alam_Time_Count==6)
{
alam_Time_Count=0;
disp_model=0;
}
do
{
display();
}
while(!seeAlamT);
}
3.3 延时子程序设计
if(!delay_Lock) //延时关灯模式{
if((chaoshi==1)&&(Population>0)) delay_Lock_En=1; //开启延时
do
{
display();
}
while(!delay_Lock);
}
if(!countIn) //进人模拟信号
{
if(Population<255)
Population++; //
教室人数计数加1
else
Population=255;
do
{
display();
}
while(!countIn);
}
if(!countOut) //出人模拟信号{
if(Population>0) Population--; //
教室人数计数减1
else
Population=0;
do
{
display();
}
while(!countOut);
}
3.4 设定时钟段程序设计
if(alam_Time_Count==1) {
xs1++;
if(xs1==24)
xs1=0;
}
if(alam_Time_Count==2) {
xs2++;
if(xs2==24)
xs2=0;
}
if(alam_Time_Count==3) {
xs3++;
if(xs3==24)
xs3=0;
}
if(alam_Time_Count==4) {
xs4++;
if(xs4==24)
xs4=0;
}
if(alam_Time_Count==5) {
xs5++;
if(xs5==24)
xs5=0;
}
do
{
display();
}
while(!tiaoshi);
}
if(!tiaofen)
{
if(alam_Time_Count==1) {
fz1++;
if(fz1==60)
fz1=0;
}
if(alam_Time_Count==2) {
fz2++;
if(fz2==60)
fz2=0;
}
if(alam_Time_Count==3) {
fz3++;
if(fz3==60)
fz3=0;
}
if(alam_Time_Count==4) {
fz4++;
if(fz4==60)
fz4=0;
}
if(alam_Time_Count==5) {
fz5++;
if(fz5==60)
fz5=0;
}
do
{
display();
}
while(!tiaofen);
}
}
}
if(!setTime)
{
if(set_Time_En==0)
set_Time_En=1;
else
set_Time_En=0;
if((set_Time_En==1)&&(alam_Time_Count==0))
{
第 4 节结束语
以上为毕业期间所设计的电子监测控制系统的电路,它经过多次修改和整理,可以满足设计的基本要求。
但因为我们的水平有限,此电路中也存在一定的问题。
譬如延时模式仍不够完善,使到在操作时容易出现错误。
由于使用的是单片机作为核心的控制元件,配合其它器件,使本监测系统具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。
同时在程序设计过程中,发现采用合理的程序设计结构是一项关键技术。
在本系统的设计过程中,总体设计采用自上至下的设计思想将主程序设计好,而在各个部分展开成从属程序或子程序时,是将各个小模块分别进行设计和编程,同时在编程的过程中又用到了结构程序设计的思想,唯有这样才能完整有效地组织起程序,使其顺畅地运作。
第 5 节致谢
三年的大学即将结束了,回顾几年的历程,老师们给了我们很多指导和帮助。
他们严谨的治学,优良的作风和敬业的态度,为我们树立了为人师表的典范。
要感谢我的毕业设计指
导老师杨红,在她的指导下我完成了毕业设计与论文,与老师多次探讨毕业设计,由选题到制作,并为我们指点迷津。
还要感谢和我同一设计小组的几位同学,是你们在我设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意。
现在即将挥别我的学校、老师、同学,还有我三年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。
最后,感谢在大学期间认识我和我认识的所有人,有你们的伴随,才有我大学生活的丰富多彩,绚丽多姿~谢谢~参考文献
【1】www(cps800(COm(国家未来五年将推广I(5亿只节能灯(
【2】张毅刚,彭喜源,谭晓钧,曲春波(MCS一51单片机应用设计,哈尔滨工业大学出版社 2001(1(
【3】赵海兰毛玉良赵祥(实时时钟电路DSl302的原理及应用(电子元器件应用,2005,12( 【4】UWb,时钟芯片的低功耗设计方案,2006,1 1 【5】张道宏等(基于DSl302的子母钟系统(电子技术,2002,4(
【6】刘大茂严飞(单片机应用系统监控主程序的设计方法(福州大学学报(自然科学版)(1998。
2(1)
【7】朱定华,戴汝平编著(单片机原理与应用(清华大学出版社北方交通大学出版社,2003,8(
【8】张念祖,单片机遥控键盘接口,电测与仪表,1993年
【9】李强,键盘接口编程技术,电子世界,2003(10)。