毕业设计.docx

上传人:牧羊曲112 文档编号:3607465 上传时间:2023-03-14 格式:DOCX 页数:38 大小:54.14KB
返回 下载 相关 举报
毕业设计.docx_第1页
第1页 / 共38页
毕业设计.docx_第2页
第2页 / 共38页
毕业设计.docx_第3页
第3页 / 共38页
毕业设计.docx_第4页
第4页 / 共38页
毕业设计.docx_第5页
第5页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《毕业设计.docx》由会员分享,可在线阅读,更多相关《毕业设计.docx(38页珍藏版)》请在三一办公上搜索。

1、毕业设计编号 河南机电高等专科学校 毕业设计 此处为论文题目,黑体2号字 系 部: 专 业: 班 级: 姓 名: 学 号: 指导老师: 二零一五年五月I ABSTRACT 摘 要 随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。本课题以AT89C51单片机系统为核心,能对多点的温度进行实时巡检。DS18B20是一种可组

2、网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。 关键词:温度测量;单总线;数字温度传感器;单片机 II 目录 目 录 第1章 绪论 . 错误!未定义书签。 1.1 二级标题 . 错误!未定义书签。 1.1.1 三级标题 . 错误!未定义书签。 第2章 字体字号与页面设置 . 错误!未定义书签。 2.1 字体字号 . 错误!未定义书签。 2.1.1 科学技术 . 错误!未定义书签。 2.2 页面设置 . 错误

3、!未定义书签。 第3章 图与公式的格式要求 . 错误!未定义书签。 3.1 图 . 错误!未定义书签。 3.1.1 图及图题标注范例 . 错误!未定义书签。 3.1.2 公式及其标注范例 . 错误!未定义书签。 第4章 表的格式要求 . 错误!未定义书签。 4.1 表的格式 . 错误!未定义书签。 4.1.1 表范例 . 错误!未定义书签。 4.2 表的内容 . 错误!未定义书签。 4.3 XXX . 错误!未定义书签。 第5章 结论与展望 . 错误!未定义书签。 5.1 结论 . 错误!未定义书签。 5.2 不足之处及未来展望 . 错误!未定义书签。 参考文献 . 错误!未定义书签。 致 谢

4、 . 错误!未定义书签。 附录A XX . 错误!未定义书签。 附录B XX . 错误!未定义书签。 目录格式说明 目录行间距采用固定值22磅 一级标题如:第1章 绪论 采用宋体四号字体不加粗 二级标题如:1.1 二级标题 采用宋体小四号字体不加粗 三级标题如:1.1.1 三级标题 采用宋体五号字体不加粗 III 毕业设计题目 整体方案 本设计运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用 RS-232串行通讯标准,通过上位机控制下位机进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实

5、时显示当前各点的温度值,对各点进行控制。 下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。 系统框图如下: 上位机 下位机 传感器模块 显示模块 控制模块 下位机AT89C51 传感器模块 显示模块 控制模块 1 河南机电高等专科学校毕业论文 2硬件电路设计 2.

6、1 温度传感器 2.1.1温度传感器DS18B20 DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器。全部传感元件及转换电路集成在形如一只三极管的集成电路内。与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。其可以分别9375ms和750ms内完成9位和12位的数字量,最大分辨率为00625 , 而且从DS18B20读出或写入DS18B20的信息仅需要一根口线(单线接口)读写。 DS18B20的性能特点 单线数字化智能集成温度的传感器,其特点是: DSI8B20可将被测温度直接转换成计算机能识别的数字信号输出,

7、温度值不需要经电桥电路先获取电压模拟量,再经信号放大和AD转换成数字信号,解决了传统温度传感器存在的因参数不一致性,在更换传感器时会因放大器零漂而必须对电路进行重新调试的问题,使用方便 DS18B20能提供9到12位温度读数,精度高,且其信息传输只需1根信号线,与计算机接口十分简便,读写及温度变换的功率来自于数据线而不需额外的电源 每一个DS18B20都有一个惟一的序列号,这就允许多个DS18B20连接到同一总线上尤其适合于多点温度检测系统 负压特性:当电源极性接反时,DS18B20虽然不能正常工作,但不会因发热而烧毁 正是由于具有以上特点,DS18B20在解决各种误差、可靠性和实现系统优化等

