




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文) 课 题 名 称 基于 at89c51 的智能温度 预警系统的设计 学 生 姓 名 学 号 系、年级专业 信息工程系 07 级通信工程 指 导 教 师 职 称 讲 师 2011 年 5 月 25 日 i 摘 要 本设计系统地介绍了基于at89c51 的智能温度预警系统的组成、设计方案、 电路原理、程序设计以及系统仿真过程。ds18b20多点温度测量系统是以 at89c51单片机作为控制核心,数字温度传感ds18b20为控制对象,运用c语 言编程实现系统的各种功能。该系统由单片机最小系统、传感器电路、报警电路、 lcd显示电路、行列式键盘电路、电源电路六大部分组成。借助prote
2、us软件, 实现了系统电路设计和仿真。它适用于电力工业、煤矿、森林、火灾、高层建筑等 场所,还可以用于环境恶劣的工业控制现场。通过ds18b20的单总线技术,系统 实现了对远程环境的温度测量与监控。 关键词:ds18b20;仿真;测量系统;proteus;单片机 ii abstract the design systematically introduced the composition, the design, the circuit theory, the program design and the system simulation process of the multipoint
3、 temperature measurement system which based on the at89c51.the at89c51 intelligence temperature measurement system, the at89c51 mcu as its control core, digital temperature sensing ds18b20 as its control target, use the c-language programming system to realize the functions. the system composed of s
4、ix major components, which are the smallest mcu system, the sensor circuit, the alarm circuits, the lcd display circuit, the keyboard, the power circuit. the system realizes the circuit design and simulation with proteus software. it applies to the power industry, coal, forest, fire, high-rise build
5、ings and other places, it can also applies to industrial control field with the bad environment. through the monobus technology of the ds18b20, the system achieves the measurement and monitoring of the long-range environmental temperature. key words: ds18b20;simulation;measurement system;proteus;mcu
6、 目 录 摘 要.i abstract .ii 第 1 章 绪 论.1 1.1 课题来源.1 1.2 课题研究的目的意义.1 1.3 国内外现状及水平.1 1.4 课题研究内容.2 第 2 章 统方案设计.3 2.1 基于模拟温度传感器的设计方案.3 2.2 基于数字温度传感器的设计方案.4 2.3 方案论证.4 第 3 章 电路设计.6 3.1 工作原理.6 3.2 ds18b20 与单片机接口技术.7 3.3 键盘电路设计.13 3.4 显示电路设计.14 3.5 报警电路设计.15 3.6 电源电路设计.16 第 4 章 程序设计.18 4.1 系统资源分配.18 4.2 系统流程设计.
7、18 4.3 程序设计.24 第 5 章 系统仿真.34 5.1 proteus 仿真环境介绍 .34 5.2 原理图绘制.35 5.3 程序加载.35 5.4 系统仿真.36 5.5 仿真结果分析.39 第 6 章 pcb 板设计 .40 6.1 pcb 板设计.40 6.2 pcb 板制作方法.42 总 结.45 参考文献.46 附 录.47 致 谢.52 邵阳学院毕业设计(论文) 1 第 1 章 绪 论 1.1 课题来源 温度是国际单位制七个基本量之一,与人类的生活环境息息相关。它是一种在 生产、科研、生活中需要测量和控制的重要物理量,同时也是一种最基本的环境参 数。在实验研究和工业生产
8、中,在机械、电力、化工、生物、冶金、农业、实验等 行业和人们的家居生活里经常需要对环境温度进行检测和控制。例如,汽车发动机 气缸的温度必须保持在一定的范围内;在合适温度微生物的新陈代谢才能正常进行。 许多化学反应在不同的温度下会生成不同的反应物;温度过高,粮仓的粮食就会霉 烂变质,电子设备的工作效率会降,低使用寿命会缩短,饭菜会变馊。由此可见, 研究温度测量工具有着极其重要的实用价值。 随着现代嵌入式技术和传感器技术的发展,作为各种信息的采集、处理、传输 的功能器件,温度传感器的作用日益突出,成为自动检测、自动控制系统和计量测 试中不可缺少的重要技术工具,其应用已遍及工农业生产和日常生活的各个
9、领域。 本课题结合现在嵌入式技术和传感技术设计的智能温度预警系统就是满足生产生活 中人们对温度测量的需求。 1.2 课题研究的目的意义 随着科学技术的高速发展,科技的进步带动了传感技术的发展,自动控制设备 的性能和性价比发生了巨大的变化,新世纪是嵌入式技术迅猛发展的时代,传感技 术也成为当今科技的主流之一,被广泛地应用于生产和生活中。基于 at89c51 的智 能温度预警系统的设计,其目的在于: (1) 掌握数字温度传感器 at89c51 单片机的工作原理、和使用方法,利用 c 语言编写单片机程序。 (2) 掌握数字温度传感器 ds18b20 的工作原理、和使用方法,利用 c51 对 系统进行
10、编程。 (3) 本课题综合了现代嵌入式技术和传感器技术专业领域方面的知识,可全 面提高学生的理论水平和动手能力。 1.3 国内外现状及水平 传感器属于信息技术的前沿尖端产品,尤其是温度传感器被广泛用于工农业生 产、科学研究和生活等领域,数量高居各种传感器之首。温度传感器的发展大致经 邵阳学院毕业设计(论文) 2 历了以下三个阶段:传统的分立式温度传感器(含敏感元件);模拟集成温度传感器; 数字温度传感器。目前,温度传感器正朝着高精度、多功能、总线标准化、高可靠 性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅 速发展,同时具有抑制串模干扰能力强、分辨力高、线性度好、成本
11、低等优点。随 着我国四个现代化和经济发展,我国在科技和生产各领域都取得了飞速的发展和进 步,发展以温度传感器为载体的温度测量技术具有重大意义。 1.4 课题研究内容 本设计研究的主要内容如下: (1)本设计以 at89c51 单片机为控制系统,来实现对温度的监测、处理等功 能。在广泛查阅温度检测控制理论和方法、测温技术和温度控制技术等资料的基础 上,根据不同的控制要求及应用领域完成对系统方案的总体设计。 (2) 在比较各元器件的特点和功能后,选择合适的元器件。 (3) 设计硬件系统。设计主要包括:温度传感器采集温度数据、单片机处理 温度数据、lcd 显示温度、键盘设置参数、报警电路等模块。 (
12、4) 设计软件系统。本以 c 语言为设计语言,用 source insight 软件编辑代码, 采用 keil 软件编译程序。 本设计的重点分为软件和硬件两个方面。其中硬件开发的难点在于各种元器件 的选择和使用。软件开发的难点在于温度传感器的时序。 邵阳学院毕业设计(论文) 3 第 2 章 统方案设计 2.1 基于模拟温度传感器的设计方案 该方案由 ad590 模拟温度传感器、运算放大器、ad 转换器、51 单片机、键盘、 液晶显示屏、集成功率放大器、报警器组成,如图 2.1 所示。 本方案采用 ad590 模拟温度传感器检测温度,传感器将测量的温度变换转换成 变化的电流,再通过模拟电路将电流
13、的变化转换成电压的变化,使用运算放大器将 信号进行适当的放大,最后通过 ad 转换器将模拟信号转换成数字信号,传送给 at89c51。at89c51 将温度值进行处理之后用液晶显示屏显示 ,有报警信号时, 信号通过集成功放放大,传给报警器。 图 2.1 基于模拟温度传感器的设计方案 本方案使用的测温元件的性能指标如下: (1)模拟温度传感器的测温范围为55+150。 (2)模拟温度传感器的电源电压范围为 4v30v,电源电压可在 4v6v 范围 变化,电流 变化 1ma,相当于温度变化 1k。模拟温度传感器可以承受 44v 正向电 压和 20v 反向电压,因而器件反接也不会被损坏。 单 片 机
14、 ad590 ad590 lcd显示电路 集 成 功 放 报 警 器 44键盘 ad590 ad590 运 算 放 大 器 多 路 选 择 器 a/d 转 换 邵阳学院毕业设计(论文) 4 (3) 输出电阻为 710mw。 (4) 精度高,模拟温度传感器共有 i、j、k、l、m 五档,其中 m 档精度最 高,在55+150范围内,非线性误差为0.3。 集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便、温度 测量范围广等优点,得到广泛应用。集成温度传感器的输出形式分为电压输出和电 流输出两种。电压输出型的灵敏度一般为 10mv/k,温度 0时输出为 0,温度 25 时输出 2.98
15、2v。电流输出型的灵敏度一般为 1ma/k。 2.2 基于数字温度传感器的设计方案 该方案以数字温度传感器 ds18b20 为温度测量元件,使用 at89c51 单片机作 为控制核心,使用 4 个 ds18b20 进行温度检测,通过 44 键盘设置正常温度的最 大值,采用 12864 液晶显示电路,使用 lm386 作为功率放大器报警电路中的喇 叭。 图 2.2 基于数字温度传感器的设计方案 本课题采用 ds18b20 数字温度传感器作为测为测温元件,它具有如下特点: (1) 测量温度范围在55c 到125c 之间。 (2) 每个 ds18b2 都有唯一的 id。 (3) 912 位分辨率可调
16、。 (4) 只要一个端口即可通信。 (5) 实际应用中不需要外部接任何元器件即可实现测温。 (6) 内部有温度上、下限告警设置。 单 片 机 ds18b20 ds18b20 lcd 显示电路 集 成 功 放 报 警 器 44键盘 ds18b20 ds18b20 邵阳学院毕业设计(论文) 5 2.3 方案论证 本设计要求测温范围为-20+80,精度为 0.5,测量的点数为 4。采用 lcd 显示,显示数据每秒刷新 1 次。 综合分析数字温度传感器和模拟温度传感器的性能指标,以上两个方案都能实 现设计的需求。 方案一采用了 ds18b20 数字温度传感器。它能在现场采集温度数据,直接将温 度物理量
17、转换为数字信号并以总线方式传送到单片机,再由单片机进行数据处理, 并且可根据实际要求通过简单的编程实现 9-12 位的数字式读取方式,因而使用数字 温度传感器可使系统结构更加简单,可靠性更高,大大提高系统的抗干扰能力。数 字温度传感器体积小、经济、使用方便灵活、测试精度高、较高的性能价格比,有 crc 校验,系统简明直观,适合于恶劣环境的现场温度测量,如: 测温类消费电子 产品、环境控制设备或过程控制等。 方案二采用 ad590 模拟温度传感器,转换结果需要经过 ad 转换器和运算放大 器。它虽然成本低,控制简单,但是后续电路复杂,而且需要进行温度标定。 ad590 集成温度传感器输出为电流,
18、且输出信号较弱,所以需要后续放大及 a/d 转 换电路。如采用普通运放则精度难以保证,而测量放大器价格较高,这样会使系统 成本升高。 方案一程序设计稍微复杂一些,使用有大量的资料可以查询,该方案完全可行, 经济上也有很大的优势,同时体现了技术的先进性。 综上所述,本设计采用方案一进行系统设计。 邵阳学院毕业设计(论文) 6 第 3 章 电路设计 3.1 工作原理 基于 at89c51 的智能温度预警系统以 at89c51 为控制芯片,以 keil 软件为系 统开发平台,用 c51 进行程序设计,以 proteus 作为仿真软件。系统主要由传感 器电路、单片机最小系统、键盘电路、液晶显示电路、报
19、警电路、电源电路组成, 系统原理图如图 3.1 所示。 图 3.1 系统原理图 ds18b20 数字温度传感器,每个 ds18b20 有自己的序列号,因此本系统可以 在一根总线上挂接了 4 个 ds18b20,通过 crc 校验,对各个 ds18b20 的 rom 进 行寻址,地址符合的 ds18b20 数字温度传感器才作出响应,接收主机的命令,向主 机发送转换的温度。采用这种寻址技术,单片机使用一个 io 口即能实现对四点环境 的温度数据进行采集,使系统硬件电路更加简单,系统更加稳定。它的输入/输出采用 数字量,以单总线技术,接收主机发送的命令,根据 ds18b20 内部的协议进行相应 的处
20、理,将转换的温度以串口发送给主机。主机按照通信协议用一个 io 口(p1.7)模 拟 ds18b20 的时序,发送命令(初始化命令、rom 命令、ram 命令)给 s1s5s9s13 s2s6s10s14 s3s7s11s15 s4s8s12s16 1 25 9 3 u2 74ls21 y 1 12m c2 30pf c3 30pf c1 10uf r2 10k +5v vss 1 vdd 2 vo 3 rs 4 r/w 5 e 6 ret 17 vee 18 leda 19 ledk 20 db0 7 db1 8 db2 9 db3 10 db4 11 db5 12 db6 13 db7 1
21、4 cs1 15 cs2 16 j1 lcm_128_64 1 2 3 4 5 6 7 8 9 rp11k r1 10k r4 10k r3 10k +5v c4 10uf +5v +5v 2 3 5 1 8 64 u1 lm386 c5 100n c6 47n ls1 8 gnd r5 10k +5 p3.4 p3.4 cs1 cs2 e rw rs rw e cs1 cs2 rs p3.2 p3.2 l0 l1 l2 l3 h0 h1 h2 h3 h0 h1 h2 h3 l0 l1 l2 l3 p2 10k r6 10 c8 220u p1 10k c7 10u vcc 1 gnd 3 d
22、q 2 u3 ds18b20 vcc 1 gnd 3 dq 2 u4 ds18b20 vcc 1 gnd 3 dq 2 u5 ds18b20 vcc 1 gnd 3 dq 2 u6 ds18b20 r7 res2 +5v p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst/vpd 9 p3.0/rxd 10 p3.1/txd 11 p3.2/into 12 p3.3/int1 13 p3.4/to 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0
23、 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 rsen 29 ale/prog 30 vpp/ea 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vdd 40 ic? at89c51 h0 h1 h2 h3 邵阳学院毕业设计(论文) 7 ds18b20,转换完成之后单片机读取温度值,在内部进行相应的数值处理,用 12864lcd 显示各点的温度。在系统启动的时候,可以通过 44 键盘设置各点温 度的上限值,当某点的实际温度超过设置值时
24、,报警器开始报警,液晶显示该传感 器的路数、设置温度值、实际温度值以及路数和该路的状态,从面实现了对各点温 度的测量和实时监控。 3.2 ds18b20 与单片机接口技术 3.2.1 ds18b20 的引脚功能 ds18b20 的引脚功能描述见表 3.1。 表 3.1ds18b20 引脚功能描述 序号名称引脚功能描述 1gnd地信号 2dq数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时, 可向电源提供电源 3vdd可选择的 vdd 引脚,当工作于寄生电源时,该引脚必须接地 3.2.2 ds18b20 与单片机接口电路 如图 3.2 所示,为单片机和 ds18b20 的接口电路。ds18
25、b20 只有三个引脚,一 个接地,一个接电源,一个数字输入输出引脚接单片机的 p1.7 口,电源与数字输入 输出脚间需要接一个 4.7k 的电阻。 图 3.2 ds18b20 与单片机接口电路 3.2.3 温度寄存器格式和温度/数据对应关系 ds18b20 温度寄存器如表 3.2 所示。寄存器有 16 位,高 5 位为符号位,低 13 位为 ds18b20 单 片 机 p1.7 vdd gnd dq 4.7k 邵阳学院毕业设计(论文) 8 数据位。当寄存器高 5 位为 1 时,表示温度为负,否则为正。 表 3.2 温度寄存器格式 bit7 bit6 bit5 bit4 bit3 bit2 bi
26、t1 bit0 ls byte b bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 ms byte 如果测得的温度大于 0,只要将测到的数值乘于 0.0625 即可得到实际温度;如 果温度小于 0,测得的数值需要取反加 1 再乘 0.0625,即可得到实际的温度值。如 表 3.3 所示,是 ds18b20 的温度与数据的对应关系。 表 3.3 温度/数据的关系 3.2.4 单片机对 ds18b20 的控制方法 ds18b20 采用严格的单总线通信协议,以保证数据的完整性。该协议定义了 几种信号类型:复位脉冲、应答脉冲、写 0、写 1、读 0 和读 1
27、。除了应答脉冲 所有 这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节为 单位,且低位在前,高位在后。 (1) 初始化序列:复位脉冲和应答脉冲 232221202-12-22-32-4 sssss262524 温度输出(2 进制)输出(16 进制) +1250000 0111 1101 000007d0h +850000 0101 0101 00000550h +20.06250000 0001 1001 00010191h +10.1250000 0000 1010 001000a2h +0.50000 0000 0000 10000008h 00000 0000 0000
28、 00000000h -0.51111 1111 1111 1000fff8h -10.1251111 1111 0101 1110ff5eh 25.06251110 1110 0110 1111ee6fh -551111 1110 1001 0000fe90h 邵阳学院毕业设计(论文) 9 在初始化过程中,主机通过拉低单总线至少 480s,以产生复位脉冲(tx)。然 后主机释放总线并进入接收(rx)模式。当总线被释放后,5k 的上拉电阻将单总线 拉高。ds18b20 检测到这个上升沿后,延时 15s60s,通过拉低总线 60s240s 产生应答脉冲。初始化脉冲如图 3.3 所示。 图 3.3
29、 ds18b20 初始化时序 ds18b20 的初始化应答 c 语言程序如下所示: bit resetpulse(void) dq=0; delay600us(); dq=1; delay60us(); return(dq); ds18b20 的初始化 c 语言程序如下所示: void ds18b20_init(void) while(1) if(!resetpulse() /收到 ds18b20 的应答信号 dq=1; delay600us();/延时 240us break; else 至少480us至少480us 主机初始化 主机初应答 presence pulse 60-240us 邵
30、阳学院毕业设计(论文) 10 resetpulse(); /否则再发复位信号 (2) ds18b20 的读写控制 在写时序期间,主机向 ds18b20 写入数据;而在读时序期间,主机读入来自 ds18b20 的数据。在每一个时序,总线只能传输一位数据。读/写时序如图 3.4 所示。 ds18b20 写时序 ds18b20 存在两种写时序:“写 1”和“写 0” 。主机在写 1 时序时向 ds18b20 图 3.4 ds18b20 读写时序 写入逻辑 1,而在写 0 时序向 ds18b20 写入逻辑 0。所有写时序至少需要 60s,且 在两次写时序之间至少需要 1s 的恢复时间。两种写时序均以主
31、机拉低总线开始。 写 1 时序:主机拉低总线后,必须在 15s 内释放总线,然后由上拉电阻将总线 拉至高电平。 写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60s) 。 在写时序开始后的 15s60s 期间,ds18b20 采样总线的状态。如果总线为高 电平,则逻辑 1 被写入 ds18b20;如果总线为低电平,则逻辑 0 被写入 ds18b20。 时序 ds18b20 只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数 主机写”0”时序 主机写”1时序 主机读”0”时序 主机读”1时序 30us15us15us15us15us30us 30us15us15us15u
32、s15us30us 邵阳学院毕业设计(论文) 11 据命令后,必须马上产生读时序,以便 ds18b20 能够传送数据。所有读时序至少 60s,且在两次独立的读时序之间至少需要 1s 的恢复时间。 每次读时序由主机发起,拉低总线至少 1s。在主机发起读时序之后, ds18b20 开始在总线上传送 1 或 0。若 ds18b20 发送 1,则保持总线为高电平;若 发送 0,则拉低总线。当传送 0 时,ds18b20 在该时序结束时释放总线,再由上拉 电阻将总线拉回空闲高电平状态。ds18b20 发出的数据在读时序下降沿起始后的 15s 内有效,因此主机必须在读时序开始后的 15s 内释放总线,并且
33、采样总线状 态。 ds18b20 写命令子程序如下: void ds18b20_writecommand(uchar command) uchar i; for(i=0;i8;i+) if(command delay60us(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); dq=1; _nop_(); _nop_(); else dq=0; 邵阳学院毕业设计(论文) 12 _nop_(); _nop_(); dq=1; delay60us(); _nop_(); _nop_(); _nop_(); _nop_(); comman
34、d=_cror_(command,1); ds18b20 读温度子程序如下: uchar ds18b20_readdata(void) uchar readdata; uchar i; for(i=0;i8;i+) dq=0; _nop_(); _nop_(); _nop_(); dq=1; if(dq=0) readdata=readdata delay60us(); else 邵阳学院毕业设计(论文) 13 readdata=readdata|0 x80; delay60us(); if(i7) readdata=_cror_(readdata,1); return readdata; d
35、s18b20 的命令序列 根据 ds18b20 的通讯协议,主机(单片机)控制 ds18b20 完成温度转换必须 经过三个步骤:每一次读写之前都要对 ds18b20 进行复位操作,复位成功后发送一 条 rom 指令,最后发送 ram 指令,这样才能对 ds18b20 进行预定的操作。 rom 命令通过每个器件 64-bit 的 rom 码,使主机指定某一特定器件(如果有 多个器件挂在总线上)与之进行通信。ds18b20 的 rom 如表 3.4 所示,每个 rom 命令都是 8 bit 长。 表 3.4 ds18b20 rom 命令 指令协议功能 读 rom33h读 ds18b20 中的编码(
36、即 64 位地址) 符合 rom55h 发出此命令后,接着发出 64 位 rom 编码,访问单总线上与该编 码相对应的 ds18b20,使之作出响应,为下一步对该 ds18b20 的读 写作准备 搜索 rom0f0h用于确定挂接在同一总线上 ds18b20 的个数和识别 64 位 rom 地 址,为操作各器件作好准备 跳过 rom0cch忽略 64 位 rom 地址,直接向 ds18b20 温度转换命令,适用于 单个 ds18b20 工作 告警搜索命令0ech执行后,只有温度超过报警值上限或下限的 ds18b20 才做出响应 温度转换44h启动 ds18b20 进行温度转换,转换时间最长为 5
37、00ms(典型为 200ms),结果丰入内部 9 字节 ram 中 读暂存器beh读内部 ram 中 9 字节的内容 写暂存器4eh发出向内部 ram 的第 3、4 字节写上、下温度数据命令,紧该温 度命令之后,传达两字节的数据 复制暂存器48h将 ram 中第 3、4 字内容复制到 e2prom 中 重调 e2prom 0b8h将 e2prom 中内容恢复到 ram 中的第 3、4 字节 读供电方式0b4h读 ds18b20 的供电模式,寄生供电时 ds18b20 发送“0” ,外部供 电时 ds18b20 发送“1” 邵阳学院毕业设计(论文) 14 3.3 键盘电路设计 3.3.1 行列式
38、键盘与单片机接口电路 根据本设计需要,本系统采用了 44 键盘实现对温度值和功能键的设定。 行列式键盘与单片机的接口电路如图 3.5 所示,h0-h3 为行线,接单片机 p2 口 的高 4 位,l0-l3 为列线,接单片机 p2 口的低 4 位。初始化时键盘行线为高电 平,列线为低电平。键盘的行线接 4 输入与门,4 输入与门的输出接单片机的 外部中断 0 引脚 p3.2 口。当有键按下时,将产生中断,在中断程序里对按键进行扫 描,得到按键的键值。 图 3.5 44 键盘结构 3.3.2 键盘面板 键盘面板如图 3.6 所示,本系统使 用的键盘有 10 数字键,5 个功能按键。 在系统启动时,
39、先按“设置”键,然 后按相应的数字键,按“左移”或者 “右移”键改变其他温度的值。按 “确认”键之后系统正式启动。系统 在运行过程之中可以通过按“重新设 置”键,对温度重新进行设置。 图 3.6 键盘面板 0213 设置 确认 右移左移 重新 设置 98 7645 邵阳学院毕业设计(论文) 15 3.4 显示电路设计 3.4.1 lcd 引脚分布及功能 (1) 12864 液晶显示屏共有 20 个引脚,其引脚名称及引脚编号的对应关系 如图 3.7 所示: 图 3.7 12864 液晶显示模块引脚分布图 (2) 引脚功能如表 3.5 所示: 表 3.5 12864 液晶显示模块引脚功能 引脚符
40、号引 脚 功 能引脚符 号引 脚 功 能 1vss电源地15cs1cs1=1 芯片选择左边 64*64 点 2vdd电源正+5v16cs2cs2=1 芯片选择右边 64*64 点 3vo液晶显示驱动电源17/rst复位(低电平有效) 4rs h:数据输入; l:指令码输入 18veelcd 驱动负电源 5 r/w h:数据读取; l:数据写入 19a背光电源(+) 6e 使能信号。 20k背光电源(-) 7-14db0-db7数据线有些型号的模块 19、20 脚为空脚 3.4.2 单片机与图形液晶的接口电路 lcd 与单片机的接口电路如图 3.8 所示: 单片机对 lcd 的控制方法将在下一章
41、中详细介绍。 3.5 报警电路设计 本系统设计中有报警器,使用 lm386 作为报警器的功率放大器,如图 3.9 所示。 lm386 是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范 围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。 1234567891011121314151617181920 vssvddvorsr/wedb0db7db6db5db4db3db2db1cs1cs2 /rstveeak 邵阳学院毕业设计(论文) 16 lm386 的输入端接单片机的引脚 p3.4,输出端接扬声器。当实际温度超过设置的温 度值时,单片机引脚输出一定频率的信号,信
42、号经过音频功放放大之后,发出报警 声。 图 3.8 lcd 与单片机的接口电路 图 3.9 lm386 功放电路 3.6 电源电路设计 电源是整个系统的能量来源,它直接关系到系统能否运行。在本系统中单片机、 液晶显示、报警等电路需要 5v 的电源,因此电路中选用稳压芯片 7805,其最大输 出电流为 1.5a,能够满足系统的要求,其电路如图 3.10 所示。 邵阳学院毕业设计(论文) 17 图 3.10 电源电路 邵阳学院毕业设计(论文) 18 第 4 章 程序设计 4.1 系统资源分配 4.1.1 系统硬件资源分配 本系统电路连接及硬件资源分配如图 4.1 所示。采用 at89c51 单片机
43、作为核心 器件,ds18b20 作为温度测量装置,通过 at89c51 的 p1.7 口将温度值送入单片机 处理,利用 12864lcd 显示器和 44 键盘作为人机接口。 图 4.1 系统硬件资源分配 4.1.2 系统软件资源分配 本系统采用了 c 语言进行程序设计,系统自动为各个变量分配内存区域。用户 可以将变量定义在 data 区、idata 区、pdata 区、xdata 区,常量定义在 code 区。用 c 语言写较复杂的程序时,要特别注意使用的内存不能超过单片机 ram。 4.2 系统流程设计 4.2.1 主程序流程设计 主程序先对系统资源进行初始化,调用 lcd 显示子程序,显示
44、启动画面。然后 进入键盘设置界面。当设置键按下后,开始设置各点的温度,设置完之后,如果确 认键按下,则系统开始工作。首先调用 ds18b20 初始化子程序,再发送 rom 命令, 读取 ds18b20 转换的温度值。当读取的温度大于设置的温度值时,报警器开始报警, lcd 显示温度的实际值、设置值、路数、状态。接下来对第二、三、四路温度进行 采集,处理,显示。 p0.0p0.7 12864lcd 显示模块 p3.4 p3.3 报警器 p3.5p3.7 3 44键盘 p2.0p2.3 p2.4p2.7 4 4 l0l3 h0h3 p3.2/int0 at89c51 p1.7 四输入与门 ds18
45、b20 p3.0p3.1 2 邵阳学院毕业设计(论文) 19 主程序流程如图 4.2 所示: 图 4.2 主程序流程 初始化 设置键按下? 设置各点温度 确认键按下? y n 读取温度值 温度值高于设置值 调用lcd显示 报警 y n 初始化命令 发送rom命令 匹配第一路 读取温度值 温度值高于设置值 调用lcd显示 报警 y n 初始化命令 发送rom命令 匹配第二路 读取温度值 温度值高于设置值 调用lcd显示 报警 y n 初始化命令 发送rom命令 匹配第三路 读取温度值 温度值高于设置值 调用lcd显示 报警 y n 初始化命令 发送rom命令 匹配第四路 开始 邵阳学院毕业设计(
46、论文) 20 4.2.2 ds18b20程序流程设计 由上一章单片机对 ds18b20 的控制方法,设计出如下程序流程: 图 4.3 写命令子程序流程图 图 4.4 ds18b20 复位子程序流程图 图 4.5 ds18b20 读温度子程序流程图 dq置1 dq置0 延时573微秒 dq置1 延时,等待ds18b20响应 dq=0? 初始化成功 返回dq 初始化不成功 yn i=8 置dq0 dq=dat p2=0xf0; it0=1; tmod=0 x01; th0=0 xff; tl0=0 xff; et0=1; pt0=1; ea=1; init_lcd(); clr_scr(); di
47、splay_ini(); delay(1500); ex0=1; out: clr_scr(); display1(); delay(1000); while(!flag2) keyinput(); flag2=0; clr_scr(); while(1) 邵阳学院毕业设计(论文) 25 if(flag4=1) flag4=0; goto out; ds18b20_init(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44); delay(250); match_rom(ds18b20_num1); ds18b20_write
48、command(0 xbe); for(i=0;inum0) flag7=1; else if(zhen_temp0num1) flag7=1; else if(zhen_temp1num2) flag7=1; else if(zhen_temp2num3) flag7=1; else flag7=0; goto next; flag5=0; next: display2(0); delay(1000); if(flag4=1) flag4=0; goto out; ds18b20_init(); ds18b20_writecommand(0 xcc); 邵阳学院毕业设计(论文) 27 ds1
49、8b20_writecommand(0 x44); delay(250); match_rom(ds18b20_num2); ds18b20_writecommand(0 xbe); for(i=0;inum4) flag7=1; else if(zhen_temp0num1) flag7=1; else if(zhen_temp1num6) flag7=1; else if(zhen_temp2num7) flag7=1; else flag7=0; goto next1; next1: clr_scr(); display2(1); delay(1000); if(flag4=1) fla
50、g4=0; goto out; ds18b20_init(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44); delay(250); match_rom(ds18b20_num3); ds18b20_writecommand(0 xbe); for(i=0;inum8) flag7=1; else if(zhen_temp0num9) flag7=1; else if(zhen_temp1num10) flag7=1; else if(zhen_temp2num11) flag7=1; else flag7=0; goto
51、next2; next2: clr_scr(); display2(2); 邵阳学院毕业设计(论文) 30 delay(1000); if(flag4=1) flag4=0; goto out; ds18b20_init(); ds18b20_writecommand(0 xcc); ds18b20_writecommand(0 x44); delay(250); match_rom(ds18b20_num4); ds18b20_writecommand(0 xbe); for(i=0;inum12) flag7=1; else if(zhen_temp0num13) flag7=1; els
52、e if(zhen_temp1num14) flag7=1; else if(zhen_temp2num15) flag7=1; else flag7=0; goto next3; next3: clr_scr(); display2(3); delay(1000); 4.3.2 子程序设计 (1)lcd 图片显示子程序 void disp_img (unsigned char code *img) unsigned char j,k; for(k=0;k8;k+) 邵阳学院毕业设计(论文) 32 left(); delay(10); write_com(page_add+k); write_
53、com(col_add+0); for(j=0;j64;j+) write_data(imgk*128+j); right(); write_com(page_add+k); write_com(col_add+0); for(j=0;j64;j+) write_data(imgk*128+64+j); (2)lcd 写 16*16 汉字子程序 void disp_chinese(unsigned char pag,unsigned char col, char code *hzk) unsigned char j=0,i=0; for(j=0;j2;j+) write_com(page_ad
54、d+pag+j); write_com(col_add+col); for(i=0;i16;i+) write_data(hzk16*j+i); (3)lcd 写 8*16 数字子程序 邵阳学院毕业设计(论文) 33 void disp_digit(unsigned char pag,unsigned char col, unsigned char code *hzk) unsigned char j=0, i=0; for(j=0;j2;j+) write_com(page_add+pag+j); write_com(col_add+col); for(i=0;inew project,在弹
55、出的对话框中输入工程的名字, 点击保存;选择 atmel 公司的 at89c51 单片机。 邵阳学院毕业设计(论文) 36 图 5.2 系统电路原理图 (2) 在 source group 1 上点击右键,选择“add files to group source group 1 ” , 把所有的源文件加进来。 (3) 点击 project-build target 或者使用快捷键 f9,编译工程。当 output windows 中提示“0 error”时,则程序编译成功,生成可执行文件 1.hex。 5.3.2 程序加载 在编辑环境中双击 at89c51,在弹出的对话框中将编译生成可执行文件
56、 1.hex 加载进芯片中,设单片机的时钟工作频率为 12mhz。 5.4 系统仿真 点击全速运行按钮,将出现如下仿真结果: (1) 系统的启动 在系统的启动过程之中,液晶将会显示邵阳学院的图标,以及邵阳学院的校训 “明德 求真 共生 超越” ,毕业设计课题等。在每副图片的切换过程之中,扬声器 都会发滴”的声音。 邵阳学院毕业设计(论文) 37 (2) 温度值的设定 系统中必须对四个不同环境的正常温度的上限值进行设定,当环境的实际温度 超过设定的这个上限值时,系统将会报警。设置温度时,先点“设置”键,然后点 击键盘上的按键输入温度值;如果温度值设置完毕,点击“确认键” ,则系统启动 成功并开始
57、对各个环境的温度进行测量。在设置过程之中可以通过“左移”或者 “右移”按键对各个温度值进行设定,如图 5.3 和图 5.4 所示。 图 5.3 设置温度界面 图 5.4 设置各个环境的温度 (3) 系统运行 系统运行之后,ds18b20 开始对环境进行测量,将环境的实际的温度显示在液晶 屏上,同时液晶显示屏还显示环境温度的路数、事先设置的温度的上限值和状态。当 实际温度值低于或者等于设置温度值时,将显示“ 正常” ,否则将显示“报警”, 图 5.5 第 1 路仿真结果 图 5.6 第 2 路仿真结果 同时报警器开始报警。在系统运行过程之中,如果需要重新对温度值进行设定,则 邵阳学院毕业设计(论
58、文) 38 点击“重新设置”按键,重新设置各个环境温度的上限值。在 proteus 仿真过程 之中,可以通过调节 ds18b20 的面板上的“”或者“” ,改变 ds18b20 测量 的实际温度。系统仿真结果如图 5.5、图 5.6 、图 5.7 、图 5.8 、图 5.9 所示。 图 5.7 第 3 路仿真结果 图 5.8 第 4 路仿真结果 图 5.9 系统仿真结果 邵阳学院毕业设计(论文) 39 5.5 仿真结果分析 系统仿真结果如表 5.1 所示: 由以上仿真结果可知,当 ds18b20 的实际温度大于设置温度时,报警器开始报 警,否则处于正常状态。温度测量范围为-55125,能够达到
59、设计的要求:- 2080。温度测量的精度为 0.0625,满足设计的要求。lcd 屏幕每秒刷新一 次,显示格式也达到了设计的要求。 表 5.1 系统仿真结果 邵阳学院毕业设计(论文) 40 第 6 章 pcb 板设计 6.1 pcb 板设计 6.1.1 pcb板面规划 在绘制电路板之前,首先要规划好 pcb 板板面,定义板框,定义板框主要包 括:定义电路板的层数、电路板的外形尺寸和形状等。本系统使用的是双面板,在 顶层和底层都要进行布线,lcd 和按键占的面积比较大,综合考虑之后,把板框定 义为 130mm120mm。 6.1.2 pcb 网络表导入 载入网络表和元件封装:执行designlo
60、ad nets命令打开载入网络表对话框, 在 netlist file 选项中,输入所要载入的网络表文件名及路径,网络表没有错误后, 按execute执行8。载入网络表后,电路板中会出现由元件封装和连接关系组成的 一些凌乱的图形散布在四周。 6.1.3 pcb 元件布局 设计 pcb 板时布局是十分重要的,合理的布局,不但能给布线工作带来方便, 而且也可以使系统更加稳定、可靠。对 pcb 板布局,首先要考虑 pcb 尺寸大小, 再确定特殊元件的位置。最后,根据电路的功能单元,对电路的全部元器件进行布 局。 在确定特殊元件的位置时应遵守以下原则: (1) 尽可能缩短高频元器件之间的连线,设法减少
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论