实践Huang

更新时间:2024-05-16 06:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

工程实践

温湿度传感器实践报告

摘 要

温湿度控制已成为当今社会研究的热门项目。是工农业生产过程中必须考虑的因素。作为最常见的被控参数。温度和湿度已经不再是相互独立的物理量,而应在系统中综合考虑。利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好满足了工艺要求。在某环境中,给予温湿度传感器模拟的温度与湿度,这些模拟信号会通过温湿度的检测系统所涉及的电路,利用传感器把这些处理的信号传输给核心部件单片机,然后单片机在处理这些信号,再传输到LCD显示出数字,从而实现对温湿度的测量。

本文通过使用STC89C52单片机、DHT11传感器模块、1602液晶显示屏模块以及报警模块。简单明了可提要求。DHT11数字温湿度传感器把采集到的温湿度数据传给单片机。经过单片机的处理。准确的显示到液晶屏上。并对温湿度设置上下限。越限报警。

关键词:单片机 DHT11传感器 1602液晶显示屏 STC89C52报警

第1章 绪 论

1

工程实践

1.1 课题研究的背景

温度、湿度和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度湿度的检测与控制。并且随着人们生活水平的提高,人们对自己的生存环境越来越关注。而空气中温湿度的变化与人体的舒适度和情绪都有直接的影响,所以对温度湿度的检测及控制就非常有必要了。

随着科技的飞速发展和普及,高性能设备越来越多,各行各业对温湿度的要求也越来越高。传统的温湿度检测模式是以人为基础,依靠人工轮流值班,人工巡回查看等方式来测量和记录环境状况信息。在这种模式下,不仅效率低不利于人才资源的充分利用,而且缺乏科学性,许多重大事故都是由人为因素造成的,人工维护缺乏完整的管理系统。而问世监控系统就可以解决这样人才资源浪费,管理不及时的问题,这是由于它的智能化设计所决定的。故本次设计对于类似项目还具有普遍意义。

第2章 系统总体方案设计

2.1 功能要求

1、通过数字温湿度传感器DHT11采集温湿度数据,即时传输给单片机; 2、单片机将收到的信号进行分析和处理,将采集到时温湿度实时数据送给1602液晶显示屏;

3、通过1602LCD液晶屏完成温湿度的数据显示;

4、给定温度湿度上下限数值,设置不同的温湿度,接入蜂鸣器,实现越限报警;

2.2 设计思路

电路总体上分为温湿度采集部分、中央处理器、显示模块以及报警模块部分。以STC89C52单片机最小系统作为核心控制电路,控制DHT11传感器采集的温湿度的转换,控制1602液晶屏的显示,以及蜂鸣器的报警。具体显示内

2

工程实践

容及方式由软件来完成。采集温湿度方面由DHT11传感器来完成,它是一个数字温湿度传感器、内置模数转换,可以直接与单片机相连接。而1602液晶屏是插针式,也可以直接与单片机相连接。因此不需要手动焊接等复杂的过程。具体步骤是:按照原理图将传感器、1602液晶显示屏分别接入单片机。通过DHT11传感器采集当前的温湿度值、再经单片机,将处理后的数据传送到液晶屏上显示出来。并且接入蜂鸣器。设置温度的上下限值。实现越限报警。

2.3 总体设计框图

按照系统功能的具体要求,在保证实现其功能的然础上,尽可能降低系统成本。总体设计方案围绕上述思想,初步确定系统的方案如图2-1所示:

从图中可以看出,系统有微处理器模块、1602字符液晶显示模块、DHT11传感器模块和报警模块组成。在方案设计中,遵循简洁至上的原则,因此所有的外围模块采用串行方式与微处理器模块接口。该设计以STC89C51系列单片机为控制核心,实现温湿度采集及显示的基本功能。在设计系统时,为了更好地采用模块化设计法,分步的设计各个单元功能模块,系统的硬件部分可以分为传感器的使用、单片机控制、1602液晶显示和实现报警四大部分。

第3章 系统硬件设计

3.1 概述

此次的设计主要由4个大的模块构成,分别是主控模块、传感器模块、LCD液晶显示模块及报警模块,其中主控模块是此次毕业设计的核心模块,主要是

3

工程实践

指STC89C52芯片,它控制整个系统的运行,利用其各个口分别控制其他模块,使其他模块能够成为一个整体,实现功能的需要;报警模块主要指将蜂鸣器接入单片机电路。通过对时时温度的检测,并给定所需要的温度区间,即给定上下限值,实现越限报警;传感器模块用于实验室实时温湿度的检测、由于DHT11的数字一体性,集成了模数转换等模块。直接接单片机即可。LCD液晶显示模块同样接入单片机,完成对单片机处理后的数据进行显示。