8、方面与传统各种温度传感器相比,有无可比拟的优越性,因而广泛应用于过程控制、环境控制、建筑物、机器设备中的温度检测。 DS18B20与单片机的典型接口设计 DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。DSl8B20与单片机的硬件连接有两种方法:一是Vcc接外部电源,GND接地,I/0与单片机的I/0线相连;二是用寄生电源供电,此时UDD和GND接地,I/0接单片机I/0。无论是哪种供电方式,I/0口线都要接4.7k Q左右的上拉电阻。图4给出了DSl8B20与微处理器的典型连接。 DS18B20寄生电源供电方式: 在寄生电源供电方式下,DS18B20从单线信号

9、线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源充电。 2 毕业论文题目 独特的寄生电源方式有三个好处:进行远距离测温时,无需本地电源;可以在没有常规电源的条件下读取ROM;电路更加简洁,仅用一根I/O口实现测温。 要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。 因此,该电路只适应于单一温

10、度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。 DS18B20寄生电源强上拉供电方式: 为了使DS18B20在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10S内把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。 DS18B20的外部电源供电方式:

11、在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,其VDD端用35.5V电源供电,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。 DS18B20 的内部结构: 它主要包括寄生电源、温度传感器、64 位激光ROM 单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH 和TL 触发器存储与控制逻辑、8 位循环冗余校验码(CRC)发生器等七部分。64位光刻

12、ROM 的排列是:开始8位是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。光刻R0M 的作用是使每一个DS18B20都各不相同,这可实现一根总线上挂接多个DS18B20的目的。暂存存储器包含了8个连续字节,前2个字节是测得的温度信息,第1个字节的内容是温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是TH、TL的易失性拷贝,第5个字节是结构寄存器的易失性拷贝,这3个字节的内容在每一次上电复位时被刷新。第6、7、8个字节用于内部计算。第9个字节是冗余检验字节 DS18B20 的测温原理: DS1820测温原理如下图所示。图中低温度系数晶

13、振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。 高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温3 河南机电高等专科学校毕业论文 度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,DS1 8B20测量温度原理停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 在正常测温情况下,DS18B20 的测温分辨力为0.5

14、,可采用下述方法获得高分辨率的温度测量结果:首先用DS18B20 提供的读暂存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分TZ,然后再用BEH 指令取计数器1 的计数剩余值CS 和每度计数值CD。考虑到DS18B20测量温度的整数部分以0.25、0.75为进位界限的关系,实际温度TS 可用下式计算:TS=(TZ0.25) (CDCS)/CD 警告信号: DS18B20 完成温度转换后,就把测得的温度值与TH、TL 作比较。若TTH 或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只

15、DS18B20 同时测量温度并进行告警搜索。一旦某测温点越限,主机利用告警搜索命令即可识别正在告警的器件,并读出其序号,而不必考虑非告警器件。 CRC 的产生: 在64 位ROM 的最高有效字节中存有循环冗余校验码(CRC)。主机根据ROM 的前56 位来计算CRC 值,并和存入DS18B20 中的CRC 值作比较,以判断主机收到的ROM 数据是否正确。CRC 的函数表达式为:CRC=XXX1。此外,DS18B20 尚需依上式为暂存器中的数据来产生一个8位CRC 送给主机,以确保暂存器数据传送无误。在本课题中采用四个数字式温度传感器DS18B20与单片机89C51连接如下图: 温度传感器的连接

16、 (7) DS1820使用中注意事项 DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: 较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。 8544 毕业论文题目 在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计

17、时要加以注意。 连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 2.2单片机系统设计 复位电路:无论哪种单片机,都会涉及到复位电路。如果复位电路不可靠,在工作中就有可能出现“死机”,“程序走飞”等现象。所以,一个单片机复位电路的好坏,直接影响到整个系统工作的

18、可靠性。复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当89c51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作,如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。复位操作通常有上电和开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。常用的上电复位且开关复位电路如图3.6所示,上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上

