基于单片机的温度采集系统的设计

上传人:gui****hi 文档编号:65040299 上传时间:2022-03-22 格式:DOC 页数:33 大小:565.76KB
收藏 版权申诉 举报 下载
基于单片机的温度采集系统的设计_第1页
第1页 / 共33页
基于单片机的温度采集系统的设计_第2页
第2页 / 共33页
基于单片机的温度采集系统的设计_第3页
第3页 / 共33页
资源描述:

《基于单片机的温度采集系统的设计》由会员分享,可在线阅读,更多相关《基于单片机的温度采集系统的设计(33页珍藏版)》请在装配图网上搜索。

1、毕业设计(论文)基于单片机的温度数据采集系统设计学生姓名 学院名称机电工程学院专业名称电气自动化指导教师 2010年1月8日 摘要单片机已在各行业得到广泛应用,为适应更多的应用领域,厂家采取了在一块单片机芯片上集成多种功能部件和大容量存储器的方法。因而,整个应用系统不需要扩展,而体积变小、可靠性增高,使单片机成为真正意义上的单片机系统。本设计是基于STC89C52单片机和DS185B20实现温度的测量系统,单片机在本系统中作为温度输入和显示控制器件,DS18B20被用作温度数据的采集和温度输出器件。本系统采用单总线操作,线路简单,测量值精确,可实现多点测量,并对温度超过限制值,产生报警和数据采

2、集。本系统被广泛应用于温度控制、温度检测、温度采、消防等系统中。关键词 单片机;数据转换;温度显示目 录1 绪论11.1 本系统功能11.1.1 温度测量功能11.1.2 温度采集功能11.1.3 系统工作流程11.2 本系统优点21.2.1 线路简单21.2.2温度精确22 系统硬件介绍22.1本系统硬件和软件组成22.1.1 硬件组成22.1.2软件组成22.2 STC单片机介绍32.2.1 STC单片机功能介绍32.3 DS18B20数字温度传感器介绍62.3.1 功能介绍62.3.2 DS18B20温度传感器是存储器82.3.3 DS18B20内部逻辑图102.3.4 DS18B20温

3、度传感器读写时序102.3.5 DS18B20存储器操作命令122.3.6 DS18B20温度传感器与单片机的接口电路132.4系统工作过程222.4.1 温度的测量222.4.2 温度的采集233 程序框图及C语言程序242.5.1温度采集系统原理框图242.5.2温度显示模块242.5.3读温度子程序257.1.3温度转换子程序257.1.4计算温度子程序267.2温度采集系统C语言程序26结论35致谢36参考文献37281 绪论1.1 系统功能1.1.1 温度测量功能利用DS18B20数字温度传感器实现对温度进行准确的测量,使温度值显示到数码管上。1.1.2 温度采集功能利用DS18B2

4、0数字温度传感器进行温度的采集,单片机作为控制器件,数据通过串口(RS232)传至计算机,进行温度的采集。1.1.3系统工作流程,见图1-1系统上电初始化DS18B20进行数据的采集并将数据以二进制的形式传至单片机单片机对数据进行处理数码管进行温度显示通过串口将数据传至计算机图1-1系统工作流程1.2 本系统优点1.2.1 线路简单DS18B20与单片机之间一根导线进行数据传输,不需要对数据进行转换,接线简单。1.2.2 温度测量准确DS18B20的温度分辨率为0.0625,所以对温度值可以进行准确的温度转换。2系统硬件介绍2.1系统硬件及软件组成2.11硬件组成本系统所用的硬件有:见表2-1

5、。表2-1系统硬件清单器件名称数量STC89C52单片机1个74HC573锁存器2个LED发光二级管8个蜂鸣器1个独立键盘5个数码管(两个一组)2个三极管1个DS18B201个MAX233串口芯片1个电容若干电阻若干导线若干2.1.2软件组成软件有:keil软件、windows操作系统和串口调试助手等软件组成。2.2 STC单片机介绍单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快。1971年Intel公司首次宣布4004的4位微处理器,1974年12月Fairchild(仙童)公司即推出了8位单片机F8,开创了单片机的门户。单片机在我国的应用始于20世纪70年代末,那时我国的科

6、研工作者开始对单片机的应用进行了初期探索,20世纪80年代,单片机在我国得以广泛的应用,各理工科院校陆续开设了有关应用课程。在教学及应用上,Zilog公司生产的Z80CPU成为我国工业控制的主流,以Z80为CPU组成的TP801单板机在教学上及应用领域发挥过巨大作用。20世纪80年代末至90年代初,我国在工业控制领域开始转向使用Intel公司生产的MCS-51。单片机从1976年公布8位机至今不到30年的时间,它没有像微处理器那样从8位、16位,一直发展到32位、64位,8位机目前依然是单片机的主流机型。但是,它突破了原有的集成结构,在内部继承了越来越多的外围电路和外设接口,从而发展成为控制器

