欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    毕业设计基于51单片机的温度数据采集系统.doc

    • 资源ID:4149510       资源大小:603.50KB        全文页数:32页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业设计基于51单片机的温度数据采集系统.doc

    目 录摘要1引言11 器件简介21.1 AT89S52简介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.1.2.2 总体设计框图82.2 系统硬件设计83 程序设计103.1 下位机程序103.1.1 DS18B20读写模块103.1.2 数码管显示模块113.1.3 RS232串口通讯模块123.2 上位机程序123.2.1 串口初始化123.2.2 串口触发接收程序133.2.3 界面设计和数据分析统计程序14结束语15附录16致谢30作者简介31声明31基于51单片机的温度数据采集系统信息管理与信息系统 磨聪摘要温度是一种被广泛应用于生产和生活的重要的物理量。在许多应用领域,研制适当和高效的测温系统是十分必要的。本文结合实际使用经验,设计了一个基于51单片机和DS18B20温度传感器的近距离温度数据采集系统。该系统主要包括:温度传感器、单片机与PC RS232串行接口通讯、VB程序、模数转换等部分。在本文设计的中,为了实现人机对话和及时了解系统的运行状况,特给本系统增加了告警功能。该系统可应用于仓库测温、楼宇空调控制和生产过程监控等领域。关键词温度测量;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, it's very necessary to develop appropriate 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 51MCU and DS18B20. This system mainly includes temperature sensor, MCU, PC RS232 Serial interface, VB programming, 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 process monitoring, etc.Key words:temperature Measurement;DS18B20;MCU;Visual Basic引言在生产和日常生活中,温度的测量及控制十分重要。实时温度检测系统在各个方面的应用十分广泛:消防电气的非破坏性温度检测,大型电力、通讯设备的过热故障预知检测,空调系统的温度检测,各类机械组件组件的过热预警,医疗相关设备的温度测试等等【1】。由此可见实时温度检测系统应用十分广阔。随着科学技术的飞速发展,电子学的发展也越来越快,带动了大批相关产业的发展,其应用范围也越来越广泛。如今,计算机的使用领域已经扩展到了各个行业,在这种形势下,要想适应当今社会需求,就必须设计一种基于PC技术的新式电子仪器,以满足社会更高层次的需求。近年来,单片机发展同样十分迅速,一个以嵌入式微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机已经渗透到工业、农业、国防、科研等各个领域。传统的温度采集方式不仅耗时,而且精度较低,远不能满足各行业对于温度数据高精度、高可靠性的要求。单片机和高精密的数字温度传感器的出现使得温度数据的处理和采集得到了很好的解决。基于单片机和数字温度传感器的温度测量系统,不但方便快捷,成本较低,而且大幅度提高了测量的精度【2】。本文介绍了一种基于51单片机和DS18B20数字温度传感器实现实时温度数据采集和处理的一种设计方案。其中涉及了传感器、数据采集、单片机数据处理、单片机和PC的串口通讯、VB编程等一系列相关理论。本设计运用主从式思想,由一台上位机(PC微型计算机)处理和显示温度,一台下位机(单片机)进行温度数据采集,组成两级式温度测量的检测系统。该系统采用 RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行实时温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示,也可以由下位机单独工作,实时显示当前的温度值,对温度进行监控。下位机采用的是基于单片机和数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现温度的测量,并可以轻松的组建传感器网络,该系统的抗干扰性好、设计灵活、方便,而且适合在恶劣的环境下进行实时温度测量【3】。本方案设计的系统可以应用在大型工业及民用常温监测场合,如粮仓系统、大楼空调系统、医疗与健诊的温度测试、石化、机械等,并且该系统在达到所需精度的同时,具有较高的性价比。1 器件简介1.1 AT89S52简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器【4】。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得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 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻 辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下, P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。1.2 DS18B20简介1.2.1 主要特性1适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电2独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯3 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温4 DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内5 测温范围55125,在-10+85时精度为±0.56 可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温7 在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快8 测量结果直接输出数字温度信号,以"一 线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力9 负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 1.2.2 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器【5】。DS18B20的外形和内部结构如下图1、图2:图1 图21.2.3 DS18B20引脚定义:(1)DQ为数字信号输入/输出端;(2)GND为电源地;(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2 系统设计2.1功能与设计方案2.1.1 功能要求设计一个基于89S52单片机、DS18B20数字温度传感器、Visual Basic 6.0的数据采集系统。用单片机系统接收温度传感器的温度数据,并在6位数码管上显示当前温度值,可测温度范围-55-125摄氏度,精度0.1摄氏度。使用VB6.0编写上位机程序,接收温度数据并同步画出温度变化的曲线。整个实时数据采集系统在设计时主要应该满足一下功能指标:1. 测量温度,并在8位数码管上显示实时温度值;2. 可测温范围-55-125摄氏度,精度0.1摄氏度;3. 每秒给上位机传送一次温度数据;4. 上位机接收温度,并将数据相关信息同步到曲线和表格中;2.1.2 设计方案2.1.2.1 方案论证方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案二:考虑使用温度传感器,在单片机电路设计中,大多都是使用传感器,所以可以采用一只数字温度传感器DS18B20,利用此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案的论述中容易看出,采用方案二电路比较简单,软件设计也比较简单,综上所述采用方案二。2.1.2.2 总体设计框图实时温度系统电路设计总体设计框图如图3所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用8位LED数码管以串口传送数据实现温度显示并通过串口与上位机通讯,把温度数据传送给上位机,用VB编写的图形界面程序把温度变化曲线显示出来。复位电路单片机LED数码管显示PC上位机时钟振荡蜂鸣器温度传感器图32.2 系统硬件设计整体系统硬件电路包括传感器数据采集电路、温度显示电路、报警电路、单片机最小系统主板电路等,电路图和仿真图如图4、图5所示。图4图5温度传感器的数据总线接单片机的P3.3口,单片机通过反复读写P3.3口的状态采集数据,因此读写时有严格的时序要求。显示电路采用6个共阳极的LED数码管显示,显示扫描代码PO口发送,由于PO口内部没有上拉电阻,因此需要外接上拉电阻。P1口的逻辑状态作位选线信号,达到分时选通的目的,当相应口为高电平是LED数码管才能显示相应代码。此外,电路中还接有蜂鸣器,当DS18B20工作不正常时可以达到报警的目的。最后还要实现单片机与上位机通信的功能,通过MAX232电平转换芯片将单片机的TTL信号转换为串口的标准电平信号,以便能向上位机发送或接收数据。3 程序设计3.1 下位机程序下位机程序采用C语言编写,开机时对DS18B20数字温度传感器进行检测,如果DS18B20检测不正常,则蜂鸣器报警,并关闭显示。采用6个LED数码管显示,其中4个显示温度值,2个显示温度符号。同时如果温度值最高位为0将不显示出来。下位机程序使用C语言编写比使用汇编语言编写的可读性要好很多,整个下位机程序包括三个模块:DS18B20读写模块、数码管显示模块、RS232串口通讯模块。只有当上位机向下位机发出读取温度数据的指令时,下位机才会将测得的实时温度数据经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=presence,1= no presence初始化完毕后,转入温度读取程序。其流程为一无限循环,单片机不断从DS18B20读取温度数据。此处用flash标志DS18B20的工作状态,当flash=1时表示DS18B20工作异常,同时关闭显示和蜂鸣器报警。此部分程序详见附录1,此处不再详述。3.1.2 数码管显示模块由于单片机控制端口有限,因此采用扫描显示的方式,即通过快速刷新数码管的笔画显示,由于人眼视觉残留的效应,只要刷新的速度足够快,就能同时看到6个数码管的显示,有效的节省了单片机的控制端口。此外,在显示模块中,由于设计要求的显示精度是精确到一位小数,而DS18B20每一位的转化温度是0.0625摄氏度,因此小数第一位只有16种状态,因此只需要一一算出放在一个数组中,通过查表命令即可得到第一位小数的十进制数值。同时通过移位即可获得一个新的温度整数部分的数据,此处的部分代码如下:unsigned char n=0;display4=temp_data0&0x0f;display0=ditabdisplay4; / 通过查表命令得小数位的值display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4);display3=display4/100;display1=display4%100; display2=display1/10;display1=display1%10; if(!display3) display3=0x0a; if(!display2) display2=0x0a; 此段程序中,display0为小数位十进制数,display3为百位十进制数,display2为十位十进制数,display1为个位十进制数。然后再通过查询共阳极LED数码管的显示代码分时选通即可显示当前温度值。unsigned char code LEDData =0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff因为个位还需要显示小数点,故其显示代码稍有不同:unsigned char code LEDdian =0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78, 0x00,0x103.1.3 RS232串口通讯模块在此部分模块中,波特率和晶振频率在程序初始化时已经定义为9600b/s和11.0592MHz,以便和上位机的波特率匹配。波特率的产生用定时器产生,本设计中选择定时器1,并设置其为工作方式2,8位的常数自动重载定时器,这种工作方式可以省去用户软件中重装初值的代码,极大的简化了定时初值的计算,并可以精确确定定时时间。计算出定时器的初值后,就可以设定串口的工作方式了。部分代码如下:void init(void)EA = 1; TMOD = 0x20;/ 定时器1工作于8位自动重载模式, 用于产生波特率TH1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate);TL1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate); / 定时器赋初值SCON = 0x50;/ 设定串行口工作方式PCON &= 0x00;/ 波特率不倍增TR1 = 1;/ 启动定时器1IE = 0x00;/ 禁止任何中断 3.2 上位机程序上位机程序中,通过使用VB6.0的通用串口控件MSComm来对发送到串口的数据进行处理和显示。上位机程序设计的核心是串口的初始化程序和接收程序的设计。3.2.1 串口初始化主要设计过程如下:串口设置:MSComm.SetSettings(波特率、校检方式、数据位数、停止位数)串口数据:MSComm.InputMode(输入模式)部分代码如下:On Error GoTo err: MSComm1.CommPort = 1 ' 默认设置为COM1 MSComm1.InputMode = comInputModeBinary ' 二进制输入模式 MSComm1.RThreshold = 1 ' 接收1个字符触法OnComm 事件 MSComm1.SThreshold = 1 ' 发送1个字符触法OnComm 事件MSComm1.Settings = "9600,n,8,2" ' 设置波特率此处均为默认设置,可以根据具体情况更改设置,但必须与下位机一致。另外程序还包括提示出错程序,当串口不存在或被占用时会出现提示信息。3.2.2 串口触发接收程序当每发送一次指令时,就会触发OnComm事件,并返回数据串,通过计算得到温度测量值并显示出来,部分程序如下:Private Sub MSComm1_OnComm() Dim Inbyte() As Byte ' 接收数据暂存 Dim buffer As String ' 温度数据缓冲 Dim datatemp2a, datatemp2b As String ' 两字节进制温度数据 Dim datatemp2 As String ' 十六进制温度数据 Dim count As Integer ' 接收个数计数 If num > Txttimes.Text - 1 Then ' 接收个数判断 Timer1.Enabled = False ' 接收完毕 Shpstate.FillColor = &H80FF& Exit Sub End IfSelect Case MSComm1.CommEvent Case comEvReceive count = MSComm1.InBufferCount Inbyte = MSComm1.Input If count <> 2 Then Exit Sub counter = counter + 1 For i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i) + Chr(32) Next iEnd Select3.2.3 界面设计和数据分析统计程序此部分对采集到的实时温度数据进行处理并显示,包括最大值、最小值、平均值、当前值,同时用表格和坐标曲线表示。此部分代码详见附录2,此处不再详述。结束语温度测量系统是现代工业生产过程中的一个重要环节,特别是大型企业的主要设备往往需要极其精确的测量温度参数,甚至在许多需要对温度进行监控和分析的场合还要求一种保证精度和高稳定性的同时自动化水平高、应用范围广的温度采集手段。而目前许多老旧设备上普遍存在和使用的测温设备都有温度信息传递不及时、精度不够的严重缺点,不利于工作人员根据温度变化及时作出决定,严重影响和阻碍了工业自动化的发展,此时开发一种能够实时性高、精度高、稳定性高的综合温度处理分析监控系统就十分必要。在这种背景下,本文设计实现了低成本、高可靠、高实时性的基于51单片机和DS18B20数字温度传感器的温度数据采集系统。在设计过程中,对整个系统的硬件和软件皆采用模块化程序设计的方法,将系统功能划分为几个子模块,最后再进行整合,从而实现了最终的温度数据采集系统的设计。参考文献1 王勇,叶敦范. 基于AT89S51的便携式实时温度检测仪 J 仪表技术与传感器 , Instrument 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, 2008,(3). 5 夏莉英,陈雁.基于DS18B20的温度测控系统设计 J 微计算机信息 , Microcomputer Information, 2011,(1).6 霖锋. Professional embedded from 51 mcu to ARMM.哈工大,20077 郭天祥.Altium Designer6.9 PCB设计教程M.哈工大,20048 戴佳.51单片机应用系统开发典型实例M.电力出版社,2005年6月9 沈德金,陈粤初MCS-51系列单片机接口电路与应用程序实例M北京航空航天大学出版社,199910 陈海宴.51单片机原理及应用M.北京航空航天大学出版社,2010.11 童诗白.模拟电子技术基础M.高等教育出版社,2001 12 钟富昭等.8051单片机典型模块设计与应用M.人民邮电出版社,200713 李平等.单片机入门与开发M.机械工业出版社,200814 王东峰等.单片机C语言应用100例M.电子工业出版社,2009附录附录A 下位机程序#include <reg52.h>#define XTAL 11059200 / CUP晶振频率#define baudrate 9600 / 通信波特率#define uchar unsigned char#define uint unsigned intsbit DQ = P36; / 定义DS18B20端口DQ sbit BEEP = P33;unsigned char presence ;unsigned char code LEDData = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0xff;unsigned char code LEDdian = 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78, 0x00,0x10;unsigned char data temp_data2 = 0x00,0x00;unsigned char data display5 = 0x00,0x00,0x00,0x00,0x00; unsigned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;void beep(); /sbit DIN = P07; / 小数点bit flash=0; / 显示开关标记void Delay(unsigned int num)/ 延时函数 while( -num );uchar Init_DS18B20(void) / 初始化ds1820 DQ = 1; / DQ复位 Delay(8); / 稍做延时 DQ = 0; / 单片机将DQ拉低 Delay(90); / 精确延时 大于 480us DQ = 1; / 拉高总线 Delay(8); presence = DQ; / 如果=0则初始化成功 =1则初始化失败 Delay(100); DQ = 1; return(presence); / 返回信号,0=presence,1= no presenceuchar ReadOneChar(void) / 读一个字节unsigned char i = 0;unsigned char dat = 0;for (i = 8; i > 0; i-) DQ = 0; / 给脉冲信号 dat >>= 1; DQ = 1; / 给脉冲信号 if(DQ) dat |= 0x80; Delay(4); return (dat);void WriteOneChar(unsigned char dat)/ 写一个字节 unsigned char i = 0; for (i = 8; i > 0; i-) DQ = 0; DQ = dat&0x01; Delay(5); DQ = 1; dat>>=1; void Read_Temperature(void)/ 读取温度 Init_DS18B20(); if(presence=1) beep();flash=1; / DS18B20不正常,蜂鸣器报警 else flash=0; WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0xBE); / 读取温度寄存器 temp_data0 = ReadOneChar(); / 温度低8位 temp_data1 = ReadOneChar(); / 温度高8位 void Disp_Temperature()/ 显示温度 unsigned char n=0;display4=temp_data0&0x0f;display0=ditabdisplay4; / 查表得小数位的值display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)

    注意事项

    本文(毕业设计基于51单片机的温度数据采集系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开