《内蒙古工业大学 单片机实训 温度检测、监测报告 刘伟》由会员分享,可在线阅读,更多相关《内蒙古工业大学 单片机实训 温度检测、监测报告 刘伟(34页珍藏版)》请在金锄头文库上搜索。
1、1 一、 题目:温度监测器(任务三) 1.设计目的 实现温度范围为 -140 +1400 采样、转换和显示,时时监测温度是否超出 预设的温度采集范围,正向和负向超出都要蜂鸣器报警并显示。 2.任务清单 首先完成硬件的测试工作,确保硬件良好; 其次完成软件程序流程图的设计和绘画工作,确定整体设计思路; 第三完成程序的编写工作,并进行纠错; 最后完成软件和硬件的合并运行和调试工作,实现设计的目的。 3.结果预设 本次设计的任务是实现温度的实时监测和显示, 并且能进行异常温度的报警 工作。实现温度范围为 -140 +1400 采样、转换和显示,实时监测温度是否超 出预设的温度采集范围,正向和负向超出
2、都要蜂鸣器报警并显示。对于采集的若 干组十二位数据进行数据处理、 数据滤波、 BCD 转码并将数据送 LED 显示等步骤。 实现实时显示、 报警功能。 如果按照预期的步骤和分工, 进行任务的设计和调试, 结果应该是乐观的、正确的,能够实现本次设计的目的。 二、 分工情况 1.分工 (1)解 任务:负责整体任务的设计、程序的编写、实验报告的编写等工作。 (2)张 任务:负责小任务的设计、程序的编写、数据的整理等工作。 (3)祁 任务:负责整体的检查、报告的检查、数据的整理等工作。 2.完成情况 (1)解:完成了所有分配的任务,而且最后总结了所有的工作。 (2)张:完成了所有分配的任务。 (3)祁
3、:完成了所有分配的任务。 2 三、 硬件检测 1.蜂鸣器自检 (1)目的 利用编程实现两种以上的声音响应,判断蜂鸣器的好坏。如果能够发出程序 中已经设定好的声音,说明蜂鸣器是好的;否则,是坏的。 (2)硬件图 图 1-1 蜂鸣器电路 将 P2.3 置低电平后,三极管导通,喇叭开始发声; 将 P2.3 置高电平后,三极管导通,喇叭停止发生。 3 (3)程序流程框图 开始 关喇叭 延时 1 开喇叭 延时 1 R1=0? 关喇叭 开喇叭 R2=0? 延时 2 延时 2 N N Y Y 图 1-2 蜂鸣器程序框图 4 (4)主程序 BEEP:MOVR1,#0FFH MOVR2,#0FFH LOOP1:
4、SETBP2.3 ACALLDELAY1 CLRP2.3 ACALLDELAY1 DJNZR1,LOOP1 LOOP2:SETB P2.3 ACALLDELAY2 CLRP2.3 ACALLDELAY2 DJNZR2,LOOP2 SJMPBEEP DELAY1:MOVR3,#0AH CXW1:MOVR4,#0AH CXW2:DJNZR4,CXW2 DJNZR3,CXW RET DELAY2:MOVR3,#05H CXW3:MOVR4,#05H CXW4:DJNZR4,CXW4 DJNZR3,CXW3 RET 结果:蜂鸣器发出了两种声音,这两种声音间歇性地鸣响,并且第一种声音 比第二种声音频率高
5、,所以更加锐利。 5 2.七段 LED 显示器自检 (1)目的 通过程序编译,检测每一个 LED 发光管是否正常。七段 LED 显示器中,a、 b、c、d、e、f、g、h 分别对应不同的编码,因此可以通过输入不同的编码,来 检测每一个二极管的好坏。如果编码对应的二极管发光,说明七段 LED 显示器 对应的二极管是好的。 (2)硬件图 COM a f b g e c a b h 138 Y 0 SEL1 1 A B C +5 V DT 1 2803 Q 1 P0 字型 P2.7 P2.6 P2.5 字位 图 2-1 七段 LED 显示器电路图 74LS138 译码器的作用是控制五盏 LED 的打
6、开与关闭,输出低电平有效, 三极管导通。当某一 LED 打开时,接下来调用字形显示子程序,并从 AT89C51 的 P0 端口送至 LED 所对应的各个发光二极管。 每个发光二极管对应一个字形编 码,该子程序的作用是依次使从 a-h 的二极管亮,检查每个发光二极管的状况。 6 (3)程序流程框图 开始 选择 DT1,显示各个码字 选择 DT2,显示各个码字 选择 DT3,显示各个码字 选择 DT3,显示各个码字 结束 选择 DT4,显示各个码字 图 2-2 七段 LED 显示器程序框图 (4)主程序 DT1:CLRP2.5 CLRP2.6 CLRP2.7 LCALLSUBNUM DT2:CLR
7、P2.5 CLRP2.6 SETBP2.7 LCALLSUBNUM DT3:CLRP2.5 7 SETBP2.6 CLRP2.7 LCALLSUBNUM DT4:CLRP2.5 SETBP2.6 SETBP2.7 LCALLSUBNUM DT5:SETBP2.5 CLRP2.6 CLRP2.7 LCALLSUBNUM LJMPDT1 SUBNUM:LCALLSEL1a LCALLDELAY LCALLSEL2b LCALLDELAY LCALLSEL3c LCALLDELAY LCALLSEL4d LCALLDELAY LCALLSEL5e LCALLDELAY LCALLSEL6f LCAL
8、LDELAY LCALLSEL7g LCALLDELAY LCALLSEL8h RET SEL1a:MOVA,#02H MOVP0,A 8 LCALLDELAY RET SEL2b:MOVA,#04H MOVP0,A LCALLDELAY RET SEL3c:MOVA,#08H MOVP0,A LCALLDELAY RET SEL4d:MOVA,#10H MOVP0,A LCALLDELAY RET SEL5e:MOVA,#20H MOVP0,A LCALLDELAY RET SEL6f:MOVA,#40H MOVP0,A LCALLDELAY RET SEL7g:MOVA,#80H MOVP
9、0,A LCALLDELAY 9 RET SEL8h:MOVA,#01H MOVP0,A LCALLDELAY RET DELAY:MOVR5,#40H CXW1:MOVR6,#40H CXW2:MOVR7,#40H CXW3:DJNZR7,CXW3 DJNZR6,CXW2 DJNZR5,CXW1 RET 每一个七段 LED 显示器都能正常显示 a、b、c、d、e、f、g、h 等八个编码 对应的字形, 说明每个显示器的每一个发光二极管都是正常的。 (DT1 只有 b、 c、 g、h 会发光) 10 3.键盘自检 (1)目的 判断 K1、K2、K3、K4 四个键的的好坏,如果按键有异常,LED
10、显示器将 不会显示正确的数字;如果没有异常,LED 显示器将显示按下键对应的数字。 (2)硬件图 图 3-1 键盘电路 (3)程序流程框图 开始采集数据 K1 键是否按下LED 显示“1” K2 是否按下 K3 是否按下 K4 是否按下 LED 显示“2” LED 显示“3” LED 显示“4” N N N N Y Y Y Y 图 3-2 键盘程序框图 11 (4)主程序 A1:MOVP0,#00H MOVP2.3,#00H LCALLSEL8 MOVP1,#0FFH MOVA,P1 LCALLSEL7 CJNEA,#0FFH,A2 SJMPA1 A2:LCALLDELAY1 CJNEA,#0
11、FFH,K1 SJMPA1 K1:JBACC.0,K2 LCALLSEL1 MOVA,#0CH MOVP0,A LCALLDELAY2 LCALLBEEP SJMPA1 K2:JBACC.1,K3 LCALLSEL1 MOVA,#0B6H MOVP0,A LCALLDELAY2 LCALLBEEP SJMPA1 K3:JBACC.2,K4 LCALLSEL1 MOVA,#9EH MOVP0,A LCALLDELAY2 12 LCALLBEEP SJMPA1 K4:JBACC.3,A3 LCALLSEL1 MOVA,#0CCH MOVP0,A LCALLDELAY2 LCALLBEEP SJMP
12、A3 A3:LJMPA1 SEL7:CLRP2.7 SETBP2.6 SETBP2.5 RET SEL8:SETBP2.7 SETBP2.6 SETBP2.5 RET SEL1:SETBP2.7 CLRP2.6 CLRP2.5 RET BEEP:CLRP2.3 LCALLDELAY3 SETBP2.3 LCALLDELAY3 RET 13 DELAY1:MOVR1,#01AH CXW1:MOVR2,#0F8H CXW2:DJNZR2,CXW2 DJNZR1,CXW1 RET DELAY2:MOVR1, #40H CXW3:MOVR2,#40H CXW4:MOVR3,#40H CXW5:DJNZ
13、R3,CXW5 DJNZR2,CXW4 DJNZR1,CXW3 RET DELAY3:MOVR6,#0FFH CXW6:MOVR7,#0F8H CXW7:DJNZR7,CXW7 DJNZR6,CXW6 RET K1 按下时,LED 显示“1” ,说明 K1 正常;K2 按下时,LED 显示“2” ,说 明 K2 正常;K3 按下时,LED 显示“3” ,说明 K3 正常;K4 按下时,LED 显示 “4” ,说明 K4 正常。 14 四、 主任务 1.目的要求 实现温度范围为 -140 +1400 采样、转换和显示,时时监测温度是否超出 预设的温度采集范围,正向和负向超出都要蜂鸣器报警并显示。
14、 要求有数据采集部分,数据处理部分,数据转换部分和数据显示部分。数据 采集部分采集到的是模拟信号, 数据处理部分要对采集到的模拟信号量进行模数 转换,转换之前还要进行滤波工作。转换完成之后,数据转换部分还要进行编码 工作,将采集到的信息转换成对应的 8421 码,然后再经过数据显示部分,送到 七段 LED 显示器显示得到采集到的模拟数据对应的温度值。 完成温度采集显示工 作。 2.硬件图 图 4-1 智能仪表线路 CPU 部分(单片用法) 15 图 4-2 智能仪表线路 A/D 与串行通信部分 图 4-3 智能仪表线路键盘与显示器部分 16 3.框图 (1)整体框图 开始 初始化数据分配 开中
15、断 采集滤波 标度转换 BCD 码转换 超出范围? LED 显示温度 报警 N Y 图 4-4 温度采集显示整体流程图 主程序要完成的工作是初始化数据分配,打开中断,如果 A/D7109 完成拟 量与数字量的转换,则向 CPU 提出申请,CPU 对其进行均值滤波、标度转换、BCD 转换、送 LED 显示。而中断子程序是 A/D7109 从完成模拟量向 12 位数字量转换 的一个子程序,当转换结束时自动向 CPU 发出中断申请。其中 A/D7109 又分为高 四位与低八位分时转换,因为与 A/D7109 连接的 CPU 的 P1 口是八位的。 17 (2)二级程序框图 关中断入栈 读取高位 出栈
16、开中断 读取低位 R1R2 初始化 溢出? 够四位? 返回 开始 取数 滤波处理 送出 完成 Y Y N N 图 4-5 中断部分流程图图 4-6 采集滤波部分流程图 开始 与 0174H 相减 正数处理负数处理 结果0 ? 送出结果 完成一次转换 取数 Y N 图 4-7 标度转换部分流程图 18 (3)ICL7109 温标变换示意图 Y X 4096 0 1400 140 -140 372 Y=0.376x-140 Y=-0.376X+140 图 4-8 标度转换示意图 注释: 由于温度监测器的功能是实现温度范围为-140 到+1400 采样、转换、显示, 而 A/D7109 模数转换完的是十六进制数,我们日常习惯的温度读取是十进制,所 以要进行标度变换。 当 X 小于 372 时进入负数处理部分它的函数为Y=-0.376X+140 最后加负号即可 当 X 大于 372 时进入正数处理部分它的函数为 Y=0.376x-140 无需符号 Y=-0.376X+140是 A/D7109 转换完的十六进制数与要显示的十进制数的关系 式。 19 4.程序 *