7、(MicroController)的体系结构,其发展历程大致分为以下几步:第一阶段:单片机的控索阶段第二阶段:单片机的完善阶段第三阶段:8位单片机的巩固发展及16位单片机的推出阶段第四阶段:微控制器的全面发展阶段单片机已在各行业得到广泛应用,为适应更多的应用领域,厂家采取了在一块单片机芯片上集成多种功能部件和大容量存储器的方法。因而,整个应用系统不需要扩展,而体积变小、可靠性增高,使单片机成为真正意义上的单片机系统2.2.1 STC单片机功能介绍单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单

8、片机早期的含义称为单片微型计算机(single chipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果.单片机应用系统可以分为:(1)最小应用系统是指能维持单片机运行的最简单配置的系统。这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接E

9、PROM或EEPROM作为程序存储器用.(2)最小功耗应用系统是指为了保证正常运行,系统的功耗最小.(3)典型应用系统是指单片机要完成工业测控功能所必须的硬件结构系统。STC89C52 是一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52 具有

10、以下标准功能: 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2211引脚结构,见图2-1图2-1单片机封装及引脚结构2212内部逻辑图,见图2-2图2-2内部逻辑图2213 引脚功能描述

11、VCC :电源GND:地P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使

12、用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2的触发输入(P1.1/T2EX),具体如下表所示。在 flash 编程和校验时,P1 口接收低 8 位地址字。P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如

13、执行 MOVX DPTR)时, P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送 1。在使用8 位地址(如 MOVX RI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在 flash 编程和校验时,P2 口也接收高 8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 STC89C52 特殊功能(第二功能)使用

14、,如下表所示。在 flash 编程和校验时,P3 口也接收一些控制信号。RST:复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问

15、外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为 8EH 的 SFR 的第 0 位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行 MOVX 或 MOVC 指令时有效。否则,ALE 将被微弱拉高。这个 ALE 使能标志位地址为 8EH 的 SFR 的第 0 位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号PSEN是外部程序存储器选通信号。当 STC89C52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL

16、2:振荡器反相放大器的输出端。2.3 DS18B20数字温度传感器介绍2.3.1 功能介绍DALLAS最新单线数字温度传感器DS18B20的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”字化温度传感器 同DS1820一样,DS18B20也 支持“一线总线”接口,测量温度范围为 -55C+125C,-10+85C范围内,精度为0.5C。DS1822的精度较差为 2C

17、 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822DS18B20软件兼容,是DS18B20的简化版本。省

18、略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。光刻ROM中的64位序列号是出厂

19、前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位,见表2-1。表2-1DS18B20内部温度表示形式这是12位转化后得到的12位数据,存储在18B20的两个8

20、比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。见表2-2表2-2DS18B20转化温度形式实际温度值数字输出(二进制)数字输出(十六进制)+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1

21、001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6EH-551111 1100 1001 0000FC90H2.3.2 DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2PPRAM,后者存放高温度和低温度触发

22、器TH、T和结构寄存器。暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节,见表2-3。表2-3DS18B20暂存存储器的8个连续字节寄存器内容字节地址温度最低数字位0温度最高数字位1高温限值2低温限值3保留4保留5计数剩余值6每度计数值7CTR校验8该字节各位的意义如下: TM R1 R0 1 1 1 1 1 低五位一直都是1 ,TM是测试模式位,用于

23、设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位),见表2-4表2-4分辨率设置表 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 DS1820

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