19、电且开关复位的操作。单片机的复位操作使单片机进入初始化过程,其中包括是程序计数器PC=0000H,P0-P3=FFH,SP=07H,其他寄存器处于零,程序从0000H地址单元开始执行,单片机复位后不改变片内RAM区中的内容。 图2.2 复位电路 5 河南机电高等专科学校毕业论文 时钟电路:89c51单片机的时钟信号通常用内部振荡和外部振荡方式。在引脚XTAL1和XTAX2外接晶体振荡器,就够成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡器方式如下。如图3.7,电容器C1、C2起稳

20、定振荡频率、快速起振的作用,电容值一般为5-30PF。内部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适于用于用来使单片机的时钟与外部信号保持一致。 图2.3 时钟电路 串口:串行通信是CPU与外界交换的一种基本方式。单片机运用于数据采集或工业控制时,往往作为前端机安装在工作现场,远离主机,现场数据采用串行通信方式主机并进行处理,以降低通信成本,提高通信可靠性。51系列单片机自身有全双工的异步通信接口,通过软件编程,它可以作为通用异步接受和发送器使用,也可作为同步移位寄存器。 89C51单片机串口主要由两个数据缓冲寄存器SBUF和一个输入移位寄存器组成,

21、其内部还有一个串行控制寄存器SCON和一个波特率发生器。接受缓冲器与发送缓冲器占用同一个地址99H,其名称亦同样为SBUF。CPU写SBUF,一方面修改发送寄存器,同时启动数据串行发送;读SBUF,就是读接受寄存器,完成数据的接受。特殊功能寄存器SCON用以存放串行口的控制和状态信息。根据对其写的控制字决定工作方式,从而决定波特率发生器的时钟是来自系统时钟还是来自定时器T1。特殊功能寄存器PCON的最高位SMOD为串行口波特率的倍增控制位。 89C51单片机的串行口正是通过对上述专用寄存器的设置,检测与读取来管理串行通信。在进行通信时,外界的串行数据是通过引脚RXD输入的。输入数据先逐位进入输

22、入移位寄存器,在送入接受SBUF。在此采用了双缓冲结构,为了避免在接受到第二帧数据之前,CPU未及时响应接受器的前一帧的中断请求而把前一帧数据读走,造成两帧数据重叠的错误。对于发送器,因为发送时CPU是主动的,不会产生写重叠问题,不需要双缓冲器结构,为了保持最大传送速率,仅用了SBUF一个缓冲器。 I/O口:计算机对外设进行数据操作时,外设的数据是不能直接连到CPU的数据线上的,必须经过接口。这是由于CPU的数据线是外设或存储器和CPU进行数据传输的唯一公共通道,为了使数据线的使用对象不产生使用总线的冲突,以及协调快速的CPU和慢速的外设,CPU和外设之间必须有接口电路,接口起着缓冲、锁存数据

23、、地址译码、信息格式转换、传递状态、发布命令等功能,I/O接口有并行接口、串行接口、定时/计数器、A/D、D/A等,根据外设的不同情况的应用要求,6 毕业论文题目 选择不同的接口。单片机的I0 口一般是双向的 既可以做输入 也可以做输出。以5 1系列为例,其P0、P 1、P2、P3均为双向口,且可位操作。 89c51单片机内部有P0、P1、P2、P3四个8位双向I/O口,外设可直接连接于这几个接口上,而无须另加接口芯片。P0-P3的每个端口可以按字节输入或输出,也可以按位进行输入或输出,共32根口线,用作控制十分方便。P0口为三态双向口,能带8个TTL电路。P1、P2、P3口为准双向口,负载能

24、力为4个TTL电路,如果外设需要的驱动电流大,可加接驱动器。 图2.4 单片机电路 2.3显示电路设计 本课题要将传感器的温度信号和键盘输入的控制信号都显示出来,利用单片机89C51传输控制信号。本课题要用到MAXIM 公司生产的MAX7219串行LED驱动显示器,此显示器具有接口简单占用资源少、控制灵活方便、LED级联扩展便利的优点。MAX7219是串行输出共阴极显示驱动芯片,每片可驱动8个LED,具有级联功能可控制更多的LED。MAX7219为24引脚芯片,除与LED显示相连的线外,与微控制器只需3根连线相接:芯片端管脚分别为CLK.DINLOAD,其中CLK为时钟输入端,DIN为数据输入