3.2 主控模块设计

3.2.1 STC89C52芯片的简介

功能特性:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,如图3-1所示。STC89C52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

4

工程实践

管脚说明: VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,

5

工程实践

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

图3—6

总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

数字0信号表示方法如下图3-7所示:

11

工程实践

数字1信号表示方法如下图3-8所示

3.3.2 DHT11传感器模块电路设计

DHT11传感器连接STC89C51系列单片机相对比较简单。单片机的P2.0口用来

发收串行数据,即数据口。连接传感器的Pin2(单总线,串行数据)。由于测量范围电路小于20米,建议加一个5K的上拉电阻,因此在传感器的Pin2口与电源之间连接一个5K电阻。而传感器的电源端口Pin1和Pin4分别接单

12

工程实践

片机的VDD和GND端。传感器的第三脚悬浮放置。DHT11传感器原件的电路原理图如下3-9所示:

3.4 1602液晶显示模块设计 3.4.1 1602液晶显示屏简介

HJ1602A 是一种工业字符型液晶,能够同时显示16x02 即32个字符。(16列2行)。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单。

一般1602字符型液晶显示器实物如图3-10和3-11所示:

13

工程实践

(1)引脚说明:

第1脚:VSS为地电源。 第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平,R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。

(2)1602LCD的RAM地址映射以及标准字库表

14

工程实践

LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字符图有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母。

它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:1为高电平,0为低电平)。

指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H 。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 。S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 C:控制光标的开与关,高电平表示有光标,低电平表示无光标。 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 。

指令6:功能设置命令

DL:高电平时为4位总线,低电平时为8位总线。 N:低电平时为单行显示,高电平时双行显示。

F:低电平时显示5X7的点阵字符,高电平时显示5x10的点阵字符 (有

些模块是DL:高电平时为8位总线,低电平时为4位总线)。

指令7:字符发生器RAM地址设置 。 指令8:DDRAM地址设置 。

指令9:读出忙信号和光标地址。 BF为忙标志位,高电平表示忙,此时

15

工程实践

模块不能接收命令或者数据,如果为低电平表示不忙,模块就能接收相应的命令或者数据。

指令10:写数据 。 指令11:读数据 。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。

1602 内部显示地址如图3-12所示:

例如第二行第一个字符的地址是40H,那么是否直接写入40H 就可以将光标定位在第二行第 一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1,所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602 液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下图所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”。

3.4.2 1602液晶显示模块电路原理图

16

工程实践

液晶显示的原理是利用液晶的物理特性, 通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

3.5 报警模块 3.5.1 蜂鸣器介绍

蜂鸣器是一种一体化结构的电子讯响器。采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

3.5.2 蜂鸣器工作原理

17

工程实践

第4章 系统软件设计

在对我们所要设计的课题有了整体的了解之后,需要先建立程序框架的流程图,对整个设计划分模块,逐个模块实现其功能,最终把各个子模块合理的连接起来,构成总的程序。主程序首先要对整个系统进行初始化,然后将采集到的温湿度指令传给系统的主流程图如图4-1所示:

18

工程实践

4.1 1602液晶显示模块设计

液晶显示模块是一个慢显示器件,在执行每条指令之前要确认模块的忙标志为低电平,表示不忙,则此指令失效,要显示字符时要先输入显示字符地址,告诉模块在哪里现实了字符。1602液晶显示模块可与STC89C52直接接口的。软件流程图如图4-2所示:

19

工程实践

20

工程实践

图4-2 1602液晶显示模块程序流程图

4.2 传感器模块设计

温湿度模块DH11数字温湿传感器加湿器温湿度传感器随着科技的不断发展,汽车、空调、除湿器、烘干机等种类繁多的电器都已进入人们的日常生活,而这些电器设备很多都离不开对温度、湿度等环境因素的要求。因此,温度、湿度传感器用途越来越广泛。新一代的数字传感器不再需要外置的A D转换模块,并具有标准接口,使用方便,得到了越来越多的应用。DHT11作为一种新型的单总线温湿度数字传感器,具有更多的优点,它使系统设计更加简单,控制方便,易于实现。1 单总线通信简介 目前常用的微机与外设之间进行数据传输的串行总线主要有I2C总线、SPI总线和SCI总线。其中I2C总线以同步串行两线方式进行通信(1条时钟线,1条数据线),SPI总线则以同步串行三线方式进行通信(1条时钟线,1条数据输入线,1条数据输出线),而SCI总线是以异步方式进行通信的(1条数据输入线,1条数据输出线)。这些总线至少需要两条或两条以上的信号线。

DHT11传感器模块的软件流程图如下图所示

21

工程实践

图 4-3 DHT11传感器模块程序流程图

