《基于单片机的防盗报警器的毕业设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的防盗报警器的毕业设计.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流基于单片机的防盗报警器的毕业设计.精品文档.基于单片机的防盗报警器的设计摘要:本文介绍了基于AT89S52单片机控制的由EEPROM和LED组成的防盗报警器的控制电路和控制程序的设计。首先本文对AT89S52单片机和EEPROM的24C04存储器芯片原理做了介绍,同时分析了防盗报警器控制原理,经过分析,设计出能实现存储报警号码及自动报警的防盗报警0器硬件电路和单片机程序。最后利用Proteus仿真软件对该系统进行仿真,查看效果。关键词:单片机, 24C04, ProteusA Design of Theft-proof Alarm Based
2、 on MCUAbstract:This article describes a design of theft-proof alarm control circuit and control procedures based on the AT89S52 MCUcontroling on EEPROM 24c04 and the LED. First, this paper introduce the AT89S52 and the working principle of the EEPROM 24C04, and analyzes the burglar alarm control pr
3、inciple. After analysis, this article design out the circuit and microcontroller procedure of the theft-proof alarmt which can save the alarm number and auto send out the alarm signal. Finally, this article use the Proteus simulation software to simulate the system to view the results.Keyword: MCU,
4、24C04, Proteus目 录1 引言11.1 防盗报警控制器研究背景11.1.1 防盗报警器概述11.2 单片机技术简介21.3 Keil技术简介21.4 Proteus技术简介41.5 本课题的主要内容、要求及说明书安排41.5.1 主要内容、要求41.5.2 说明书安排52 系统结构及硬件电路设计62.1 系统的结构框图及工作原理62.2 电源模块62.3 AT89S52单片机最小系统72.4 键盘模块82.5 显示模块102.6 EEPROM113 程序设计133.1主程序流程133.2键盘输入模块的程序设计133.3数码管显示模块的程序设计153.4EEPROM的驱动程序设计16
5、3.2.1 24C04的I2C总线构成及其协议163.2.2 24C04的I2C总线基本操作183.2.2 24C04的驱动子程序194 Proteus仿真204.1Proteus 7.5 SP3 简介204.2仿真流程215 结论25参 考 文 献26致 谢28附录A291 引言本文详细介绍了一种基于单片机和EEPROM的防盗报警控制器的设计。 以下对该系统所涉及的原理和应用到的技术,如:单片机技术、Keil技术、Proteus等做了简要的介绍。1.1 防盗报警控制器研究背景随着社会的不断发展,人们对室内财产的安全要求也越来越高,而比较普遍的防盗措施是安装防盗报警装置,而防盗报警器的控制电路
6、和控制程序在整个防盗报警装置中处于重要地位。1.1.1 防盗报警器概述防盗报警系统是用物理方法或电子技术,自动探测发生在布防监测区域内的侵入行为,产生报警信号,并提示值班人员发生报警的区域部位,显示可能采取对策的系统。防盗报警系统是预防抢劫、盗窃等意外事件的重要设施。一旦发生突发事件,就能通过声光报警信号在安保控制中心准确显示出事地点,使于迅速采取应急措施。防盗报警系统与出入口控制系统、闭路电视监控系统、访客对讲系统和电子巡更系统等一起构成了安全防范系统。 防盗报警系统通常由:探测器和传输通道、报警控制器、报警装置三部分构成。报警探测器是由传感器和信号处理组成的,用来探测入侵者入侵行为的,由电
7、子和机械部件组成的装置。传输通道是探测器与警控制器的之间的信道,用来传输探测器的信号给报警控制电路。报警装置则是采用声、光、电等信号采取的报警措施。报警控制器经过分析探测器传来的信号,驱动报警装置,做出相应的处理。随着科学技术的进步,为对付不断升级的偷盗手段,人们研制开发了不同方式结构的防盗器。l 第一代是机械式防盗器l 第二代是电子式防盗器l 第三代是芯片式数码防盗器l 第四代是网络防盗系统采用不同原理的探测器、报警器就可以构成不同种类、不同用途、达到不同探测目的的报警探测装置。而报警控制器则相对统一,变化不大,但又处于整个报警系统的重要地位。没有报警控制器则无法对探测器的信号进行分析处理,
8、同时无法控制报警装置发出报警信号。1.2 单片机技术简介单片机简称单片微型计算机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统,使得计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最
9、早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!因为单片机的只要通过编写程序就可以可以实现高智能,高效率,以及高可靠性!单片机的应用 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹
10、。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。1.3 Keil技术简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发
11、系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil
12、即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事
13、半功倍。1. 系统概述 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用ID
14、E本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。1.4 Proteus技术简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机
15、及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器
16、。Proteus软件提供了丰富的资源(1)Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。 (2)Proteus可提供的仿真仪表资源:示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。 (3)除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影
17、响。 (4)Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。1.5 本课题的主要内容、要求及说明书安排1.5.1 主要内容、要求本课题主要在研究单片机的工作原理后,选用合适的单片机存取EEPROM存储器,设计相应的硬件电路,并配合相应的软件编程编写控制程序,最后使用Proteus仿真软件对防盗报警器的控制电路和控制程序进行仿真。工作内容:(1) 掌握一种单片机应用,如AT89S52;(2) 掌握EEPROM(24C04)的工作原理;(3) 掌握Keil程序设计软件;(4) 掌握Proteus仿真软件。工作要求:(1) 设
18、计相应的报警控制器硬件电路;(2) 编写相应的报警控制器软件程序;(3) 使用Proteus仿真软件,实现系统功能仿真;1.5.2 说明书安排本文详细介绍了防盗报警器的控制电路和控制程序的设计。共分为五章,内容安排如下:第一章:介绍了研究背景及利用到的主要技术。第二章:概括介绍了系统结构和工作原理,同时具体介绍了系统的硬件设计,详细介绍了整个系统的各个模块的电路设计、器件选型及理由。第三章:具体介绍了单片机程序的设计。第四章:具体介绍了如何利用Proteus进行系统仿真。第五章:总结了本次毕业设计取得的成果和心得2 系统结构及硬件电路设计2.1 系统的结构框图及工作原理EEPROMAT89S5
19、2最小系统电源模块显示模块键盘模块图2-1 系统结构框图本系统采用单片机AT89S52为控制核心,系统主要由四个模块:电源模块、AT89S52最小系统、EEPROM存储模块、LED和数码管显示模块构成:1、电源模块作为整个系统的各个模块提供稳定的电源。2、AT89S52最小系统作为控制系统,控制着整个系统的功能实现。3、键盘模块提供了人机交流的输入控制功能。4、显示模块由LED和数码管组成,提供了人机交流的显示功能。2.2 电源模块本系统中芯片的工作电压有5V。可以利用外部9V电池然后利用7805进行电压调整获得5V稳定电压值。7805为3 端正稳压电路,提供固定的输出电压,应用范围广。内含过
20、流、过热和过载保护电路。带散热片时,输出电流可达1A。虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。 其主要特点如下:l 输出电流可达1A l 输出电压有:5V l 过热保护 l 短路保护 l 输出晶体管SOA 保护l 其TO-220封装结构如图2-2所示 图2-2 7805封装结构图图2-3 5V电源模块图D1为电源指示灯,用以指示电源正常工作。图中C1电源滤波电容,稳定电源电压,亦为抗冲击电容,防止上电时产生的冲击电压过大而影响后续电路。C2为去耦电容,防止干扰信号返回电源影响其正常。2.3 AT89S52单片机最小系统本设计的的单片机采用Atmel公司的AT89S52。AT
21、89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断
22、结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52最小系统包括晶体振荡电路、复位开关和电源部分。电源部分有电源模块提供稳定的电压。图2-4为AT89S52的最小系统原理图。如图2-4 所示C4、C5、X1组成晶体振荡电路连接到单片机的XTAL1、XTAL2引脚上。C3、R11和按键开关组成复位电路连接到单片机的RST引脚上。图2-4
23、 AT89S52单片机最小系统2.4 键盘模块在单片机应用系统中,特别是在工业测控和智能化仪器仪表中,通常都要有人人机对话功能,他包括人对应用系统的状态干预、数据的输入以及应用系统向人报告运行状态和运行结果,这就需要配接键盘和显示器等外设。本节结束键盘的接口技术。键盘电路的设计应使CPU能识别是否有键按下以及是哪一个键按下,并将此键所代表的信息翻译成所能接收的形式,例如ASCII码或预定的其他编码。键盘按接口原理可分为全编码方式和非编码方式两种。全编码方式有硬件逻辑来提供与被按键对应的编码。非编码方式只简单地提供输入按键连接电路,其他的工作靠软件来完成,具有经济实用的特点。对于一个键盘或一组按
24、键,单片机系统利用一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无按键输入并检查是哪一个键按下,将该键号保存在某一变量中,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。按键一般是由机械触点构成的。当机械触点断开、闭合时,会有抖动,如下图2-5所示。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。所以就必须对按键进行消抖。常用的有硬件方法、软件方法两种。软件方法具有硬件设计简易、成本低等特点。图2-5 键盘抖动由上所述,考虑到本设计中按键不多,且单片机的接口较多,同时考虑简易经济性,本设计采用
25、由软件消抖的非编码方式独立键盘电路,如图2-6所示。图2-6 键盘输入模块在图2-6的电路中,按键输入都采用低电平有效,上拉电阻保证了按键断开时I/O口由确定的高电平。2.5 显示模块在单片机应用系统中,为了观察单片机的运行情况,进行人机之间的交流,通常采用显示器作为其输出设备,用于显示输入键值中间信息及运算结果等。本设计采用常用的发光二极管(LED=Light Emitting Diode)显示器,即7段数码管和LED指示灯。他们具有耗电省、线路简单、价格低廉、安装方便、耐振动等优点。我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里
26、有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。图2-7 数码管显示器外形结构及两种连接方式在本设计中采用共阴极连接方式,原理图如图2-8所示。图2-8 数码管显示器连接电路在图2-8所示的数码管显示器连接电路中,考虑到单片机的输出电流有限,所以在P0端口与数码管之间接入一个上拉电阻到+5V,确使在P0口输出高电平时,VCC与P0口同时给数码管供电,这样可以减小P0口的输出电流保护端
27、口。上拉电阻是用来限制电流的。对照图2-7所示的字段,字型码各位定义如表2-1所示。可以看出,如果要显示“7”字形,a、b、c、三个字段应点亮,所以对应的字型码为00000111B,依此类推可写出所要显示的各字形码存放在程序存储器的固定区域中,构成显示代码表。表2-1P0.0P0.1P0.2P0.3P0.4P0.5P0.6abcdefg对于系统中的指示灯,本设计采用如图2-9所示的电路。图中D2为LED指示灯,R5作为限流电阻。P1口可输出5V电压,LED导通时压降为1.7V左右,通常电流限制在10mA以下,所以R5的阻值不小于330欧姆(5-1.7)V/10mA)。在本设计中采用500欧姆。
28、图2-9 LED指示电路2.6 EEPROMEEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器,一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。在本设计中使用24C04。24C04是一个4K位串行CMOS EEPROM,内部含有512个8位字节。其内部有一个 16 字节页写缓冲器,该器件通过I2C总线接口进行操作,同时有一个专门的写保护功能。其所具有的特性如下:l 与400KHz I2C总线兼容l 1.8 到 6.0 伏工作电压范围l
29、低功耗 CMOS 技术 l 写保护功能:当WP为高电平时进入写保护状态 l 页写缓冲器 l 自定时擦写周期 l 1,000,000 编程/擦除周期 l 可保存数据 100 年 l 8 脚 DIP、SOIC或TSSOP 封装 图2-10 为24C04的管脚配置,同时在表2-2给出了各管脚简易功能描述。图2-10 24C04管脚配置表2-2 24C04管脚描述图2-11 EEPROM电路原理图如图2-11所示为本设计的EEPROM电路原理图。3 程序设计本系统的单片机程序利用Keil uVision V4.02进行程序设计,以下介绍整个系统的程序流程,具体程序参见附录。3.1 主程序流程开始变量定
30、义端口初始化无操作?NoYes数码管初始化当前状态判断报警?显示、计时Yes输入?显示、保存Yes查找?显示、保存YesNoNoNo图3-1 主程序流程图如3-1所示图所示为单片机的主程序流程图。首先进行各个模块的初始化工作,如变量定义、单片机端口和EERPOM端口初始化、显示模块初始化等。然后进入程序的主流程,判断系统的当前状态,扫描键盘输入确定状态后,执行相应的处理。3.2 键盘输入模块的程序设计本设计采用由软件消抖的非编码方式独立键盘电路,所以在进行键盘输入模块的程序设计时,需考虑两个过程:1、键盘按键的识别;2、消抖。首先在程序中定义各个键盘的输入信号管脚,如下所示。在key_inpu
31、t=0时代表输号键被按下,其他按键同此。sbit key_input=P10; /输号sbit key_find=P11;/查号sbit key_reset=P12; /复位sbit key_jingbao=P16;/警报信号然后在一个子程序中实现键盘的识别及消抖。本系统中把键盘的输入状态作为整个系统的状态,所以定义一个uchar state(void)子程序,其返回值为键盘的当前状态,其定义如下:#define state_null 0/无按键状态#define state_input 1 /输号键按下#define state_find 2 /查询键按下#define state_rese
32、t3 /复位键按下#define state_jingbao4 /报警键按下在uchar state(void)子程序中本设计利用变量keycount的条件自加来实现消抖和长短按键的识别过程。每次进入子程序时keycount清零,然后进入循环,keycount自加,同时查询按键状态:当keycount自加到N1时,表示长按,则返回状态值,退出子程序;当无按键按下时,退出按键查询循环,并判断keycount是否小于于N2,即是否为抖动,当keycount=N2时,为有效按键返回状态值。整个uchar state(void) 子程序流程如图3-2所示。开始Keycount=0按键?YesKeyco
33、unt自加返回按键值长按?返回按键值No保存按键值抖动?NoNo退出子程序YesYes图3-2 主程序流程图3.3 数码管显示模块的程序设计由上章所述,本设计利用table数组保存字形码,作为显示代码表,如下所示:uchar code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,/01234567890x3e, 0x73, 0x7c, 0x40/“U”-10,“P”-11,“b”-12,“-”-13由table数组可知,总共可以显示09、U、P、b、-共14个字符。同时在程序中编写Display(uchar data_dis
34、p)函数,data_disp为要显示的字符,程序如下:void Display(uchar data_disp)if (data_disp=13) /不在表内P0=table13;/显示“-”else /表内P0=tabledata_disp;/查表显示对于LED指示灯,本设计中采用高电平点亮的方式,利用P0.7端口控制。由此在程序中定义sbit Led =P17,当LED=0时,输出低电平,LED灯灭,当LED=1时,输出高电平,LED灯亮。3.4 EEPROM的驱动程序设计本设计中利用EEPROM(24C04)来存储报警用的电话号码,24C04支持I2C总线数据传送协议,要在单片机系统中应
35、用I2C总线的24C04做存储设备时,先要了解I2C总线的基本驱动方法,以下介绍24C04的I2C驱动程序的设计。3.4.1 24C04的I2C总线构成及其协议I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。I2C总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式。在本设计中AT89S52单片机作为主器件,24C04作为从器件。通过器件地址输入端A0、A1的不同设置,可以实现将最多4个24C04器件连接
36、到总线上。由上一章所述的电路设计,本设计中只用一个24C04,其地址为A1、A0为0、0,写保护无效。242C04管脚描述如下:SCL:串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟。SDA:双向串行数据/地址管脚,用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-OR)。A0、A1、A2:器件地址输入端,用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0 WP:写保护管脚,如果 WP 管脚连接到 Vcc,所有的内容都被写保护,只能读;当 WP 管脚连接到 Vss 或悬空,允许器件进行正常的读/写操作。I2C 总线协议定
37、义如下:1、总线空闲时,SDA、SCL为高电平,只有在总线空闲时才允许启动数据传送。2、数据传输前,总线要求有一个START(开始位)位做为数据开始的标识,它的要求是SCL为高时,SDA有一个从高到低的电平跳变动作,完成这个动作后才可以进行数据传输,时序图参看图3-3中的“开始”。3、数据传输时,总线要有一个稳定的数据状态,来保证数据为有效数据,它的要求是在SCL为高电平时,SDA必须保持电平稳定,不允许有跳变。编写单片机向总线送数据程序时则可以在SCL还在低电平时,把数据电平送到SDA,然后拉高SCL,这时SDA不应有电平跳变,延时后拉低SCL,再进行下一位的数据传送直到完成。在总线上读数据
38、时也是只有在SCL为高时,SDA为有效数据。时序参看图3-3的“保持”。4、数据传输后,总线要有一个STOP(结束位)位,来通知总线本次传输已结束,它的要求是SCL为高时,SDA有一个从低到高的电平跳变动作,正好和START位相反。时序参看图3-3的“停止”。图3-3 I2C基本信号5、I2C总线在每接收完一个字节(8个二进制位)后,在第九个时钟信号时,会在SDA上回应一个低电平的ACK应答信号,以此表明当前受控的器件已接收完一个字节,可以开始下一个字节的传送了。若未收到应答信号,由判断为受控单元出现故障。时序图可以参看图3-4。图3-4 I2C的ACK信号6、I2C总线在操作受控器件时,需要
39、先发送受控器件的器件地址,24C04也不例外,在每次命令前需要先发送一个字节的器件地址和读写标识,也可称为器件录址。图3-5是24C04的器件寻址命令中每个位所代表的意思。A1、A0位是器件地址,它是对应于芯片的A1、A0引脚。这样不难看出在同一总线可以挂4个24C04。器件地址字节中的R/W位是用于标识当前操作是读器件还是写器件,写器件时R/W位设置0,读器件时R/W位设置1。图3-5 24C04的器件寻址命令3.4.2 24C04的I2C总线基本操作24C04的I2C总线基本操作包括写入单个字节、页写入、读当前地址数据、读任意地址数据、连续读取数据等。在本设计中使用到了写入单个字节、读当前
40、地址数据、读任意地址数据、连续读取数据等操作,以下对这几个操作进行介绍。1、单字节写入写入字节指令每次只能向芯片中的一个地址写入一个字节的数据。首先发送开始位来通知芯片开始进行指令传输,然后传送设置好的器件地址字节,R/W位应置0,接着是分开传送十六位地址的高低字节,再传送要写入的数据,最后发送停止位表示本次指令结束。图3-6是写入单个字节的时序图。图3-6 24C04的单字节写入时序2、读当前地址数据这种读取模式是读取当前芯片内部的地址指针指向的数据。每次读写操作后,芯片会把最后一次操作过的地址作为当前的地址。在这里要注意的是在微处理器接收完芯片传送的数据后不必发送给低电平的ACK给芯片,直
41、接拉高SDA等待一个时钟后发送停止位。图3-7是读当前地址时序图。图3-7 24C04的读当前地址数据时序3、读任意地址数据读当前地址可以说是读的基本指令,读任意地址时只是在这个基本指令之前加一个伪操作,这个伪操作传送一个写指令,但这个写指令在地址传送完成后就要结束,这时芯片内部的地址指针指到这个地址上,再用读当前地址指令就可以读出该地址的数据。图3-8是读任意地址的时序图。图3-8 24C04的读任意地址数据时序4、连续读取连续读取操作时只要在上面二种读取方式中芯片传送完读取数据后,微处理器回应给芯片一个低电平的ACK应答,那么芯片地址指针自动加一并传送数据,直到微处理器不回应并停止操作。图
42、十二是连续读取的时序图。图3-9 24C04的读连续读取时序3.4.3 24C04的驱动子程序由上述的分析,可编写24C04的驱动子程序,首先利用_nop()定义空操作宏,作为等待延时操作。然后利用sbit定义数据和时钟引脚。最后根据时序编写子程序。具体的程序参见附录。4 Proteus仿真本系统利用是英国Labcenter electronics公司出版的EDA工具软件Proteus 7.5 SP3进行系统的仿真,来调试系统的功能完整性。本章介绍利用Proteus进行系统仿真的主要流程及操作,其余部分可参考Proteus的帮助文档。 4.1 Proteus 7.5 SP3 界面安装完Prot
43、eus后,打开Proteus软就就会出现如图4-1所示的操作界面。图4-1 Proteus操作界面图4-1中的原理图编辑窗口(The Editing Window),是用来绘制原理图的。蓝色方框内为可编辑区,元件要放到它里面。注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。其余各部分可参考有关书籍。4.2 仿真流程1、 添加元件到元件列表中本例要用到的元件有:AT89S52、7805、LED、24C04、LED等。单击如图4-2所示的“P”按钮,出现挑选元件对话框,在对话框的 KEYWORDS 中输入 AT89C52,即可得到图4-3所示结果。图4-2 Proteus的“P
44、”按钮图4-3 Proteus的器件选取然后单击 OK,关闭对话框,这时元件列表中列出 AT89S52,以同样方式即可添加所需要的器件。最终结果如图4-4所示。图4-4 Proteus中已选取的器件2、放置元件首先添加元器件:在元件列表中左键选取 AT89S52,在原理图编辑窗口中单击左键,这样 AT89S52就被放到原理图编辑窗口中了。以同样方式即可放置其他元件。然后添加“地”:左键选择模型选择工具栏中的图标,出现如图4-5所示的终端,左键选择 GROUND,并在原理图编辑窗口中左击,这样“地”就被放置到原理图编辑窗口中了。再以同样方式可添加电源VCC的仿真端口。图4-5 Proteus的终
45、端选取3、连线在Proteus中元器件的 VSS、VDD、VEE 不需连接,默认 VSS=0V、VDD=5V、VEE= -5V、GND=0V。其余电气节点,可在在需要连接的两个端点单击鼠标左键,就可连接两个电气节点。如图4-6即为连接完后的电路图。图4-6 连接后的Proteus电路图4、 添加仿真文件左键单击连好线的AT89S52,出现如图4-7所示的Edit Component界面,在 Program File 中单击出现文件浏览对话框,找到Keil程序编译完成的dianzhen.hex文件,单击确定,完成添加文件;在 Clock Frequency 中把频率改为 12MHz,单击 OK
46、退出,就完成仿真文件的添加工作,在Proteus进行仿真时,AT89S52即可以12M晶振运行dianzhen.hex里的程序。图4-7仿真文件添加界面5、 仿真单击开始仿真。电气节点上的红色代表高电平,兰色代表低电平,灰色代表不确定电平(floating)。运行时,在 Debug 菜单中可以查看AT89S52的相关资源。图4-8为仿真运行时的整体效果图。图4-8 仿真效果图5 结论本设计详细介绍了基于单片机的防盗报警器的控制电路和控制程序设计过程,研究了24C04的I2C总线协议,同时对硬件电路,软件编程,做出了详细的说明,设计并仿真出基本符合课题要求的防盗报警器的控制电路和控制程序。本文首
47、先介绍了本设计的设计要求,及所采用的器件和手段,并根据课题的实际要求提出了整体的设计方案和原理图。接着分别从硬件和软件两个方面对系统的设计做出了详细的说明,最后对仿真操作的流程作了详细介绍。在本次毕业设计中,掌握了AT89S52的结构原理和24C04的I2C总线的驱动工作原理,熟悉了Keil程序设计软件和Proteus仿真软件的使用。在整个系统的设计和调试仿真的过程中,我学到了许多课本上学不到的宝贵知识,增长了实践经验,体会到了科研工作不仅是知识的应用,更是知识不断积累的过程。它不仅需要有丰富的知识,冷静的头脑和分析能力,而且需要踏实、认真、严谨的科学态度,同时更要持之以恒的不懈精神和不断学习的进取精