本科毕业设计-便携式可燃气体检测仪_第1页
本科毕业设计-便携式可燃气体检测仪_第2页
本科毕业设计-便携式可燃气体检测仪_第3页
本科毕业设计-便携式可燃气体检测仪_第4页
本科毕业设计-便携式可燃气体检测仪_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学毕业设计(论文)报告用纸引言随着我国工农业的快速发展,现在的很多人已经过上了小康的生活,现在的家庭中都普遍用煤气或者天然气替代以前的柴火作为家庭的燃料已越来越受到工厂和城市居民的欢迎,这些燃料给我们的生活带来了很多的方便,煤气用户的增多,输送可燃性气体的各项设备也大量的增加,由于管理和使用不当,会造成气体的泄露,带来了不小的麻烦和危害,将空气污染,轻者令人头昏或呕吐,重者会引起中毒、爆炸、火灾等。这些危害当中最为突出的问题就是煤气、天然气中毒或者爆炸事件。几乎每一天都会发生这样的惨剧,报纸、网页的头版头条几乎都是这类悲痛的事件。每年因煤气泄漏造成的煤气中毒事故中,因使用热水器不当或产品本身的质量问题造成的一氧化碳中毒事故全国均有不少事例,更有甚者,因室内煤气浓度过高引起煤气爆炸的事故也不少见。所以为了防止这类悲痛的事故再是发生,保护人民的生命财产安全,必须要找到一个解决的办法。而便携式可燃气体检测仪就是为了防止这类的事故再是发生的设计出来的。当今社会,出现许多种可燃气体报警器,而这些产品大都是针对煤气的泄漏作相应的报警,即为家庭式。但是随着社会的发展,煤气报警器也在由单一的家庭式发展为小区监控。对某个区域的燃气泄漏进行监控,这是今后的发展趋势。随着人民物质生活水平的提高,燃气使用率不断增加,对于燃气泄漏的检测越来越引起大家的重视,我国许多城市已制定了一些新建住宅必须安装燃气泄漏报警器的相关规定,该型可燃气体报警器针对以上问题开发的一种安全装置,该报警器能根据可燃气体检测浓度进行声光报警,并控制相应设备进行工作,实现安全保护,是城市燃气工程中所必需的产品,所以市场前景良好,同时这也为城市居民使用燃气解除了后顾之忧。现在的城市居民居住基本上高楼大厦,每栋大厦基本上都有管理员管理,而本次设计的便携式可燃气体检测仪就更能发挥其作用了,只要家庭安装了这种装置,并且与管理员的上位机进行连接,就能让管理员实时监测。便携式可燃气体检测仪因为便捷实用,方便居民生活,所以它是当下家庭的所需。便携式可燃气体不仅能在家庭当中使用,还可以在工业当中使用,例如它安装在煤矿井中检测甲烷气体的浓度,防止瓦斯爆炸,保护矿井地下工人的人生安全,也可以安装在容易泄露可燃气体的工厂车间中。根据网上数据显示5月11日14时20分,四川省泸州市泸县富集镇桃子沟"煤矿发生瓦斯爆炸事故,截至目前,事故导致28人遇难,8人重伤,10人轻伤。此次事故是一起重大责任事故,事故原因初步分析为,桃子沟煤矿涉嫌非法组织生产,在未批区域违规设置多个作业点,在通风性差的条件下作业,导致瓦斯浓度增大,遇火爆炸。贵州省安顺市平坝县大山煤矿5月10日晚发生瓦斯爆炸事故,已造成12人死亡、2人受伤。由此可见便携式可燃气体检测仪不仅在人们的日常生活中扮演重要角色,而且在煤矿等工业中也发挥着至关重要的作用,所以实时准确测量周围环境中的可燃性气体,有毒有害气体泄露,对保护人民的身体健康和财产安全有重要意义。如何开发出稳定可靠、高性能价格比的装置,成为急需解决的课题。1研究课题概述可燃气体检测仪是一种检测泄露气体浓度的仪器仪表工具,主要是指便携式/手持式气体检测器。本课题研究的是便携式可燃气体检测仪,它的主要工作原理是利用不同的可燃气体气体传感器来检测周围环境中存在的可燃气体种类以及各种气体的成份和含量。一般认为,气体传感器的定义是以检测目标为分类基础的,也就是说,凡是用于检测气体成份和浓度的传感器都称作气体传感器(气体检测仪),不管它是用物理方法,还是用化学方法。比如,检测气体流量的传感器不被看作气体传感器,但是热导式气体分析仪却属于重要的气体传感器,尽管它们有时使用大体一致的检测原理。1.1研究目标本文所设计的可燃气体数字报警器是利用AT89S52单片机为控制核心。以MQ-X系列可燃气体传感器为采集器件,将气体传感器放置于检测的环境中,气体传感器根据可燃气体浓度的变化输出电压的值,然后通过TLC549进行模数转换,模数转换完成后送入主控芯片AT89S52进行处理,把处理得到的浓度值通过串口与上位机通信,把浓度值在上位机界面显示出来和在液晶显示屏LCD1602显示出来,以便与进行实时监测。通过外围的按键电路可以实现对报警浓度的上限值设置,当所检测到的浓度高于设置的浓度值时,主控芯片控制外围的报警电路,使发光二极管发光和蜂鸣器发出声音从而达到报警的目的。系统以AT89S52为核心,以可燃气体传感器为采集器件,TLC549作为模数转换器件,LCD1602液晶显示屏来显示实时的浓度值,MAX232串口模块为通信桥梁设计的。实现:1.能够准确的测量周围环境中的可燃气体的泄露;2.实现把采集到的模拟信号转换成数字信号;3.实现液晶屏和上位机的浓度显示;4.实现主控芯片AT89S52与上位机的通信;5实现主控芯片对各个模块的控制;6.基本实现对报警电路的控制;1.2研究方案设计是利用单片机控制技术,制作了一氧化碳、乙炔、甲烷三种气体与一体的报警器。该仪器对这三种气体进行实时监控,当这些气体的浓度超过上限值时,单片机发送所接收到的气体浓度给上位机进行实时的监测,并且单片机控制电路进行发声发光报警,时刻提醒人们,以防事故发生。基于AT89S52性价比高的优势,主要运用了AT89S52单片机进行控制。而对与报警器而言至关重要的部分是传感器,由于MQ-X系列气敏元件采用半导体敏感材料,其灵敏度、选择性、稳定性、抗干扰性、响应时间及寿命等主要性能,均达到国内先进水平.用该系列元件组装成易燃易爆气体泄漏报警器及检测装置,可广泛运用于矿山、油田、化工、国防、医药及家庭,所以在设计中采用的是MQ-X系列传感器。在模数转换这块,利用TLC549实现模数转换,TLC549是8位逐次渐进型的A/D转换器,它采用COMS工艺8个引脚双列直插式封装,与微机相连时不需要附加接口电路。为了方便用户了解浓度信息,好提前准备,还采用了显示环节。显示环节又分为液晶显示和上位机显示。显示器显示常用两种方法:静态显示和动态扫描显示。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种方法单片机中CPU的开销小。可以提供单独锁存的I/O接口电路很多。上位机显示就是通过串口连接上位机机,把要显示在上位机上的数据通过串口发送到上位机上面。总的来说,本次设计主要利用了以上的检测模块,A/D转换模块,显示模块,控制模块四大模块,组成了可燃气体探测报警器。而最核心的控制器又是由AT89S52单片机控制其余的外围电路的。所以叫基于AT89S52单片机的便携式可燃气体检测仪。1.3国内外报警行业的发展随着我国的改革开放,我国的经济科技得到了飞跃的发展,我国电子信息业在上世纪八十年代第一次腾飞后,国民经济信息化进程的加快,之后又进入持续快速发展的新时期。这个时期电子信息产业的主要特征表现为:一是正在从单一的制造业转变为物质生产与知识生产,装备制造与系统集成,硬件制造与软件制造,工业生产与信息服务相结合的现代信息产业;二是产业结构,产品结构,企业结构,运行机制,管理模式等方面发生了深刻变化;三是我国信息产业成为国民经济的支柱产业和先导产业,是新世纪的战略产业,为国民经济和社会信息化建设提供主要技术和物质支撑。报警器技术及其产业的特点是:基础、应用两头依附;技术、投资两个密集;产品、产业两大分散。基础、应用两头依附,是指报警器技术的发展依附于敏感机理、敏感材料、工艺设备和计测技术这四块基石。敏感机理千差万别,敏感材料多种多样,工艺设备各不相同,计测技术大相径庭,没有上述四块基石的支撑,报警器技术难以为继。仪器仪表行业在中国经过一个阶段的发展,已经趋近成熟。而气体报警器作为工业仪器仪表的一个重要项目,它不仅代表了仪器仪表的发展状况,也反映了工业化的发展程度。用于气体报警器的传感器也在经历着飞速的变化,经过了多次的技术创新和更新换代,传感器行业,可燃气体报警器行业又迎来了新的发展和突破。在传感器行业,一直在进行着反复试验,希望通过工程创新方法来改善传感器的灵敏度,但遗憾的是业界并没有一个新的框架来总括所有的经验法则,以作为新一代传感器的设计方法。而来自美国普度大学的工程师补足了这个遗憾,为设计可燃气体报警器传感器提供了新的途径。为了测试他们的可燃气体报警器传感器设计法则系统,他们着手研究使用哪一种纳米级传感器设计,是透过目标分子进行感测最适合的材料。研究人员过去就已经发现,当感测单个分子时(例如气体烟雾探测器或生物、化学探测器),感测组件越小越好,但其原因一直没有一个理论来解释和证实,是否与目标分子的扩散情况会限制传感器运作速度有关系。而艾姆和尼尔宣称已经证实了以上理论。首先,他们比较了传统的平面传感器组件与圆柱形的单纳米管传感器组件,结果显示较小的圆柱形传感器的灵敏度至少高出传统的平面传感器100倍,这足以证明感测器组建越小越好的理论是正确的。2主要元件简介2.1AT89S52单片机2.1.1AT89S52单片机简介AT89S52为ATMEL所生产的一种低功耗,高性能的8位微控制器,具有8K的可编程Flash存储器。是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。

AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。2.1.2AT89S52主要功能1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)3、内部程序存储器(ROM)为8KB4、内部数据存储器(RAM)为256字节5、32个可编程I/O口线6、8个中断向量源7、三个16位定时器/计数器8、三级加密程序存储器9、全双工UART串行通道2.1.3AT89S52单片机芯片引脚描述及应用AT89S52单片机如图2.1.3(a)所示:VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。图2.1.3(a)XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:P0口是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0~P2.7):P2口是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0~P1.7):P1口也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0~P3.7):P3口也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。本次设计使主控芯片能够与上位机通信的就是通过串行通信输出口来实现的。串行口发送数据时,从片内总线向发送SBUF写入数据(MOVSBUF,A),启动发送过程,由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平),A中的数据送入SBUF,在发送控制器控制下,按设定的波特率,每来一个移位脉冲,数据移出移位,先发送一位起始位(低电平),再由地位到高位一位一位通过TXD(P3.1)把数据发送到外部电缆上,数据发送完毕,最后发一位停止位(高电平),一帧数据发送结束。发送控制寄存器通过或门向CPU发出中断请求(TI=1),CPU可以通过查询TI或者相应中断的方式,将下帧一数据送入SBUF,开始发送下帧一数据。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。

如EA端为高电平(接VCC端),CPU则执行内部程序存储器的指令。