25、驱动问题,这一点在进行多点测温系统设计时要加以注意。(3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 (4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS

26、1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。2.3.3 DS18B20的内部逻辑图,见图2-3。C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd图2-3DS18B20内部内部逻辑图2.3.4 DS18B20读写时序主机使用时间隙(time slots)来读写 DSl820 的数据位和写命令字的位2.3.4.1初始化时序见图 2-4主机总线 to 时刻发送一复

27、位脉冲(最短为 480us 的低电平信号)接着在 tl 时刻释放总线并进入接收状态DSl820 在检测到总线的上升沿之后 等待 15-60接着 DS1820 在 t2 时刻发出存在脉冲(低电平持续 60-240 us)如图中虚线所示图2-4DS18B20初始化时序图程序:Init_DS18B20(void)/初始化ds1820 DQ = 1; /DQ复位 _nop_(); _nop_(); /稍做延时2ms DQ = 0; /单片机将DQ拉低,发出复位脉冲(要求480us960us) Delay(70); /精确延时566us DQ = 1; /拉高总线(要求1660us) Delay(5);

28、 /延时46us presence = DQ; /如果=0则初始化成功 =1则初始化失败 Delay(25); DQ = 1; return(presence); /返回信号,0=presence,1= no presence2.3.4.2写时间隙当主机总线 t o 时刻从高拉至低电平时 就产生写时间隙从 to 时刻开始 15us 之内应将所需写的位送到总线DSl820 在 t1为15-60us 间对总线采样 若低电平 写入的位是 0见若高电平 写入的位是连续写 2 位间的间隙应大于 1us ,见图2-5。 图2-5写时间隙程序:WriteOneChar(unsigned char dat)u

29、nsigned char i=0;for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1;2.3.4.3读时间隙见图 2-6 主机总线 to 时刻从高拉至低电平时总线只须保持低电平 l 7ts之后15捍 s也就是说t z 时刻前主机必须完成读位 并在 t o 后的 60 尸 s 一 120 fzs 内释放总线读位子程序(读得的位到 C 中) 图2-6读时序程序:ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0;

30、/ 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4);return(dat);2.3.5存储器操作命令,见表2-5表2-5存储器操作命令指令约定代码功能读ROM33H读取DS18B20ROM中的编码(64位地址)符合ROM55H发出命令后,接着发出64位ROM编码,访问单总线上与该编码相同的DS18B20,使之做出反应,为下一步读写作准备。搜索ROM0F0H用于确定挂在同一总线上DS18B20的个数,和识别64位ROM地址,微操作各器件做准备。跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发送温度转换命令,适用于单片工

31、作。告警搜索命令0ECH执行后只有温度值超过限度值才做出反应,温度变换命令44H启动DS18B20进行温度转换,转换时间最长为500毫秒,结果存入内部就九字节RAM中。读暂存器0BEH读内部RA九字节内容写暂存器4EH发出向内部RAM的第3、4字节写上下限温度命令,紧随该命令之后是传送两个字节数据。复制暂存器48H将RAM中的第3、4字节内容写到EEPRAM中。重调EEPRAM0B8H将EEPRAM中的第3、4字节内容写到RAM中。2.4 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电

32、源。另一种是寄生电源供电方式,如图4 所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作

33、为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的复位时序 DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序

34、时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 图5-2覆铜PCB6 系统工作过程6.1 温度的测量 DS18B20数字温度传感器温度数据以数字的形式传至单片机,单片机将数据转换成十进制,送到数码管进行显示,这也就完成了,温度的测量,6-1。图6-1温度测量6.2温度数据的采集 DS18B20数字温度传感器温度数据以数字的形式传至单片机,单片机通过RS232将数据传至计算机,由串口调试助手进行数据的记录和显示,见图6-2。图6-2温度数据的采集7程序框图及C语言

35、程序7.1温度采集系统原理框图,见图7-1初始化调用显示子程序1S到?初次上电?读出温度值温度计算处理显示数据刷新发温度转换开始命令NY主流程图Y主流程图N图7-1温度采集系统原理框图7.1.1温度显示模块显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程,见图7-2。温度数据移入显示寄存器十位数0?N Y百位数0? NY百位数显示数据 (不显示符号)十位数显示符号百位数不显示 Y 结束图7-2温度显示模块流程图7.1.2读温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,其程序流程,见图7-2。

36、发DS18B20复位命令发跳过ROM命令读取温度命令读取操作,CRC校验9字节完?CRC校验正确?移入温度暂存器结束 N Y N Y图7-3读温度子程序7.1.3温度转换子程序温度转换命令子程序主要是发温度转换开始命令,其子程序流程见图7-4。DS18B20复位命令跳过ROM命令温度转换开始命令结束图7-4温度转换子程序流程7.1.4计算温度子程序此程序将RAM中读取值进行BCD码的转换运算并进行正负判定流程,见图7-5。开始温度零下? N温度值取补码置“”标志 Y置“+”标志计算小数位温度BCD值计算整数位温度BCD值结束图7-5计算温度子程序流程7.2 温度采集系统C语言程序#includ

37、e #define uchar unsigned char#define uint unsigned intsbit DS=P22;sbit fm=P23; /define interface 定义 DS18B20 接口int temp; / 温度变量uchar flag1,count; / sign of the result positive or negativesbit dula=P26;sbit wela=P27;unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/不带小数点编码。un

38、signed char code table1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /带小数点编码。void delay(uint x) /delayuchar i,j; for(i=0;ix;i+)for(j=0;j0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /read a bit读一位 int i; bit dat; DS=0;i+; /i+小延时一下 DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmp

39、read(void) /读一个字节 uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好 /一个字节在 DAT 里 return(dat); /将一个字节数据返回void tmpwritebyte(uchar dat) /写一个字节到 DS18B20 里 int i; char j; bit testb; for(j=1;j1; if(testb) / 写 1 部分 DS=0; i+;i+; DS=1; i=8; while(i0) i-; else DS=0; /写 0 部分 i=

40、8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /发送温度转换命令 dsreset(); /初始化 DS18B20 delay(1); /延时 tmpwritebyte(0xcc); /跳过序列号命令 tmpwritebyte(0x44); /发送温度转换命令int tmp() /获得温度 float tt; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); /跳过读取ROM命令 tmpwritebyte(0xbe); /发送读取数据命令 a=tmpread(); /连续读两个字节数据 b=

41、tmpread(); temp=b; temp=30) P0=P0;fm=fm;delay(1);if(ser30)P0=0xff;fm=1;if(temp1=1000)A1=temp1/1000;A2=temp1%1000/100;A3=temp1%100/10;A4=temp1%10;P1=0x00;wela=1;wela=0;P1=tableA1;dula=1;dula=0;P1=0x01;wela=1;wela=0;delay(8);P1=0x00;wela=1;wela=0;P1=tableA2;dula=1;dula=0;P1=0x02;wela=1;wela=0;delay(8)

42、;P1=0x00;wela=1;wela=0;P1=table1A3;dula=1;dula=0;P1=0x04;wela=1;wela=0;delay(8);P1=0x00;wela=1;wela=0;P1=tableA4;dula=1;dula=0;P1=0x08;wela=1;wela=0;delay(2);elseA1=temp1/1000;A2=temp1%1000/100;A3=temp1%100/10;A4=temp1%10;P1=tableA2;dula=1;dula=0;P1=0x01;wela=1;wela=0;delay(8);P1=0x00;wela=1;wela=0;

43、P1=table1A3;dula=1;dula=0;P1=0x02;wela=1;wela=0;delay(8);P1=0x00;wela=1;wela=0;P1=tableA4;dula=1;dula=0;P1=0x04;wela=1;wela=0;delay(1);void main() /主函数 uchar a; Init_Com();/初始化串口 while(1) tmpchange(); /温度转换for(a=10;a0;a-) display(tmp(); /显示十次 结论本次用单片机设计的温度数据采集系统终于完成了,在本次设计中,从采集元件,软件设计,硬件焊结,外观到论文的编写都

44、是先查阅了大量资料,后确定,再经老师指导,最后经过多天的不断努力才完成的。在这次培训中,我切身感受到了动手实践的重要性,这对我以后的学习工作将产生深远影响。在本次设计研究和撰写论文的过程中,我查阅了许多文献资料,从中学到了很多有关系统开发和程序调试方面等的知识。在软件开发过程中掌握了一些技术难题的解决方法和技巧,巩固和加深了所学知识的理解,能够把所学的知识与实践相结合,培养了认真严谨的学习态度,为以后开发软件积累了大量的经验,提高了分析问题和解决问题的能力。但是由于认识上的片面和不足,各方面的条件影响也很多,本设计还有待进一步的完善和优化,这些在以后的学习中要注重积累。致谢感谢于蕾老师对我的指

45、导,他的严谨细致、一丝不苟的作风一直是我工作、学习中的榜样。她循循善诱的教导和不拘一格的思路给予我无尽的启迪。无论是在课题的选题还是定稿、研究的方法、技术路线以及本文的撰写都得到了于老师的严格要求和精心指导,于老师花费了大量的精力,在各个环节中给了我许多宝贵的意见。在这次培训中于老师严谨的学术作风、治学态度、求实的工作作风和孜孜不倦的探索创新精神,以及平易近人的师长风范给我创造了良好的学习设计环境,及给了我这个学习提高的机会和在生活上给我的无微不至的关怀。这些都是我不断前进的动力,必将对我今后的学习和生活受益匪浅,我将终生学习和铭记。在此,谨向于老师的培育之恩表示最深的谢意!感谢其他多位老师对我学习和设计所给予的支持和帮助。感谢在我论文完成过程中同学们给我提供的支持、帮助和建议。在这里也衷心地感谢他们!在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意 !参考文献1 何立民电子设计自动化J 电子技术, 2008, (56) :5-92 李鸿嵌入式系统设计M 深圳:科技电子出版社,2008:98-11303 严天峰单片机开发M 成都:科学出版社,2007:77-984 谢维成单片机原理与应用D 北京:清华大学,20035 钱显毅电子电路设计N 科技时报,2009-3-12(C1)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!