第5章 系统分析与调试

本设计是在Keil C环境下开发的,Keil C软件支持C语言的编程及调试,运用方便,是做C语言毕业设计者的首选。设计的首要任务是安装和学习

22

工程实践

使用这个软件,在简单的学习和了解Keil C后,我们便可在此环境下开始了对带录音功能的电子琴的设计工作。在编译完Keil C后,再运用STC_ISP_V480软件烧录到开发板上,实现实物与程序的连接。在烧录前要对STC_ISP_V480进行一些必要的设置。第一步:设置MCU Type为STC89C52RC;第二步:打开编写好并编译的程序文件,它是以.hex为后缀的文件;第三步:选择对应的COM端口,(可在我的电脑的设备管理处查看COM选项);第四步:点击Download/下载,等提示

在完成对程序的调试及烧录之后,还需要对其进行演示,把开发板与电脑连上,设置好对应的接口,完成供电及下载。开始供电后、稍带几秒等1602液晶屏能正常显示当前温湿度了之后。观察当前温湿度的变化。并且针对与自己设定的限值相比较。若当前温度没有超标,即没有超过限值。可以用手捂住DHT11传感器,令其温度的显示超标。测试能否达到报警。经过测试。完全可行。因而简单的实现了对温度的控制。湿度控制原理跟温度一样。

第6章 结论与展望

本系统以单片机为核心部件的控制系统,利用软件编程,最终基本上实现了各项要求。虽然系统还存在一些不足,比如温湿度测量不够精确,特别是湿度,波动较大。尝试了各种改进方法。仍然不太理想。不过大体能反映出设计的目的和要求。与预期的结果相差不多。

经过近两个月的奋斗,从确定题目,到后来查找资料,理论学习,实验编程调试,这一切都使我的理论知识和动手能力有了很大的提高。了解了单片机的硬件结构和软件编程方法,对单片机的工作方式有了很大的认知。同时,对一些外围设备比如传感器、液晶屏、键盘、蜂鸣器等有了一定的了解!学会了对一项工程如何设计:首先,要分析需要设计的系统要实现什么功能,需要什么器件;然后,针对设计购买相应的硬件,选用硬件时不仅要选用经济的,更重要的是如何能更精确更方便的完成系统的要求;再次,对各个硬件的软件

23

工程实践

实现要弄清楚,如何更好的实现各个硬件的协调,更好的通过主控制器件实现硬件的功能。最后,通过各种测试与调试,让设计更好的完成系统要求。 但因为我们的水平有限,此设计中也存在一定的不足。就比如说对湿度的控制方面,由于温度时刻都在发生着变化。而湿度的变化又大体上取决于温度。因而对于湿度的控制有点困难。同时由于湿度变化波动比较大。造成报警频繁,为湿度限值的设定也带来了不小的麻烦。

24

工程实践

致 谢

毕业在即,而毕业论文则是毕业前的最后一环,也是非常重要的一环。为期两个多月的毕业设计过程中,老师给与了我很大帮助,无论是从实习期间的懵懂状态,再到硬件设计以及毕业论文的完成后的略有小成。我都会有深深的感慨。热情的教师团队以及同学间的相互帮助,使我更加增强了团队意识以及竞争意识。

大学四年一路走来,我在课堂上学习了不少相关知识。尤其是《单片微型计算机原理与接口技术》和《传感器原理与应用技术》这两门课程为我今天的毕业设计带来了极大的帮助。把浅浅的理论上升到实践,使我对理论的掌握更加深入。从而培养了自己的动手能力,增强学习单片机的兴趣。

同时我还要感谢实习老师。经过老师的耐心讲解,我慢慢学会了各种简单元器件的使用,比如蜂鸣器,数码管,LED灯等。并能自主的设计小问题,自主的完成实验。在做毕业设计的过程中,也是指导老师给我指明了思路,包括硬件采购,电路连接以及软件程序设计等。都给我提供了相当大的帮助。在此,特意对实习老师表示深深感谢。

最后,还要对学校表示感谢。是学校给我们提供了一次难能可贵的实习机会。而实习期间,刚好排除了我们对毕业设计一点头绪也没有的烦恼。并且通过本次实习,为大家毕业设计的完成做了很大铺垫。因此,这次实习机会不仅重要,并且显得那么宝贵。还有学校从硬件方面也对我们能帮助很大。实验室老师辛苦的焊接STC89C52单片机学习板。大大的方便了我们完成毕业设计。

总之,无论是从学生、老师还是到学校。本次毕业设计过程中我受到了很大的帮助和启发。没有你们,我的毕业设计就坚持不下来。感谢你们,有了你们,我受益匪浅。

25

工程实践

附录

