




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 福建工程学院国脉信息学院 毕业设计(论文) 专 业: 班级: 设计题目: 基于单片机的低功耗温度记录仪 学生姓名: 学号: 起止日期: 设计地点: 指导教师: 2011 年 03 月 25 日 基于单片机的低功耗温度记录仪设计 1、摘要 本文介绍了一种基于 AT89C51 单片机与 PC 机串口通信的温度控制系统,用单片机作下 位机完成温度数据的采集和执行 PC 机发出的控制执行命令;用 PC 机作上位机接收单片机发 送的数据,进行数据处理,向单片机发送控制命令,四位一体共阴数码管实时显示当前温度。 PC 机与单片机采甪串行通信,可实现温度检测和采集并处理数据的人机友好界面。本设计 充分利用
2、 PC 机 VB6.0 软件强大的数据处理功能和友好的人机界面,对温度进行实时曲线显 示。本设计由硬件和软件二部分组成。通过对系统软件和硬件的合理规划,发挥单片机自 身集成多系统功能单元的优势,在不减少功能的前提下有效降低了成本,同时实现低功耗 运行,系统操作简便,结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量, 有广泛的应用前景。 关键词:AT89C51 单片机,PC 机,串行通信,数据采集以及处理 2、引论 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域, 已经成为一种比较成熟的技术。温度是工业生产中主要的被控参数之一,有些工艺过程对 其温度的控制效果直
3、接影响着产品的质量。许多化学反应的工艺过程必须在适当的温度下 才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、 柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作。还有比如在观 察用药剂前后病人体温随时间的变化情况,临床一般都采用水银或电子温度计,隔一段时 间测量一次并手工记录结果。这种传统方式给病人带来了很多不便,也加大了护理工作量。 更为欠缺的是测量时间间隔不够短,在体温变化率较高的情况下,容易造成处理不当或不 足,达不到最理想的疾病控制与治疗效果。 传统的温度记录仪通常采用的是人工记录或普通记录仪用墨水在记录纸上绘制曲线, 其体积庞大、精度低
4、、墨水易堵塞、费时费力。 。 。 。 。 。无纸温度记录仪产生,并因为其更准 确地数据记录、更方便的数据存储、更便捷的数据分析功能,所占市场份额逐年猛增;近 年来推出的带 usb 接口的无纸记录仪更是极大的方便了数据的下载和保存。 因此可见,设计出一款测量温度并自动记录下数据的温度记录仪是多么重要。用单片 机做成的产品外围元件很少,能实现的功能却很广,广泛应用于工业,农业等。兼于此, 特用单片机设计此电路。 单片机发展的三个阶段: (1)第一阶段(1976-1978):单片机的控索阶段。以 Intel 公司的 MCS 48 为代表。 MCS 48 的推出是在工控领域的控索,参与这一控索的公司还
5、有 Motorola 、Zilog 等, 都取得了满意的效果。这就是 SCM 的诞生年代, “单机片”一词即由此而来。 (2)第二阶段(1978-1982)单片机的完善阶段。Intel 公司在 MCS 48 基础上推出了 完善的、典型的单片机系列 MCS 51。它在以下几个方面奠定了典型的通用总线型单片机 体系结构。 完善的外部总线。MCS-51 设置了经典的 8 位单片机的总线结构,包括 8 位数据总线、16 位地址总线、控制总线及具有很多机通信功能的串行通信接口。 CPU 外围功能单元的集中管理模式。 体现工控特性的位地址空间及位操作方式。 指令系统趋于丰富和完善,并且增加了许多突出控制功
6、能的指令。 (3)第三阶段(1982-1990):8 位单片机的巩固发展及 16 位单片机的推出阶段,也是单 片机向微控制器发展的阶段。Intel 公司推出的 MCS 96 系列单片机,将一些用于测控 系统的模数转换器、程序运行监视器、脉宽调制器等纳。 在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用, 仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件 结合,加以完善。DS18B20 是美国 DALLAS 公司生产的数字温度传感器芯片,具有结构简单、 体积小、功耗小、抗干扰能力强、使用方便等优点。本文设计的一种温度控制系统,用 STC89
7、C51 单片机作为温控器,选用 DS18B20 数字温度传感器,单片机与上位机之间通过 MAX232 串口进行通信,对测试点温度采集,实时显示,数据处理。 3、目 录 1、摘要2 2、引论3 3、目录5 4、正文7 4.1.1、设计目的7 4.1.2、系统实现功能7 4.2、系统总体方案设计8 4.2.1、系统总体设计框图8 4.2.2、系统硬件设计方案8 4.2.3、系统软件设计方案8 4.3、系统各个模块设计9 4.3.1、单片机最小系统9 4.3.2、显示电路11 4.3.3、串行通信电路13 4.3.4、DS18B20 温度传感器电路13 4.3.5、电源电路15 4.3.6、单片机与
8、 PC 机串口连接电路15 4.4、系统软件设计17 4.4.1、单片机软件设计17 4.4.2、上位机软件设计17 4.5、系统调试19 5、结论20 6、致谢20 7、参考文献21 8、附录22 附录 1、系统总体电路图22 附录二、单片机程序22 附录三、PC 机程序28 正文正文 ( 4.1 设计目的及系统实现功能要求 4.1.1 设计目的: (1)了解电子系统的设计方法,巩固和提高学过的基础理论和专业知识; (2)学习 DS18B20 数字温度传感器的测温原理, (3) 掌握串口通信协议及其编程方法, (4)增强对单片机的认识,掌握分析处理问题的方法,进行调试、计算等基本技能的训练,
9、 达到具有一定程度的实际工作能力。 (5) 学会用 Protel99se 进行电路原理图和 PCB 图的绘制。 (6) 学习用 PSPICE、 Multisim 8 等仿真软件进行电路设计和仿真。 4.1.2.系统实现功能: 1.内容及要求: 研究基于单片机的低功耗温度记录仪,可以以一定的时间间隔连续记录系统温度,并 提供通讯接口将温度数据上传到 PC 机。利用 VB/VC/DELPHI 编制 PC 示例程序。 2.主要技术指标: (1) 、温度测量范围 0-70,系统实现低功耗运行; (2) 、温度记录数不少于 200 条; (3) 、提供 PC 机通讯接口; (4) 、PC 机软件实现对温
10、度数据分析、统计和处理; 4.2 系统总体方案设计 4.2.1.系统总体构成框图如下: AT89C51 PC 机 RS232 数码管显示恒压电源 晶振电路 复位电路 DS18B20 温度传感器 系统总体构成框图 4.2.2 系统硬件设计方案: 1.利用 AT89C51 自身强大的功能和优异的可扩展性,配上四位一体数码管和按键等少 量外围电路,就能搭建合适本次实验的小系统。从而大大缩短设计流程,把设计的重点放 在温度探测单元,串行通信协议两个部分。 2.现在 PC 机提供的 COM1、Com2 是采用 RS-232 借口标准的。而 RS-232 是用正负电压 来表示逻辑状态,与 TTL 以高低电
11、平来表示逻辑状态的规定不同。因此,为了能够同计算 机借口或终端的 TTL 器件(如单片机)连接,必须在 RS-232 与 TTL 电路之间进行电平和逻 辑关系的变换,变换电路选用有德州仪器公司(TL)推出的一款兼容 RS-232 标准的芯片 MAX232.该器件包含 2 个驱动器、2 个接收器和一个电压发生器电路提供 TIA/EIA-232-F 电 平转换成 5V TTL/CMOS 电平。每一个发送器将 TTL/CMOS 电平转换成 TIA/EIA-232-F 电平。 4.2.3 系统软件设计方案: 单片机软件设计 单片机程序由主程序和中断子程序组成的。主程序负责对来自上位机的命令进行解析 并
12、执行读温度值、存储温度值、输出控制等等,中断服务程序只负责单片机和上位机之间 的数据发送与接收。 上位机程序设计 由单片机采集的测试点实时温度,通过 MAX232 传输到上位机 PC,利用在 Visual Basic 6.0 的通信控件 Mscomm 属性设置和事件响应的基础上,实现与单片机串行通信,在 上位机中,完成温度传感器 64 位激光 ROM 读取并显示、实时温度数据显示、数据存储、曲 线绘制、历史数据查询,其中在数据查询功能中,设计了时间查询、温度查询等功能。 4.3 系统各个模块设计: 4.3.1 单片机最小系统 (1)AT89C51 管脚图如下: AT89C51 封装引脚图 引脚
13、说明: 电源引脚 Vcc(40 脚):典型值5V。 Vss(20 脚):接低电平。 外部晶振 X1、X2 分别与晶体两端相连接。当采用外部时钟信号时,X2 接振荡信号,X1 接地。 输入输出口引脚: P0 口:I/O 双向口。作输入口时,应先软件置“ 1” 。 P1 口:I/O 双向口。作输入口时,应先软件置“ 1” 。 P2 口:I/O 双向口。作输入口时,应先软件置“ 1” 。 P3 口:I/O 双向口。作输入口时,应先软件置“ 1” 。 控制引脚: RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp 组成了 MSC-51 的控制总线。 RST/Vpd(9 脚):复位信号输入端
14、(高电平有效) 。 第二功能:加+5V 备用电源,可以实现掉电保护 RAM 信息不丢失。 ALE/-PROG(30 脚):地址锁存信号输出端。 第二功能:编程脉冲输入。 -PSEN(29 脚):外部程序存储器读选通信号。 -EA/Vpp(31 脚):外部程序存储器使能端。 第二功能:编程电压输入端(+21V) 。 (2)单片机最小系统: 单片机最小系统 (3) 复位电路: 单片机上电时,当振荡器正在运行时,只要持续给出 RST 引脚连个机器周期的高电平, 便可完成系统复位。外部复位电路是为内部复位电路提供两个机器周期以上的电平而设计 的。系统采用上电自动复位,上电瞬间电容器上的电压不能突变,R
15、ST 上的电压是 Vcc 上 的电压与电容器上的电压之差,因而 RST 上的电压与 Vcc 上的电压相同。随着充电的进行, 电容器上的电压不断上升,RST 上的 电压就随着下降,RST 脚上只要保持 10ms 以上高电平, 系统就会有效复位。电容 C 可取 1033uF,电阻 R 可取 1.210k。在本系统设计中,C 取 10uf,R 取 10k。 (4)振荡电路: XTAL1 脚和 XTAL2 脚分别构成片内振荡器的反相放大器的输入和输出端,外接石英晶 振或陶瓷晶振以及补偿电容 C1、C2 选 47uF 构成并联谐振电路。当外接石英晶振时,电容 C1、C2 选 30Pf10pF;当外接陶瓷
16、振荡器时,电容 C1、C2 选 47uF10uF。系统中,外接 电 C1、C2 的大小会影响振荡器频率的稳定度、起振时间及温度稳定性。在设计电路板时, 晶振和电容应靠近单片机芯片,以便减少寄生电容,保证振荡器稳定可靠工作。 在本硬件系统设计中,为保证串行通行波特率的误差,选择了 11.0592MHz 的标准石英 晶振,电容 C1、C2 为 30pF。 (3)EA接高电平,选用片内程序存储器。 (4) 单片机编程 4.3.2 显示电路 数码管显示电路部分如图: 显示部分采用四位一体共阴数码管,为了显示数字或字符,必须对数字或字符进行编 码。七段数码管加上一个小数点,共计 8 段。因此为 LED
17、显示器提供的编码正好是一个字 节。 共阴数码管码表 0 x3f , 0 x06 , 0 x5b , 0 x4f , 0 x66 , 0 x6d , 0 1 2 3 4 5 0 x7d , 0 x07 , 0 x7f , 0 x6f , 0 x77 , 0 x7c , 6 7 8 9 A B 0 x39 , 0 x5e , 0 x79 , 0 x71 , 0 x00 C D E F 无显示 静态显示方式 LED 显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码 管的段选必须接一个 8 位数据线来保持显示的字形码。当送入一次字形码后,显示字形可 一直保持,直到送入新字形码
18、为止。这种方法的优点是占用 CPU 时间少,显示便于监测和 控制。缺点是硬件电路比较复杂,成本较高。 动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有 效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和 相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都 在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示 电路中的。 本设计采用四位一体共阴数码管动态显示。 4.3.3 串行通信电路 由于串口用的是 TTL 电平,和 RS232 电平不同,因此,单片机和 PC 通信时需要进
19、行电 平转换,常用的 IC 是 MAX232,连接图如下图所示,其中 MAX232 供电脚为5V。采用了三 线制连接串口,也就是说和计算机的 9 针串口只连接其中的 3 根线:第 5 脚的 GND、第 2 脚的 RXD、第 3 脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路 如下图所示,MAX232 的第 10 脚和单片机的 11 脚连接,第 9 脚和单片机的 10 脚连接。 MAX232 串口通信电路图(9 孔串口接头) 4.3.4 DS18B20 温度传感器电路 DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感 器,与传统的
20、热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通 过简单的编程实现 9-12 位的数字值读数方式。DS18B20 的性能特点如下: (1)独特的单线接口仅需要一个端口引脚进行通信,DS18B20在与微处理器连接时仅 需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)DS18B20 支持多点组网功能,多个 DS18B20 可以并联在惟一的三线上,实现多点 组网测温; (3)无须外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内; (4)可通过数据线供电,电压范围为 3.0-5.5; (5)零待机功耗; (6)温度以9或12位数字,对应的可分辨温度分别
21、为0.5、0.25、0.125和 0.0625,可实现高精度测温; (7)用户可定义报警设置; (8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; (9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; (10)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送 CRC校验码,具有极强的抗干扰纠错能力 DS18B20 采用 3 脚 PR35 封装或 8 脚 SOIC 封装,其引脚排列及内部结构框图以及测温 原理图如下所示: 引脚排列 电路连接如下图: 4.3.5 恒压电源电路 本设计的供电电路主要变压器、整流桥、滤波电路和 78L05 芯
22、片组成。电源供电电路 如图所示: 系统供电电源总体电路图 4.3.6 单片机与 PC 机串口连接电路: 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在 低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通 讯。 图2-9 RS232引脚图 收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是 2脚相对7脚(信号地)的电平,DB25各引脚定义参见图2-9。典型的RS-232信号在正负电平 之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。 当无数据传输时,
23、线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平 再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平 的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离 最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而 设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。上位机和下位机 的接线方法如图 上位机和下位机的接线方法 MCS-51 内部含有一个可编程全双工串行通信接口,具有 UART 的全部功能。该接口电 路不仅能同时进行数据的发送和接收,也
24、可作为一个同步移位寄存器使用。 在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK 和 RCLK)控制下进行 的,但都必须与字符位数的波特率保持一致。MCS-51 串行口的发送和接收时钟可由两种方 式产生,一种是由主机频率 fosc 经分频后产生,另一种方式是由内部定时器 T1 或 T2 的溢 出率经 16 分频后提供。 发送和接收的过程如下: 串行口的发送过程由指令 MOV SBUF,A 启动,即 CPU 由一条写发送缓冲器的指令把数 据(字符)写入串行口的发送缓冲器 SBUF(发)中,再由硬件电路自动在字符的始、末加 上起始位(低电平) 、停止位(高电平)及其它控制位(如奇偶位等
25、) ,然后在移位脉冲 SHIFT 的控制下,低位在前,高位在后,从 TXD 端(方式 0 除外)一位位地向外发送。 串行口的接收与否受制于允许接收位 REN 的状态,当 REN 被软件置“1”后,允许接收 器接收。接收端 RXD 一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行 最后一次移位,自动去掉启始位,使接收中断标志 RI 置“1” ,并向 CPU 申请中断。CPU 响 应中断,用一条指令(MOV A,SBUF)把接收缓冲器 SBUF(收)的内容读入累加器。 TI 和 RI 是由硬件置位的,但需要用软件复位。 4.4 系统软件设计 4.4.1 单片机软件设计: 初始化 向 D
26、S1820 读一字 节 向 DS1820 写一字 节 读取温度及转换 显示温度 4.4.2 上位机软件设计: VB 是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公 软件的垄断地位,VB 在短短的几年内风靡全球。VB 是极有和功能强大的软件,主要表现在: 所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代 码。 美国微软公司在 1991 年推出 VB1.0 至今已经经历了 6 个版本,VB6.0 运行在 win9x 或 winme,win2000,winxp,windowsNT 等操作系统下,是一个 32 位的应用程序开发工具。 它主要有以下
27、几个特点9: (1)成功地简化了界面的设计过程。它在 windows 平台上提供了图形用户界面 (GUI)的集成开发环境(IDE) 。 (2)采用简单易学的 Basic 语言。它既适用于没有任何编程经验的开发者学习,也适 合于开发各种复杂的底层应用程序。 (3)具有强大的数据和字符串处理功能。Visual Basic 提供了许多现成的字符串处 理函数。 (4)易于扩充。除了简单易学的特点以外,Visual Basic 还是一种易于扩充功能的 开发系统。 (5)提供了 IntelliSense 技术。当你在 Visual Basic 的代码窗口敲进对象名称的 时候 IntelliSense 技术
28、会自动向你显示一些相关的信息,例如对象的属性和方法等。 (6)提供了多种向导。利用这些向导,你可以快速地完成一般性的任务,例如生成其 控件不绑定到数据控件上的纯代码窗体,建立查询,添加工具,制作图表,以及发布创建 的应用程序等。 完成后的界面如图 3-3 所示 单片机与 PC 的温度控制系统的 VB 界面 4.5 系统调试 硬件调试首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。硬件调试 主要是针对主控板中单片机模块和外部输入、输出模块进行调试。这一部分硬件调试主要 分成两大块:上电前的调试和上电后的调试。 在电路安装焊接前,首先是对元器件的检测。对 AT89C51、DS18B20
29、在未接电路时是不 能检测其好坏的。对于其他器件则可利用万用表进行测量。电阻的测量,用万用表的欧姆 档测量。 (1)上电前的调试 在上电前,必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一 步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测 电路中是否存在断路或者短路情况等。只要将一个表笔固定在电源端或接地端,另仪表笔 接其他连接点,指针偏转到 0 刻度就是通路的。通过万用表的检测,没有发现短路和断路的 地方了,电路基本正常后再进行下一步调试。 (2)上电后的调试 在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检 验电路是否
30、接错,同时还要检验原理是否正确。 在本设计中,上电调试主要是检测单片机部分与外部输入、输出电路是否接对。本次 调试需要通过软硬件联调来实现。由于 DS18B20 与单片机采用串行数据传送,因此,对 DS18B20 进行读/写编程时必须严格地保证读/写时序,否则将无法读取测量结果。本程序 采用单片机 C 语言编写,用 Keil C51 编译器编程调试。 5、结论 首先,通过这次应用系统设计,在很大程度上提高了自己的独立思考能力和单片机的 专业知识,也深刻了解写一篇应用系统的步骤和格式,有过这样的一次训练,相信在接下 来的日子我们都会了,而且会做得更好。 我所写的系统主要根据目前节省能源的发展趋势
31、和国内实际的应用特点和要求,系统 以单片机AT89C51为核心部件,采用了自动化的结构形式,实现对温度的检测、记录与数据 处理。利用C语言编制,运行程序该系统的主要特点是: 1)适用性强,利用VB友好的人机界面,用户只需对界面参数进行设置并启动系统正常 运行便可实现对温度的测量、记录与数据处理。 2)将单片机以及温度传感器引入对温度的分析和处理中,单片机控制决策无需建立被 控对象的数学模型,系统的鲁棒性强,适合对非线性、时变、滞后系统的控制,对温度测 量系统采用单片机控制非常适合。 3)系统成本低廉,操作非常简单,可扩展性强,只要稍加改变,即可增加其他使用功 能。 通过对本设计的思考,更加加深
32、了对单片机的认识,熟练了单片机的编程,更对当前 的温度传感器有了更深刻的认识与了解,但是由于此系统依赖温度传感器,因而对温度传 感器的稳定性,线性等诸多方面有着严格的要求,但是传感器的性能越好,相对而言其价 格也就越高,因而在此设计中,温度传感器我个人觉的还是存在遗憾,其次,由于采用了C 语言,所以其编程过程复杂不易查错。最后由于时间紧迫,本设计还有诸多地方需要改进, 比如改用RS-485串行接口或是网线,实现远距离操作。 6、致谢 在我论文即将完成之际,我首先要向在论文写作中给予我悉心关怀、鼓励和指导的陈 松岭老师致以深深的敬意和谢意!老师一丝不苟的钻研精神,严谨求实的治学态度,执着 忘我的
33、工作作风,独树一帜的思维方式,使学生受益匪浅,并终身难忘。 所有人的青春,从一开始的空白无物,到后来的极欲飞扬,阴霾满地,再到现在的尘埃 落定,一切都在发生,一切都在结束.美好而缤纷的大学生活,就这样画上了句号,真有些 难忘和难舍。 纯如钻,强如钢。最大的收获是心智的成熟,一千多个日子里曾悲伤过、失落过、苦 恼过,委屈过。而现在懂得擦干眼泪,收拾伤痕,站起继续勇往直前,前面的荆棘,不算 什么,路上的障碍,我每攀登越过一次,便往云端靠近了一步。感谢我的朋友和同学对我 的关心和帮助! 7、参考文献 1 陈大钦主编 电子技术基础实验 高等教育出版社 2004 年 2 余锡存 曹国华.单片机原理及接口
34、技术M.陕西:西安电子科技大学出版社 3 苏家健. 单片机原理及应用技术 .高等教育出版社,2004.11 4 周航慈. 单片机程序设计基础 . 北京航空航天大学出版社,2003.07 5 李仁发、肖玲、吴强.数字逻辑设计(第四版). 人民邮电出版社,2006.05 6 51 单片机学习网 HTTP:/WWW.51C51.COM/ 7 单片机学习网 HTTP:/WWW.MCUSTUDY.COM/ 8单片机 C 语言应用程序设计第四版,马忠梅主编,北京航空航天大学出版社 9单片机开发与典型工程项目实例详解 ,边海龙、孙永奎编著,电子工业出版社 1051 单片机 C 语言教程-入门、提高、开发、拓
35、展全攻略 ,郭天祥 编著, 电子工业出版社,2009 11 吴黎明主编 单片机原理及应用技术 科学出版社 2003 年 12 刘乐善主编 微型计算机接口技术及应用 华中科技大学出版社 2004 年 13 J.A.CONNELLEY. ANALOG INTEGRATED CIRCUITS. JOHN WILEY /温度正负标志 sbit DQ=P37; /温度输入口 sbit DIN=P07; /LED 小数点控制 uchar code ditab16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06,0 x06,0 x07,
36、0 x08,0 x0 8,0 x09,0 x09;/温度小数部分用查表法 unsigned char code dispcode=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d, 0 x7d,0 x07,0 x7f,0 x6f,0 x00,0 x40; /共阴 led 段码 表 0 x40 负 unsigned char dispbitcode=0 xfe,0 xfd,0 xfb,0 xf7, ; uchar data temp_data2=0 x00,0 x00; / 读出温度暂放 unsigned char dispbuf5=0,0,0,0,0; void digi
37、talshow(unsigned char a3,unsigned char a2,unsigned char a1,unsigned char a0) unsigned char i; dispbuf0=a0; dispbuf1=a1; dispbuf2=a2; dispbuf3=a3; for(i=0;i4;i+) P2=0 xff; /关闭所有显示 P0=dispcodedispbufi; P2=dispbitcodei; if(i=1)DIN=1; /* 该程序为总线上只有一个器件 */ /毫秒延时 11.059 Mhz void dmsec (unsigned int count)
38、unsigned int i;/ 1ms 延时 while (count-) for (i=0;i125;i+) void Delay(unsigned int num)/ 延时函数 while( -num ); /复位脉冲 void tmreset (void) DQ = 0; Delay(90);/ 精确延时 大于 480us DQ = 1; Delay(4);/ 90,4 可以小范围变化 /存在脉冲 void tmpre (void) while (DQ); while (DQ); Delay(4); /读一个位 bit tmrbit (void) unsigned int i; bit
39、 dat; DQ = 0; i+; / i+;大概 1us DQ = 1; i+; i+; dat = DQ; Delay(8); return (dat); /读一个比特 unsigned char tmrbyte (void) unsigned char i,j,dat; dat = 0; for (i=1;i=8;i+) j = tmrbit (); dat = (j 1); return (dat); /写一个比特 void tmwbyte (unsigned char dat) unsigned int i; unsigned char j; bit testb; for (j=1;
40、j 1;/ 从低位开始? if (testb) / Write 1 DQ = 0; / 先拉低 i+; i+;/ 1us DQ = 1; Delay(4); else / Write 0 DQ = 0; Delay(4); / 大一点 没影响,但不能太大,写一个位在 30us 内 DQ = 1; i+; i+; / 再拉高 /ds1820 开始转换 void tmstart (void) dmsec(1); tmreset (); tmpre (); dmsec (1); tmwbyte (0 xcc); / skip rom tmwbyte (0 x44); / 转换 /读取温度 read_
41、temp() tmreset (); tmpre (); dmsec (1); tmwbyte (0 xcc); / skip rom tmwbyte (0 xbe);/ 转换 temp_data0 = tmrbyte (); / LSB 低 8 位 temp_data1= tmrbyte ();/ MSB 高 8 位 if(temp_data1 temp_data0=temp_data0+1; /负温度 处理(DS18B20 的负温度是正的反码,即将它取反+1,就得到正的温度) Tflag=0; else Tflag=1; /* MAIN */ void main (void) uchar
42、last; uchar lsb,msb; uchar i; tmstart(); dmsec(450);/ 初始化 ds18b20 while(1) tmstart();/ ds1820 开始转换 dmsec(2); read_temp(); / 读取温度 dispbuf4=temp_data0dispbuf0=ditabdispbuf4; dispbuf4=(temp_data0i-) if(Tflag=1) /正温 if(dispbuf4126) if(dispbuf4100) digitalshow(10,dispbuf2,dispbuf1,dispbuf0); /温度小于 100 度,
43、则百位不显示 else msb=msb%10; /温度大于 100 度时十位需要在除 10 取 余 digitalshow(Tflag,dispbuf2,dispbuf1,dispbuf0); /温度 大于 100 度,百位显示为 1 else digitalshow(11,11,11,11); /温度大于 125 度时显示- else if(dispbuf456) /负温大于-55 度时正常显示 digitalshow(11,dispbuf2,dispbuf1,dispbuf0); else digitalshow(11,11,11,11); /负温小于-55 度时显示为- 附录 3 PC
44、机程序: Dim n As Integer Dim t As Integer 定义全局变量 Private Sub Command1_Click() 单击温度设置按钮程序 Dim i As Integer If Len(Trim(Text2.Text) 100 Or Val(Text2.Text) 0 Or Left(Right(Text2.Text, 2), 1) . Then Label3.Caption = 设定输入错误,不发送 Else Label3.Caption = Select Case Len(Trim(Text2.Text) Case 5 Text8.Text = Trim(
45、Text2.Text) Case 4 Text8.Text = 0 & Trim(Text2.Text) Case 3 Text8.Text = 00 & Trim(Text2.Text) End Select MSComm1.Output = C Timer2.Enabled = True End If End Sub Private Sub Command2_Click() 单击按钮执行数据采集或停止采集 If Command2.Caption = 采集数据 Then Command2.Caption = 停止采集 Timer1.Enabled = True MSComm1.Output
46、= A Else Command2.Caption = 采集数据 Timer1.Enabled = False MSComm1.Output = B MSComm1.Output = B End If End Sub Private Sub Command4_Click() 单击按钮清空数据 Text1.Text = Text4.Text = End Sub Private Sub Command5_Click() 单击按钮开关通信端口 If Command5.Caption = 开通信端口 Then Command5.Caption = 关通信端口 COM.Enabled = False C
47、ommand2.Enabled = True Command1.Enabled = True Text2.Enabled = True Select Case COM.ListIndex 指定端口号(COM) Case 0 MSComm1.CommPort = 1 Case 1 MSComm1.CommPort = 2 Case 2 MSComm1.CommPort = 3 Case 3 MSComm1.CommPort = 4 End Select MSComm1.Settings = 9600,n,8,1 9600 波特,无校验,8 位数据位,1 位停止位 MSComm1.InputMod
48、e = comInputModeText 接收文本数据 MSComm1.InputLen = 0 读出接收缓冲区的所有内容 MSComm1.InBufferSize = 1024 MSComm1.OutBufferSize = 1024 MSComm1.RThreshold = 1 每接收到 1 个字符,发生 1 次事件 MSComm1.PortOpen = True 打开串口 Else Timer1.Enabled = False MSComm1.Output = B MSComm1.Output = B Command5.Caption = 开通信端口 COM.Enabled = True
49、 MSComm1.PortOpen = False Command2.Caption = 采集数据 Command2.Enabled = False Command1.Enabled = False Text2.Enabled = False End If End Sub Private Sub Command7_Click() 单击按钮保存温度数据 CommonDialog1.Action = 2 Open CommonDialog1.FileName For Append As #1 Write #1, Now Write #1, Text4.Text Close #1 End Sub Private Sub Form_Load() COM.AddItem COM1 COM.AddItem COM2 COM.AddItem COM3 COM.AddItem COM4 End Sub Private Sub MSComm1_OnComm() 串口接收到数据时读出数据 Select Case MSComm1.CommEvent Case comEvReceive Text1.Tex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 统编版三年级语文下册第五单元测试卷(A)(含答案)
- 政府资金补助协议
- 长沙二手房交易合同示例
- 中英俄煤炭购销合同范本
- 江苏省连云港市东海县晶都双语学校九年级化学上册 6.2 二氧化碳制取的研究教学设计 新人教版
- 高中历史 第六单元 近代欧美资产阶级的代议制 第19课 美国的联邦制教学设计 北师大版必修1
- 二手房购买定金合同样本
- 2025联合经营合同
- 商品房买卖合同
- 2025年度光伏发电系统施工及运维合同
- MOOC 警察礼仪-江苏警官学院 中国大学慕课答案
- 生产主管转正述职报告
- 行政执法考试-检察机关执法规范笔试(2018-2023年)真题摘选含答案
- 河南中医药大学(中医传承人)单招参考试题库(含答案)
- 2023年上海市静安区中考二模数学试卷含答案
- 博白芒竹编织工艺
- 华中农业大学自荐信
- 员工派驻外地工作协议
- 家国六情:蒙曼品最美唐诗
- 《拉玛泽呼吸法》课件
- 第二课美术作品与客观世界-省赛一等奖
评论
0/150
提交评论