25、端,LOAD为锁存信号。MAX7219的工作时序为:时钟的上升沿MAX7219把DIN引脚数据移入内部移位寄存器,在时钟下降沿MAX7219把数据移向DOUT端, 7 河南机电高等专科学校毕业论文 而LOAD的上升沿则锁存最后移入的16位串行数据。对MAX7219的控制操作很方便,其片内具有8个位寄存器和6个控制寄存器位寄存器对应LED的具体内容,控制寄存器决定LED的工作方式。控制寄存器分别为:不工作方式寄存器、译码方式寄存器、亮度控制寄存器。 MAX7219是在脉冲控制下工作的,因此其抗干扰就更为重要。一般在其电源和地之间接一十几pf的电容。另外,当MAX72l9和其他串行芯片共用I/O引

26、脚时,最好在其外边加一上拉电阻。P1口内部有上拉电阻,如不在其外部接上拉电阻,有时出现驱动能力不足的现象。 要用MAX7219控制多于8个的LED时,可以将多个MAX7219级联使用。各芯片的CLK和LOAD端并接在一起。上一级MAX7219的DOUT端接下一级的D 端。级联显示时,如欲控制次级的MAX7219,只需向前几级的MAX7219的不工作方式寄存器送空操作数:本级则送欲显示的数据。另外,需注意,LOAD信号只需执行一次清O和置位,分别在整个过程的始末。即:级联调用WrTwoByte程序时,应将程序里的LOAD清O和置位语句屏蔽掉。只在级联显示的开始和最后分别将LOAD置O和1。具体连

27、接如下图: 图2.5 显示电路 2.4键盘电路设计 键盘一般采用行列扫描方式来设计。行列扫描是指:把键盘按键排列成n行m列的nm行列点阵,使用软件或硬件的方法对其行、列分别进行扫描,从而判断是否有键按下,并获得扫描码。当无键按下时,行线与列线断开,所有列线均为高电平。当有一个键按下时,则与此键对应的行线与列线接通。如此行线为低电平,则此列线也为低电平。为确定是否有键按下,CPU先通过并行输出口使所有的行线为低电平,然后通过并行输入口读入列信号,若为全“1”,则没有键按下,若有一个为“0”,则表示有一个键已按下。若有一个为“0”,则表示有一个键已8 毕业论文题目 按下。为消去按下时的抖动现象,程

28、序延迟20ms后再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,若有一个为“0”,则按下的键在此行;若为全“1”,则按下的键不在此行,再将下一行置为低电平,并测试列信号。 如果在最后一行也为低电平时仍未找到按下的键,则认为刚才有键按下的情况为误动作。对找到的键,进行分析并处理。当按键时间较为短促时,系统判断不到有键按下。经测试,按键在按下或释放时,通常伴随着几ms到十几ms的触点抖动,然后才能稳定下来。在触点抖动期间检测按键的通断状态,会导致一次按键或释放被错误地认为是多次操作。所以,当检测到有键按下或释放时,应通过软件延时20 ms左右,避开触点抖动的影响。去抖时间既不能太短也

29、不能太长:如果时间太短,无法起到去抖作用;如果时间太长,超过了键按下的持续时间,则会判不到按键。软件去抖时间不宜太短也不宜太长,定为20ms 。本设计使用行列扫描方式,其电路原理图如下图所示。 图2.6 键盘电路 本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片机会根据键码执行相应的程序,使整个系统的功能更加完善。 2.5报警电路设计 为了实现多点温度检测报警系统,本课题采用AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不在设定的范围内,给出报警信

