数字湿度检测控制装置毕业论文.doc_第1页
数字湿度检测控制装置毕业论文.doc_第2页
数字湿度检测控制装置毕业论文.doc_第3页
数字湿度检测控制装置毕业论文.doc_第4页
数字湿度检测控制装置毕业论文.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州轻工业学院 课课 程程 设设 计计 任任 务务 书书 题目题目 数字温度检测控制装置数字温度检测控制装置 专业专业 学号学号 姓名姓名 主要内容、基本要求、主要参考数据等:主要内容、基本要求、主要参考数据等: 主要内容:主要内容: 1、查阅与课题设计内容相关的科技文献数据; 2、熟悉数字温度检测控制装置的结构、功能和工作过程; 3、确定系统硬件及软件设计方案 ; 4、进行电气原理图的绘制和微控制器内部程序的编写; 5、完成课程设计说明书一份。 基本要求:基本要求: 1、设计方案符合课题要求、结构严谨、功能完善; 2、系统结构模型绘制规范、标注简约明确; 3、系统控制电气原理图绘图准确、布局合理; 4、微控制器内部程序主要功能基本调试通过; 5、课程设计说明书严格按照“课程设计报告撰写格式”书写。 主要参考数据主要参考数据 1、 单片微型计算机原理及应用 ,西安电子科技大学出版社,张毅坤 主编; 2、 单片机原理与接口技术 ,北京邮电大学出版社,马淑华等编着; 3、 现代传感器集成电路 ,人民邮电出版社,赵负图主编; 4、 单片机典型外围器件应用实例 ,人民邮电出版社,求是科技编着。 完完 成成 期期 限限: 2011 年 12 月 19 日-2012 年 1 月 9 日 指指 导导 教教 师师签签名名 : 课课程程负负责责 人人签签名名 : 数字湿度检测控制装置 i 目 录 1概述1 1.1 设计题目的意义及简介1 1.2 系统组成总体结构1 2系统硬件设计2 2.1 单片机最小系统设计2 2.1.1 单片机选择2 2.1.2 时钟电路设计2 2.1.3 复位电路设计2 2.2 温度采集电路设计2 2.2.1 ad590 温度传感器2 2.2.2 测温电路的设计 2.2.3 信号调整电路 2.3 led 显示2 2.4 键盘接口 2.5 控制电路 3系统软件设计 3.1 程序初始化 3.2 主程序 3.3 a/d 转换子程序 3.4 标度转换子程序 3.5 显示子程序 3.6 控制子程序 3.7 键盘子程序 4结论 参考文献 附录 a 系统硬件原理图 附录 b 程序清单 数字湿度检测控制装置 1 摘要 本次设计是采用单片机中的 stc89c52 和 dht11 构成的低成本的湿度 的检测控制系统。单片机 stc89c52 是一款有强大的功能、低消耗,高效 率的单片机,因此在很多领域都是用它。dht11 是一款复合型温湿度传 感器,并且含有以校准好的数字输出。 ,dht11 传感器包括一个电阻式感 湿原件和一个 ntc 测温元件,该产品具有超快响应、品质卓越、抗干扰 能力强、性价比极高等优点。本设计主要包括系统软件的设计和硬件电 路的设计。 硬件电路主要包括单片机、湿度传感器、显示模块、报警器以及控 制设备等 5 部分。其中由 dht11 温湿度传感器及 1602 字符型液晶模块构 成系统显示模块;用户根据需要预先输入预设值,当实际测量的温湿度 不符合预设的温湿度标准时,发出报警信号(蜂鸣器蜂鸣) ,动相应控制。 软件部分包括了主程序、显示子程序、测湿度子程序。 关键词:stc89c52; dht11; 湿度传感器。 数字湿度检测控制装置 2 1.概述 1.1 设计题目的意义及简介 随着生活的不断发展,人们对环境的要求也不断的提高,居住的环 境成为人们关心的话题。为了满足人们对适宜适宜环境要求,设计一种 低成本、高性能、简单、便于提醒和控制湿度的装置。人们可以根据季 节和天气的需要进行湿度的调节,使人居住在一个更加舒适的环境。此 设计不仅可以应用到家庭中,也可应用到工厂中,这样大大减少了看护 和相应的人工费用。此设计有点在于成本低,操作简单、相应快,并且 当超出人们设定值时可自动报警。 1.2 系统组成总体结构 本次的数字湿度控制器主要是由单片机系统组成,其系统组成框图 如图1-1所示。 湿度采集a/d 转换单片机 显示 反馈 信号处理 图 1-1 系统总体框图 其工作流程为湿度传感器采集湿度信号,湿度信号被信号转换器转 换成系统所能识别的电信号,采集信号被送入单片机后经过单片机的控 制进行分析整理,根据设定值进行湿度调节,再经过湿度反馈环节做进 一步调整。 数字湿度检测控制装置 3 2.系统硬件设计 2.1 单片机最小系统设计 2.1.1 单片机选择 stc89c52是一种带8k字节闪烁可编程可擦除只读存储器的低电压, 高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失 存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。 由于将多功能8位cpu和闪烁存储器组合在单个芯片中,stc的stc89c52是 一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉 的方案。stc89c52引脚如图所示 图 2-1 stc89c52 单片机引脚 数字湿度检测控制装置 4 2.1.2 时钟电路设计 单片机是在统一的脉冲信号控制下工作的。这个脉冲就是时钟电路 产生的。时钟电路选择晶振为 12mhz,两个电容选择 60pf 作为 cpu 的内 部时钟电路,其电路图如下所示: 图 2-2 由晶振构成时钟电路 2.1.3 复位电路设计 复位电路可以让单片机初始化,也可以使死机状态下的单片机重新 启动,因此非常重要。该设计采用的是按键复位和上电自动复位电路。 这样 数字湿度检测控制装置 5 图2-3 上电复位电路 使用起来比较方便,即每当 cpu 通电时,cpu 自动进行复位操作。省去 了人工操作的繁琐,当程序跑飞时,可以手动复位,按下按键后,使 reset 端产生高电平,电路设计如图 2-3(其中电阻为 1k,电容为 22uf) 2.2 温度采集电路设计 2.2.1 ad590 温度传感器 温度采集元件采用 ad590 温度传感器,ad590 是美国模拟器件公司 生产的单片集成两端感温电流源。ad590 具有线性优良、性能稳定、灵 敏度高、无需补偿、热容量小、抗干扰能力强、可远距离测温且使用方 便等优点。可广泛应用于各种冰箱、空调器、粮仓、冰库、工业仪器配 套和各种温度的测量和控制等领域。 ad590 是电流型温度传感器,通过对电流的测量可得到所需要的温 度值。其电路外形如图 2-4 所示,它采用金属壳 3 脚封装,其中 1 脚为 电源正端 v;2 脚为电流输出端 i0;3 脚为管壳,一般不用。集成温度 传感器的电路符号如图 2-5 所示。 图2-4 ad590封装形式 图2-5 集成温度传感器电路符号 ad590 的主特性参数如下: 工作电压:430v。 工作温度:55150。 正向电压:44v。 反向电压:20v。 输出电阻为 710m。 数字湿度检测控制装置 6 精度高。ad590 共有 i、j、k、l、m 五档,其中 m 档精度最高, 在-55+150范围内,非线性误差为0.3。 ad590 的工作原理:在被测温度一定时,ad590 相当于一个恒流源, 把它和 530v 的直流电源相连,并在输出端串接一个 1k 的恒值电阻, 那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有 1mvk 的电压信号。 2.2.2 测温电路的设计 在设计测温电路时,首先应将电流转换成电压。由于 ad590 为电流 输出元件,它的温度每升高 1k,电流就增加 1a。当 ad590 的电流通过 一个 10k 的电阻时,这个电阻上的压降为 10mv,即转换成 10mvk, 为了使此电阻精确,可用一个 9.6k 的电阻与一个 1k 电位器串联,然 后通过调节电位器来获得精确的 10k。图 2-6 所示是一个电流电压和 绝对摄氏温标的转换电路,其中运算放大器 a1 被接成电压跟随器形式, 以增加信号的输入阻抗。而运放 a2 的作用是把绝对温标转换成摄氏温标, 给 a2 的同相输入端输入一个恒定的电压(如 1.235v) ,然后将此电压放 大到 273v。这样,a1 与 a2 输出端之间的电压即为转换成的摄氏温标。 图2-6 绝对摄氏温标转换电路 将 ad590 放入 0的冰水混合溶液中,a1 同相输入端的电压应为 2.73v,同样使 a2 的输出电压也为 2.73v,因此 a1 与 a2 两输出端之间 的电压:2.732.730v 即对应于 0。 数字湿度检测控制装置 7 2.2.3 信号调整电路 单片机处理的信号是数字信号,因此,在送往单片机处理之前应对 该信号进行放大转换。本系统所采用的 a/d 转换器为 adc0809,由于 adc0809 的输入信号应在 05v 之间,因此,经过放大电路放大的信号进 入 a/d 转换器的电压信号应控制在 05v 之间,根据此原则可设计合适的 放大倍数。 信号调整电路主要由运算放大器 0p07 等组成。为了使温度检测电路 的输出电压能够适合于 a/d 转换器的参考电压,利用超低温漂移高精度 运算放大器 0p07 将温度电压信号进行放大到 05v 的范围之内,便于 a/d 进行转换,以提高温度采集电路的可靠性。 本设计中,信号调理电路部分由集成运放 op07 分别构成一个电压跟 随器,电压比较器和一个同相输入放大器用于对 ad590 输出的小电压信 号进行放大处理。信号调整电路如图 2-7 所示 在该放大电路中,电压跟随器起阻抗匹配的作用。反馈电阻为零时, 放大倍数为 1,电压跟随器的输入电压等于输出电压。 电压比较器用于对输出电压小信号电压进行调零,在上述电路图中 的电压比较器部分由于 r2=r4 r3=r5 可得电压比较器的输出电压 根据电压跟随器的输出电压调节电位计 r9 就改变电压 120ii uuu 2i u 比较器的输入电压。使得当温度为温度测量下限时电压比较器的输出 1 i u 电压为零。 起放大作用的是同相输入放大器 op07。其放大倍数: 7 6 1 r r a 因此放大器的输出电压 i uau* 0 adc0809 是一种 8 位逐次逼近式 a/d 转换器,其内部有一个 8 位 “三态输出锁存器”可以锁存 a/d 转换后的数字量,故它本身既可看作 一种输入设备,也可以认为是并行 i/o 接口芯片。故 adc0809 可以和微 机直接接口,本设计就是用 8051 和 adc0809 直接相连的。 at89c51 与 adc0809 的连接方法如图 2-8 所示,at89c51 通过地址线 p2.7 和写控制信号线用一个或非门联合控制启动转换信号端(start) _ wr 和地址锁存信号端(ale)。地址线 p2.7 和读控制信号线用一个或非 _ rd 数字湿度检测控制装置 8 门联合控制输出允许控制端(eoc)。低三位地址线加到 adc0809 的 adda、addb、addc 端,所以选中 adc0809 的 in0 通道的地址为 7ff8h。 转换结束信号 eoc 通过一个反相器接到 int1。 图2-8 at89c51与adc0809连接图 at89c51 和 adc0809 连接通常可以采用查询和中断两种方式。本系 统采用中断方式传送数据,eoc 线作为 cpu 的中断请求输入线。cpu 线响 应中断后,应在中断服务程序中使 oe 线变为高电平,以提取 a/d 转换后 的数字量。 对 adc0809 地址的确定:根据系统硬件连接图可知所选定模拟电压 路数为 in0,其对应的地址为 abc=000,即 p0.0、p0.1、p0.2=0 0 0;又 p2.7=0 时才能启动 adc0809 工作和使 at89c51 从 adc0809 接收 a/d 转换 电压的数字量。故确定 adc0809 其中一个地址为: 0111 1111 1111 1000b=7ff8h ,其中“_ ”表示固定量。 adc0809 的 in0 和变送器输出端线连,故 in0 上输入的 0v5v 范 123456 a b c d 654321 d c b a title numberrevisionsize b date:18-jun-2007sheet of file:c:documents and settingsadministratormy documents件件件件件件件件件件件件件件.ddbdrawn by: in-0 26 msb2-1 21 2-2 20 in-1 27 2-3 19 2-4 18 in-2 28 2-5 8 2-6 15 in-3 1 2-7 14 lsb2-8 17 in-4 2 eoc 7 in-5 3 add-a 25 in-6 4 add-b 24 add-c 23 in-7 5 ale 22 ref(-) 16 enable 9 st art 6 ref(+) 12 clock 10 u8 adc0809 d0 3 q0 2 d1 4 q1 5 d2 7 q2 6 d3 8 q3 9 d4 13 q4 12 d5 14 q5 15 d6 17 q6 16 d7 18 q7 19 oe 1 le 11 u6 74ls373 ea/vp 31 x1 19 x2 18 reset 9 rd 17 wr 16 int0 12 int1 13 t0 14 t1 15 p10 1 p11 2 p12 3 p13 4 p14 5 p15 6 p16 7 p17 8 p00 39 p01 38 p02 37 p03 36 p04 35 p05 34 p06 33 p07 32 p20 21 p21 22 p22 23 p23 24 p24 25 p25 26 p26 27 p27 28 psen 29 ale /p 30 txd 11 rxd 10 u5 at89c51 d0 d1 d2 d3 d4 d5 d6 d7 d0 d1 d2 d3 d4 d5 d6 d7 d0 d1 d2 d3 d4 d5 d6 d7 clk din clk 3 d 2 sd 4 cd 1 q 5 q 6 u7a 74ls74 clk 11 d 12 sd 10 cd 13 q 9 q 8 u7b 74ls74 vcc vcc vcc 5 6 4 u9b 74ls02 2 3 1 u9a 74ls02 8 9 10 u9c 74ls02 vcc gnd p1.2 数字湿度检测控制装置 9 围的模拟电压经 a/d 转换后可由 at89c51 通过程序从 p0 口输入到它的内 部 ram 单元。 adc0809 所需时钟信号可以由 at89c51 的 ale 信号提供。at89c51 的 ale 信号通常是每个机器周期出现两次,故它的频率是单片机时钟频率 的 1/6。本系统 at89c51 主频是 12mhz,ale 信号频率为 2mhz,使 at89c51 的 ale 上信号经过 4 分频后接到 adc0809 的 clock 输入端,就 可获得 500khz 的 a/d 转换脉冲,当然,ale 上脉冲会在 movx 指令的每 个机器周期少出现一次,但通常情况下影响不大。 为了给 oe 线分配一个地址,把 at89c51rd 和 p2.7 经或门和 oe 相连。 平时,使 oe 处于低电平封锁状态,在响应中断后,at89c51 执行中断服 务程序中如下两条指令就可以使 oe 变为高电平,从而打开三态输出锁存 器,让 cpu 提取 a/d 转换后的数字量。at89c51 执行如下程序可以启动 adc0809 工作。 mov dptr , # 7ff8h movx a , dptr; oe 变为高电平,数字量送 a 2.3 led 显示 本设计显示采用 led 串行静态显示。mcs-51 系列单片机的串行口 rxd,txd 为一个全双工串行通信口,当工作在方式 0 下可作同步移位寄 存器用,其数据由 rxd(p3.0)端串行输入或输出;而同步移位时钟由 txd(p3.1)串行输出,在同步时钟的作用下,实现由串行到并行的数据 通信。在不需要使用串行通信的场合,利用串行口加外围芯片 74ls164 就可以构成一个或多个并行输入/输出口,用于显示器 led 驱动。波特率 (每秒传输的位数)固定在 fosc/12,即当晶振为 12mhz 时,波特率为 1mbps。在 cpu 将数据写入 sbuf 寄存器后,立即启动发送。待 8 位数据 输完后,硬件将状态寄存器的 ti 位置 1,ti 必须由软件清零。单片机与 4 片串入并出移位寄存器 74ls164 相连。其中,rxd 作为 164 的数据输入, txd 作为 4 片 164 的同步时钟。程序运行时,单片机将 4 个数码管的段 码(4 个字节)连续发送出来,通过串行口送给 164。4 位字型码送完后, txd 保持高电平。此时每片 164 的并行输出口将送出保存在内部移位寄 数字湿度检测控制装置 10 存器中的 8 位的段码给数码管,令数码管稳定地显示所需的字符。 74ls164 是 8 位串入并出移位寄存器。a、b 为串行输入端, qaqh 为串行输出端,clk 为串行时钟输入端,为串行输出清零rm 端,vcc 为+5v 电源输入端,gnd 为接地端。具体输入输出关系如表 2-1 所示。x 代表任意状态;qa0、qb0qh0 代表在稳态输入条件建立 之前 qa、qbqh 的输出状态;qan、qbnqhn 代表在最近的时钟上 升沿转换之前 qa、qbqh 的输出状态;h/l、qanqbn 代表在最近 的时钟上升沿转换之后 qa、qbqh 的输出状态。 表 2-1 74ls164 输入输出关系如所示 输入输出 清除 时钟 a bqa qb qh l x x x h l x x h h h h l x h x l l l l qa0 qb0 qh0 h qan qgn l qan qgn l qan qgn 图 2-9 74ls164 引脚如图 串行显示电路属于静态显示,比动态显示亮度更大一些。由于 74ls164 在低电平输出时,允许通过的电流达 8ma,故不必添加驱动电路, 亮度也比较理想。与动态扫描相比较,无需 cpu 不停的扫描,频繁地为 显示服务,节省了 cpu 时间,软件设计也比较简单。由于本设计采用的 是共阳极数码管,所以相应的亮段必须送 0,相应的暗段必须送 1。原理 图如图 2-10 所示: 数字湿度检测控制装置 11 123456 a b c d 654321 d c b a title numberrevisionsize b date:18-jun-2007sheet of file:c:documents and settingsadministratormy documents件件件件件件件件件件件件件件.ddbdrawn by: a 1 b 2 q0 3 q1 4 q2 5 q3 6 q4 10 q5 11 q6 12 q7 13 clk 8 mr 9 u1 74ls164 rxd txd a 1 b 2 q0 3 q1 4 q2 5 q3 6 q4 10 q5 11 q6 12 q7 13 clk 8 mr 9 u2 74ls164 a 1 b 2 q0 3 q1 4 q2 5 q3 6 q4 10 q5 11 q6 12 q7 13 clk 8 mr 9 u3 74ls164 a 1 b 2 q0 3 q1 4 q2 5 q3 6 q4 10 q5 11 q6 12 q7 13 clk 8 mr 9 u4 74ls164 vcc txdtxdtxd a bf c g d e dpy 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 9 ds1 dpy_7-seg_dp a bf c g d e dpy 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 9 ds2 dpy_7-seg_dp a bf c g d e dpy 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 9 ds3 dpy_7-seg_dp a bf c g d e dpy 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 9 ds4 dpy_7-seg_dp r1 10k r2 10k r3 10k r4 10k 图 2-10 led 串行静态显示 2.4 键盘接口 键盘的工作方式选取的原则是:既要保证能及时响应按键的操作, 又不过多的占用 cpu 的工作时间。键盘的工作方式有:查询方式(编程 扫描,定时扫描方式) 、中断扫描方式。 独立式按键接口就是各按键相互独立,每个按键单独占用一根 i/o 口线,每根 i/o 口线的按键工作状态不会影响其他 i/o 口线上的工作状 态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下 了。优点就是电路配置灵活,软件结构简单;缺点就是每个按键需占用 一根 i/o 口线,在按键数量较多时,i/o 口浪费大,电路结构显得复杂。 因此,此键盘是用于按键较少或操作速度较高的场合。 本设计中由于所用键盘不多,所以采用独立连接式的查询式键盘就 能够满足设计要求。在本次设计中采用了软件扫描的方法。通过对键盘 接口 p1.0 和 p1.1 的查询判断是否有键按下。本次设计采用了软件去抖 动的方法。当有键按下时,按键的触点在闭合和断开时均会产生抖动, 这时触点的逻辑电平是不稳定的,如果不妥善处理,将会使按键命令的 错误执行和重复执行。采用软件延时的方法来避开抖动阶段,这一延时 过程一般大于 5ms。 2.5 控制电路 在本设计中,被测温度信号经采样处理后,还需要通过单片机系统 数字湿度检测控制装置 12 的 p1.2 口输出用以控制温度,控制的方式主要有模拟量控制和开关量控 制。本系统采用的是开关量控制。所谓的开关量控制就是通过控制设备 的“开”或“关”状态的时间来达到控制的目的。 由于输出设备往往需要大电压来控制,而单片机系统输出的为 ttl 电平,这种电平不能直接驱动外部设备的开启和关闭。另一方面,许多 外部设备在开关过程中会产生很强的电磁干扰信号,如果不隔离会使系 统进行错误的处理。因此在开关量的输出控制过程中要考虑到两个问题, 一要隔离;二要放大。 本设计采用继电器作为控制电路的主要器件,继电器具有一定的隔 离作用,在继电器前面加一个三极管用以放大输出信号就可以驱动继电 器的闭合和断开,从而实现弱电控制强电的效果。固态继电器和 mcs-51 系列单片机组成的控制系统, 具有抗干扰性强、编程简单、系统兼容性 好等特点。继电器一般由通电线圈和触电组成。当线圈通电时,由于磁 场作用,使开关触电闭合。当不通电时,则开关触点断开。一般线圈可 用直流低电压控制(+5v,+9v,+12v) 。 继电器的特性参数包括输入和输出参数,主要的参数为额定输入电 压、额定输出电流、浪涌电流。根据输入电压参数值大小,可确定工作 电压大小。如采用 ttl 或 cmos 等逻辑电平控制时,采用有足够带载能力 的低电平驱动,并尽可能使“0”电平低于 0.8v。本设计就是采用直流 驱动电压为+5v 的继电器。触电输出部分可以直接与市电连接。继电器 控制电路如图 2-11 所示。 数字湿度检测控制装置 13 开始 初始化温度参数 采样当前温度 当前温度和设定温度送显示缓冲 设定温度-当 前温度 继电器闭合继电器断开维持状态 读键盘 键值? 向上键向下键 设定温度减 1设定温度加 1无键按下 2-11 继电器控制电路 3.系统软件设计 本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬 件基本定型后,软件的功能也就基本定下来了。系统软件的功能又可分 为两大类:一是监控软件,它是整个控制系统的核心,专门用来协调各 执行模块和操作者的关系。二是执行软件,它是用来完成各种实质性的 功能如测量、显示等功能。本系统程序设计包括温度采集子程序、显示 子程序、标度转换资程序、键盘子程序、控制子程序。程序流程图如图 3-1 所示。 小于等于-2 大于等于 2 数字湿度检测控制装置 14 图 3-1 系统流程图 3.1 程序初始化 程序初始化部分根据系统硬件原理图及设计要求对单片机系统进行 系统资源分配、参数的设置以及定义。系统内部资源分配和参数设置如 下: a/d 端口地址(adport): 7ff8h 显示缓冲起始地址:(ledbuf): 30h 段码存储起始地址(temp): 40h 设定温值存储地址(settemp): 50h 测量温度存储地址(curtemp):51h 温度设定上限(highlimit): 80 温度设定下限(lowlimit): 25 温度测量上限(hightemp) 107 温度测量下限(loetemp) 21 初始化程序代码如下: adport equ 7ff8h ;a/d 端口地址 ledbuf equ 30h ;显示缓冲 temp equ 40h ;段码存储 up equ 1 ;增温 down equ 2 ;减温 lowlimit equ 25 ;设定值下限 highlimit equ 80 ;设定值上限 lowtemp equ 21 ;a/d 0 hightemp equ 107 ;a/d 255 settemp equ 50h ;设定温值 curtemp equ 51h ;测量温度 din bit 0b0h ;p3.0 clk bit 0b1h ;p3.1 数字湿度检测控制装置 15 org 0000h ljmp start 3.2 主程序 主程序代码如下: start: mov settemp, #20 ;初始恒温值为 20 mloop: call testkey ;测试有无键入 jnz keypressed ;更改设定值 call displayresult ;数制转换 call displayled ;显示 call readtemp ;读入温度 control: ;控制子程序 keypressed: ;键盘子程序 end 3.3 a/d 转换子程序 根据系统硬件连接图可知,在系统中将 adc0809 作为一个外部扩展 并行 i/o 口,采用线选寻址。由 p2.7 和联合控制启动转换信号端rw (atart)和 ale 端,低三位地址线架到 adc0809 和 adda,addb,addc 端,所以选中 adc0809 的 in0 通道的地址为 7ff8h。 启动 dac0809 的工作过程是:先送通道号地址到 adda,addb,addc,由 ale 信号锁存通道号地址,后让 atart 有效,启动 a/d 转换,即执行一道“movx dptr ,a”指令产生 信号,使 ale,start 有效,锁存通道号并启动 a/d 转换,a/d 转rw 换完毕后,eoc 端发出一正脉冲,申请中断。 在中断服务程序中, “mov a , dptr”指令产生信号,使 oedr 端有效,打开输出锁存器三态门,8 位数据便读入到 cpu 中。 a/d 转换子程序代码如下: 数字湿度检测控制装置 16 readad: mov dptr, #adport clr a movx dptr, a ;start a/d jnb p3.3, $ movx a, dptr ;读入结果 ret 3.4 标度转换子程序 系统温度测量范围的计算原理:根据温度标定结果选取两个温度状 态 t1 t2,模拟输出电压 v1 v2;根据 0809 的输入范围在 0 到 5 伏,即 可计算出温度极限。计算公式如下: 0 伏时对应的温度 tl:t1-(v1-0) (t2-t1)/(v2-v1) 5 伏时对应的温度 th:t1-(v1-5) (t2-t1)/(v2-v1) 根据所得结果采用在温度为 50和 60下所测量的电压输出 1.6v 和 2.2v 为计算温度测量范围的参数,根据上式可得: tl=50-(1.68-0)(50-40)/(2.26-1.68)=21 th=50-(1.68-5)(50-40)/(2.26-1.68)=107 所以 a/d 转化的极限范围为 21-107之间,而根据系统要求温度 的控制范围为 25-80之间,符合系统要求。 程序中温度的计算原理:首先用温度范围除以 0 到 256(即每个十 六进制数的温度增长率) ,然后乘以模拟转换的数字量,即得到升高的温 度,再和最低温度相加,就可以得到实际的温度值。其公式为: tl+ax(th-tl)/256 tl:显示的最低温度 th:显示的最高温度 ax:模拟电压所转换的数字量 标度转换代码如下: readtemp: call readad 数字湿度检测控制装置 17 mov b, #(hightemp-lowtemp) ;温度值计算 mul ab mov a, b ; /256 add a, #lowtemp mov curtemp, a ret 3.5 显示子程序 显示模块包括数制转换和 led 串口静态显示两部分。显示内容包括 当前温度和设定温度两个参数。在数制转换程序中将十六进制数的数据 转换为十进制数数据,各分为十位数和个位数。在编写显示程序时,先 送高位再送低位。显示模块程序流程图如图 3-2 所示 数制转换子程序代码如下: displayresult: mov a, curtemp ;实际值 mov b, #10 div ab mov dptr, #ledmap ;显示码首址 movc a, a+dptr ;取显示码 mov ledbuf, a ;存显示缓冲 mov a, b movc a, a+dptr mov ledbuf+1, a mov a, settemp ;设定的恒温值 mov b, #10 div ab mov ledbuf+2, a mov a, b mov ledbuf+3, a ret 数字湿度检测控制装置 18 n 地址指针设置 取段码 段码左移一位 输出一位段码 输出一个移位脉冲 n 开 始 取段码结束 取段码结束 y y 显示子程序代码如下: displayled: ;显示子程序 mov r0,#ledbuf ;置存储区首地址 mov r1,#temp ;置缓冲区首地址 mov r2,#4 ;制段码字节数 dp10: mov dptr, #ledmap ;表头地址 mov a,r0 movc a,a+dptr ;查表指令 mov r1,a inc r0 inc r1 djnz r2 , dp10 mov r0,#temp ;段码地址指针 mov r1,#4 ;段码字节数 dp12: mov r2,#8 ;输出子程序 mov a,r0 ;取段码 dp13: rlc a ;段码左移图 mov din,c ;输出一位段码 clr clk ;输出移位脉冲 setb clk djnz r2,dp13 inc r0 djnz r1,dp12 图 3-2 显示流程 ret 3.6 控制子程序 本设计采用 p1.2 作为输出控制口。当设定温度比当前温度高 2以 数字湿度检测控制装置 19 上时,p1.2 置 1,使其输出高电平,用以驱动继电器,使继电器闭合, 保温箱开始加热。当设定温度比当前温度低 2以下时,p1.2 置零,使 继电器断开,保温箱停止加热。 control: mov a, curtemp ;实际温度 clr c mov b, settemp ;设定的恒温值 dec b dec b subb a, b ;实际值-(恒温值-2) jnc gn2 ;判断实际值是否比恒温值低 2 setb p1.2 ;是,开始加热 sjmp gn4 gn2: mov a,curtemp setb c mov b, settemp inc b inc b subb a, b jc gn4 ;判断实际值是否比恒温值高 2 clr p1.2 ;是,停止加热 sjmp gn4 gn4: call delay1 sjmp mloop delay1: ;延时子程序 1 mov r4, #0ffh aa1: 数字湿度检测控制装置 20 mov r5, #0ffh aa: nop nop djnz r5, aa djnz r4, aa1 ret 3.7 键盘子程序 按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是 不稳定的,如不妥善处理,将会使按键命令的错误执行或重复执行。在 这里采用软件延时的方法来避开抖动阶段,这一延时程序一般大于 5ms。在第一次检测到有键按下时,执行一段延时子程序后,再确认电 平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键 按下,进行相应处理工作,消除了抖动的影响。这种消除抖动影响的软 件措施是切实可行的。 键盘子程序程序代码如下: testkey: ;测试有无键入子程序 mov p1, #03h ;读键盘情况 mov a, p1 ret keypressed: call getkey mov b, a xrl a, #down jnz key0 ;判断是否减小键 mov a, settemp xrl a, #lowlimit jz key1 ;判断是否低于下限值 dec settemp 数字湿度检测控制装置 21 sjmp key1 key0: mov a, b xrl a, #up jnz key1 ;判断是否增加键 mov a, settemp xrl a, #highlimit jz key1 ;判断是否高于上限值 inc settemp key1: sjmp mloop keytable: ;键码定义 db 0eeh, 0deh, 0beh, 07eh db 0edh, 0ddh, 0bdh, 07dh db 0ebh, 0dbh, 0bbh, 07bh db 0e7h, 0d7h, 0b7h, 077h getkey: ;取键值 mov r6,#10 acall delay mov a,p1 anl a,#03h ;高六位不用 cjne a,#03h,k01 ;确有键按下 ljmp mloop k01: mov r3,#2 ;2 个键 mov r2,#0 ;键码 mov b,a ;暂存键值 mov dptr,#keytable k02: 数字湿度检测控制装置 22 mov a , r2 movc a , a+dptr ;从键值表中取键值 cjne a , b, k04 ;键值比较 mov a , r2 ;得键码 inc a ret k04: inc r2 ;不相等,到继续访问键值表 djnz r3 , k02 mov a , #0ffh ;键值不在键值中,即多键同时按下 ljmp mloop delay: ;延时子程序 mov r7 , #0 delayloop: djnz r7 , delayloop djnz r6 ,delay ret delay1: ;延时子程序 1 mov r4, #0ffh aa1: mov r5, #0ffh aa: nop nop djnz r5 , aa djnz r4 , aa1 ret 数字湿度检测控制装置 23 4.结论 本设计本着方便、实用性、易于扩展的指导思想,采用at89c51为 中央处理器加上各种外围电路构成了整个单片机控制系统。在设计中运 用温度传感器采集温度,通过转换、处理与设定值进行比较,得到控制 信号用以控制保温箱的温度,实现了保温箱温度显示和控制功能。本次 设计的具体步骤如下: 1、系统整体设计,根据设计要求,选择合理可行的设计总体方案, 实现系统功能。 2、元件选择,根据需求分析选择电子元器件,以达到设计的目的。 3、硬件设计,用protel软件画好电路原理图,生成pcb板图,制作 成电路板。 4、软件设计,画好程序流程图,设计主程序和子程序。 5、焊接电路板,把电子元件焊接到做好的电路板上,对电路进行检 查。 6、在仿真器上对系统进行软、硬件调试,修改错误或改进缺陷,找 出硬件错误。 7、对整个系统进行联合调试,使系统达到本次设计的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论