基于51单片机的火灾自动报警系统设计(编辑修改稿)内容摘要:

功能部件的控制;另一类用于对片外存储器或 I/O 口的控制。 STC89C52 内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片的 XTAL1 脚,输出端为 XTAL2 脚。 这两个引脚跨界石英晶体和微调电容,构成一个稳定的自激振荡器。 电路的电容 C1 和 C2通常选择 30pF。 该电容的大小会影响振荡器频率的高低,振荡器的稳定性和起振的快速性。 晶体振荡频率的范围通常是。 STC89C52 通常采用 12MHz 的石英晶体。 晶体的频率越高,系统的时钟频率越高,单片机的运行速度也就越快。 但运行速度快对存储器的速度要求就越高,对 PCB 电路板的工艺要求也就越高,即要求线间的寄生电容要小。 晶体和电容应尽可能安装得离单片机近一些以减少寄生电容,更好地保证振荡器稳定、可靠地工作。 为了提 高温度稳定性,应采用温度稳定性好的电容。 外部时钟方式使用现成的外部振荡器产生脉冲信号,通常用于多片 STC89C52单片机同时工作,以便于多片单片机之间的同步,一般为地狱 12MHz 的方波。 外部时钟源直接接到 XTAL1 端, XTAL2 端悬空。 当使用片内振荡器时, XTAL XTAL2 引脚还能为应用系统中的其他芯片提供时钟,但需要增加驱动能力 在单片机最小系统里晶振的作用是给单片机输入时钟信号,这个时钟信号就是单片机的工作速度。 单片机工作的最小时间计量单位就是由这个晶振决定的。 晶振电路电容选择的原则为: ( 1) C1, C21,因为每一种晶振都有各自的特性,所以最好按制造厂商所提供的数值选择外部元器件。 ( 2)在误差允许的区域内, C1和 C2 值都是越小,实现的功能就越精确,如果 C1和 C2 值比正常数值大时,可能会使振荡器更加稳定,可是也会增加响应的时间。 单片机执行的指令均是在 CPU 控制的时序控制电路的控制下进行的,各种时序均与时钟周期有关。 时钟周期是单片机时钟控制信号的基本时间单位。 若时钟晶体的振荡频率为fosc,则时钟周期 Tosc=1/ fosc=12MHz, Tosc=。 CPU 完成一个基本操作所需要的时间称为机器周期。 单片机中通常把执行一条指令的过程分为几个机器周期。 每个机器周期完成一个基本操作,如取指令、读或写数据等。 STC89C52单片机每 12个时钟周期为一个机器周期。 即 Tcy=12/fosc.若 fosc=12MHz, Tcy=1us STC89C52 单片机的一个机器周期包括 12 个时钟周期,分为 6 个状态, S1S6。 每个状态又分为两拍: P1和 P2。 因此,一个机器周期中的 12 个时钟周期表示为S1P S1P S2P S2P ...、 S6P2。 指令周期是执行一条指令所需的时间。 STC89C52 单片机中指令按字节来分,可分为单字节、双字节、三字节指令,因此执行一条指令的时间也有所不同。 对于简单的单字节指令,取出指令立即执行,只需要一个机器周期的时间。 而有些复杂的指令则需要两个或多个指令周期。 从指令的执行时间看,单字节和双字节指令一般为单机器周期和双机器周期,三字节指令是双机器周期,只有乘除法指令占用 4 个机器周期。 火灾探测器选择 为了尽可能做到简化硬件电路,故在本设计中采用美国 DALLAS 公司出品的温度传感器 DS18B20。 该 温度传感器是一种常用的数字温度传感器,具有体积小、硬件开销低、抗干扰能力强、精度高等优点。 由于它输出的是数字量,故在硬件电路上可省去 A/D 转换电路,大幅度降低了硬件电路的复杂程度,也降低了硬件开支。 DS18B20 接线极为方便,只需要接 VCC、 GND 以及数据线 DQ 即可。 测温范围在 55 ~+125 ,固有测温误差为 1。 独特的一线接口,使其只需要一条线即可完成与单片机的通信,简化了硬件电路的复杂程度。 且适应电压的范围较宽,为 ~,且在寄生电源的方式下可由数据线供电。 DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三条线上,实现组网多点测温。 DS18B20 在使用中不需要任何外围器件,全部的传感元件以及转换电路都集成在了传感器内部。 其可编程的分辨率为 9~12位,对应的可分辨的温度分别为 、 、 和 ,因此可实现高精度的测温。 且在 9 位分辨率时最多在 内将温度转化为数字量, 12 为分辨率时最多在 750ms 内将温度转化为数字量,因此该传感器的速度很快。 其测量结果直接输出数字温度信号,直接串行输送给 CPU,同时可传送 CRC 校验码,因此具有极强的抗干扰纠错能力。 当电源反接时,芯片不会因发热而烧毁,只是无法工作。 DS18B20 内部结构主要有 64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。 如图 所示。 其测温原理为: DS18B20 内部的晶振的温度系数很高,温度的变化将会引起晶振的振荡频率的显著变化,而产生的脉冲信号将会输入到计数器 2 中,而温度寄存器和计 数器 1 将会被预置为55℃所对应的基数值。 计数器 1 会对低温度系数所产生的脉冲信号进行减法计数,若计数器 1 的预置值被减至 0,则温度寄存器的值加 1,接下来,计数器 1的预置值将被重新装入,计数器 1 重新开始对低温度系数的晶振所产生的脉冲信号进行计数。 不停地循环,直至计数器 2 的值为 0。 图 DS18B20 内部结构图 液晶显示器选择 液晶屏选用 LCD12864。 12864 液晶是一种统称,是业界约定俗成的简称,说明屏幕是由 128 64 个点组成,该点阵型液晶屏的成本相对较低,适用于各类仪器,小型设备的显示领域。 工作温度在 20℃ ~+70℃之间,点中心距为。 引脚功能如下: 第 1 脚: VSS,电源地; 第 2 脚: VCC,电源正; 第 3 脚: V0,对比度调整; 第 4 脚: RS(CS),高电平时选择数据寄存器,低电平时选择指令寄存器 第 5 脚: R/W(SID),高电平时读数据,低电平时写数据; 第 6 脚: E(SCLD),使能端,写操作时,下降沿使能。 读操作时,高电平有效; 第 7~14 脚: DB0~DB7,三态数据线; 第 15 脚: PSB,高 电平时选择 8 位或 4 位并口方式。 低电平时选择串口方式; 第 16 脚: NC,空脚; 第 17 脚: RESET,复位端,低电平有效; 第 18 脚: VOUT, LCD 驱动电压输出端; 第 19 脚: A,背光源正端; 第 20 脚: K,背光源负端。 若是在实际应用中仅使用并口通讯模式,可将 PSB 接固定高电平。 模块内部有上电复位电路,因此在不需要经常复位的场合下可将 17 脚悬空。 如背光和模块共用一个电源,则可将 19 脚和 20 脚短接,但是如果需要调节背光亮度,则可接 1k 电位器。 硬件电路设计 将单片机的 P0 口作为 LCD1602 的数据口, 8 个 I/O 口分别与 LCD1602 的714 脚相连, P20 接 LCD1602 的第 6 脚, P21 接第 4 脚, P22 接第 5 脚。 硬件电路如图 所示 图 硬件电路 第 4 章 程序设计 程序流程图 N Y 图 程序流程图 编程语言 编程语言采用 C 语言, C语言已成为当前举世公认的高效简介、可读性强、且贴近硬件的编程语言之一。 将 C语言向单片机上移植始于上世纪 80 年代中后开始 液晶屏初始化 温度传感器初始化 设定报警温度值 测量温度值并将温度值发送给单片机 将温度值发送给 1602 显示 温度是否达到报警温度值 报警 期。 经过大量工程师们十数年的努力, C 语言终于成功地成为专业化的单片机实用高级语言。 人们通常把开发 MCS51 所使用的 C语言简称 C51。 采用 C51 编写的应用程序结构清楚、模块化程度高、可读性强、且易于移植。 应用 C51 进行软件开发,用户可以不必具体考虑寄存器、存储器的分配等工作,而把这部分工作交给编译、连接软件,用户只需了解 MCS51的存储器结构,甚至不必去了解 51的指令系统。 C51 开发环境一般都提供了数学计算等子程序,为程序开发带来方便。 虽然采用 C51 编程形成的源代码比不上有经验人员编写的汇编语言精炼,但对于相对复杂的系统开发或复杂运算,还是比用汇编语言容易得多,且易于移植及有利于系统的维护和升级。 在实时要求较高的场合,可采用 C51 汇编混合编程。 本设计我们采用的是 C51,其编译器是 Keil C51,它是德国 Keil Software公司出品的 51系列兼容单片机 C语言软件开发系统。 Keil C51 软件提供了丰富的库函数和功能强大的集成开发调试工具。 C51 语言编程方法是: uvision4(Keil C51 基于 Windows 下的开发环境 ),创建一个项目文件,并从器件数据库里选择一款 CPU 芯片; 求,在 PC上用文本编辑软件编写 C 语言源程序;利用 C51 编译工具软件对源程序进行编译,生成目标文件 (.obj 文件 );利用 C。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。