基于单片机的作息时间控制器系统设计课程30476.docx
重庆三峡学院基于单片机的作息时间控制器系统设计学院(系): 电子子与信息息工程学学院 年级专业: 20111级电电信(仪仪器仪表表) 学 号: 0111211103332 学生姓名: 文 静 指导教师: 谢谢 辉 教师职称: 教教 授 成 绩: 制作日期 20114 年 10 月 29 日目录摘要1关键词11第一章引引 言21.1 课题背背景21.1.11 选选题背景景2第二章 设计方方案论证证22.1 设设计要求求22.2 设设计方案案选择32.2.11 方案案一:数数字电路路设计的的作息时时间控制制器系统统32.2.22 方案案二:基基于单片片机的作作息时间间控制器器系统设设计32.2.33 方案案确定32.3 基基本方案案42.3.11 设计计课题简简要概述述42.3.22 系统统软硬件件划分42.3.33 单片片机选型型42.4 总总体设计计框图4第三章 硬件电电路设计计53.1 基基本原理理概述53.2 主主要原件件参数及及功能简简介53.2.11 主控控器STTC899C52253.2.22 DSS1300263.3 单单元电路路的设计计73.3.11显示电电路设计计73.3.22 键盘盘接口电电路设计计83.3.33 响铃铃电路设设计83.4 总总体运行行进程9第四章 软件电电路设计计及流程程图94.1 基基本原理理概述94.1.11 中断断服务程程序设计计104.1.22 显示示程序设设计和按按键判断断与按键键处理程程序设计计104.2 流流程图114.2.11 系统统主程序序流程图图114.2.22 系统统定时中中断流程程图12第五章 系系统程序序设计135.1 程程序设计计概要135.2 源源程序清清单13第六章 作息时时间器硬硬件原理理图60第七章 实训总总结61参考文献62附录633附录1 原原理电路路图63附录2元件件清单64附录3 实实物图64基于单片机机的作息息时间控控制器系系统设计计重庆三峡学学院电子子与信息息工程学学院 文 静摘要基于单片机机的作息息时间器器系统,是是以一片片8位单单片机为为核心的的实时时时钟及控控制系统统。我们们知道单单片机的的外接石石英晶体体振荡器器能提供供稳定、准准确的基基准频率率,并经经12分分频后向向内部定定时器提提供实时时基准频频率信号号,设定定定时器器工作在在中断方方式下,连连续对此此频率信信号进行行分频计计数,便便可得秒秒信号,再再对秒信信号进行行计数便便可得到到分、时时等实时时时钟信信息。如如果石英英晶体振振荡器的的频率信信号为66MHZZ,设定定定时器器定时工工作方式式1下,定定时器为为3CBBOH,则则定时器器每1000mss产生11次中断断,在定定时器的的中断定定时处理理程序中中,每110次中中断,则则向秒计计数器加加1,秒秒计数器器计数到到60则则向分计计数器进进位(并并建立分分进位标标志),分分计数器器计数到到60,则则向时计计数器进进位,如如此周而而复始的的连续计计数,便便可获得得时、分分、秒的的信号,建建立一个个实时时时钟。接接下来便便可以进进行定时时处理和和打铃输输出,当当主程序序检测到到有分进进位标志志时,便便开始比比较当前前时间(小小时与分分、存放放在RAAM中)与与信息时时间表上上的作息息时间(小小时与分分,存放放在ROOM)是是否相同同,如有有相同者者,则进进行报时时处理并并控制打打铃,如如有不相相同则返返回主程程序,如如此便实实现了报报时控制制的要求求。关键词单片机、时时间设置置电路、计计时电路路、显示示电路、定定时打铃铃控制电电路第一章 引 言1.1 课题背背景1.1.11 选选题背景景随着科技的的不断发发展,各各种芯片片都得到到了很好好的发展展,800C511 同样样如此,从从开始的的无人问问津到现现在的随随处可见见,红绿绿灯,记记分牌,电电子秒表表,遥控控器,电电饭煲,电电视等只只要是电电子产品品,都会会和芯片片有关,其其实芯片片并不是是什么神神秘的高高科技,它它只是里里面装了了一些己己编好的的程序而而己而而这里要要介绍的的是用汇汇编语言言来编程程的一个个系统,它它能够让让一个学学校或企企业集团团实现打打铃自动动化,总总之,一一个需要要时间系系统的机机构实现现自动提提醒功能能。当今时代是是一个新新技术层层出不穷穷的时代代,在电电子领域域尤其是是自动化化智能控控制领域域,传统统的分立立元件或或数字逻逻辑电路路构成的的控制系系统,正正以前所所未有的的速度被被单片机机智能控控制系统统所取代代。单片片机具有有体积小小、功能能强、成成本低、应应用面广广等优点点,可以以说,智智能控制制与自动动控制的的核心就就是单片片机。目目前,一一个学习习与应用用单片机机的高潮潮正在工工厂、学学校及企企事业单单位大规规模地兴兴起。而而本文是是用STTC899C522单片机机设计的的一个自自动打铃铃系统。第二章 设计方方案论证证2.1 设设计要求求它可以作为为时钟电电路来显显示时间间,进行行设置,定定时打铃铃。按照照自顶向向下设计计方法划划分自动动打铃系系统的功功能。可可分为:时间设设置电路路,计时时电路,显显示电路路和定时时打铃控控制电路路等。以江苏信息息职业技技术学院院的打铃铃情况设设计内容时间起床6:30早自习7:30-8:110第一节课8:20-9:000第二节课9:10-9:550第三节课10:000-100:400第四节课10:500-111:300第五节课13:300-144:100第六节课14:200-155:000第七节课15:200-166:000第八节课16:100-166:500晚自习19:000-200:300熄灯22:3002.2 设设计方案案选择2.2.11 方案案一:数数字电路路设计的的作息时时间控制制器系统统利用函数信信号发生生器来进进行脉冲冲信号输输出,利利用7441600N来设设置十进进制和六六进制的的进位输输出。利利用数码码显示器器来显示示时间,利利用或门门、与门门、非门门、与非非门、等等电路元元件进行行组合实实现打铃铃的控制制。2.2.22 方案案二:基基于单片片机的作作息时间间控制器器系统设设计单片机内部部存储器器设三个个字节分分别存放放时钟的的时、分分、秒信信息。利利用定时时器与软软件结合合实现11秒定时时中断,没没产生一一次中断断,存储储器内相相应的秒秒值加11;若秒秒值达到到60,则则将其清清零,并并将相应应的分字字节值加加1;若若分值达达到600,则清清零分字字节,并并将时字字节值加加1;若若时值达达到244,则将将时字节节清零。建建立完一一个实时时时钟后后接下来来进行定定时处理理和打铃铃输出,当当主程序序检测到到有分进进位标志志时,便便开始比比较当前前时间与与信息时时间表上上的作息息时间是是否相同同,相同同者,则则进行报报时处理理并控制制打铃,不不相同则则返回主主程序。2.2.33 方案案确定方案一的设设计只能能事先设设定打铃铃时间不不能完全全自动打打铃,且且在修改改打铃时时间上存存在一定定的困难难。而方方案二中中的设计计能完全全实现自自动化,诠诠释了我我们这次次毕业设设计的主主题。并并在修改改打铃时时间上有有了很大大的方便便,只需需修改一一部分程程序便能能实现不不同的需需要。因此我选择择方案二二进行设设计。2.3 基基本方案案2.3.11 设计课课题简要要概述作息时间控控制器系系统装置置用于工工厂、学学校等地地的时间间控制,本本设计是是按照学学校作息息时问设设定的,模模拟了电电了钟显显示时、分分、秒。还还根据学学校的作作息时间间按时打打铃,本本系统有有4 个个按钮,分分别用来来调时、调调分、秒秒和强制制打铃及及强制关关铃,以以保证始始终与标标准时间间相吻合合。首先设计出出本系统统的硬件件基本框框图,根根据框图图设计电电气原理理图,简简要概述述基本原原理,按按照设计计技术参参数设计计出各部部分程序序。2.3.22 系统软软硬件划划分由于需要最最小系统统设计,因因此,极极大地介介于系统统的硬件件成本,所所有能用用软件实实现的功功能都用用软件完完成,如如按键的的去抖,采采用延时时,显示示部分用用动态显显示等,这这样硬件件部分的的设计可可以采用用单片机机最小系系统,所所谓最小小系统时时仅有程程序存储储器和时时钟及复复位电路路的单片片机系统统。2.3.33 单片机机选型根据课题的的具体内内容,任任务要求求,计时时、校时时、定时时、键盘盘显示等等功能,经经多方面面考虑,所所选系统统选项用用与MMSC-51单单片机完完全兼容容的STTC899C522 低功功耗单片片机。2.4 总总体设计框框图图一 整体体框图第三章 硬件电电路设计计3.1 基基本原理理概述本系统主要要由主控控模块,时时钟模块块,显示示模块,键键盘接口口模块等等4 部部分构成成。通过过内部定定时产生生中断,从从而使驱驱动电铃铃打铃。设设定511 单片片机工作作在定时时器工作作方式11 ,每每1000ms产产生一次次中断,利利用软件件将基准准1000ms 单元进进行累加加,当定定时器产产生100 次中中断就产产生lSS 信号号,这是是秒单元元加1 。同理理,对分分单元和和时单元元计数从从而产生生秒,分分,时的的值,通通过六位位七段显显示器进进行显示示。由于于动态显显示法需需要数据据所存等等硬件,接接口较复复杂,考考虑显示示只有六六位,且且系统没没有其他他浮躁的的处理程程序,所所有采用用动态扫扫描LEED 的的显示,但但为了能能更好的的区分,年年月日,时时分秒,在在时间间间隔中间间加入间间隔符号号,因此此采用88位数码码管。本系统采用用四个按按键,当当时钟时时间和设设置时间间一直时时,驱动动程序动动作,进进行打铃铃,每次次打铃330S3.2 主主要原件件参数及及功能简简介3.2.11 主控器器STCC89CC52STC899C522 公司司生产的的STCC89CC52 单片机机用高性性能的静静态899C511 设计计,由先先进工艺艺制造,并并带有非非易失性性FLAASH 程序存存储器,它它是· 种高性性能、低低功耗的的8 位位CMOOS 微微处理芯芯片,市市场应用用最多,主主要特点点有:有4K 的的FLAASH 程序存存储器256 字字节内部部RAMM电源控制模模式:时时钟可停停止和恢恢复,空空闲模式式,掉电电模式6个中断源源4个中断优优先级4个8位II/O口口全双工增强强型UAART2个16位位定时、计计数器图二 SSTC889C5523.2.22 DSS130021)性能特特性DS13002与单单片机之之间能简简单地采采用同步步串行的的方式进进行通信信,仅需需用到三三个口线线:1.RSEE复位,2.II/O数数据线,33.SCCLK 串行时时钟。时时钟/RRAM 的读/写数据据以一个个字节或或多达331 个个字节的的字符组组方式通通信。DDS13302 工作时时功耗很很低,保保持数据据和时钟钟信息时时功率小小十1mmW 。提提供秒分分时日日日期。月月年的信信息,每每月的天天数和闰闰年的天天数可自自动调整整时钟,操作可可通过AAM/PPM 指指示决定定采用224 或或12 小时格格式。 2)管脚描描述XI XZZ 322.7668KHHz 晶晶振管脚脚GND 接接地RST 复复位脚I/O 数数据输入入/输出出引脚SCLK 串行时时钟Vcc1,VVcc22 电源源供电管管脚DS13002 串串行时钟钟芯片88 脚 DIPPDS13002S 串行时时钟芯片片8 脚脚 SOOIC 2000millDS13002Z 串行时时钟芯片片8 脚脚 SOOIC 1500mill图三 DDS133023.3 单单元电路路的设计计3.3.11显示电电路设计计显示部分采采用普通通的STTC899C522显示图四 显显示电路路显示部分采采用2块块4位数数码管,即即8位共共阳数码码显示,由由STCC89CC52芯芯片对该该数码管管传送数数据。而而在P22口接入入8个三三极管对对数码管管的位控控进行控控制。该该显示采采用的是是动态显显示,段段控和位位控都经经过反相相器,显显示的字字形代码码是共阳阳的显示示代码,位位控信号号输出时时是高电电平有效效,在校校时时,采采用的是是点亮小小数点信信位调节节器标志志,哪位位小数点点亮表示示调整的的是该位位的值。3.3.22 键盘接接口电路路设计由于键盘只只有四个个,采用用独立式式按钮,用用查询法法完成读读健功能能。图五 按按键电路路 各各键功能能已写入入程序,在在使用按按键的时时候,根根据有无无按键否否,一一一进行判判断,软软件中采采用iff嵌套模模式,因因此使各各按键的的功能具具有多样样性和课课重复使使用性。因因本次实实训的课课题,为为实现,年年月日,时时分秒等等时间的的调试,系统使用5只按键,4 只按键用来调整时间,且其中一只在不设置时间的情况下可为强制打铃,另一只单独连接,可实行复位和强制结束打铃。通过选择键选择调整位,选中位闪烁,按增加键为选中位加1,按减少键为选中位减1。按强制打铃按钮是实现强制打铃或者强制关闭打铃。3.3.33 响铃铃电路设设计响铃电路用用到了蜂蜂鸣器、三三极管、11K电阻阻。蜂鸣鸣器两端端分别接接地和三三极管。三三极管一一段电源源另一端端与电阻阻相连并并接入SSTC889C552的PP3.77接口。图六 响响铃电路路3.4 总总体运行行进程首先实现224小时时制电子子钟,在在8位数数码管显显示,显显示为时时分秒,实实现的格格式为:23-59-59。到到达预定定时间启启动蜂鸣鸣器开始始打铃,打打铃的方方式分为为起床、熄熄灯和上上下课铃铃两种。系统使用5只按键,4 只按键用来调整时间,且其中一只在不设置时间的情况下可为强制打铃,另一只单独连接,可实行复位和强制结束打铃。通过选择键选择调整位,选中位闪烁,按增加键为选中位加1,按减少键为选中位减1。按强制打铃按钮是实现强制打铃或者强制关闭打铃。第四章 软件电电路设计计及流程程图4.1 基基本原理理概述主程序首先先是初始始化部分分,主要要是计时时单元清清零,中中断初始始化,堆堆栈指针针初始化化,启动动定时器器工作,然然后是调调用显示示子程序序。主程程序的起起始存储储地址是是00000H单单元,但但由于本本系统用用了定时时器T00的中断断,中断断服务程程序入口口地址为为0000BH,因因此从000000H单元元起存放放一条短短调转指指令AJJMP,使使真正的的主程序序从03300HH单元开开始存放放。4.1.11 中断服服务程序序设计单片机内部部的定时时/计数数器T00定时1100mms,即即0.11s,110次中中断即为为1秒,660秒为为1分,660分为为1小时时,244小时为为一天,如如此循环环,从而而实现计计时功能能。编写中断服服务程序序关键要要注意:1.现现场保护护,本系系统中是是累加器器A和程程序状态态字PSSW值的的保护。22.计时时处理时时采用的的确十进进制,因因此时,分分,秒单单元加11后要进进行十进进制调整整,即要要执行DDAA指指令,还还要注意意的是时时计到224就回回零,分分和秒计计到600就回零零。3.中断返返回前的的现场恢恢复。4.1.22 显示程程序设计计和按键键判断与与按键处处理程序序设计显示采用的的是动态态显示,段段控和位位控都经经过反相相器,显显示的字字形代码码是共阳阳的显示示代码,位位控信号号输出时时是高电电平有效效,在校校时时,采采用的是是点亮小小数点信信位调节节器标志志,哪位位小数点点亮表示示调整的的是该位位的值。显示子程序序的第一一部分是是拆字,显显示缓冲冲区是22FH2AHH;第二二部分是是查字型型码,输输出段控控和位控控信号,由由于采用用的是动动态显示示,所以以每出输输出一位位的段控控和位控控信号要要延时一一定的时时间,使使LEDD显示器器显示的的字符时时稳定的的。按键判断程程序有编编写时应应注意按按键的去去抖动,该该系统采采用的是是延时去去抖动的的方法,延延时是通通过调用用子程序序来实现现的,每每个按键键按下后后都要等等待释放放后再返返回。按键处理程程序中的的按键式式校时的的,所以以进入按按键处理理程序后后就关闭闭定时中中断,对对于动能能键注意意设置显显示标志志。4.2 流流程图4.2.11 系统统主程序序流程图图图7 主程程序流程程图4.2.22 系统统定时中中断流程程图图8 中断断流程图图第五章 系系统程序序设计5.1 程程序设计计概要程序名称:基于单单片机的的作息时时间器系系统设计计说明:实现现24 小时制制电子钟钟,8 位数码码管显示示,显示示时分秒秒显示格格式:223-559-559(小小时十位位如果为为0 则不不显示)。到预定时问问启动蜂蜂鸣器模模拟打铃铃,蜂鸣鸣器BEEEP: P33.7。打铃方式分分起床、熄熄幻铃和和上、下下课铃两两种。系统使用55只按键键,4 只按键键用来调调整时间间,且其其中一只只在不设设置时间间的情况况下可为为强制打打铃,另另一只单单独连接接,可实实行复位位和强制制结束打打铃。键SET_KFYY: PPI.00;通过过选择键键选择要要调的时时间,选选中位闪闪烁。可可调整年年月日,时时分秒,周周期和预预设闹钟钟时间。键SET_KFYY:PII.1;通过选选择键选选择调整整位,选选中位闪闪烁,且且在1键键选择到到设置闹闹钟时间间时可跳跳出预设设闹钟时时间。增加键ADDD_KKEY:PI.2;按一一次使选选中位加加1。减少键DEEC_KKEY: PII.3;按一一次使选选中位位位。1,且具具有强制制打铃效效果5.2 源源程序清清单#inclludee <rreg552.hh> /调调用单片片机头文文件#defiine uchhar unssignned chaar /无无符号字字符型 宏定义义变量范范围02555#defiine uinnt unssignned intt /无符号号整型 宏定义义变量范范围0655535#inclludee "eeeprrom552.hh"/数码管管段选定定义 0 1 2 33 4 5 66 7 88 9ucharr coode smgg_duu=0xxa0,0xbbb,00x622,0xx2a,0x339,00x2cc,0xx24,0xBBa,00x200,0xx28, 0xx30,0x225,00xe44,0xx23,0x664,00x744,0xxff; /断码/数码管管位选定定义ucharr coode smgg_wee=0xxfe,0xffd,00xfbb,0xxf7,0xeef,00xdff,0xxbf,0x77f;/数数码管位位选定义义ucharr diis_ssmg8 = 0xaa0,00xbbb,0xx62,0x22a,00x399,0xx2c,0x224,00xBaa;ucharr smmg_ii = 8; /显显示数码码管的个个位数bit fflagg_2000mss ;bit fflagg_1000mss ;bit fflagg_5000mss; /5500mms标志志位sbit beeep = P337; /蜂鸣鸣器定义义bit fflagg_beeep_en;uint cloock_vallue; /用作作闹钟用用的ucharr fllag_s = 0xx03;/控控制数码码管闪烁烁的变量量ucharr fllag_nl; /农历历 阳历历显示标标志位ucharr meenu_1,mmenuu_2,mennu_ii;sbit datt0 = B0;sbit datt1 = B1;sbit datt2 = B2;sbit datt3 = B3;sbit datt4 = B4;sbit datt5 = B5;sbit datt6 = B6;sbit datt7 = B7;ucharr daalinng_ggeshhu=00;ucharr feen1,shii1; /第11个打铃铃的时间间 起床床ucharr feen2,shii2; /第22个打铃铃的时间间 早自自习ucharr feen3,shii3; /第33个打铃铃的时间间 早自自习下 ucharr feen4,shii4; /第44个打铃铃的时间间 第一一节上课课 ucharr feen5,shii5; /第55个打铃铃的时间间 第一一节下课课 ucharr feen6,shii6; /第66个打铃铃的时间间 第二二节上课课 ucharr feen7,shii7; /第77个打铃铃的时间间 第二二节下课课 ucharr feen8,shii8; /第88个打铃铃的时间间 第三三节上课课 ucharr feen9,shii9; /第99个打铃铃的时间间 第三三节下课课 ucharr feen100,shhi100; /第110个打打铃的时时间 第第四节上上课 ucharr feen111,shhi111; /第111个打打铃的时时间 第第四节下下课 ucharr feen122,shhi122; /第112个打打铃的时时间 第第五节上上课 ucharr feen133,shhi133; /第113个打打铃的时时间 第第五节下下课ucharr feen144,shhi144; /第114个打打铃的时时间 第第六节上上课ucharr feen155,shhi155; /第115个打打铃的时时间 第第六节下下课ucharr feen166,shhi166; /第116个打打铃的时时间 第第七节上上课ucharr feen177,shhi177; /第117个打打铃的时时间 第第七节下下课ucharr feen188,shhi188; /第118个打打铃的时时间 第第八节上上课ucharr feen199,shhi199; /第119个打打铃的时时间 第第八节下下课ucharr feen200,shhi200; /第220个打打铃的时时间 晚晚自习上上课ucharr feen211,shhi211; /第221个打打铃的时时间 晚晚自习下下课ucharr feen222,shhi222; /第222个打打铃的时时间 熄熄灯ucharr feen233,shhi233; /第223个打打铃的时时间 ucharr feen244,shhi244; /第224个打打铃的时时间 ucharr feen255,shhi255; /第225个打打铃的时时间 ucharr feen266,shhi266; /第226个打打铃的时时间 #inclludee "dds13302.h"/*把把数据保保存到单单片机内内部eeeproom中*/void wriite_eeppromm()SecttorEErasse(00x20000);bytee_wrritee(0xx20000, fenn1); /第第1个打打铃的时时间bytee_wrritee(0xx20001, shii1);bytee_wrritee(0xx20002, fenn2); /第第2个打打铃的时时间bytee_wrritee(0xx20003, shii2);bytee_wrritee(0xx20004, fenn3); /第第3个打打铃的时时间bytee_wrritee(0xx20005, shii3);bytee_wrritee(0xx20006, fenn4); /第第4个打打铃的时时间bytee_wrritee(0xx20007, shii4);bytee_wrritee(0xx20008, fenn5); /第第5个打打铃的时时间bytee_wrritee(0xx20009, shii5);bytee_wrritee(0xx20110, fenn6); /第第6个打打铃的时时间bytee_wrritee(0xx20111, shii6);bytee_wrritee(0xx20112, fenn7); /第第7个打打铃的时时间bytee_wrritee(0xx20113, shii7);bytee_wrritee(0xx20114, fenn8); /第第8个打打铃的时时间bytee_wrritee(0xx20115, shii8);bytee_wrritee(0xx20116, fenn9); /第第9个打打铃的时时间bytee_wrritee(0xx20117, shii9);bytee_wrritee(0xx20118, fenn10); /第第10个个打铃的的时间bytee_wrritee(0xx20119, shii10);bytee_wrritee(0xx20220, fenn11); /第第11个个打铃的的时间bytee_wrritee(0xx20221, shii11);bytee_wrritee(0xx20222, fenn12); /第第12个个打铃的的时间bytee_wrritee(0xx20223, shii12);bytee_wrritee(0xx20224, fenn13); /第第13个个打铃的的时间bytee_wrritee(0xx20225, shii13);bytee_wrritee(0xx20226, fenn14); /第第14个个打铃的的时间bytee_wrritee(0xx20227, shii14);bytee_wrritee(0xx20228, fenn15); /第第15个个打铃的的时间bytee_wrritee(0xx20229, shii15); bytee_wrritee(0xx20330, fenn16); /第第16个个打铃的的时间bytee_wrritee(0xx20331, shii16);bytee_wrritee(0xx20332, fenn17); /第第17个个打铃的的时间bytee_wrritee(0xx20333, shii17);bytee_wrritee(0xx20334, fenn18); /第第18个个打铃的的时间bytee_wrritee(0xx20335, shii18);bytee_wrritee(0xx20336, fenn19); /第第19个个打铃的的时间bytee_wrritee(0xx20337, shii19);bytee_wrritee(0xx20338, fenn20); /第220个打打铃的时时间bytee_wrritee(0xx20339, shii20);bytee_wrritee(0xx20440, fenn21); /第第21个个打铃的的时间bytee_wrritee(0xx20441, shii21);bytee_wrritee(0xx20442, fenn22); /第第22个个打铃的的时间byt