FLASH存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。AT89S52发送与接收时序图如图2.1.3(b)所示:、图2.1.3(b)AT89s52发送与接收时序图2.2MQ-X系列可燃气体传感器2.2.1传感器的定义与组成传感器是能感受规定的被测量并按照一定规律转换成可用输出信号的器件或装置。在有些国家和有些科学领域,也将传感器称为变换器、检测器或探测器等。一般来讲,传感器由敏感元件和转换元件组成。但是,由于传感器输出的信号一般都很微弱,需要有信号调节与转换电路将其放大或转换为容易传输、处理、记录和显示的形式。随着半导体器件与集成技术在传感器中的应用,传感器的信号调节与转换电路可能安装在传感器的壳体里或与敏感元件一起集成在同一芯片上。因此,信号调节与转换电路以及所需电源都应作为传感器组成的一部分。常见的信号调节与转换电路有放大器、电桥、振荡器、变阻器等等。图2.2.1为传感器组成方块图图2.2.1传感器组成方块图2.2.2MQ-X系列可燃气体传感器工作原理MQ系列气体传感器的敏感材料是活性很高的金属氧化物半导体,最常用的如SnO2。金属氧化物半导体在空气中被加热到一定温度时,氧原子被吸附在带负电荷的半导体表面,半导体表面的电子会被转移到吸附氧上,氧原子就变成了氧负离子,同时在半导体表面形成一个正的空间电荷层,导致表面势垒升高,从而阻碍电子流动(见图1)。在敏感材料内部,自由电子必须穿过金属氧化物半导体微晶粒的结合部位(晶界)才能形成电流。由氧吸附产生的势垒同样存在于晶界而阻碍电子的自由流动,传感器的电阻即缘于这种势垒。在工作条件下当传感器遇到还原性气体时,氧负离子因与还原性气体发生氧化还原反应而导致其表面浓度降低,势垒随之降低(图2和图3)。导致传感器的阻值减小。在给定的工作条件下和适当的气体浓度范围内,传感器的电阻值和还原性气体浓度之间的关系可近似由下面方程表示:其中:Rs:传感器电阻A:常数[C]:气体浓度α:Rs曲线的斜率MQ-X系列传感器属于催化燃烧行传感器。催化型可燃性气体检测仪是利用难熔金属铂丝加热后的电阻变化来测定可燃气体浓度。当可燃气体进入探测器时,在铂丝表面引起氧化反应(无焰燃烧),其产生的热量使铂丝的温度升高,而铂丝的电阻率便发生变化,所以当遇到高温等因素时铂丝的温度发生变化,而铂丝的电阻率便发生变化,探测的数据也会发生变化。2.2.3MQ-X系列可燃气体传感器操作注意事项1必须避免的情况1.1暴露于有机硅蒸气中1.2高腐蚀性的环境1.3碱、碱金属盐、卤素的污染1.4接触到水1.5结冰1.6施加电压过高2尽可能避免的情况2.1凝结水2.2处于高浓度气体中2.3长期贮存2.4长期暴露在极端环境中2.5振动2.6冲击VcVHGNDRLVcVHGNDRLVRL图2.2.3传感器测试电路图是传感器的基本测试电路。该传感器需要施加2个电压:加热器电压(VH)和测试电压(VC)。其中VH用于为传感器提供特定的工作温度。VC则是用于测定与传感器串联的负载电阻(RL)上的电压(VRL)。这种传感器具有轻微的极性,VC需用直流电源。在满足传感器电性能要求的前提下,VC和VH可以共用同一个电源电路。为更好利用传感器的性能,需要选择恰当的RL值。2.3TLC549芯片2.3.1TLC549简介TLC549是TI公司生产的一种低价位、高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,其转换速度小于17us,最大转换速率为40000HZ,4MHZ典型内部系统时钟,电源为3V至6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。2.3.2TLC549引脚及各引脚功能REF+:正基准电压输入2.5V≤REF+≤Vcc+0.1。REF-:负基准电压输入端,-0.1V≤REF-≤2.5V。且要求:(REF+)-(REF-)≥1V。VCC:系统电源3V≤Vcc≤6V。GND:接地端。/CS:芯片选择输入端,要求输入高电平VIN≥2V,输入低电平VIN≤0.8V。DATAOUT:转换结果数据串行输出端,与TTL电平兼容,输出时高位在前,低位在后。ANALOGIN:模拟信号输入端,0≤ANALOGIN≤VCC,当ANALOGIN≥REF+电压时,转换结果为全“1”(0FFH),ANALOGIN≤REF-电压时,转换结果为全“0”(00H)。I/OCLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。模数转换芯片TLC549的引脚图如图3.2.2所示:图2.3.2TLC549引脚图2.3.3TLC549工作原理当/CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DATAOUT端输出,接着要求自I/OCLOCK端输入8个外部时钟信号,前7个I/OCLOCK信号的作用,是配合TLC549输出前次转换结果的A6-A0位,并为本次转换做准备:在第4个I/OCLOCK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/OCLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。转换时间为36个系统时钟周期,最大为17us。直到A/D转换完成前的这段时间内,TLC549的控制逻辑要求:或者/CS保持高电平,或者I/OCLOCK时钟端保持36个系统时钟周期的低电平。由此可见,在自TLC549的I/OCLOCK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换开始。I/OCLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。工作时序图2.3.3TLC549工作时序图TLC549是SPI总线器件,采用简化为三线的SPI总线它,工作时序见图2.3.3所示。当/CS变为低电平后,TLC549芯片被选中,同时前次A/D转换结果的最高有效位MSB(A7)自DATAOUT端输出,接着要求自I/OCLOCK端输入8个外部时钟信号,前7个时钟信号的作用,是配合TLC549输出前次转换结果的A6-A0七位,并为本次转换做准备:在第4个I/OCLOCK信号由高至低的跳变之后,其片内采样/保持电路对输入模拟量开始采样,并在第8个I/OCLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。完成一次转换的时间为36个系统时钟周期,最大为17us。在A/D转换完成前的这段时间内,TLC549的控制逻辑要求:/CS保持高电平,或I/OCLOCK时钟端保持36个系统时钟周期的低电平。