30、号。系统总体硬件电路如图: 9 河南机电高等专科学校毕业论文 图2.7 报警电路 2.6通信模块设计 如前所述,本文采用MAX232作为PC机与单片机的串行通信接口芯片。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图: 图2.8 通信模块电路 10 毕业论文题目 3.软件设计 3.1系统主程序流程图 图3.1 系统主程序流程图 系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:单片机接受传感器的温度信号,并通过MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示

31、出来,若温度不在范围内则发出报警。 11 河南机电高等专科学校毕业论文 3.2传感器程序设计 DS18B20在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。所有时序均以主机为Master,单总线器件为Slave,每次数据的传输均从主机启动写时序开始,如果要求单总线器件回送数据,则在写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 DS18B20的复位时序 unsigned char ow_reset(void) unsigned char presence; DQ = 0; / 将 DQ 线拉低 de

32、lay(36); / 保持 DQ = 1; / DQ返回高电平 delay(5); / 等待存在脉冲 presence = DQ; / 获得存在信号 delay(30); / 等待时间隙结束 return(presence); / 返回存在信号,0 = 器件存在, 1 = 无器件 DS18B20的读时序 DS18B20的读时序分读0时序和读1时序两个过程。读时序是主机先把单总线拉低,在之后的l5ms内必须释放单总线,以便将数据传输到单总线上。DS18B20完成一个读时序至少需要60s。 unsigned char read_bit(void) unsigned char i; DQ = 0;

33、/将DQ 拉低开始读时间隙 _nop_; _nop_; DQ = 1; / then return high for (i=0; i3; i+); / 延时15s return(DQ); / 返回 DQ 线上的电平值 unsigned char read_byte(void) unsigned char i; unsigned char value = 0; for (i=0;i8;i+) / 读取字节,每次读取一个字节 if(read_bit) value |= 0x01i;/ 然后将其左移 delay(8); 12 毕业论文题目 return(value); DS18B20的写时序 DS1

34、8B20的写时序也分为写0时序和写1时序两个过程。写0时序和写1时序的要求不同,写0时,单总线要被拉低至少60ms,保证DS18B20能够在15-45ms之间正确采样I/O总线上的“0”电平。写1时,单总线被拉低,在之后的15ms内必须释放单总线。 void write_bit(char bitval) DQ = 0; / 将DQ 拉低开始写时间隙 _nop_; _nop_; if(bitval=1) DQ =1; / 如果写1,DQ 返回高电平 delay(8); / 在时间隙内保持电平值, DQ = 1; / Delay函数每次循环延时13s,因此delay(8) = 105s void