附录A 硬件原理图

26

工程实践

附录B 程序清单

//****************************************************************//

//

DHT21使用范例

//单片机 : AT89S52 或 STC89C52RC

// 功能 :串口发送温湿度数据 波特率 9600

//硬件连接: P2.0口为通讯口连接DHT11,DHT11的电源和地连接单片机的电源和地,单片机串口加MAX232连接电脑

// 公司 :

//****************************************************************//

#include #include

typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */

typedef signed char S8; /* defined for signed 8-bits integer variable

有符号8位整型变量 */

typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */

typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */

typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */

typedef signed long S32; /* defined for signed 32-bits

27

工程实践

integer variable 有符号32位整型变量 */

typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */

typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */

//

#define uchar unsigned char #define uint unsigned int #define Data_0_time 4

sbit P2_0 = P2^0 ; sbit P2_1 = P2^1 ; sbit P2_2 = P2^2 ; sbit P2_3 = P2^3 ; U8 U8FLAG,k; U8 U8count,U8temp;

U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; U8

U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;

U8 U8comdata;

U8 outdata[5]; //定义发送的字节数 U8 indata[5]; U8 count, count_r=0; U8 str[5]={\

28

工程实践

U16 U16temp1,U16temp2; SendData(U8 *a) {

outdata[0] = a[0]; outdata[1] = a[1]; outdata[2] = a[2]; outdata[3] = a[3]; outdata[4] = a[4]; count = 1; SBUF=outdata[0]; }

void Delay(U16 j) { U8 i; for(;j>0;j--) {

for(i=0;i<27;i++);

} }

void Delay_10us(void) { U8 i; }

29

工程实践

void COM(void) {

U8 i; for(i=0;i<8;i++) {

U8FLAG=2;

P2_1=0 ; //T P2_1=1 ; //T

while((!P2_0)&&U8FLAG++);

Delay_10us(); Delay_10us();

// Delay_10us();

U8temp=0;

if(P2_0)U8temp=1;

U8FLAG=2;

while((P2_0)&&U8FLAG++);

//---------------------- P2_1=0 ; //T P2_1=1 ; //T //----------------------

//超时则跳出for循环 if(U8FLAG==1)break; mdata<<=1;

U8comdata|=U8temp;

30

工程实践

}//rof }

//----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //----调用相关子程序如下---------- Delay();, Delay_10us();,COM(); void RH(void) {

P2_0=0; Delay(180);

P2_0=1;//总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us();

Delay_10us();//主机设为输入 判断从机响应信号

P2_0=1;//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行

if(!P2_0) {

U8FLAG=2;//判断从机是否发出 80us 的低电平响应信号是否结束

31

工程实践

while((!P2_0)&&U8FLAG++); U8FLAG=2;

//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((P2_0)&&U8FLAG++); COM();

U8RH_data_H_temp=U8comdata; COM();

U8RH_data_L_temp=U8comdata; COM();

U8T_data_H_temp=U8comdata; COM();

U8T_data_L_temp=U8comdata; COM();

U8checkdata_temp=U8comdata; P2_0=1; //数据校验

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

if(U8temp==U8checkdata_temp) {

U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp;

32

工程实践

U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp;

}//fi }//fi }

void main() {

U8 i,j;

ucharstr[6]={\ /* 系统初始化 */

TMOD = 0x20; //定时器T1使用工作方式2 TH1 = 253; // 设置初值 TL1 = 253;

TR1 = 1; // 开始计时

SCON = 0x50; //工作方式1,波特率9600bps,允许接收 ES = 1;

EA = 1; // 打开所以中断 TI = 0; RI = 0;

SendData(str) ; //发送到串口

Delay(1); //延时100US(12M晶振) while(1) { RH();

33

工程实践

str[0]=U8RH_data_H; str[1]=U8RH_data_L; str[2]=U8T_data_H; str[3]=U8T_data_L; str[4]=U8checkdata;

SendData(str) ; 发送到串口读取模块数据周期2S Delay(20000); }//elihw }// main

void RSINTR() interrupt 4 using 2 {

U8 InPut3;

if(TI==1) //发送中断 { }

if(RI==1) //接收中断 {

34

TI=0;

if(count!=5) //发送完5位数据 { }

SBUF= outdata[count]; count++;

工程实践

} }

InPut3=SBUF;

indata[count_r]=InPut3; count_r++; RI=0;

if (count_r==5)//接收完4位数据 {

count_r=0;

str[0]=indata[0]; str[1]=indata[1]; str[2]=indata[2]; }

str[3]=indata[3];

str[4]=indata[4]; P0=0;

35

本文来源:https://www.bwwdw.com/article/uwk7.html

Top