由此可见,在TLC549的I/OCLOCK端输入8个主控器件发来的时钟信号期间,需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换开始。2.4MAX232芯片2.4.1MAX232芯片简介MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。2.4.2MAX232芯片主要特点芯片MAX232电路结构如图2.4.2所示,以及芯片所拥有的一些特性如下:符合所有的RS-232C技术标准图2.4.2MAX232芯片的内外部电路

2、只需要单一+5V电源供电

3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-

4、功耗低,典型供电电流5mA

5、内部集成2个RS-232C驱动器

6、高集成度,片外最低只需4个电容即可工作。2.4.3MAX232芯片标准应用电路电容器应选择1μF的电解电容。注意,由于RS232电平较高,在接通时产生的瞬时电涌非常高,很有可能击毁max232,所以在使用中应尽量避免热插拔。

2.5液晶显示LCD16022.5.1LCD1602液晶显示屏简介工业字符型液晶,能够同时显示16x02即32个字符(16列2行),图2.5.1是LCD1602引脚图。图2.5.1LCD1602引脚图注:为了表示的方便,后文皆以1表示高电平,0表示低电平。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2.5.2LCD1602液晶显示屏的基本参数及引脚功能1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.5.3LCD1602工作时序①当要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。

②当要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。如下图分别是LCD1602的写操作时序图、时序参数图如图2.5.3(a)、2.5.3(b)图所示图2.5.3(a)LCD1602写操作时序图图2.5.3(b)LCD1602操作时序参数3硬件设计思路3.1系统基本原理便携式可燃气体检测仪主要有三部分组成,一是检测仪器,也就是甲烷,一氧化碳,乙炔三个传感器采集空气中的可燃气体,安装在可燃气体释放源的附近环境中,当这些检测仪器检测到附近的环境中有可燃气体时,这些检测仪器就能将可燃气体浓度的变化转换成相应的模拟电信号;二是转换器,转换器的作用就是把检测仪器输出的模拟电信号转换成数字信号;三是控制器,控制器的作用是把转换器输出的数字信号进行处理并把处理过的信号浓度送到LCD1602液晶屏上显示,并能在浓度超过一定值时发出信号控制报警电路;四是显示器包括LCD1602和上位机界面,他们能实时显示控制器输出的可燃气体浓度。3.2系统硬件设计3.2.1单片机最小系统复位电路如图3.2.1(a)所示复位电路的作用图3.2.1(a)AT89S52单片机复位电路在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。基本的复位方式单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位