35、write_byte(char val) unsigned char i; unsigned char temp; for (i=0; ii; temp &= 0x01; write_bit(temp); delay(5); DS18B20复位后,就可以编程控制读到其内部RAM所采集到的温度值(通过P0.7),并且读取数据时低位在前,高位在后。读出数据后,需判断对应的温度是正值还是负值,当温度值为正值时,直接将二进制数转换为十进制温度值;当温度值为负值时先将二进制补码变为原码,再转换为十进制温度值。 3.3显示程序设计 根据系统的要求,单片机不仅要能接收到温度信号,还要将温度信号显示出来,使系

36、统一目了然。对于输入的温度信号的显示是利用MAX7219驱动进行显示的,MAX7219是串行输出共阴极显示驱动芯片,每片可驱动8个LED,此显示器具有接口简单占用资源少、控制灵活方便等,因此利用MAX7219驱动显示方便,快捷。 首先初始化5个控制寄存器,然后送18个显示数据 一旦送完控制字后,下一步按实际需要可以改变18个数据显示寄存器的内容,MX7219则按显示亮度等13 河南机电高等专科学校毕业论文 初始化规定与待显示的数据自动扫描显示。 (1)译码寄存器(D7D0)中数据可初始化为00H、01H、0FH 以及FFH共四种情况,分别表示:对数据显示寄存器中的内容不译码只对 DIG0译码而

37、对DIG7DIG1不译码;对DIG3DIG0译码而对DIG7DIG4不译码;对DIG7DIG0均译码。在译码方式时,只对数据显示寄存器中的D3D0位译码,D6 D4位为任意值,D7位控制小数点。当D7 =l时,小数点亮;D7=O时,小数点熄灭。 (2)显示亮度寄存器其中,DIG7DIG4位可任意,DIG3DIG0可选择的范围是0000l111。DIG3DIG0的值越大,LED显示器越亮。 (3)扫描范围寄存器其中,DIG7DIG3位可任意,而D2D1D0这三位二进制数排列从000到I11,其中000表示只接有DIG0控制的一个LED 显示器,001表示接有由DIG0和DIG1控制的两个LED显

38、示器,由此类推;111则表示DIG0DIG7均接有一个LED显示器。 (4)关闭寄存器其中, D7D1位可以任意; D0=0,关闭所有显示器,D0=0,允许显示。 (5)显示测试寄存器其中D7D1位可以任意;D0=0,LED处于正常工作状态,D0=1,LED处于显示测试状态,即LED所有的段全亮。 初始化MAX7219的程序流程如图4.6。按照图4送完所有控制寄存器的地址和相应的控制命令之后,再按同样的方法送待显示的数据,每次先送某个LED的地址字节,后送待显示的数据字节。由于控制寄存器和数据显示寄存器全部单独编址,所以在送控制字或送显示数据时,均没有规定其先后顺序。 初始化程序主要部分如下:

39、 void InitialMax7219(void) unsigned char i; CS0=1; CLK0=0; WriteToMax7219(0x0F,0x00); WriteToMax7219(0x0C,0x01); WriteToMax7219(0x0A ,0x06); WriteToMax7219(0x09,0xFF) ; WriteToMax7219(0x0B,0x07) ; for(i=2;i9;i+) WriteToMax7219(i,ascii8); WriteToMax7219(0x01,0x0E); 14 毕业论文题目 3.4键盘程序设计 根据本课题的系统要求,采用4*

40、4的键盘电路结构,P1.0-P1.3接四条行线,P1.4-P1.7接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如下图所示: 9 13 10 14 11 循环 12 查询 5 6 7 8 1 2 3 4 图4.2 键盘按键功能图 如果按下数字0-数字14,表示输入控制温度的信号;本课题设计时只用了四个温度传感器,所以数字键用14即可。按下“查询”键开始输入数据按键是告诉单片机系统要开始输入该传感器的温度信号,接着按下显示传感器输入的序号按键,单片机会将保存的传感器序号数据和对应的传感器温度值通过数码管显示出来;按下“循环显示”键盘输入的数据按键,单片机也会

41、将保存的键盘控制循环信号显示出来,即各个传感器的温度值循环显示; 根据键盘电路连接情况,P1.0-P1.3接四条行线,P1.4-P1.7接四条列线,确定按键的键码值。 按键的主要程序段如下: while(1) temp_key = FindKey; if (temp_key != 0) key = temp_key; if (key=15) show = 1; if (key=16) show = 0; 再定义一个键盘扫描的函数,接受键盘的键码值,根据扫描的键码值单片机转入执行相应的按键功能,显示温度数值。 15 河南机电高等专科学校毕业论文 3.5报警程序设计 本课题采用高温和低温报警,当按

42、下“循环”键后,如果某个传感器的温度超过或者低于了设定温度,数码管将停止循环,将只显示发出报警的传感器的温度值和该传感器的序列号;当按下“查询”时,在数码管上显示同样的信息。 warning int i,j; for(j=0;j400;j+) sound=1; for(i=0;i100;i+) sound=0; 3.6通信模块程序设计 系统通过串口与上位及通信,可以实时向上位机传送温度值实物中通过RS232总线与计算机连接。当运行PROTEUS软件时,可以从虚拟终端看到上位机接收到的4个通道的温度值循环。 void SendStr(char *str) TI = 0; while(*str != 0x00) SBUF = *str+; while(TI = 0); TI = 0; 16 附录 第4章 设计总结 17 附录 参考文献 1余成波,胡新宇,赵勇主编.传感器与自动检测技术.北京:高等教育出版社,2004.2 2付家才.单片机测控工程实践技术北京: 化学工业出版社, 2001 3李广弟.单片机基础(修订本)北京:北京航空

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号