




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 一、引言1 二、总体方案设计2 2.1 方案设计分析 2 2.1.1 方案一 2 2.1.2 方案二2 2.2 方案论证选择 2 三、系统硬件电路设计3 3.1 系统原理框图 3 3.2 主控制器 3 3.2.1 AT89S51 简介 3 3.2.2 AT89S51 的特点 4 3.2.3 管脚说明 4 3.2 显示报警电路 6 3.3 测温电路 7 3.3.1DS18B20 温度传感器的性能特点 .7 3.3.2 DS18B20 温度传感器的内部结构 8 3.3.3 DS18B20 的测温原理 9 3.4.4 DS18B20 与单片机的接口电路 .10 3.4 时钟电路 .10 3.5 键盘模块 .11 四、系统软件设计.12 4.1 系统软件算法分析 .12 4.2 读出温度子程序 .13 4.3 温度转换命令子程序 .13 4.4 计算温度子程序 .13 4.5 显示数据刷新子程序.14 五、调试及性能分析.14 5.1 测试环境.14 5.2 测试方法.14 5.3 测试结果.14 5.4 测试结果分析.14 六、总结.15 参考文献.16 附录一:使用说明.17 附录二:源程序.18 附录三:系统原理图.28 附录四:系统 PCB 图.29 附录五:元件清单.30 桂林航天工业高等专科学校毕业设计(论文) 1 一、引言 随着人们生活水平的不断提高,智能控制无疑是人们追求的目标之一,它所 给人带来的方便也是不可否定的,在现代工业自动化生产 和日常生活中 ,要 用各种传感器来监视和控制 各个参数,使设备工作在正常状态或最佳状态 。 在基础更学科研究中,传感器 具有突出的地位。现代科学技术的发展, 进入了许多新领域:例如在宏观上要观察上千光年的茫茫宇宙,微观上要观 察小到 cm 的粒子世界,纵向上要观察长达数十万年的天体演化,短到s 的 瞬间反应。此外,还出现了对深化物质认识、开拓新能源、新材料等具有重 要作用的各种极端技术研究,如超高温、超低温、超高压、超高真空、超强 磁场、超弱磁 场等等。显然,要获取大量人类感官无法直接获取的信息,没 有相适应的传感器是不可能的。许多基础科学研究的障碍,首先就在于对象 信息的获取存在困难,而一些新机理和高灵敏度的检测传感器的出现,往往 会导致该领域内的突破。一些传感器的发展,往往是一些边缘学科开发的先 驱。传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资 源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。 由此 可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显 的。 传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因 此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器 经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有 通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和 信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一 方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、 提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型 传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其发展 速度之快,以及其应用之广,并且还有很大潜力。 为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其 用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机 结合传感器技术而开发设计了这一温度控制系统。文中传感器理论单片机实际 应用有机结合,详细地讲述了利用 DS18B20 温度传感器探测环境温度的过程。 本设计所采用的 DS18B20 数字温度计与传统的温度计相比,具有读数方便,测 温范围广,测温准确,成本低廉,可应用于一般工农业生产和楼宇智能控制中的 温度检测、控制。 桂林航天工业高等专科学校毕业设计(论文) 2 二、总体方案设计 2.1 方案设计分析 2.1.1 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应, 在将随被测温度变化的电压或电流采集过来,进行 A/D 转换后,就可以用单片 机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需 要用到 A/D 转换电路,感温电路比较麻烦。 2.1.2 方案二 使用温度传感器,通过单片机进行智能控制,所以可以采用一只温度传感 器 DS18B20,此传感器可以很容易直接读取被测温度值,进行转换,就可以满 足设计要求;并且成本低,易推广实际应用。 2.2 方案论证选择 传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电 压,再转换成对应的温度,需要比较多的外部硬件支持。起缺点如下: 硬件电路复杂; 软件调试复杂; 制作成本高。 本数字温度计设计采用美国 DALLAS 半导体公司继 DS1820 之后推出的一种 改进型智能温度传感器 DS18B20 作为检测元件,温度范围在-55125,最高 分辨率可达 0.0625。可直接读出被测温度值,而且采用三线制与单片机相连, 大大减少了外部的硬件电路,具有低成本和易使用的特点。按照系统设计功能 的要求,确定系统由三个模块组成:主控制器、测温电路、键盘模块、显示报 警电路。 桂林航天工业高等专科学校毕业设计(论文) 3 三、系统硬件电路设计 3.1 系统原理框图 根据方案二的论述,本设计的原理框图如图 1 所示。 主 控 制 器 显示模块 报警电路 键盘模块 测温电路 时钟电路 电源电路 图 1 系统框图 3.2 主控制器 主控制器用单片机 AT89S51,其引脚图如图 2 所示。它具有低电压供电、体 积小、易于编程、具有四个 I/O 口等特点很适合便携手持式产品的设计使用, 系统可采用四节 1.5V 干电池供电。 3.2.1 AT89S51 简介 AT89S51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP 可 反复擦写 1000 次的 Flash 只读程序存储器,器件采用 ATMEL 公司的高密度、非 易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集 成了通用 8 位中央处理器和 ISP Flash 存储单元,功能强大的微型计算机的 AT89S51 可为许多嵌入式控制应用系统提供高性价比的解决方案。 图 2 AT89S51 引脚图 桂林航天工业高等专科学校毕业设计(论文) 4 3.2.2 AT89S51 的特点 AT89S51 有 40 个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随 机存取数据存储器(RAM) ,32 个外部双向输入/输出(I/O)口,5 个中断优先 级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看 门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51 设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模式。 空闲模式下,CPU 暂停工作,而 RAM 定时计数器,串行口,外中断系统可继续 工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外中断 激活或硬件复位。同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式,以 适应不同产品的需求。 其主要特性为: 8031 CPU 与 MCS-51 兼容 4K 字节可编程 FLASH 存储器(寿命:1000 写/擦循环) 全静态工作:0Hz-24KHz 三级程序存储器保密锁定 128*8 位内部 RAM 32 条可编程 I/O 线 两个 16 位定时器/计数器 6 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 3.2.3 管脚说明 VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。 当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据 存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原 码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接 收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且 桂林航天工业高等专科学校毕业设计(论文) 5 作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由 于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器 进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉 优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器 的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。 作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的 缘故。 P3.0 RXD(串行输入口) P3.4 T0(记时器 0 外部输入) P3.1 TXD(串行输出口) P3.5 T1(记时器 1 外部输入) P3.2 /INT0(外部中断 0) P3.6 /WR(外部数据存储器写选通) P3.3 /INT1(外部中断 1) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 I/O 口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际 上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算 或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部 总线上面图中的两个三角形表示的就是输入缓冲器 CPU 将根据不同的指令分别 发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们 操心 1 然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对 端口置 1 端口锁存器原来的状态有可能为 0Q 端为 0Q为 1 加到场效应管栅极的 信号为 1 该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为 1 也 会因端口的低阻抗而使信号变低使得外加的 1 信号读入后不一定是 1 若先执行 置 1 操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读 入由于在输入操作时还必须附加一个准备动作所以这类 I/O 口被称为准双向口 89C51 的 P0/P1/P2/P3 口作为输入时都是准双向口接下来让我们再看另一个问 题从图中可以看出这四个端口还有一个差别除了 P1 口外 P0P2P3 口都还有其他 的功能 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电 平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址 的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端 以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用 作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存 储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。 此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略 桂林航天工业高等专科学校毕业设计(论文) 6 微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信 号将不出现。 /EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H- FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此 引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3.2 显示报警电路 显示电路采用 3 位 LED 数码管,从 P0 口输出段码,P2 口的 P2.5、P2.6、P2.7 输出位码,分别显示温度值的个位、十位和上下限标志位。 位驱动用 8550。报警器采用蜂鸣器成本低由 8550 驱动,电路简单。显示报警 电路如图 5、图 6 所示。 图 5 显示电路 图 6 报警电路 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示 出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态 式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每 一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制译 码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5840 根 I/O 端口来驱动, 而 89S51 单片机可用的 I/O 端口才 32 个,实际应用时必须增加译码驱动器进行 驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显 示方式之一,动态驱动是将所有数码管的 8 个显示笔划“a,b,c,d,e,f,g,dp“的 同名端连在一起,另外为每个数码管的公共极 COM 增加位选通控制电路,位选 桂林航天工业高等专科学校毕业设计(论文) 7 通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相 同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显 示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中, 每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉 效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人 的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示 是一样的,能够节省大量的 I/O 端口,而且功耗更低。 3.3 测温电路 测温电路由 DS18B20 温度传感器与单片机三线制直接连接,1 脚接地,3 脚 接电源,2 脚信号端串联 4.7K 电阻再接单片机的 P2.2 脚。电路如图 7 所示。 图 7 测温电路 3.3.1DS18B20 温度传感器的性能特点 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能 温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并 且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。DS18B20 的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个 DS18B20 可以并联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压范围为 3.05.5V; 零待机功耗; 温度以 9 或 12 位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常 工作; 桂林航天工业高等专科学校毕业设计(论文) 8 DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其内部结构框图如图 8 所 示。 3.3.2 DS18B20 温度传感器的内部结构 图 8 DS18B20 内部结构 64 位 ROM 的结构开始 8 位是产品类型的编号,接着是每个器件的惟一的序 号,共有 48 位,最后 8 位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可 以采用一线进行通信的原因。温度报警触发器 TH 和 TL,可通过软件写入户报 警上下限。 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性 的可电擦除的 EERAM。高速暂存 RAM 的结构为 8 字节的存储器,结构如图 3 所 示。头 2 个字节包含测得的温度信息,第 3 和第字节 TH 和 TL 的拷贝,是易 失的,每次上电复位时被刷新。第 5 个字节,为配置寄存器,它的内容用于确 定温度值的数字转换分辨率。DS18B20 工作时寄存器中的分辨率转换为相应精 度的温度数值。该字节各位的定义如图 3 所示。低 5 位一直为 1,TM 是工作模 式位,用于设置 DS18B20 在工作模式还是在测试模式,DS18B20 出厂时该位被 设置为 0,用户要去改动,R1 和 R0 决定温度转换的精度位数,来设置分辨率。 表 1 DS18B20 温度转换时间表 C 64 位 ROM 和 单 线 接 口 高 速 缓 存 存储器控制逻 辑 温度传感器 高温触发器 TH 低温触发器 TL 配置寄存器 8 位 CRC 发生器 VDD 桂林航天工业高等专科学校毕业设计(论文) 9 R0R1 0 0 0 1 0 1 1 1 9 10 11 12 分辨率/位 温度最大转向时间/ms 93.75 187.5 375 750 . . 由表 1 可见,DS18B20 温度转换的时间比较长,而且分辨率越高,所需要的 温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存 RAM 的第 6、7、8 字节保留未用,表现为全逻辑 1。第 9 字节读出 前面所有 8 字节的 CRC 码,可用来检验数据,从而保证通信数据的正确性。 当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值 就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第 1、2 字节。 单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格 式以 0.0625LSB 形式表示。当符号位 S0 时,表示测得的温度值为正值, 可以直接将二进制位转换为十进制;当符号位 S1 时,表示测得的温度值为负 值,要先将补码变成原码,再计算十进制数值。表 2 是一部分温度值对应的二 进制温度数据。 DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、TL 字节内容 作比较。若 TTH 或 TTL,则将该器件内的报警标志位置位,并对主机发出 的报警搜索命令作出响应。因此,可用多只 DS18B20 同时测量温度并进行报警 搜索。 在 64 位 ROM 的最高有效字节中存储有循环冗余检验码(CRC) 。主机 ROM 的 前 56 位来计算 CRC 值,并和存入 DS18B20 的 CRC 值作比较,以判断主机收到的 ROM 数据是否正确。 3.3.3 DS18B20 的测温原理 DS18B20 中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频 率的脉冲信号送给减法计数器 1;高温度系数晶振随温度变化其振荡频率明显 改变,所产生的信号作为减法计数器 2 的脉冲输入。器件中还有一个计数门, 当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲进行计数进 而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前, 首先将55所对应的一个基数分别置入减法计数器 1、温度寄存器中,计数 器 1 和温度寄存器被预置在55所对应的一个基数值。 减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计 数器 1 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置将重 新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数, 桂林航天工业高等专科学校毕业设计(论文) 10 如此循环直到减法计数器计数到 0 时,停止温度寄存器的累加,此时温度寄存 器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数 器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 表 2 部分温度对应值表 温度/二进制表示十六进制表示 +1250000 0111 1101 0000 07D0H +850000 0101 0101 0000 0550H +25.06250000 0001 1001 0000 0191H +10.1250000 0000 1010 0001 00A2H +0.50000 0000 0000 0010 0008H 00000 0000 0000 1000 0000H -0.51111 1111 1111 0000 FFF8H -10.1251111 1111 0101 1110 FF5EH -25.06251111 1110 0110 1111 FE6FH -551111 1100 1001 0000 FC90H 另外,由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念, 因此读写时序很重要。系统对 DS18B20 的各种操作按协议进行。操作协议为: 初使化 DS18B20(发复位脉冲)发 ROM 功能命令发存储器操作命令处理 数据。 3.4.4 DS18B20 与单片机的接口电路 DS18B20 可以采用两种方式供电,一种是采用电源供电方式,此时 DS18B20 的 1 脚接地,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如图 4 所示单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够 的电流,可用一个 MOSFET 管来完成对总线的上拉。DS18B20 处于写存储器操作 和温度 A/D 转换操作时,总线上必须有强的上拉,上拉开启时间最大为 10us。 采用寄生电源供电方式时 VDD 端接地。由于单线制只有一根线,因此发送接口 必须是三态的。 3.4 时钟电路 时钟电路采用 12M 一个晶振,它频率稳定度高,为单片机提供基准时钟信 号。 桂林航天工业高等专科学校毕业设计(论文) 11 在单片机的 XTAL1 脚和 XTAL2 脚之间并接一个晶体振荡器就构成了内部振荡方 式。AT89S51 单片机内部有一个高增益的反相放大器,XTAL1 为内部反相放大器 的输入端,XTAL2 为内部反相放大器的输出端,在其两端接上晶振后,就构成 了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振 的固有频率。在实际应用中通常还需要在晶振的两端和地之间各并上一个小电 容 C1、C2。电容器 C1、C2 常称为微调电容,其作用有三个:快速起振、稳定 振荡频率、微调振荡频率。AT89S51 单片机允许外接 033MHz 的晶振,电容器 C1、C2 可取 5pF33pF。一般情况下,使用频率较低的晶振时,C1、C2 的容量 可选大一点,因此本设计 C1、C2 采用 33P。为了减少寄生电容,更好地保证振 荡器稳定可靠地工作,在实际装配电路时,晶振 X 和电容 C1、C2 应尽可能地安 装在 XTAL1、XTAL2 引脚附近。内部振荡方式所得到时钟信号比较稳定,在实际 电路中,一般是选用内部振荡方式。如图 9 所示。 图 9 时钟电路 3.5 键盘模块 根据设计要求,该系统键盘操作简单,因此采用独立式键盘控制,能达到 设计要求,如图所 10 示。 图 10 键盘控制电路 键盘电路结构有独立式键盘和矩阵式键盘等。独立式按键就是各按键相互 独立,每个按键单独占用一根 I/O 口线,每根 I/O 口线的按键工作状态不会影 响其他 I/O 口线上的工作状态。因此,通过检测输入线的电平状态可以很容易 判断哪个按键被按下了。 优点:电路配置灵活,软件结构简单。 缺点:每个按键需占用一根 I/O 口线,在按键数量较多时,I/O 口浪费 大,电路结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。 桂林航天工业高等专科学校毕业设计(论文) 12 矩阵式键盘适用于按键数量较多的场合,由行线和列线组成,按键位于行列的 交叉点上。节省 I/O 口。而矩阵键盘分行线和列线,行线通过上拉电阻接到+5V 上。无按键,行线处于高电平状态,有键按下,行线电平状态将由与此行线相 连的列线电平决定。列线电平为低,则行线电平为低;列线电平为高,则行线 电平为高。在单片机应用系统中,为简化硬件线路,缩小整个系统的规模,总 希望设置最少的按键,获得最多的控制功能。 矩阵键盘与独立式按键键盘相比,硬件电路大大节省。可通过软件的方法 让一键具有多功能。方法:选择一个 RAM 工作单元,对某一个按键进行按键计 数,根据不同计数值,转到子程序。这种计数多功能键最好与显示器结合用, 以便知道当前计数值,同时配合一个启动键。 复合键是使用软件实现一键多功能的另一个途径。所谓复合键,就是两个 或两个以上的键的联合,当这些键同时按下时,才能执行相应的功能程序。实 际情况做不到“同时按下” ,他们的时间差别可以长到 50ms,解决策略是:定 义一个或两个引导键,这些引导键按下时没什么意义,执行空操作。引导键的 例子:微机键盘上的 CTRL、SHIFT、ALT。缺点:一是操作变得复杂,二是操作 时间变长。多功能键的利用,应具体情况具体分析。要求速度的场合最好做一 键一功能。如果系统功能很多,一键一功能不现实,可采取一键多功能。 四、系统软件设计 4.1 系统软件算法分析 系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算 温度子程序,显示数据刷新子程序等。 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量的 当前温度值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度, 以保证温度的实时测量。其程序流程见图 11 所示。 初始化 调用显示子程序 1S 到? 初次上电 读出温度值温度 计算处理显示数 据刷新 发温度转换开始命令 N Y N Y Y 发 DS18B20 复位命令 发跳过 ROM 命令 发读取温度命令 读取操作,CRC 校验 9 字节完? CRC 校验正? 确? 移入温度暂存器 结束 N N Y 桂林航天工业高等专科学校毕业设计(论文) 13 发 DS18B20 复位命 令 发跳过 ROM 命令 发温度转换开始命令 结束 图 11 主程序流程图 图 12 读温度流程图 4.2 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如图 12 示。 4.3 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转 换时间约为 750ms,在本程序设计中采用 1s 显示程序延时法等待转换的完成。 温度转换命令子程序流程图如上图,图 13 所示: 图 13 温度转换流程图 4.4 计算温度子程序 计算温度子程序将 RAM 中读取值判断此温度值是否在 0 度以下,若是就置 “-”标志,若为正就置“+”标志位,然后计算小数位波纹度 BCD 值,再进行 BCD 码的数值转换运算,并进行温度值正负的判定,其程序流程图如图 14 所示。 开始 温度零下? 温度值取补码置“”标志 计算小数位温度 BCD 值 计算整数位温度 BCD 值 结束 置“+”标 志 N Y 温度数据移入显示寄存器 十位数 0? 百位数 0? 十位数显示符号百 位数不显示 百位数显示数据 (不显示符号) 结束 N N Y Y 桂林航天工业高等专科学校毕业设计(论文) 14 图 14 计算温度流程图 图 15 显示数据刷新流程图 4.5 显示数据刷新子程序 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当 最高显示位为 0 时将符号显示位移入下一位。程序流程图如图 15。 五、调试及性能分析 5.1 测试环境 环境温度:28 摄氏度 测试仪器:温度计 0-100 摄氏度 5.2 测试方法 (1)为系统接上 5V 直流工作电源。 (2)用温度计同时测量不同的水温度,记录温度计和本系统相应的显示值, 得出系统的温度指标。 (3)在预设温度情况下,调节水温,观察当显示水温值低于预设水温时, 本设计是否产生报警 。 (4)在预设温度情况下,调节水温,观察当显示水温值高于预设水温时, 本设计是否产生报警 。 5.3 测试结果 测试结果见表 3: 桂林航天工业高等专科学校毕业设计(论文) 15 表 3 与标准温度计测量值比较表 温度计示值() 10.325.249.770.185.5 数字温度输出() 1025507086 预设上限温度值()2828283030 预设下限温度值()7570708080 有无报警信号输出有有无无有 5.4 测试结果分析 经过上述步骤测试本设计,温控报警电路的输出与温度计值基本上相等, 误差0.5度。当实际水温超出系统预设水温范围时,系统蜂鸣器产生报警; 由于该型 DS18B20 是塑料封装,所以对温度的感应灵敏度不是相当高,需要一 定时间才能显示出实际温度。 六、总结 本次毕业设计题目是数字温度计,我主要负责程序设计,这使我对单片机 程序设计有了更深的认识,提高了动手实践能力,分析问题的能力和创新能力, 为以后从事这方面的工作打好了基础,这也是这次毕业设计的最大收获。首先, 通过设计题目的要求初步构思程序框图,然后根据设计要求绘出各子程序流程 图,接着进行程序编写、仿真。在程序软件仿真过程中我们遇到了多问题,我 们根据程序流程图,模块化地先进行子程序仿真,待子程序都调试通过后,在 整合在一起结合硬件进行仿真调试。在整个毕业设计过程中,我们互相讨论, 互相帮助,从方案选择论证,我们都团结一致,进行详细的分析论证,然后设 计电路原理图,由于本次设计采用DS18B20做测温元件,单片机进行控制处理, 因此在外围电路设计上没有遇到多大困难。经过三天的时间硬件电路板完成。 在进行软硬件调试时LED显示下限标志位为“7” ,其他显示正常,报警正常。因 此初步判断为程序调用的字段编码出现问题,经过更改后上电调试问题依旧没 有解决。再次查找程序发现是现实程序调用时出现错误,修改程序代码如下: 桂林航天工业高等专科学校毕业设计(论文) 16 原代码: MOV 38H,#0CH;设置温度下限时高位显示 L TAB: DB 0C0H 0F9H 0A4H 0B0H 99H 92H DB 82H 0F8H 80H 90H 0C7H 89H 改后代码: MOV 38H,#0BH;设置温度下限时高位显示 L MOV A,38H MOVC A,A+DPTR TAB: DB 0C0H 0F9H 0A4H 0B0H 99H 92H DB 82H 0F8H 80H 90H 0C7H 89H 经测试,本设计的测温范围小,为 0125,灵敏度不是很高,精度为 0.5; 优点是成本低,体积小易携带,并且具有上下限温度超范围报警。本系统适用 于测量误差允许在 0.5以上的气温、水温等,即可应用于上述要求类的工农 业生产中的温度检测及控制。 通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了 理论联系实际的含义,并且检验了大学三年的学习成果。虽然在这次设计中有 的地方对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继 续努力、不断完善。这三个月的设计是对过去所学知识的系统提高和扩充的过 程,为今后的发展打下了良好的基础。 参考文献 1曹巧媛主编.单片机原理及应用(第二版).北京:电子工业出版社,2002 2全国大学生电子设计竞赛组委会编.第五届全国大学生电子设计竞赛获奖作 品选编(2001),北京:北京理工大学出版社,2003 3何力民编,单片机高级教程.北京:北京航空大学出版社,2000 4金发庆等编.传感器技术与应用.北京机械工业出版社,2002 桂林航天工业高等专科学校毕业设计(论文) 17 附录一:使用说明 使用说明如下: 本电路额定工作直流电压为+5V,有极性判别保护功能,采用 7805 集成稳 压芯片以保证电路的供电稳定,用户输入电源在 7-12V 均可正常工作。 S1 为设置温度上下限设置状态进入按键,第一次按下进入低限设置,按下 S4 后,再次按下 S1 进入高限设置。 LED 上下限标志位显示:L S2 为设置温度上下限的+键,每按下一次上下限值加一 S3 为设置温度上下限的-键,每按下一次上下限值减一 S4 为温度上下限设置状态的退出或确定按键 使用方法及报警电路说明: 接通电源,红色指示灯亮,表明电源正常。此时数码管应显示初值 025,由于 显示时间稍短,一闪即过。接下来显示当前温度,若不显示则说明硬件有问题, 此时蜂鸣器将报警,绿色指示灯也会点亮。硬件正常,LED 就会显示当前温度。 桂林航天工业高等专科学校毕业设计(论文) 18 若此时检测到当前环境温度不在原来设定的上下限范围之内,蜂鸣器也将报警 同是绿灯点亮。直到采取措施改变环境温度在上下限范围内或调整温度上下限 蜂鸣器响,表示低温,开始加热。 附录二:源程序 代码如下: TEMPUTER EQU 29H;温度存储单元 TEMPH EQU 27H;温度上限标志位 TEMPL EQU 26H;温度下限标志位 SIGN EQU 5BH;按键 S1 按下次数标志位,为 1 时设置下限,为 2 时设置上 限 S1 BIT P1.0;定义 S1 按键为温度上下限进入按键 S2 BIT P1.1;定义 S2 按键为温度上下限加一按键 S3 BIT P1.2;定义 S3 按键为温度上下限减一按键 S4 BIT P1.3;定义 S4 按键为温度上下限退出按键 ORG 0000H LJMP MAIN ORG 0030H 桂林航天工业高等专科学校毕业设计(论文) 19 ;*; ; 初始化程序 ;*; MAIN: MOV SP,#60H MOV 26H,#25; 温度下限初值 MOV 27H,#99; 温度上限初值 MOV SIGN,#00H MOV 37H,#2 MOV 36H,#5 MOV 38H,#0; 上电复位后显示初值 LCALL DISPLAY ;*; ; 主程序 ;*; MAIN0: JB S1,NET1; S1 按下则顺序执行,否则跳转 LCALL D12MS; 消抖动 JB S1,NET1; 再次判断 S1 是否按下 JNB S1,$; 等待 S1 抬起 INC SIGN; S1 标志位加 1 MOV A,SIGN CJNE A,#1,TIAO; S1 标志位与 1 比较,不等则跳 转 LCALL TIAOTL TIAO: CJNE A,#2,NET1; S1 标志位与 2 比较,不等则跳 转 MOV SIGN,#0; S1 标志位置 0 LCALL DISPLAY LCALL TIAOTH ;温度比较子程序; NET1: MOV A,TEMPUTER CLR C SUBB A,TEMPH JNC BJ; 当测试温度高于上限时报警 MOV A,TEMPUTER CLR C SUBB A,TEMPL 桂林航天工业高等专科学校毕业设计(论文) 20 JC BJ; 当测试温度低于下限时报警 LCALL GET_TEMPER LJMP MAIN0 ;*; ; 报警子程序 ;*; BJ: CLR P2.1 LCALL DISPLAY LCALL D12MS LCALL DISPLAY LCALL D12MS LCALL DISPLAY LCALL D12MS LCALL GET_TEMPER LJMP MAIN0 ;*; ; 温度总子程序程序 ;*; GET_TEMPER: SETB P2.0 LCALL INIT_18B20 JB 20H.1,TSS2; 检测 DS18B20 是否再线 RET TSS2:SETB P2.1 MOV A,#0CCH; 跳过 ROM 匹配 LCALL WRITE_18B20 MOV A,#44H; 发出温度转换命令 LCALL WRITE_18B20 LCALL INIT_18B20 MOV A,#0CCH; 跳过 ROM 匹配 LCALL WRITE_18B20 MOV A,#0BEH; 发出读取温度命令 LCALL WRITE_18B20 LCALL READ_18B20 RET ;*; ; DS18B20 温度初始化程序 桂林航天工业高等专科学校毕业设计(论文) 21 ;*; INIT_18B20:SETB P2.0 NOP NOP CLR P2.0 MOV R1,#03H TSR1: MOV R0,#6BH DJNZ R0,$ DJNZ R1,TSR1; 发置位脉冲持续 600us 左右 SETB P2.0; 释放总线 P1.0 口改为输入口 NOP NOP NOP MOV R0,#25H NOP NOP NOP NOP TSR2: JNB P2.0,TSR3; 没变低,说明没准备好,需重来 DJNZ R0,TSR2; DS18B20 等待 64us LJMP TSR4 TSR3: SETB 20H.1; 不存在则置标志位 LJMP TSR5; 不存在则重来 TSR4: CLR 20H.1; 存在则清标志位 LJMP TSR7 TSR5: MOV R0,#6BH; 重装初值 MOV R1,#03H TSR6: DJNZ R0,TSR6 MOV R0,#6BH DJNZ R1,TSR6 TSR7: SETB P2.0 LCALL DISPLAY RET ;*; ; 写 18B20 子程序 ;*; 桂林航天工业高等专科学校毕业设计(论文) 22 WRITE_18B20:MOV R2,#8; 设置写位个数 CLR C WR1: CLR P2.0; 写开始 NOP NOP NOP NOP RRC A; A 中内容移入 C 中 MOV P2.0,C; C 内容到总线 MOV R3,#35; 设置时间常数 DJNZ R3,$; 保持整个写过程持续 60us SETB P2.0 NOP DJNZ R2,WR1; 8 位完否,没完则返回 SETB P2.0 LCALL DISPLAY RET ;*; ; 读取温度子程序 ;*; READ_18B20:MOV R4,#2 MOV R1,#36H RE00: MOV R2,#8 RE01: CLR C SETB P2.0 NOP NOP CLR P2.0 NOP NOP NOP SETB P2.0 NOP NOP MOV C,P2.0; 主机按位读入 DS18B20 的数据 MOV R3,#35 桂林航天工业高等专科学校毕业设计(论文) 23 RE20: DJNZ R3,RE20; 保证读数据过程持续 60us RRC A; 数据送入 A DJNZ R2,RE01; 读完整个转换值 MOV R1,A; A 中数据送数据缓冲区 DEC R1 DJNZ R4,RE00; 两字节数据读完否 L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学后勤管理处维护稳定应急工作预案8篇
- 早期妊娠妇女的护理68课件
- 二零二五年度写字楼买卖合同保证书标准文本
- 二零二五年度创业投资风险补偿合同规范
- 二零二五年旅游景区经营权返租服务管理合同
- 2025版家电行业跨界合作项目合同范本
- 2025版电子商务平台劳动合同与消费者权益保护合同
- 二零二五年度大学生活动中心学生宿舍区智能服务系统采购合同
- 2025版高新技术产业垫资借款合同范本
- 国际结算(第三版)-课件 第8-11章 审核信用证项下的单据 -国际结算中的风险与防范
- 2024-2025年第二学期学校国际交流合作计划
- 美国对全球加征关税
- 造口皮炎护理个案分享
- 海铁联运集装箱码头共享堆场堆存模板设计研究
- 农业新质生产力:助力乡村振兴
- 2025年下半年吉林省松原市前郭县事业单位招聘高校毕业生带编入伍19人历年自考难、易点模拟试卷(共500题附带答案详解)
- 青光眼中医护理查房
- 第二十章女性生殖内分泌疾病71课件
- 检修工安全培训
- 《外墙外保温工程技术标准》(JGJ 144-2019)
- 做账实操-工业企业的账务处理
评论
0/150
提交评论