




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要1引言11器件简介21. 1at89s52 简介21. 1. 1主要性能21.1.2引脚说明31.2 ds18b20 简介51. 2. 1主要特性51.2.2 ds18b20的外形和内部结构61.2.3 ds18b20 引脚定义72系统设计72. 1功能与设计方案72. 1. 1功能要求72. 1. 2设计方案72. 1.2. 1 方案论证 总休设计框图82.2系统硕件设计83程序设计103. 1下位机程序103. 1. 1 ds18b20读写模块 103.1.2数码管显示模块113. 1. 3 rs232串口通讯模块123.2上位机程序123.2. 1串口初始化123.2
2、.2串口触发接收程序133.2.3界面设计和数据分析统计程序13结束语14附录15致谢29作者简介30声明30基于51单片机的温度数据采集系统信息管理与信息系统磨聪摘 要温度是一种被广泛应用于生产和生活的重要的物理量。在许多应用领域,研制适当 和高效的测温系统是十分必要的。本文结合实际使用经验,设计了一个基于51单片机和ds18b20温 度传感器的近距离温度数据采集系统。该系统主要包括:温度传感器、单片机与pc rs232串行接口 通讯、vb程序、模数转换等部分。在本文设计的中,为了实现人机对话和及时了解系统的运行状况, 特给本系统增加了告警功能。该系统可应用于仓库测温、楼宇空调控制和生产过程
3、监控等领域。关键词温度测量;ds18b20;单片机;visual basic;the temperature data acquisition system based 51 mcuinformation management and information system mo congabstract: temperature is an important physical quantity that widely used in production and living in many applications, ifs very necessary to develop approp
4、riate and efficient temperature measuring system. combining with the actual using experience, this article introduces a short distance temperature data acquisition system which designs based on 51 mcu and ds18b20. this system mainly includes temperature sensor, mcu,pc rs232 serial interface, vb prog
5、ramming, and dac in this design, in order to realize the man-machine dialogue and prompt understanding the operation status of the system, which added an alarm function in this system. this system can be used in warehouse temperature measurement, building air conditioning control, and production pro
6、cess monitoring, etc.key words: temperature measurement; ds18b20; mcu; visual basic引言在生产和ri常生活中,温度的测量及控制十分重要。实吋温度检测系统在各个方面 的应用十分广泛:消防电气的非破坏性温度检测,大型屯力、通讯设备的过热故障预知 检测,空调系统的温度检测,各类机械组件组件的过热预警,医疗相关设备的温度测试 等等。曲此可见实时温度检测系统应用十分广阔。随着科学技术的飞速发展,电子学的发展也越来越快,带动了大批相关产业的发展, 其应用范围也越來越广泛。如今,让算机的使用领域已经扩展到了各个行业,在这种形
7、势下,要想适应当今社会需求,就必须设计一种基于pc技术的新式电子仪器,以满足 社会更高层次的需求。近年來,单片机发展同样十分迅速,一个以嵌入式微机应用为主 的新技术革命浪潮正在蓬勃兴起,单片机已经渗透到工业、农业、国防、科研等各个领 域。传统的温度采集方式不仅耗时,而11精度较低,远不能满足各行业对于温度数据高 精度、高可靠性的要求。单片机和高精密的数字温度传感器的出现使得温度数据的处理 和采集得到了很好的解决。基于单片机和数字温度传感器的温度测量系统,不但方便快 捷,成本较低,而且大幅度提高了测量的精度。本文介绍了一种基于51单片机和ds18b20数字温度传感器实现实时温度数据采集 和处理的
8、一种设计方案。其中涉及了传感器、数据采集、单片机数据处理、单片机和pc 的串口通讯、vb编程等一系列相关理论。本设计运用主从式思想,由一台上位机(pc 微型计算机)处理和显示温度,一台下位机(单片机)进行温度数据采集,组成两级式 温度测量的检测系统。该系统采用rs-232串行通讯标准,通过上位机(pc)控制下位 机(单片机)进行实时温度采集。温度值既口j以送回主控pc进行数据处理,曲显示器 显示,也可以曲下位机单独工作,实时显示当前的温度值,对温度进行监控。下位机采 用的是基于单片机和数字温度传感器ds18b20的系统。ds18b20利用单总线的特点可以 方便的实现温度的测量,并可以轻松的组建
9、传感器网络,该系统的抗干扰性好、设计灵 活、方便,而11适合在恶劣的环境下进行实吋温度测量。本方案设计的系统口j以应用 在人型工业及民用常温监测场合,如粮仓系统、大楼空调系统、医疗与健诊的温度测试、 石化、机械等,并且该系统在达到所需精度的同时,具有较高的性价比。1器件简介1. 1at89s52 简介at89s52是一种低功耗、高性能cmos 8位微控制器,具有8k在系统可编程flash存 储器。使用atmcl公司高密度非易失性存储器技术制造,与工业80c51产品指令和 引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯 片上,拥有灵巧的8位cpu和在系统可编程f
10、lash,使得at89s52在众多嵌入式控制应 用系统中得到广泛应用。1.1.1主要性能1、与mcs-51单片机产品兼容;2、8k字节在系统可编程flash存储器;3、1000次擦写周期;4、全静态操作:0hz-33mhz;5、三级加密程序存储器;6、32个可编程i/o 口线;7、三个16位定时器/计数器;8、六个中断源;9、全双工uart串行通道;10、低功耗空闲和掉屯模式;11、掉屯后中断可唤醒;12、看门狗定时器;13、双数据指针;14、掉屯标识符。1.1.2引脚说明at89s52是一种低功耗、高性能cm0s8位微控制器,具有8k在系统可编程flash存 储器。使用atmel公司高密度非
11、易失性存储器技术制造,与工业80c51产品指令和引 脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯 片上,拥有灵巧的8位cpu和在系统 可编程flash,使得at89s52为众多嵌入式控制 应用系统提 供高灵活、超有效的解决方案。at89s52具有以下标准功能:8k字节 flash, 256字节ram, 32位i/o 口线,看门狗定时器,2个数据指针,三个16位 定 时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外, at89s52 nj*降至0脱 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、
12、定时器/计数器、串口、中断继续工 作。掉电保护方式下,ram 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。p0 口: p0 口是一个8位漏极开路的双向i/o 口。作为输出口,每位能驱动8个ttl 逻 辑屯平。对p0端口写“1”吋,引脚用作高阻抗输入。当访问外部程序和数据存储 器时,p0 口也被作为低8位地址/数据复用。在这种模式下,p0不具有内部上拉屯阻。 在flash编程时,p0 口也用來接收指令字节;在程序校验吋,输出指令字节。程序校验 时,需要外部上拉屯阻。p1 口:p1 口是一个具有内部上拉电阻的8位双向i/o 口,pl输出缓冲器能驱动4个 ttl逻辑屯
13、平。对p1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口 使用。作为输入使用时,被外部拉低的引脚曲于内部屯阻的原因,将输出屯流(ttl)o 此外,p1. 0和p1.1分别作定时器/计数器2的外部计数输入(pl. 0/t2)和定时器/计数 器2的触发输入(p1.1/t2ex)。在flash编程和校验时,p1 口接收低8位地址字节。引脚号第二功能:p1.0 t2 (定时器/计数器t2的外部计数输入),时钟输出pl. 1 t2ex (定吋器/计数器t2的捕捉/重载触发信号和方向控制)pl. 5 most (在系统编程用)pl. 6 mtso (在系统编程用)pl. 7 sck (在系统编
14、程用)p2 口: p2 口是一个具有内部上拉电阻的8位双向i/o 口,p2输出缓冲器能驱 动4个ttl逻辑屯平。对p2端口写“1”吋,内部上拉电阻把端口拉高,此时可以作 为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电 流(ttdo在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行m0vx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送1。 在使用8位地址(如movx rt)访问外部数据存储器时,p2 口输出p2锁存器的内容。 在flash编程和校验时,p2 口也接收高8位地址字节和一些控制信号。p3 口:p3 口是一个
15、具有内部上拉电阻的8位双向i/o 口,p3输出缓冲器能驱动4个 ttl逻辑电平。对p3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口 使用。作为输入使用时,被外部拉低的引脚曲于内部屯阻的原因,将输出屯流(ttl)o p3 口亦作为at89s52特殊功能(第二功能)使用,如下表所示。在flash编程和校验 时,p3 口也接收一些控制信号。端口引脚第二功能:p3.0 rxd (串行输入口)p3. 1 txd(串行输出口)p3. 2 tnt0(外中断 0)p3. 3 tnt1(外中断 1)p3.4 to(定时/计数器0)p3.5 t1 (定时/计数器1)p3.6 wr (外部数据存储器写
16、选通)p3.7rd(外部数据存储器读选通)此外,p3 口还接收一些用于flash闪存编程和 程序校验的控制信号。rst:复位输入。当振荡器工作吋,rst引脚出现两个机器周期以上高电平将是单 片机复位。ale/pr0g:当访问外部程序存储器或数据存储器时,ale (地址锁存允许)输出 脉冲用于锁存地址的低8位字节。一般情况下,ale仍以时钟振荡频率的1/6输出固定 的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据 存储器时将跳过一个me脉冲。对flash存储器编程期间,该引脚还用于输入编程脉冲 (pr0g)o如有必要,可通过对特殊功能寄存器(sfr)区中的8eh单元的
17、d0位置位, 可禁止ale操作。该位置位后,只有一条m0vx和m0vc指令才能将ale激活。此外,该 引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89s52 出外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉 冲,在此期间,当访问外部数据存储器,将跳过两次psen信号。ra/vpp:外部访问允许,欲使cpu仅访问外部程序存储器(地址为0000h-ffffh), ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位吋内部会锁 存ea端状态。如ea端为高电平(
18、接vcc端),cpu则执行内部程序存储器的指令。flash 存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v 编程屯压vpp。xtal1:振荡器反相放大器和内部时钟发生屯路的输入端。xtal2:振荡器反相放大器的输出端。1.2 ds18b20 简介1.2.1主要特性1适应电压范围更宽,电压范围:3.05. 5v,在寄生电源方式下可由数 据线供电 2独特的单线接】i方式,ds18b20在与微处理器连接时仅需耍一条i线即可实现微处理器与ds18b20的双向通讯3ds18b20支持多点组网功能,多个ds18b20可以并联在唯一的三线上,实现组网多 点测温4 ds1
19、8b20在使用中不需要任何外围元件,全部传感元件及转换屯路集成在形如一 只三极管的集成屯路内5测温范围一55°c+ 125°c,在-10+85°c时精度为土0. 5°c6 口j编程 的分辨率为912位,对应的可分辨温度分别为0.5°c、0.25°c、0. 125°c 和0. 0625°c,可实现高精度测温7在9位分辨率时最多在93. 75ms内把温度转换为数字,12位分辨率时最多在750ms 内把温度值转换为数字,速度更快8测量结果直接输出数字温度信号,以一线总线串行传送给cpu,同时可传送crc 校验码,具冇极强
20、的抗干扰纠错能力9负压特性:屯源极性接反时,芯片不会因发热而烧毁,但不能正常工作。1.2.2 ds18b20的外形和内部结构ds18b20内部结构主要山四部分组成:64位光刻rom、温度传感器、非挥发的温度报警触发 器th和tl、配置寄存器。ds18b20的外形和内部结构如下图1、图2:gnd iq uddpr-35封装u018vccgnd27ds18b20ncnc 一36ncnc _45一 ncsosi封装电源检测64位和接口图2sjx灵鬭牛存储器和控常席低潮蝮器几配置寄存器1.2.3 ds18b20 引脚定义:(1) dq为数字信号输入/输出端;(2) gnd为电源地;(3) vdd为外接
21、供电电源输入端(在寄生电源接线方式时接地)。2系统设计2.1功能与设计方案2.1.1功能要求设计一个基于89s52单片机、ds18b20数字温度传感器、visual basic 6. 0的 数据采集系统。用单片机系统接收温度传感器的温度数据,并在6位数码管上显示 当前温度值,可测温度范围-55-125摄氏度,精度0.1摄氏度。使用vb6.0编写上位机程序,接收温度数据并同步画出温度变化的曲线。整个实时数据采集系统在设计时主要应该满足一下功能指标:1 测量温度,并在8位数码管上显示实时温度值;2可测温范ri-55-125摄氏度,精度0.1摄氏度;3.每秒给上位机传送一次温度数据;4上位机接收温度
22、,并将数据相关信息同步到曲线和表格中;2.1.2设计方案 方案论证方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、 重复性、可靠性较差,对丁检测1摄氏度的信号是不适用的。而且在温度测量系统屮, 采用单片温度传感器,比如ad590, lm35等.但这些芯片输出的都是模拟信号,必须经过 a/d转换后才能送给计算机,这样就使得测温装置的结构较复杂另外,这种测温装置的 一根线上只能挂一个传感器,不能进行多点测量即使能实现,也要用到复杂的算法,一 定程度上也增加了软件实现的难度。方案二:考虑使用温度传感器,在单片机电路设计中,大多都是使用传感器,所以 可以采用一
23、只数字温度传感器ds18b20,利用此传感器,可以很容易直接读取被测温度 值,进行转换,就可以满足设计耍求。从以上两种方案的论述屮容易看出,采用方案二电路比较简单,软件设计也比较简 单,综上所述采用方案二。总体设计框图实吋温度系统电路设计总体设计框图如图3所示,控制器采用单片机at89s52,温 度传感器采用ds18b20,用8位led数码管以串口传送数据实现温度显示并通过串口与 上位机通讯,把温度数据传送给上位机,用vb编写的图形界面程序把温度变化曲线显 小出来。复位电路-aled数码管显示蜂鸣器v单片机时钟振荡ku温度 传感 器pc上位机s图32. 2系统硬件设计整体系统硬件
24、电路包括传感器数据采集电路、温度显示电路、报警电路、单片机最小系统主板屯路等,屯路图和仿真图如图4图5所示。vccr3p1.0 ? 1 pup13 pup15pi6p17(adg1p00 (ad11f0i (admp02 (ad3jpo3(ad41p04(ad61p06 (ad-jp0?p?0:.p3svqcxtiwt31? p3k5(t1)kato)eamtxtal2rstds18b20lsi(aw>20 (aw! (a1w22 (all 昨(a131k5 (amp: 6 ca15tf>2?p?4c-ndds:d3ds13c-一一二圭至 mj a * c土土土 hvcc ond
25、(rxdp3 0ts5c54cl* cl- c2- dvdd vcct1int2intioct nocrr1outr1inr2outr2ingndveh二li图5温度传感器的数据总线接单片机的p33 口,单片机通过反复读写p3. 3 口的状态采 集数据,因此读写时有严格的时序要求。显示电路采用6个共阳极的led数码管显示,显示扫描代码p0 口发送,由于p0 口 内部没有上拉电阻,因此需要外接上拉电阻。p1 口的逻辑状态作位选线信号,达到分时 选通的目的,当相应口为高电平是led数码管才能显示相应代码。此外,电路中还接冇蜂鸣器,当ds18b20i作不正常时口j以达到报警的目的。最后 还要实现单片
26、机与上位机通信的功能,通过max232电平转换芯片将单片机的ttl信号 转换为串口的标准屯平信号,以便能向上位机发送或接收数据。3程序设计3.1下位机程序下位机程序采用c语言编写,开机时对ds18b20数字温度传感器进行检测,如果ds18b20 检测不正常,则蜂鸣器报警,并关闭显示。采用6个led数码管显示,其中4个显示温度值,2 个显示温度符号。同时如果温度值最髙位为0将不显示出来。下位机程序使用c语言编写比使 用汇编语言编写的町读性要好很多,整个下位机程序包扌舌三个模块:ds18b20读写模块、数码 管显示模块、rs232串口通讯模块。只冇当上位机向下位机发出读取温度数据的指令时,下位 机
27、才会将测得的实时温度数据经rs232串口传给上位机。3.1.1 ds18b20读写模块首先需要初始化ds18b20:uchar init_ds18b20(void)dq = 1;delay(8);dq = 0;delay(90);dq = 1;delay(8);presence = dq; /如果二0则初始化成功=1则初始化失败delay(100);dq = 1;return (presence) ; / 返回信号,0=prcscncc, 1= no presencei初始化完毕后,转入温度读取程序。其流程为一无限循环,单片机不断从ds18b20读取温度数据。此处用flash标志ds18b20
28、的工作状态,当flash二1时表 示ds18b20t作异常,同吋关闭显示和蜂鸣器报警。此部分程序详见附录1,此处 不再详述。3.1.2数码管显示模块曲于单片机控制端口有限,因此采用扫描显示的方式,即通过快速刷新数码管 的笔画显示,曲于人眼视觉残留的效应,只要刷新的速度足够快,就能同吋看到6 个数码管的显示,有效的节省了单片机的控制端口。此外,在显示模块中,曲于设 计要求的显示精度是精确到一位小数,而ds18b20每一位的转化温度是0. 0625摄氏 度,因此小数第一位只冇16种状态,因此只需要一一算出放在一个数组中,通过查 表命令即可得到第一位小数的十进制数值。同时通过移位即可获得一个新的温度
29、整 数部分的数据,此处的部分代码如下:unsigned char n二0;di splay4=temp_data0&0x0f;display0=di tabdisplay4 ;/通过查表命令得小数位的值display4=(temp_data0&0xf0)>>4)|(tempdata1&0x0f)<<4); di splay3二di splay4/100;di splay1二di splay4%100;di splay2二di splay1/10;di splay1二di splayl%10;if(idisplay3)di splay3=0x0a;
30、if (idisplay2)di splay2=0x0a;此段程序中,display0为小数位十进制数,display3为百位十进制数,di splay 2为十位十进制数,displayl为个位十进制数。然后再通过查询共阳极 led数码管的显示代码分时选通即可显示当前温度值。unsigned char codeleddata = 0xc0, 0xf9, 0xa4, oxbo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, oxff因为个位还需要显示小数点,故其显示代码稍有不同:unsigned char codeleddian = 0x40, 0x79, 0x24,
31、0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x103.1.3 rs232串口通讯模块在此部分模块中,波特率和晶振频率在程序初始化时己经定义为9600b/s和11. 0592mhz, 以便和上位机的波特率匹配。波特率的产生用定时器产生,本设计屮选择定时器1,并 设置具为工作方式2, 8位的常数自动重载定时器,这种工作方式可以省去用户软件屮 重装初值的代码,极大的简化了定时初值的计算,并可以精确确定定时时间。计算出定 吋器的初值后,就可以设定串口的工作方式了。部分代码如下:voi d init (voi d)ea = 1;tmod二0x20;/定时器1工作于8位自动重
32、载模式,用于产生波特率till=(unsigned char) (256 - (xtal / (32l * 12l * baudrate);tll=(unsigned char) (256 - (xtal / (32l * 12l * baudrate) ;/ 定时器赋初值scon = 0x50;/设定串行口工作方式pcon &二 0x00;/波特率不倍增tr1 二 1;/启动定时器1ie = 0x00;/禁止任何中断3. 2上位机程序上位机程序屮,通过使用vb6. 0的通用串口控件mscomm来对发送到串口的数据进行处 理和显示。上位机程序设计的核心是串口的初始化程序和接收程序的设计
33、。3.2.1串口初始化主要设计过程如下:串口设置:mscomm. setsettings(波特率、校检方式、数据位数、停止位数)串口数据:mscomm. inputmode(输入模式)部分代码如下:on error goto err:'默认设置为comi'二进制输入模式接收1个字符触法oncomm事件mscomm1. commport 二 1mscomm1. inputmode 二 comlnputmodebinarymscomm1. rthreshold 二 1mscomml. sthreshold 二 1'发送 1 个字符触法 oncomm 事件mscomml. s
34、ettings = z,9600, n, & 2'设置波特率此处均为默认设置,可以根据具体情况更改设置,但必须与下位机一致。另外程序 还包括提示出错程序,当串口不存在或被占用时会出现提示信息。3.2.2串口触发接收程序当每发送一次指令时,就会触发oncomm事件,并返回数据串,通过计算得到温度测量值并显示出来,部分程序如下:private sub mscomml oncomm()dim inbyte () as bytedim buffer as stringdim datatemp2a, datatemp2b as stringdim datatemp2 as stringd
35、im count as integerif num > txttimes. text - 1 thentimerl.enabled = falseshpstate. fillcolor = &h80ff&exit subend ifselect case mscomm1. commeventcase comevreceivecount = mscomm1. inbuffercountinbyte = mscomm 1 jlnputif count <> 2 then exit sub接收数据暂存 温度数据缓冲 两字节进制温度数据 十六进制温度数据 接收个数计数
36、 接收个数判断接收完毕counter = counter + 1for i = lbound (inbyte) to ubound (inbyte) buffer = buffer +hex (inbyte (i) + chr (32)next iend select3.2.3界面设计和数据分析统计程序此部分对采集到的实时温度数据进行处理并显示,包括最大值、最小值、平均值、当前值,同时用表格和坐标曲线表示。此部分代码详见附录2,此处不再详述。结束语温度测量系统是现代工业生产过程中的一个重要环节,特别是大型企业的主要 设备往往需要极其精确的测量温度参数,甚至在许多需要对温度进行监控和分析的 场合
37、还要求一种保证精度和高稳定性的同时口动化水平高、应用范围广的温度采集 于-段。而目前许多老iii设备上普遍存在和使用的测温设备都有温度信息传递不及时、 精度不够的严重缺点,不利于工作人员根据温度变化及时作出决定,严重影响和阻 碍了工业口动化的发展,此时开发一种能够实时性高、精度高、稳定性高的综合温 度处理分析监控系统就十分必要。在这种背景下,本文设计实现了低成本、高可靠、高实时性的基于51单片机和 ds18b20数字温度传感器的温度数据采集系统。在设计过程中,对整个系统的硬件 和软件皆采用模块化程序设计的方法,将系统功能划分为几个了模块,最后再进行 整合,从而实现了最终的温度数据采集系统的设计
38、。参考文献1王勇,叶敦范.基于at89s51的便携式实时温度检测仪j仪表技术与传感器, instrumont technique and sensor, 2006, (4).2王学梅,金广锋.数字温度传感器ds18b20在粮仓温度智能控制系统屮的应用j科技广 场,science mosaic, 2009, (5).3史宝玲.ds18b20数字温度传感器技术分析j中国新技术新产品,china new technologies and products, 2011,(4).4白建社,王航宇.基于at89s52的多用途工业控制器设计j科技广场,science mosaic, 200& (3)
39、.5夏莉英,陈雁.基于ds18b20的温度测控系统设计j微计算机信息,microcomputer information, 2011, (1).6霖锋.professional embedded from 51 meu to armm.哈工大,20077郭天祥.altium de signer 6. 9 pcb设计教程m哈工大,2004 戴佳.51单片机应用系统开发典型实例m.电力出版社,2005年6月9沈徳金,陈粤初.mcs-51系列单片机接口电路与应用程序实例m.北京航空航天大学出 版社,199910陈海宴.51单片机原理及应用m.北京航空航天人学出版社,2010.11 童诗白模拟电子技术
40、基础m.高等教育出版社,200112 钟富昭等.8051单片机典型模块设计与应用m.人民邮电岀版社,200713 李平等.单片机入门与开发m.机械工业出版社,200814 王东峰等.单片机c语言应用100例m.电子工业出版社,2009附录附录a下位机程序#i nciude <reg52. h>#def ine xtal 11059200/ cup 晶振频率#def i ne baudrate 9600/ 通信波特率#def i ne uchar uns i gned char#def i ne uint uns i gned intsbit dq = p3"6;/ 定义
41、ds18b20 端口 dqsbit beep 二 p3"3;uns i gned char presence ;uns i gned char code leddata 二oxco, 0xf9, 0xa4, oxbo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, oxff;uns i gned char code ledd i an 二0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10;uns i gned char data temp_data2 = 0x00,0x00;uns i gne
42、d char data display 5 = 0x00,0x00,0x00,0x00, 0x00; uns i gned char code ditab 16 二0x00, 0x01,0x01,0x02, 0x03, 0x03, 0x04, 0x04,0x05,0x06,0x06,0x07,0x08, 0x08, 0x09, 0x09;void beep ();/sbit din 二 p(t7; / 小数点bit flash=0; /显示开关标记void de i ay (uns i gned i nt num) / 延时函数wh i ie (num );uchar lnit_ds18b20
43、(void) / 初始化 ds1820dq = 1 ;/dq复位de i ay ;/稍做延时dq 二 0;/单片机将dq拉低de i ay (90);/精确延时 大于480usdq = 1 ;/拉高总线de i ay ;presence二dq; /如果二0则初始化成功=1则初始化失败de lay (100);dq = 1 ;ret urn (presence) ; / 返回信号,0 二 presence, 1 二 no presence uchar readonechar (vo i d) / 读一个字节uns i gned char i 二 0;uns i gned char dat 二 0
44、;for (i = 8; i > 0; i)dq = 0; /给脉冲信号dat »= 1 ;dq = 1; /给脉冲信号if (dq)dat |= 0x80;de i ay ;return (dat);vo i d wr i teonechar (uns i gned char dat) / 写一个字节uns i gned char i 二 0;for (i = 8; i > 0; i)dq = 0;dq 二 dat&0x01;de i ay ;dq = 1 ;dat»=1 ;void read_temperature (void)/ 读取温度lnit_
45、ds18b200 ;i f (prese nce=1)beep ();fl ash二1;/ ds18b20不正常,蜂鸣器报警e i seflash=0;wr i teonechar (oxcc) ;/跳过读序号列号的操作wr i teonechar (0x44) ;/ 启动温度转换lnit_ds18b200 ;wr i teonechar (oxcc) ;/跳过读序号列号的操作wr i teonechar (oxbe) ;/读取温度寄存器temp_data 0二 readonechar () ; / 温度低 8 位 temp_data 1二 readonechar () ; / 温度高 8 位
46、 vo i d d i sp_temperature () / 显示温度uns i gned char n二0;display4=temp_data0&0x0f;di splay 0 =d i tab di spl ay 4 ;/ 查表得小数位的值d i sp i ay 4 = (temp_data 0 &0xf0) »4) | (temp_data 1 &0x0f) «4);di splay3=di splay4/100;d i spi ay1二d i spi ay4%100;di splay 2二di splay1/10;di splay 1=d
47、i splay e1%1o;/if (!display3j)/ 高位为 0,不显示di splay3二0x0a;if (!di splay 2)/次高位为0,不显示di splay2二0x0a;po 二 0xc6;/显示cp1 二 oxfe;/p1.0de i ay (300);po 二 0x9c;/显示°p1 二 oxfd;/p1.1de i ay (300);po =leddatad i spi ay0;/显示小数位p1 二 oxfb;/p1.2de i ay (300);po =leddiandi splay 1;/显示个位/din 二 0;p1 二 oxf7;/p1.3de
48、i ay (300);po =leddatadisplay2;/显示十位p1 二 oxef;/p1.4de i ay (300);p0 =leddatad i spi ay3;p1 二 oxdf;/p1.5de i ay (300);p1 二 oxff;vo i d beep (vo i d)uns i gned char i ;for (i二0;i100;i+)de i ay (60);beep二!beep;beep二1;void init (void)ea = 1 ;/显示百位/关闭显zf/ beep取反/关闭蜂鸣器/ "中断总允许tmod 二 0x20;/定时器1工作于8位自动
49、重载模式,用于产生波特率th1 = (uns i gned char) (256 - (xtal / (32l * 12l * baudrate);tl1 = (uns i gned char) (256 - (xtal / (32l * 12l * baudrate) ;/ 定时器0赋初值scon 二 0x50;/设定串行口工作方式pcon &二 0x00;/波特率不倍增tr1 = 1;/启动定时器1ie 二 0x00;/禁止任何中断vo i d send_char(vo i d)/传送十六位的温度数据,低位在前uns i gned i二0;while (i < 2)sbuf
50、二 temp_datai ; while (!ti);tl 二 0;i+;vo i d ma i n (vo i d)uchar rece i ve;inito ;whi le(1)read_temperatureo ;if (flash=o)di sp_temperatureo ;e i sep1 二 oxff ;if (rdrl 二 0;rece i ve 二 sbuf;i f (rece i ve 二二's')/等特数据传送/清除数据传送标志/读取温度显不温度/ ds18b20不正常,关闭显示/是否有数据到来/是否开始采集温度send_char ();/传送采集的温度附录
51、b上位机程序定义窗体级变量dimdatatemp (200) as single'用于存储温度采样值dimnum as i nteger'用于存储采样值个数dimcounteras i nteger'采样个数计数器dimmark asboo iean温度米集pr i vate subcmdstart cl ick ()if 仃xttimes > 200) or 仃xttimes < 1) then '参数设置判断msgbox 参数错误!采集次数应取“0200”之间的数。49, 温度采集系统cai i setacqu i escenceex i t s
52、ubend ifif (txttime > 60) or (txttime < 0.01) thenmsgbox 参数错误!间隔时间应取“0.0广60”之间的数。",49,"温度采集系统ca i i setacqu i escence'默认设置ex i t subend ifif mscomml. portopen 二:true then mscomml. portopen 二 fa 1seca11 setcom'设置串口ca11 tabinit'初始化表格1f mscomml. portopen 二:true thentimerl in
53、terva1 二:1000 * txttime. text ,设置间隔采样时间cmdstart. capt i on二重新采集cmdstop. enab ied = truecmdstop. capt i on ="停止采集"shpstate.fi i i co i or 二 &hff& mark = truecai i renewend ifend sub默认设置sub setacqu i escence ()txttimes. text 二 200txttime. text = "1"timerl. enabled = fa isec
54、mdstart. capt i on 二"开始采集cmdstop. enab ied 二 fa iseshpstate. fi i i co i or 二 &h808080cai i renewend sub停止温度采集pr i vate sub cmdstop_c i i ck ()'停止采集if mark = true then重新开始恢复默认值填充停止状态'重新开始if mscomml. portopen = true then mscomml. portopen = fa isemark = fa isetimerl. enabled = fa isecmdstop. capt i on ="继续采集"shpstate.fi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉牛牧场养殖委托运营管理合同
- 健康管理师职业发展与服务价值
- 《特应性皮炎Atopic Dermatitis》课件
- 分析室安全隐患及安全管理策略
- 《农业灾害生物防治》课件
- 《消化系统疾病诊断与预防》课件
- 《枯叶飘零之美》课件
- 《新冠病毒感染患者护理指南》课件
- 《全球教育资源库》课件
- 音乐欣赏活动教案课件
- 猴子的课件教学课件
- 系统商用密码应用方案v5-2024(新模版)
- 小学人教版数学五年级下册《数学广角-找次品》数学教学设计
- 主数据管理规划设计方案
- 水利水电枢纽工程毕业设计
- 【马林巴独奏曲雨之舞的演奏技巧和情感处理探析5000字(论文)】
- 2024年江苏省生态环境监测专业技术人员大比武理论试题库(含答案)
- 07FD02 防空地下室电气设备安装
- Module 10 Unit 1 We are going to different school(教案)外研版(三起)英语六年级下册
- 市场调查与预测题库+答案
- JT-T-398-2013港口输油臂行业标准
评论
0/150
提交评论