项目名称:定时报警器班级:电子201001班姓名:XXX学号:201003000000指导教师:XXX日期:2012.6.32【摘要】:随着社会的不断进步和科学技术、经济的不断发展,人们生活水平得到很大的提高,对私有财产的保护意识在不断的增强,因而对防盗措施提出了新的要求。本文介绍怎么利用AT89C51单片机去设计及制作定时报警器。可定时显示报警系统是一个能够定时并及时报警,提醒人们安全有效地按计划完成任务的系统。本论文从软件工程的角度,对可定时显示报警系统做了全面的需求分析,简要说明了该系统的构思、特点及开发环境;阐述了系统的主要功能,论述了它的设计与实现,并且叙述了系统的测试与评价。【关键词】:单片机显示按键3目录目录..............................................3第一章设计要求及任务..............................4第二章方案设计与论证..............................4一、任务分析与整体设计思路.........................4第三章硬件设计....................................4一、具体电路设计....................................41、控制模块.................................42、其他电路模块............................7第四章软件设计....................................8一、编程软件简介....................................8二、程序设计思路....................................9三、程序流程.......................................9第五章硬件仿真...................................12一、仿真结果......................................12总结............................................13参考文献...........................................144第一章设计要求及任务设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59秒)进行倒计时,当计时到0时数码管闪烁“00”(以1Hz闪烁),按键功能如下:(1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态如果已经处于设置状态则此键无效。(2)增加键:在设置状态时,每按一次递增键,初始值的数字增1。(3)递减键:在设置状态时,每按一次递减键,初始值的数字减1。(4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。第二章方案设计与论证一、任务分析与整体设计思路根据要求,需要实现如下几个方面的功能。计时功能:要实现计时功能则需要使用定时器来计时,通过设置定时器的初始值来控制溢出中断的时间间隔,再利用一个变量记录定时器溢出的次数,达到定时1秒中的功能。然后,当计时每到1秒钟后,倒计时的计数器减1。当倒计时计数器到0时,触发另一个标志变量,进入闪烁状态。显示功能:显示倒计时的数字要采用动态扫描的方式将数字拆成“十位”和“个位”动态扫描显示。如果处于闪烁状态,则可以不需要动态扫描显示,只需要控制共阴极数码管的位控线,实现数码管的灭和亮。键盘扫描和运行模式的切换:主程序在初始化一些变量和寄存器之后,需要不断循环地读取键盘的状态和动态扫描数码管显示相应的数字。根据键盘的按键值实。第三章硬件设计一、具体电路设计1、控制模块单片机又叫单片微型计算机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能的部件,包括CPU(CentralProcessingUnit)、随机存储RAM(RandomAccessMemory)只读存储器ROM、(ReadonlyMemory)、基本输入/输出(Input/Output)接口电路、定时器/计数器等部件都制作在一块集成芯片上,构成一个完整的微型计算机,从而实现计算机的基本功能。它体5积小,成本低,功能强,广泛应用于智能产品和工业自动化上。单片机种类系列很多,但无论是从世界范围或是从全国范围来看,使用最为广泛的应用属于MCS-51系列单片机。MCS-51单片机是单片机中最为典型和最有代表性的一种。基于这一事实,本次设计应用MCS-51系列的8位单片机89C51为主芯片来实现定时报警器这一功能。本设计采用的控制模块是美国Atmel公司生产的AT89C51单片机,它是一种低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(EPROM)和128bytes的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存取技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大[5]。AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。在AT89C51主控芯片上集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过内部总线相连[6]。下面介绍几个主要部分。AT89C51单片机的基本组成功能方块图如图1所示。外时钟源外部事件计数外中断控制并行口串行通信图1AT89C51功能方块图ATMEL公司的AT89C51是一种高效微控制器,采用40引脚双列直插封装形式。AT89C51单片机是高性能单片机,因为受引脚数目的限制,所以有不少引脚具有第二功能[7]。其逻辑引脚图如图2所示:时钟电路程序存储器4KBROM数据存储器256BRAM/SFR2×16位定时器/计数器AT89S51CPU64KB总线扩展控制器并行I/O串行口中断控制系统6图2AT89C51逻辑引脚图其引脚介绍如下:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流。P3口同时为闪烁编程和编程校验接收一些控制信号。P3口也可作为AT89C51的一些特殊功能,具体功能如表1所示:7表1P3口第二引脚功能P3口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许端的输出电平用于锁存地址的地址字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。PSEN:外部程序存储器的选通信号端。在由外部程序存储器取值期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:反向振荡器的输出,如采用外部时钟源驱动器件,应不接。2、其他电路模块时钟电路、复位电路以及按键电路XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。使单片机内各寄存器的值变为初始状态的操作称为复位。复位方式是单片机8的初始化操作。单片机除了正常的初始化外,当程序运行出错或由于操作错误而使系统处于死循环时,也需要按复位键重启机器。复位方法一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作[6]。例如使用晶振频率为12MHz时,则复位信号持续时间应不小于2us。本设计采用的是外部手动按键复位电路。通过按按钮能够实现手工解除警报信号。按键电路的一个按键的功能是布防,另一个按键的功能是当遇到紧急情况时紧急报警。当按下布防按键后,红外报警系统一分钟后进入监控状态,当有人靠近时,热释红外传感器会将感应道德信号传回给单片机,单片机经过内部处理马上进行报警[9]。时钟电路、按键电路与复位电路如图3所示:图3时钟电路、按键电路与复位电路第四章软件设计一、编程软件简介本设计的编程软件采用的是C语言,它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良9好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。用C语言进行单片机程序设计是单片机开发与应用的必然趋势。二、程序设计思路鉴于题目要求,存在三种工作模式:初始值设置模式、倒计时模式、计时到0时的闪烁模式。变量stateVal为0时,处于倒计时模式。变量stateVal为1时,处于初始值设置模式。变量