1、手动按钮复位

手动按钮复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。上电复位只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1µF。上电复位的工作过程是在加电时,复位电路通过电

容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,VCC的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当VCC掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。时钟电路图3.2.1(b)AT89S52单片机时钟电路单片机最小系统的时钟电路如图3.2.1(a)所示,在内部方式时钟电路中必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路通常C1和C2一般取30pF晶振的频率取值在1.2MHz12MHz之间。对于外接时钟电路要求XTAL1接地XTAL2脚接外部时钟对于外部时钟信号并无特殊要求只要保证一定的脉冲宽度时钟频率低于12MHz即可。晶体振荡器的振荡信号从XTAL2端送入内部时钟电路它将该振荡信号二分频产生一个两相时钟信号P1和P2供单片机使用。时钟信号的周期称为状态时间S它是振荡周期的2倍P1信号在每个状态的前半周期有效在每个状态的后半周期P2信号有效。CPU就是以两相时钟P1和P2为基本节拍协调单片机各部分有效工作的。整个单片机最小系统单片机单片机最小系统就有上面的复位电路,时钟电路,在加上AT89S52单片机组成。在制作单片机最小系统板时还要特别注意要在P0口上加上拉电阻,因为P0口与其他的端口不一样,AT89S52单片机内部的P0口没有上拉电阻,所以得加个排阻上去,单片机最小系统的电路图如图2.3.1(c)所示:图3.2.1(c)AT89S52单片机最小系统。3.2.2报警电路的设计报警电路是声光报警,电路由蜂鸣器和发光二极管以及一些三极管和电阻组成,如图2.3.2图所示的报警电路。三极管是为了放大从单片机输出的信号使蜂鸣器和二极管能够被驱动图3.2.2报警电路电阻为了保护单片机和蜂鸣器和发光二极管。3.2.3可燃气体传感器模块设计与制作图3.2.3可燃气体传感器模块电路所使用的可燃气体传感器都是MQ-X系列,它们的模块电路图都一样,所以可以共用一个电路图,电路图如图3.2.3所示的可燃气体传感器模块电路图。一氧化碳、甲烷、乙炔传感器的引脚都一样都是六个,每边三个;一边的1、2、3引脚都是接VCC,另一边的中间那个5引脚接个5.1欧姆的电阻R3后接地,4、6引脚短接后接个1k的电阻R5然后接地,在4、6引脚之间引线连到排针4脚,4脚就是输出的信号脚,电容C1是用来滤波的。整个可燃气体的硬件设计如下图所示3.2.4按键模块设计按键电路按键电路共由五个按键组成,这五个按键的作用分别是,设置,模式,加,减,进式。这五个按键的一端分别接P1口的P1^0、P1^1、P^2、P1^3、P^4,另一端接地。S1是设置键、S2是加键、S3是减键、S4是模式键、S5是进式键,如图3.2.4所示的按键电路图所示。当按键S1按下时,LCD1602液晶显示屏转入设置报警浓度界面,按完S1再按S4是报警界面之间的转换,可以在甲烷、乙炔、一氧化碳报警界面之间进行转换,然后进行加或者减,按键S3是进行进式转换,当按下一次加或者减就有加或者减1变为加或者减10,再按一次则加或者减100,再按一次又返回加或者减1,依此循环;当设置完成之后再按一次设置则回到原来的界面。图3.2.4按键电路3.2.5液晶显示模块设计LCD1602液晶显示模块的设计如图3.2.5所示电路;LCD1602的RS、RW、E分别接AT89S52单片机的P2^7、P2^6、P2^5引脚,数据口接AT89S52单片机的P0口。在LCD1602的第三引脚还用连接一个滑动变阻器以便达到改变LCD1602的亮度,调节到合适的亮度。图3.2.5液晶显示电路3.2.6模数转换模块设计A/D转换器是将模拟电压或电流转换成数字量的器件和设备,它是模拟系统和数字设备或计算机之间的接口。它的实现方法有很多。用于和微型计算机系统接口的A/D转换基本方法有:计数式(又称二进制斜坡法)、逐次逼近法、双积分法、电压到频率转换法、并行比较法等。其中逐次逼近法和双积分法目前应用较多,许多A/D转换器根据此原理制成。TLC549模数转换模块如图3.2.6所示:图3.2.6模数转换模块3.2.7串口下载模块设计计算机与外界进行信息交换称之为通信。它既包括计算机与外部之间,也包括计算机和计算机之间的信息交换。计算机的通信可分为并行通信和串行通信两种方式。同时传送多位数据的方式成为并行通信,如图3.2.6(a)所示,并行通信的特点是数据传输速度快,但需要的传输线多,一次成本高,适合近距离的数据通信;逐位依次传输数据的方式成为串行通信,如图3.2.6(b)所示,串行通信的特点是数据传输速度慢,但最少需要一条传输线,故成本低,适合远距离的数据通信。图3.2.6(a)图3.2.6(b)并行通信串行通信串口模块主要有max232芯片和外围的电容组成的,其电路如图3.2.6(c)图所示。串口模块起着连接主控芯片AT89S52和上位机的作用,没有串口模块的连接就不可能达到通信作用。外围的电容根据max232芯片的型号决定多大。max232芯片的引脚T2-I、R2-O起着从单片机接收、发送的作用,而T2-O、R2-I则起着往上位机发送和接收上位机发来的数据的作用。3.2.6(c)串口模块电路4系统软件设计4.1编程软件KEIL的介绍KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。KeilC51开发系统基本知识⒈系统概述KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil的优势。下面详细介绍KeilC51开发系统各部分功能和使用。⒉KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项*仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。*仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。4.2系统主程序设计4.2.1系统主程序流程图图4.2.1主程序系统流程图可燃气体被传感器检测到,然后经过模数转换后送入单片机处理,并在显示屏和上位机上实时显示出来,报警浓度可由键盘设定,当所设置的报警浓度低于所测得的浓度时,控制芯片AT89S52控制报警电路报警。系统的主程序流程图如图4.2.1图所示4.2.2系统主程序设计要点系统主程序由采集程序,显示程序,按键程序,报警程序还有串口发送程序组成。在设计程序的时候要学会利用模块化编程,模块化编程比较容易理解也更容易发现错误。模块化程序编写的原则是:不该让外界知道的信息就不应该出现在头文件里面,而外界调用模块内借口或者是借口变量所必须的信息就一定出现在头文件里面,否则,外界就无法正确的调用我们提供的借口功能。因而为了让外部函数或者文件调用我们提供的这个借口描述文件即头文件。同时我们自身模块也需要包含这份模块头文件(因为其包含了模块远文件中所需要的宏定义或者是结构体)。4.3模数转换子程序模数转换子程序就是TLC549所进行的模数转换程序。ucharTLC549ADC(void){ uchari,x; CLK=0;DAT=1;CS=0; for(i=0;i<8;i++) { CLK=1; x<<=1; if(DAT==1)x++; CLK=0; } CS=1; return(x);}4.4上位机界面程序usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO.Ports;namespaceSafetySystem{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privateSerialPortcomm=newSerialPort();privateStringBuilderbuilder=newStringBuilder();privateboolisClosing=false;//是否正在关闭串口privateboolListening=false;privateboolisAll=false;privateintlines=0;privatevoidForm1_Load(objectsender,EventArgse){//初始化下拉串口名称列表框string[]ports=SerialPort.GetPortNames();Array.Sort(ports);cboPortName.Items.AddRange(ports);cboPortName.SelectedIndex=cboPortName.Items.Count>0?0:-1;cboBaudRate.SelectedIndex=cboBaudRate.Items.IndexOf("9600");if(cboPortName.Items.Count<=0){lblInfo.Text="未找到串口";lblInfo.ForeColor=Color.Red;btnOpenClose.Enabled=false;}lblInfo.Text="找到"+cboPortName.Items.Count.ToString()+"串口";//添加事件注册comm.DataReceived+=comm_DataReceived;}voidcomm_DataReceived(objectsender,SerialDataReceivedEventArgse){if(isClosing)return;try{Listening=true;intn=comm.BytesToRead;byte[]buf=newbyte[n];//声明一个临时数组存储当前来的串口数据stringstrData;comm.Read(buf,0,n);//读取缓冲数据if(isAll){builder.Clear();//清除字符串构造器的内容}this.Invoke((EventHandler)(delegate{//直接按ASCII规则转换成字符串builder.Append(Encoding.ASCII.GetString(buf));strData=builder.ToString();txtReceive.AppendText(strData);lines++;if(strData.Contains("#")&&strData.Contains("*")){strData=strData.Replace("\0",string.Empty);strData=strData.Replace("\r\n",string.Empty);strData=strData.Replace("\r",string.Empty);strData=strData.Replace("\n",string.Empty);intstart=strData.IndexOf("*");strData=strData.Substring(start+1);strData=strData.TrimEnd('#');txtReceive.AppendText(strData+"\r\n");isAll=true;}else{isAll=false;}if(lines>10){lines=0;txtReceive.Clear();}if(isAll){string[]data=strData.Split(';');foreach(stringdatindata){string[]value=dat.Split(':');if(value[0].ToLower()=="ch4"){lblCH4.Text=Convert.ToInt32(value[1])+"PMM";}elseif(value[0].ToLower()=="co"){lblCO.Text=Convert.ToInt32(value[1])+"PMM";}elseif(value[0].ToLower()=="c2h2"){lblC2H2.Text=Convert.ToInt32(value[1])+"PMM";}}}}));}finally{Listening=false;}}privatevoidbtnOpenClose_Click(objectsender,EventArgse){//根据当前串口对象,来判断操作if(comm.IsOpen){isClosing=true;while(Listening)Application.DoEvents();//打开时点击,则关闭串口comm.Close();}else{//关闭时点击,则设置好端口,波特率后打开comm.PortName=cboPortName.Text;comm.BaudRate=int.Parse(cboBaudRate.Text);comm.ReceivedBytesThreshold=1;comm.RtsEnable=true;try{comm.Open();isClosing=false;}catch(Exceptionex){//捕获到异常信息,创建一个新的comm对象。MessageBox.Show(ex.Message);comm=newSerialPort();comm.PortName=cboPortName.Text;comm.BaudRate=int.Parse(cboBaudRate.Text);comm.ReceivedBytesThreshold=1;comm.DataReceived+=comm_DataReceived;}}//设置按钮的状态btnOpenClose.Text=comm.IsOpen?"关闭串口":"打开串口";lblInfo.Text=comm.IsOpen?"已打开":"已关闭";}}}4.5按键程序设计voidset_nongdu(){if(moshi==1&&set==1&&jia==1&&jian==1&&jinshi==1);else{keyon=1;out=0; if(set==0)keytype=0; if(jia==0)keytype=1; if(jian==0)keytype=2; if(moshi==0)keytype=3; if(jinshi==0)keytype=4;} if(keyon==1&&moshi==1&&set==1&&jia==1&&jian==1&&jinshi==1) { if(n==1) { if(keytype==3) {m++; if(m>=3)m=0; } if(m==0) { if(keytype==4)count++; if(count%3==1) { if(keytype==1)O+=1; if(keytype==2)O-=1; } if(count%3==2) { if(keytype==1)O+=10; if(keytype==2)O-=10; } if(count%3==0) { if(keytype==1)O+=100; if(keytype==2)O-=100; } } if(m==1) { if(keytype==4)count++; if(count%3==1) { if(keytype==1)W+=1; if(keytype==2)W-=1; } if(count%3==2) { if(keytype==1)W+=10; if(keytype==2)W-=10; } if(count%3==0) { if(keytype==1)W+=100; if(keytype==2)W-=100; } } if(m==2) { if(keytype==4)count++; if(count%3==1) { if(keytype==1)Q+=1; if(keytype==2)Q-=1; } if(count%3==2) { if(keytype==1)Q+=10; if(keytype==2)Q-=10; } if(count%3==0) { if(keytype==1)Q+=100; if(keytype==2)Q-=100; } } } if(keytype==0) {keyon=0; n++; if(n>1) {n=0; out=1; } } keyon=0; }}5系统调试调试一般都是在发生错误与意外的情况下使用的。如果程序能正常执行,调试很多时候都是用不上的。所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。而AT89S52单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试。5.1硬件调试在单片机开发过程中,从硬件设计到软件设计几乎是开发者针对本系统特点亲自完成的。这样虽然可以降低系统成本,提高系统的适应性,但是每个系统的调试占去了总开发时间的2/3,可见调试的工作量比较大。单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。硬件调试方法大致可以分为:5.1.1排除逻辑故障这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。5.1.2排除元器件失效

造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。

5.1.3排除电源故障

在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~4.8V之间属正常。若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。本次设计遇到过多种多样的问题,例如最普通的就是短路、断路,短路有些是由于腐蚀电路板的时候没有腐蚀干净,有些是在焊接电路板的时候焊锡连上去的,这些问题都可以通过万用表把它测出来,断路就是在腐蚀的过程中腐蚀过度导致上面线路的覆铜被腐蚀的断开,或者在焊接的时候虚焊;还有电子元件的反接,电容、二极管等这些元件比较容易反接,所以在焊接这些电子元件的时候要注意正负极,在这次设计当中我就因为AT89S52单片机的P0口上拉电阻接反因而在液晶屏上没有显示。后面遵循硬件调试的方法终于找出问题的所在,使系统能正常运行。5.2软件调试使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。本次设计的软件调试还应用到了仿真软件Proteus.Keilc51软件提供了编写程序的平台,而Proteus仿真软件则提供了仿真平台,这两者的结合就能很好的进行对设计系统的软件调试,仿真。5.3问题及解决方法在制作电路板的PCB图时,经常遇到这样那样的问题导致后面做出来的电路板不能用,或者设计得不科学,从而导致重复的画图再做板,要解决这个问题就必须在画PCB图的时候非常的小心,以及在不懂的时候多问同学。在系统的硬件部分经常遇到电路的虚短或者虚断等等问题,这些问题有些是焊接不好导致的,有些则是因为制作电路板的PCB图不对而导致的,这些问题可以耐心地通过万用表来检测。而在编写程序时也遇到不少的问题,如对一些指令不清楚、不熟悉,这时就要复习前面学过的C语言课本和单片机课本。5.4测试情况5.4.1可燃气体传感器数据采集测试可燃气体传感器所采集到的信号都是转换为电压号然后进行A/D转换送入单片机的。所以所检测到的相应电压的大小就对应相应浓度的大小。表格5.4.1是传感器输出的电压与显示屏浓度对应关系:表5.4.1电压与浓度关系对应表输入电压V00.511.522.533.544.55显示电压V0.040.540.941.541.942.542.943.444.044.444.94A/D结果05099150199250298349400449498所对应的可燃气体浓度050991501992502983494004494985.4.2串口模块测试首先利用开发板上的串口对系统版进行测试,并在互联网上下载串口助手,如果开发板上面的串口能进行发送和并且能在串口助手界面上能接收数据后;改为利用自己做的串口模块板进行测试,若不能在串口助手上正常的发送和接收数据则表明是串口模块出现了问题,就得重新对照PCB图进行测试一下串口模块的电路图。若仍然找不出问题再看一下芯片max232外围的电容是否与其匹配。5.4.3按键模块测试本次设计使用的按键都是两脚按键,所以硬件电路比较容易检测,检测完硬件电路之后,连接系统的全部电路并往主控芯片中下载程序,然后在开发板测试按键能不能用,如果在开发板上能用再在电路板上测试,如果在电路板上没有反应,则电路板上面的按键有问题。这时就应该再一次检查电路板上面的电路特别是按键电路。5.4.4液晶显示模块测试首先先测试所使用的液晶LCD1602是好是坏,如果是好的话,当做好电路板,并检测电路板没有硬件问题之后,烧录一个能用的LCD1602显示程序进AT89S52,连接系统电路,放上液晶屏看有没有在液晶上显示出来。如果还是没有,检查一下程序中的引脚程序有没有对应,特别是RW,RW,E,以及数据口,然后旋转一下调节亮度的滑动变阻器。在这次设计中,就遇到过这样的问题,把LCD1602的数据口与AT89S52的P2口放反,后面没有成功,但是硬件改过来之后就能显示出来。6结论通过这次毕业设计,使我对理论和实践之间的相互关系有了更清楚的认识,而在实践的过程中又是对理论知识的加深,所谓理论是实践的基础,只有扎实的理论知识是做好工作的前提条件。完成这个软硬结合的综合性设计,不仅使我的专业知识有所加深,而且还在设计的过程中学到了不少新的知识,特别是强化了自己充分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论