1、基于串口通信的多点温度测试系统-课程设计说明书汇编(完整版)资料(可以直接使用,可编辑 优秀版资料,欢迎下载)基于串口通信的多点温度测试系统摘 要:为了实现了对应用环境温度的实时远程监测,避免环境温度过高过低,以保证工作的正常进行,提出一个基于串口通信的多点温度测试系统的设计方案。基于串口通信的多点温度测试系统的设计是基于AT89C51单片机和多片DS18B20单总线型数字温度传感器的多点温度检测系统,主要由AT89C51单片机,温度传感器模块,外加串口电路,报警电路,键盘模块以及显示模块组成。由芯片DS18B20采集温度信号传输给微控制器,通过外围设备显示现场温度值,并设计上位机程序通过串口
2、通信实时获取温度。系统设计包括硬件电路设计、软件设计。单片机程序采用C51,在KEIL开发环境中调试通过完成;PC后台软件采用VB6.0完成。本次设计的基于串口通信的多点温度测试系统的精度指标为非线性误差为0.5;测量范围指标是 -55+125;最后经过proteus与keil的联调可以基本实现预期目标。关键词:远程监测 多点温度 DS18B20 AT89C51 串口 Abstract: In order to realize the real-time remote monitoring of the ambient temperature of the application, avoid
3、 the environmental temperature is too high or too low, in order to ensure the normal work of the proposed a design scheme based on serial communication of the multipoint temperature test system. Based on serial communication of multi-point temperature measurement system is designed based on AT89C51
4、single chip and multi chip DS18B20 single bus digital temperature sensor of multi point temperature detection system, mainly by the AT89C51 single-chip microcomputer, temperature sensor module, plus serial circuit, alarm circuit, keyboard module and display module. The temperature signal is transmit
5、ted to the microcontroller through the chip DS18B20, and the temperature value is displayed on the peripheral device, and the host computer program is designed to obtain the temperature through the serial communication. System design includes hardware circuit design, software design. MCU program usi
6、ng C51, in the KEIL development environment, through the completion of the debugging; PC background software using VB6.0 complete. The design of the precision index of serial communication of multi-point temperature measurement system based on nonlinear error is + 0.5 DEG C; measuring range index is
7、 55 to + 125C DEG C; Finally through the Proteus and keil of the link can basically achieve the desired goal.Keywords: remote monitoring temperature,AT89C51,DS18B20,serial communication 目录1 前言12 整体方案设计32.1 方案论证32.2 方案比较43 单元模块设计53.1 AT89C51单片机电路设计53.2 温度传感器接口设计模块63.3 LED温度显示模块73.4 键盘模块73.5 报警模块83.6
8、电平转换模块84 软件设计104.1主程序软件设计104.2下位机软件设计104.3上位机软件设计115 系统技术指标及精度和误差分析136 结论147 设计小结158 参考文献16附录1:电路总图17附录2:软件代码181 前言在实际生产中,为了避免局部的温度过高或过低,需要对某个空间内多个点的温度进行监测,如温室大棚、粮仓等,以便采取相应的措施。为了改善监测人员的工作条件,监测人员一般需要远离监测对象。因此,多点温度远程监测在实际生产中具有重要的应用价值。温度测量的方法有多种,目前典型的温度测量系统是由模拟式温度传感器、A/D转换电路和单片机组成。而其中的核心便是温度传感器,温度传感器经历
9、了三个发展阶:(1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等特点,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;(2)模拟集成温度控制器。模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509;(3)智能温度传感器 (亦称数字温度传感器)。智能温度传感器是在20世纪90年代中期问
10、世的,其内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU);并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。但是,由于模拟式温度传感器输出的为模拟信号,必须经过A/D转换才能与单片机等微处理器接口,并且每个测温点都要占用单片机一个I/0口,这种系统的远距离传输使得系统非常复杂,成本较高此外,模拟传感器的信号在传输中易受干扰,降低了系统检测的精度和稳定性。温度
11、测试系统是工农业应用中一个典型且极其广泛的系统,对不同控制对象的温度进行监测具有很强的应用性。例如,目前,智能温室是在普通温室大棚的基础上,应用计算机技术、传感器技术和现代控制技术等发展起来的。一个完整的智能温室控制系统由温度控制、湿度控制、光照控制、浇灌控制、数据采集与处理等五个子系统组成,它们分别完成对作物生长条件的控制。智能温室控制是个复杂的系统,温度控制在整个控制系统中具有非常重要的地位,温室温度过高或过低均对作物的生长有重要影响。而数据采集与处理系统对系统的相关数据处理后通过控制器来对其它控制环节作相应的动作,以达到作物生长的最佳环境。为了减少温度的变化给控制系统带来不良结果,避免局
12、部温度过高,不仅需要用更精确的温度传感器对温度进行更有效的测量,也要对温室进行多点测量,做到精确测量和稳定控制。设计一种多点温度监测系统,监测中心通过PC机软件发送控制指令使数据终端相应的传感器测温,并将所测得的温度值发回保存、显示在PC机上,并且可以通过PC机绘制不同时刻的温度变化曲线,这样能有助于尽早的发现问题并解决问题,可以为节约成本和提高生产率、生产质量做出一定的贡献。由于智能温室和温室远程控制系统都属于精准农业大概念中一个重要的组成部分,为更有效的实现精准农业,真正做服务“三农”,还是很有研究意义和使用价值的。针对基于串口通信的多点温度测试系统,在讨论基于多点温度测试系统的设计方案的
13、基础上,拟设计一个基于AT89C51单片机和DS18B20智能温度传感器以及串口通信电路的系统,包括各模块硬件电路设计和软件设计,具有精度高、操作简单、价格低廉等优点。2 整体方案设计基于串口通信的多点温度测试系统为了实现对环境温度实时监控,以达到人们对温度的调控,来满足生产工作的需要,系统采用分布式思想,用上下位机(PC机与单片机)来实现温度数据收集。采用MAX232来实现上下位机的数据通信,这样既可以通过上位机实现温度数据采集与处理,也可以通过下位机实现数据的采集与显示。下位机是基于AT89C51、数字温度传感器DS18B20的单总线测温网络。系统设计灵活,抗干扰性好,适合在恶劣环境下工作
14、。2.1 方案论证针对基于串口通信的多点温度测试系统设计,可以采用两个方案,具体的方案见方案一和方案二。方案一:基于LabVIEW的多点测温系统设计方案该温度控制系统的总体设计框图如图2.1所示, 测量目标经过传感器模块后转换成电信号,在由信号调理模块对信号做简单的调理工作,将调理好的信号传送到数据采集模块中进行数据采集,然后在用软件进行特定的处理。利用NI公司的LabVIEW软件完成对信号的读取、分析、计算、存储和显示。 PC机LabVIEW软件开发平台信号采集卡测量控制对象GPIB接口仪RS2332 RS485串行口VXI接口仪器计算机网络信号设定图2.1 测温整体方案一框图方案二:基于串
15、口通信的多点测温系统设计方案该温度控制系统的总体设计框图如图2.2所示,主要由单片机、数字温度传感器DS18B20、电平转换电路、LED数码管、蜂鸣器、键盘等组成。当传感器监测到温度信息后传输给单片机,单片机对接收到的数据进行处理,将数据实时显示到LED数码管显示器上,系统设置了温度的上下限,当现场温度超过或低于这个范围时,系统就会通过蜂鸣器进行报警。显示电路AT89C51晶振电路复位电路按键设置报警电路温度采样电路PC机电平转换图 2.2 测温整体方案二框图2.2 方案比较由于方案一涉及的电路相对较复杂,需要运用的软件对我们也比较陌生,有些元器件选择比较困难而且价格昂贵,消耗的功率相对较大,
16、相比而言单片机采集数据更加方便,便于处理,而且单片机已经成为主流产品。单片机在电路上相对比较简单,而且消耗的功率相对较少,调试也较方便,还有最主要的一点是,方案二的测量精度与方案一差不多,符合经济实惠的要求,因此此设计采用了方案二。3 单元模块设计本次系统可分为六个主要板块:单片机模块;温度传感器模块;LED温度显示模块;键盘模块;报警模块;电平转换模块。 3.1 AT89C51单片机电路设计AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单
17、片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚如图3.1。 图3.1 AT89C51引脚图与MCS-51 兼容;4K字节可编程FLASH存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0Hz-
18、24MHz6. 三级程序存储器锁定;1288位内部RAM8;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。多通道智能温度测试仪设计中选用STC89C51式单片机,其最小系统主要由电复位、时钟电路组成。单片机的最小系统如图3.2所示。单片机的复位电路原理是在单片机的复位引脚RST上接电阻和电容,实现上电复位。当复
19、位电平持续两个时钟周期以上时复位有效。复位电路由按键复位和上电复位两部分组成,上电复位是在复位引脚上连接一个电容到VCC,再连接一个电阻到GND;按键复位是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。AT89C51单片机使用12MHZ的晶振作为振荡源,由于单片机内部有振荡电路,所以外部只要连接一个晶振和两个30uF的电容即可。外部晶振结合单片机内部电路产生单片机所需的时钟频率。图 3.2 单片机最小系统3.2 温度传感器接口设计模块温度传感器DS18B20是美国DALAAS公司生产的一种高精度单总线温度传感器
20、,属于智能化集成温度传感器。DS18B20的主要特征:全数字温度转换输出;先进的单总线数据通信;最高12位分辨率,精度精度可达正负0.5摄氏度;12位分辨率时的最大工作周期为750毫秒;可选择寄生工作方式;内置EEPROM,限温报警功能;64位光刻ROM,内置产品序列号,方便多机挂接;检测温度范围为-55度+125度DS18B20的内部结构图如图3.3所示。主要由4部分组成:64位ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器。温度采集电路如图3.4所示。图3.3 DS18B20内部结构图 图3.3 DBS18B20内部结构图图 3.4 DS18B20温度采集电路3.3 LE
21、D温度显示模块LED数码管与单片机的P0口相连,单片机将采集到的温度值转化为与数码管对应的数据,通过P0口输出显示。即信号通过译码管的端口a、b、c、d、e、f、g 、dp 端来控制每段译码管的亮灭与否,同时通过端口1、2、3、4 四个端口来控制四个译码管。LED数码管显示电路如图3.5所示。图 3.5 LED数码管显示电路3.4 键盘模块单片机上电运行后会提取存储器中默认的温度参数,并开始显示当前温度值,根据需要,可以通过按键修改存储器中的默认的温度参数值,故需要对系统进行按键设计。本次设计需要三个键,分别是模式切换键、加键、减键。按键接口电路如图3.6所示。SET键选择上限值或下限值设定,
22、ADD为加键,使默认值增加;DEC为减键,使默认值减少。图 3.6 按键接口电路3.5 报警模块当温度值超过系统设定的上下限时,蜂鸣器报警。报警电路如图3.7所示。图 3.7 报警电路3.6 电平转换模块AT89C51有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。我们在应用单片机的串口和PC进行串行通信时,通常都需要进行两种不同的电平之间的转换,单片机实用的是TTL电平(+5V为高电平,低电平为0V),而计算机的串口为RS-232C电平,其中高电平为-12V,低电平为+12V。这里要强调的是,RS-232C电平为负逻辑电平。我们平时用得比较多的电平转换芯片是MAX232
23、芯片,该芯片可以直接完成以上两种电平的转换。MAX232是把TTL电平从0V和5V转换到3V15V或-3V-15V之间。首先TTL电平TXD发送数据时,若发送低电平0时,这个时候Q1导通,J1的第2脚由空闲时的低电平变为高电平(如PC用中断接收的话会产生中断),满足条件。发送高电平1时,TXD为高电平,Q1截止,由于PCRXD内部为高阻,而PCTXD平时是-3V-15V,通过D1和R1将PCRXD拉低至-3V-15V,此时计算机接收到的就是1。反过来,当PC机发送数据时,由单片机来接收信号。当PCTXD为低电平-3V-15V,Q2截止,单片机的RXD端被R4拉高到5V左右,为高电平;当PCTX
24、D变高时,Q2导通,RXD被Q2拉低至低电平,这样就完成了电平之间的转换。 图3.8 max232管脚图MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口RS232电平是-10v+10v,而一般的单片机应用系统的信号电压是TTL电平0+5v,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。 该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。其主要特点
25、是:(1)单5v电源工作(2)LinBiCMOSTM工艺技(3)两个驱动器及两个接收器(4)30V输入电平(5)低电源电流:典型值是8mA (6)符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28 (7)ESD保护大于MIL-STD-883标准的2000V。第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据
26、通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从11引脚(T1IN)、10引脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7脚(T2OUT)送到电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8引脚(R2IN)输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。第三部分是供电。15脚GND、16脚VCC(+5v)。 图3.9 电平转换4 软件设计4.1主程序软件设计系统的软件采用模块化方法进行编程,主要由主程序、LED显示程序、按键处理程序、温度测试程序
27、、中断控制程序等组成。其中主程序完成系统初始化和对采集到的温度进行计算等;按键处理程序实现键盘的输入按键的识别及相关处理;温度测试程序主要完成由温度芯片传送数据的处理,并进行判断和显示;LED显示程序完成向LED的发送显示温度,控制系统的显示部分;中断控制程序则实现切换显示功能。系统工作总体流程如图它的流程图如图4.1所示。 开始温度采集温度显示系统初始化温度是否超限清狗模块报警处理事件处理模块调用控制子程序调出子程序 图4.1 主程序流程图4.2下位机软件设计下位机程序设计包含三部分:微控制器的初始化、对DS18B20的访问和对LED的读写。AT89S51是该系统的核心部分,控制着温度的转换
28、以及读取温度数值并转化成十进制数以及相应的ASCII值在LED上进行显示,通过RS232供PC机读取温度值。其主要工作流程为:初始化内部部件以达到环境运行要求、初始化DS18B20以及LED;读取温度值并将采集到的数据进行相应的转化传送到LED上进行显示;当遇到中断时,进入中断服务函数,检查上位机是否向其请求发送数据。一旦检测到正确的请求即将读取的温度数值按照一定的格式放到缓冲器中,直到数据发送结束,返回中断点继续执行原函数。开始 系统初始化启动温度转换读取温度送上位机吗显示温度 中断 否送上位机 图4.2 下位机软件流程图4.3上位机软件设计为方便进行远程控制可将采集到的温度数据通过RS_2
29、32口传输到控制中心的电脑上,以便实时监测。采用VB6.0作为开发平台,可高效快速地完成软件的开发设计。采用Viusal Basic开发串口通信程序主要有两种方法:使用MSComm串口控件;调用Window API函数。使用MSComm串口控件实现通信的方法比调用API动态链接库函数的方法方便、快捷、而且用编写代码量少的有点,可以大大地提高编程效率和系统设计的稳定性。该部分软件完成窗体的设计,设置Timer的间隔为300ms,完成MSComm控件的添加,设置其相应的属性,对所得的数据进行分析计算并在窗口中显示。读取二进制数据开始 串口开了吗 是数据分析处理 打开串口显示 时间间隔到了吗关闭窗口
30、了吗 否 是得到答应了吗 发送请求数据 否 是结束 否 图4.3 上位机软件流程图由于收发的为8位十六进制数,故可采用串行口工作方式1。双工通信要求收、发同时进行。实际上收、发操作主要是在串行口中进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据接收用中断方式进行。数据发送通过人工按下按键进行。但由于51单片机串行中断请求TI或RI合为一个中断源,响应中断以后,通过检测是否是RI置位引起的中断来决定是否接收数据。发送数据是通过调用子程序来完成。5 系统技术指标及精度和误差分析使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,显示电路,温度测试电路等)。系统自带测试表格数
31、据,观察显示数据是否相符合即可。采用温度传感器和温度计同时测量多点温度变化情况(取温度值不同的多点),目测显示电路是否正常。并记录各点温度值,与实际温度值比较,得出系统的温度指标。使用串口调试助手与单片机通讯,观察单片机与串口之间传输数据正确否。测试结果分析自检正常,各点温度显示正常,串口传输数据正确。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。设计使用LED显示,温度精确到小数点后1位。每次以0.5度增加,存在一定的误差。 图5.1温度测试仿真图系统测试技术指标及精度:(1)用于-55+125 的多点温度测量;(2)在现场要求有显示,监控计算机实现多
32、点温度实时显示,并对低于设定的最小值和高于设定的最大值的温度进行报警检测。(3)方便使用,并能达到一定的精度,电路简单,能节约成本,功耗低。稳定性指标:受电压变化引起的波动小;精度指标:非线性误差为0.5;测量范围指标: -55+125;设计(产品或技术)的用途和场所:温度测试仪能用与工业,农业等方面。比如温室大棚,育种等场合。6 结论本次设计的基于串口通信的多点温度测试系统为了实现对环境温度实时监控,以达到人们对温度的调控,来满足生产工作的需要,系统采用分布式思想,用上下位机(PC机与单片机)来实现温度数据收集。采用RS-232来实现上下位机的数据通信,这样既可以通过上位机实现温度数据采集与
33、处理,也可以通过下位机实现数据的采集与显示。下位机是基于AT89C51、数字温度传感器DS18B20的单总线测温网络。系统设计灵活,抗干扰性好,适合在恶劣环境下工作。自检正常,各点温度显示正常,串口传输数据正确。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。将硬件及软件结合起来进行系统的统一调试。实现PC机与单片机通讯,两者可以实时更新显示各点温度值。7 设计小结基于串口通信的多点温度测试系统设计以远程温度采集及控制过程设计为总目标,以AT89C51单片机最小应用系统为总控制中心,辅助设计有温度采样电路、LED数码管显示电路、串口通信电路,键盘设置电路和
34、蜂鸣器报警电路等。设计的重点、难点是:(1)要掌握温度传感器的原理、结构、应用等;(2)考虑从非电量信号到电量信号的电路实现原理以及与单片机的接口;(3)熟悉MCS-51编程的技术,实现单片机对温度的调节控制;(4)串口通信时高低电平之间的转换(5)整体电路的仿真调试。经过做这个课程设计,我加深了对已学知识,如数电,模电,智能仪器,网络化等相关知识的了解和应用。在对各个模块电路的设计中,对每个芯片和元器件的引脚和功能有进一步认识,在上网和图书馆查阅相关资料的过程中,很好地锻炼了我对有用信息的筛选能力,熟悉了资料的查询。这对我将来无论做其他的设计还是毕业设计都有很大的帮助。这次的课程设计,从刚开
35、始的方案的确定,元器件的选择,到最后总原理图的确定,每一个过程都是我自己细心完成的。在这次设计过程中,体现出自己单独设计电路的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。所以在未来的学习
36、道路上,我要端正自己的学习态度,认真去对待老师讲的每一个重要内容,熟悉各种专业的知识,完善自己的不足,多听老师的教诲,为下一次课程设计打下更好的基础。8 参考文献1 潘永雄编著.新编单片机原理与应用M.西安:西安电子科技大学出版社,2002 2 何首贤.电子技术基础M.北京:中国农业出版,2006 3 方佩敏主编.新编传感器原理应用电路详解M.北京:电子工业出版社,1993 5 金伟正.单线数字温度传感器的原理与应用J.电子技术用,2001(1):11. 7 朱宇光.单片机应用新技术教程M.上海:电子工业出版社,2007 8 江力.单片机原理与应用技术M.北京:清华大学出版社,20069 韩成
37、浩.DS18B20的实用技术及冗余校验J.微计算机信息,2021,26(5-1):123-125. 10 胡焱,周超,沈家庆,等.基于单片机的水温监控系统设计J.通信技术,2007,40(08):57-59.11 张毅刚,彭喜元著.新编MCS-51单片机应用设计M.哈尔滨工业大学出版社.2003.12 余发山,王福忠著.单片机原理及应用技术M.中国矿业大学出版社.2021.13 贺敬凯,刘德新,管明祥著.单片机系统设计、仿真与应用M.西安电子科技大学出版社.2021.14 王连英著.单片机原理及应用M.北京:化学工业出版社.2021.15 杜树春著.单片机C语言和汇编语言混合编程实践M.北京航
38、空航天大学出版社.2021.16 谭浩强著C语言程序设计教程(第三版)M北京:清华大学出版社.2005.17 康华光著.数字电子技术基础M.北京:高等教育出版社,2006.18 杨磊,王波著.电子信息类专业毕业设计指导与实例M.中国水利水电出版社.2021.19 杨凌霄著.微型计算机原理及应用M.中国电力出版社.2021.20 江世明著.基于proteus的单片机应用技术M.北京:电子工业出版社.附录1:电路总图附录2:软件代码串行口程序:ORG 0000H LJMP START ORG 0023H LJMP SIN START: MOV TMOD,#20H ;定时器T1设为方式2 MOV T
39、L1,#0FEH ;装入定时器初值 MOV TH1,#0FEH ;8位重装值 SETB TR1 ;启动定时器T1 MOV SCON,#50H ;串行口设为方式1 SETB EA ;开总中断 SETB ES ;开串行中断 MAIN: SETB P2.7 ;P2.7设为输入JB P2.7,MAIN LCALL DELAY ;延时去抖 JB P2.7,MAIN LCALL SOUT ;调用发送子程序 NEXT: JNB P2.7,NEXT ;等待按键释放 LCALL DELAY JNB P2.7,NEXT LJMP MAIN ;串行中断服务程序 SIN: JNB RI,FANHUI ;判断是否为接收
40、引起的中断 MOV A,SBUF ;从接收缓冲器读入数据 MOV P1,A ;送P1口显示 FANHUI: CLR RI CLR TI RETI ;发送子程序 SOUT: MOV P0,#0FFH ;P0口设为输入口 MOV A,P0 ;P0口状态送累加器A MOV SBUF,A ;把数据写入发送缓冲器 RET DELAY: MOV R6,#64H 延时10ms子程序D1: MOV R5,#0EH NOP D2: NOP NOP DJNZ R5,D2 DJNZ R6,D1 RET END主函数:void main () int(); while(1) write_wendu1(5,CNT);
41、/显示倒计时初始值 if(s2=0) /调整上限 while(s2=0); CNT+;if(CNT99)CNT=0; if(s3=0) /调整下限 while(s3=0); CNT-;if(CNT0;CNT-) write_wendu1(5,CNT); delay(1000); disp(); /显示字符 TR0=1; /开启定时器,定时采集温度 while(1) keyscan(); baojing(); 中断定时: void timer0() interrupt 1 TL0=(65536-50000)%256;/定时50ms TH0=(65536-50000)/256; wendu=ReadTemp(); write_wendu(9, wendu); /*ds18b20子程序*/ /*ds18b20延迟子函数(晶振12MHz )*/ #include #define uchar unsigned char sbit DQ=P12; int xs; void delay_18B20(unsigned int i) while(i-); /*ds18b20初始化函数*/ void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(8); /稍做延时 DQ = 0; /单片机