毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx

上传人:b****6 文档编号:4295858 上传时间:2022-11-29 格式:DOCX 页数:24 大小:467.05KB
下载 相关 举报
毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx_第1页
第1页 / 共24页
毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx_第2页
第2页 / 共24页
毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx_第3页
第3页 / 共24页
毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx_第4页
第4页 / 共24页
毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx

《毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx(24页珍藏版)》请在冰豆网上搜索。

毕业设计基于89C51单片机的数字式智能多路巡检仪的设计.docx

毕业设计基于89C51单片机的数字式智能多路巡检仪的设计

1引言

在工业生产中,温度是最基本的检测参数之一,温度的检测和控制直接和安全生产、产品质量、生产效率、节约能源等重大技术指标相联系。

随着半导体技术的发展,以单片机为主题,将计算机技术与测量控制技术结合起来组成的智能仪表在生产中得到了广泛的应用。

这些智能仪器自身带有微处理器,在结构上自成一体,能独立进行测试,使用灵活方便。

然而在实际工业生产活动中常常包含许多工业参数需要测量,如:

温度、湿度、压力、水位、流量等,单独使用温度计、湿度计、压力计等分别测量温度、湿度、压力等等生产现场的工艺参数已经不能适应生产和生活的需要。

数字式智能多路巡检仪可以测量多个传感器数据,通过巡回显示方式,在单台仪表上可以显示多个数据,因而可有效节省成本。

随着电子技术的飞跃发展,数据采集巡回检测已成为日益重要的检测技术,广泛应用于工农业等需要同时检测温度、湿度和压力等场合。

数据采集是工业控制等系统中的重要环节,普通电路已无法满足日常生活及工业的控制需求,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统,日益增大的市场需求,需要我们在这个方面做出更大的努力,因而需要一套完善的解决方案。

该设计正是从生产需要出发,低成本的多路数据采集系统的设计,配以不同的传感器完成各类数据的采集、显示、控制与数据汇总保存。

因此,数字式智能多路巡检仪具有十分广阔的现实市场和潜在的市场要求。

2AT89C51单片机与传感器

2.1AT89C51单片机的主要性能参数

AT89C51是一种低功耗,高性能的片内含有4KB快闪可编程/擦除只读存储器的8位COMS微控制器,使用高密度,非易失存储技术制造,并且与80C51引脚和指令系统完全兼容。

芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对存储器重复编程[1]。

 

2.2AT89C51单片机的结构及特点

AT89C51采用40引脚的双列直插式封装(DIP)形式,内部由CPU,4KB的ROM,256B的RAM,2个16位的定时/计数器T0和T1,4个8位的I/O端口和一个全双工串行通信口等部分组成。

AT89C51单片机具有系统结构简单,成本低,可靠性高,低功耗等特点。

特别是内部集成了4KB的FLASH程序存储器,使单片机系统的结构更加简单,也使其得到了广泛的应用。

同时,它还具有高级语言编程的特点,指令丰富,软件开发简单[2]。

综上所述AT89C51单片机是一款性价比很高的单片机芯片,特别适合于仪器仪表的应用。

所以本课题主要基于AT89C51单片机,设计一个多路传感器数据的测量与显示仪表。

2.3传感器

2.3.1温度传感器

由于在工业生产中,温度是最基本的检测参数之一,温度的检测和控制直接和安全生产、产品质量、生产效率、节约能源等重大技术指标相联系。

用于温度检测的传感器有热电偶、热电阻和半导体集成温度传感器。

热电偶价格便宜,但需要冷端补偿、电路设计复杂。

热电阻是中低温区最常用的一种温度检测器。

它的主要特点是测量精度高,性能稳定,测量范围广,构造简单,使用方便。

其中铂热是阻的测量精确度是最高的,它不仅广泛应用于工业测温,而且被制成标准的基准仪。

半导体集成温度传感器的主要特点是测温误差小、微功耗、适合远距离测温、线性度好、外围电路简单等[3]。

综上所述本次设计是从生产需要出发,低成本的多路数据采集系统的设计,配以不同的传感器完成各类数据的采集、显示、控制与数据汇总保存,单机实现

过去多台仪器仪表所具备的功能。

 

3系统硬件设计

3.1系统整体设计方案

本设计采用8路输入,每路输入能支持多种形式的传感器接入:

电阻式(如:

热电阻)、毫伏信号(如:

热电偶)及标准信号输入(如:

1~5VDC,4~20mA),对于不同传感器接入信号,能进行软件整定与校正;采用4个操作按钮,6位数码管作为显示,其中4位数码管用于显示数据,2位数码管显示功能号或通道号;对每个通道,传感器参数与工程参数都可以通过键盘设定。

通常情况下,仪表自动循环显示多路数据,也可通过键盘固定显示任一路数据。

硬件总体结构:

硬件部分是整个仪表的重要部分,其设计的好坏直接影响到整机的性能,本仪器以AT89C51单片机为核心。

整个硬件系统分为以下几个模块:

传感器模拟信号采集处理模块,A/D转换模块,键盘及显示模块,单片机系统模块及报警控制模块。

图1.系统方框图

3.2多路信号采集模块

3.2.1模拟信号放大电路

由于有些传感器的输出电流或电压不足以进行A/D处理,需要对信号进行转换和放大。

由于LM324四运算放大电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此本设计采用LM324作为运算放大器。

模拟信号放大电路如下图所示。

图2.模拟信号放大电路

放大倍数为1+Rf/R=1+10=11。

通过增加或去掉电阻R6可分别接收电流与电压信号。

3.2.2多路信号采集通道的选择

在本设计中,输入信号为8路的模拟信号,这就需要多通道结构。

本系统采用多路分时的模拟量输入通道。

这种结构的模拟量通道特点为:

(1)对ADC要求高。

(2)处理速度慢。

(3)硬件简单,成本低。

(4)软件比较复杂。

 

图3.多路信号采集框图

3.2.3多路信号采集的实现

本设计系统为八路的温度信号采集,而ADC0804仅为一路输入,故采用CD4051组成多路分时的模拟量信号采集电路,其硬件接口如图所示

图4.多路模拟输入电路图

3.2.4多路模拟开关CD4051

多路开关,又称“多路模拟转换器”。

多路开关通常有n个模拟量输入通道和一个公共的模拟输入端,并通过地址线上不同的地址信号把n个通道中任一通道输入的模拟信号输出,实现有n线到一线的接通功能。

反之,当模拟信号有公共输出端输入时,作为信号分离器,实现了1线到n线的分离功能。

因此,多路开关通常是一种具有双向能力的器件[4]。

所以本设计选用CD4051多路开关,它是一种单片、COMS、8通道开关。

该芯片由DTL/TTL-COMS电平转换器,带有禁止端的8选1译码器输入,分别加上控制的8个COMS模拟开关TG组成。

3.2.5多路模拟开关工作原理

CD4051作为8选1功能时,若A、B、C均为逻辑“0”(INH=0),则地址码00013经译码后使输出端OUT/IN和通道0接通。

其它情况下,输出端OUT/IN输出端OUT/IN和各通道的接通关系如下:

表1.CD4051八路通道关系表

输入状态

接通

通道

输入状态

接通

通道

INH

C

B

A

INH

C

B

A

0

0

0

0

0

0

1

0

1

5

0

0

0

1

1

0

1

1

0

6

0

0

1

0

2

0

1

1

1

7

0

0

1

1

3

1

x

x

x

均不显示

0

1

0

0

4

3.3A/D转换模块

为了把温度、湿度等信号采集电路测出的模拟信号转换成数字信号送CPU处理,本系统选用了A/D转换器ADC0804,它精度高,速度快。

由于ADC0804芯片只有一路输入,而本系统检测的多路信号输入,故选用多路选择电子开关CD4051,可输入多路模拟量。

3.3.1ADC0804主要技术指标

(1)高阻抗状态输出

(2)分辨率:

8位(0~255)

(3)存取时间:

135ms

(4)转换时间:

100ms

(5)总误差:

-1~+1LSB

(6)工作温度:

ADC0804C为0度~70度;ADC0804L为-40度~85度

(7)模拟输入电压范围:

0V~5V

(8)参考电压:

2.5V

(9)工作电压:

5V

(10)输出为三态结构

3.3.2ADC0804特点及工作原理

模数转换采用ADC0804,对输入模拟量要求:

信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路[5]。

ADC0804有20个引脚,其中11-18管脚为数字信号输出端,与单片机P1口相连;cs为片选端,接单片机P3.5口,WR接P3.6口,RD接单片机P3.7口。

CLK为时钟输入信号线,因ADC0804的内部有时钟电路,只要在外部“CLKR”和“CLKIN”两端外接一电阻电容即可产生A/D转换所要求的时钟。

通常使用2.5V作为为参考电压输入。

INTR为中断控制信号,接单片机外部中断端口,当A/D转换完后向单片机发出中断信号,等待读走数字信号,INTR也空可置不接,因为当启动A/D后一段时间后模数转换完后,等待一段时间后单片机也可以读走数字量。

 

图5.多路模拟开关及A/D转换电路图

3.4单片机系统模块

3.4.1AT89C51单片机的基本功能

AT89C51具有以下标准功能:

4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作指导下一个硬件复位[6]。

3.4.2AT89C51单片机基本工作电路

AT89C51单片机正常工作,必须连接基本电路。

基本电路包括晶振电路和复位电路[7]。

1.晶振电路

单片机的时钟信号通常有两种产生方式:

一是内部时钟方式,二是外部时钟方式。

内部时钟方式是利用单片机内部的振荡电路产生时钟信号。

外部时钟方式是把外部已有的时钟信号引入到单片机内。

本设计所采用的是内部时钟方式。

在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),作为单片机内部振荡电路的负载,构成自激振荡器,可在单片机内部产生时钟脉冲信号。

C1和C2可以稳定振荡频率,并使快速起振。

本电路选用晶振12MHz,C1=C2=30pF。

2.复位电路

复位是使单片机处于某种确定的初始状态。

单片机工作从复位开始。

在单片机RST引脚引入高电平并保持2个机器周期,单片机就执行复位操作。

复位操作有两种基本方式:

一种是上电复位,另一种是上电与按键均有效的复位。

本设计采用了后一种复位电路。

当RST获得高电平,随着电容C3的充电,RST引脚的高电平将逐渐下降。

若该高电平能保持足够2个机器周期,就可以实现复位操作。

选择C3=10µF,R1=10KΩ[7]。

图6.AT89C51单片机管脚及基本工作电路图

3.5键盘显示模块

本设计键盘显示模块采用4个操作按钮,6位数码管作为显示。

其中4位数码管用于显示数据,2位数码管显示功能号或通道号;对每个通道,传感器参数与工程参数都可以通过键盘设定。

通常情况下,仪表自动循环显示多路数据,也可通过键盘固定显示任一路数据。

3.5.1键盘控制电路设计

键盘控制电路由按键及其接口构成,键盘是单片机最简单的输入设备。

常用键盘分为独立式键盘和矩阵式键盘[8]。

本系统的输入控制简单,采用独立式键盘及接口电路。

输入电路由4个按钮开关、4个10欧的限流电阻组成;键扫描识别采用软件查询的方法。

图7.键盘输入控制电路

表2.四个独立键盘对应功能表

按键

键名

功能

S2模式切换键自动循环显示与固定显示切换

S3参数设定键传感器参数设定

S4参数设定键工程参数设定

S5通道切换键切换固定显示通道

3.5.2LED显示器的简介

LED显示器是由发光二极管组成,其中7个发光二极管按“8”行排列,用于显示数字,字母等符号,一个发光二级管圆点形状,右下角用于显示小数点,LED显示器共阴极和共阳极两种类型。

当发光二极管导通时,相应的一段笔画成小数点亮,对共阴极显示器,将共阴极COM接地,在a_q段加驱动信号,当驱动信号是高电平时,相应段发光;对共阳极显示器,将共阳极COM极接高电平,在a_q段几加驱动信号,当驱动信号是低电平时,相应段发光,从而显示相应字符。

不同的显示字符其驱动代码是不一样的,发光二极管每段流过5mA的平均电流就可以有较满意的亮度,最大电流不得超过30A,由于发光二极管是电流驱动设备,一般的I/O接口驱动能力是都是有限的,在发光二极管与接口芯片间要接驱动电路,常用的CMOS或TTL驱动器有:

74LS164,CD4094等。

3.5.3LED显示电路原理

采用LED数码管显示。

在单片机应用系统中LED显示器有动态和静态两种显示方式,所谓的静态显示方式就是需要在显示的字符各段通过连续的电流,动态显示方式就是需要显示的字符断续通过电流,对于动态显示,当需要显示多个字符时轮流给每个字符通以电流,由于轮流的速度很快,发光二极管的余辉以及人的视觉暂留等因素,虽然在同一时刻只有一个显示器通电,但人们看起来都是所有的显示器都稳定的显示。

动态显示的特点是:

单片机既要控制数码管的公共端又要控制各段发光二极管。

各数码管的相应显示发光二极管的段选信号都并联起来,接单片机的同一个I/0口,单片机控制数码管公共端的信号,称为位选信号,控制数码管各显示字段的信号称为段选信号,需要在哪些数码管上显示,先输出位选信号,选中该数码管,再输出段选信号,显示一位字符,需要显示每个字符时,用扫描的方法,依次向各个数码管输出位选信号和段选信号,显然每一瞬间只有一个数码管点亮,但由于扫描频率高,所以看上去,就好象所有的数码管都同时点亮(20ms扫描一次)[9]。

3.5.4LED显示电路的设计

在本系统中,需要显示6位数字,显示数字位数较多,而且需要循环显示。

综合比较静态显示方式和动态显示方式,同时结合本设计的实际情况,选择动态显示方式。

显示模块中,单片机AT89C51的P0.0-P0.7端作为数据输出,连接到两个锁存器74HC573对应的输入端D0-D7。

6位数码管段选线并联在一起与其中一个锁存器U1的Q0-Q7端相连,6为数码管位选与另一个锁存器U2的Q0-Q5端相连。

锁存器U1的锁存端与单片机P2.6端相连,锁存器U2的锁存端与单片机P2.7端相连。

图8.LED显示电路

3.6报警控制模块

在实际应用中,为了安全生产,对于一些重要的参数或系统部位,都设有紧急状态报警系统,以便提醒操作人员注意,或采取紧急措施。

其方法就是把计算机采集的数据或记过计算机进行数据处理、数字滤波,标度变换之后,与该参数上下限给定值进行比较,如果高于上限值(或低于下限值)则进行报警,否则就作为采样的正常值,进行显示。

3.6.1报警控制电路结构

报警控制电路由单片机AT89C51的P3.3端作输出,通过一个限流电阻与三极管C945的基极相连接。

三极管C945集电极连接压电蜂鸣器(BUZZER)的一端。

压电蜂鸣器的另一端连接电源。

报警控制电路如下图所示。

图9.报警工作电路

3.6.2报警控制电路工作过程

(1)压电蜂鸣器工作原理

压电蜂鸣器以压电陶瓷制作而成。

压电陶瓷是一类有将压力与电流相互转换能力的特殊陶瓷。

当压电陶瓷在一定方向上受到一个压力使其晶体结构发生形变时,它就会在内部产生一个电流,电流的变化与压力的变化密切相关。

反之,当在压电陶瓷上加上一定频率的电压,就会在内部产生一定频率的电流,从而就会引起压电陶瓷微小形变,这一形变带动空气发生振动。

如果频率适当,就产生蜂鸣声,可以被人耳所听见[10]。

(2)报警控制电路工作过程

报警控制信号由单片机AT89C51的P3.3端输出,通过一个限流电阻加到三极管C945的基极。

当P3.3端的输出信号发生变化时,则三极管C945将交替的工作于截止、饱和状态,形成高低电平的波,从而使压电蜂鸣器发出声音。

4系统软件设计

4.1系统总体软件设计

在本程序的设计中,A/D转换是通过每次转换完成后单片机延时接收转换结果,并将转换结果送入处理器的存储器中保存;因为在硬件结构时,就采用了独立键盘的结构,所以键盘子程序采用查询方式,以保证处理器始终都在监视键盘的动作;显示子程序采用单独的子程序,作为主程序的调用子程序,以保证LED管的连续显示。

主程序流程图如图10。

将键盘查询子程序和显示调用子程序作为它的程序运行的循环环节;A/D转换中断处理子程序,采用中断处理程序,保持了检测信号的不断及时更新;显示子程序直接通过单片机的端口,不停的送出字位显示和字数的显示;键盘处理子程序,键盘采用独立键盘,在有键按下时,首先判断那个键按下,然后根据相应的键作出相应的处理,在此程序中,键盘采用的是脉冲式按键方式,按键按下一下,处理器作出一次相应的回应,当采集信号超过报警值时,蜂鸣器发出报警。

图10.主程序流程图

4.2信号采集分析模块软件设计

4.2.1信号采集控制逻辑

将传感器输出经调整后的模拟电压输入转换器进行A/D转换,采用ADC0804其操作时序图如下

图11.ADC0804控制信号时序图

由ADC0804的时序可以知道,转换过程由一个写信号启动,转换完成后,输出INTR信号,此时可以读取数据。

之后可以进入下一个转换周期。

由ADC0804的转换时间可知,其最大采集频率为10KHZ,只要用户设置的采样频率不超过这个数值,ADC0804就可以正常的工作。

综合以上考虑,设计时要注意两点:

(1)写信号的频率要低于ADC0804的最大转换频率。

(2)在写信号之后至少要有100us的时延,才能输出读信号。

  在此,提出两种方法来实现ADC0804的控制信号时序:

(1)主动模式,在这种模式下,控制电路启动A/D转换后,在INTR信号的作用下,输出读信号,同时从ADC0804的数据总线上读入数据,之后输出一个写信号,开始下一次转换。

由于这种方式是异步进行的,读写信号彼此之间交互的产生,因此,能够满足上面提出的两点要求。

采用这种方式,其难易程度与ADC0804外部电路的接法密切相关。

(2)被动模式,在这种模式下,ADC0804的读写信号完全由控制电路按照固定的时序产生,与其自身输出无关。

采用这种方式,可以不考虑ADC0804的输出,读写信号的产生只是用到了一个计数器,实现起来比较简单,而且,只要采集频率不是很高,那么,就可以很容易满足ADC0804控制信号的时序要求。

4.2.2ADC0804转换及数据的读取

ADC0804用脉冲启动信号。

AT89C51发出指令使CS和WR同为低电平时,A/D转换被启动,ADC0804开始工作。

A/D转换被启动而在WR上升沿后100μs完成数模转换,同时INTR自动变为低电平,表示本次转换已经结束。

 

图12.A/D转换流程图

89C51要接收ADC0804转换后的数字信号。

A/D转换结束时,A/D转换芯片输出转换结束信号。

89C51A/D转换结束后即可读取转换后数据。

89C51一般可以采用3种方式和A/D转换器进行联络来实现对转换数据的读取。

本设计采用延时方式进行89C51和ADC0804间的数据读取。

采集数据时,首先89C51执行一条传送指令,在该指令执行过程中,89C51在控制总线的同时产生CS、WR低电平信号,启动A/D转换器工作,ADC0804经100μs后将输入的模拟信号转换为数字信号存在输出锁存器中,并在INTR端产生低电平表示转换结束。

当89C51设定接收延时时间到时,立即执行输入指令,以产生CS、RD低电平信号到ADC0804相应引脚,将数据取出。

A/D转换子程序

;ADC0804端口定义

;*********************************************

   cs  equ p3.6    ;定义AD的片选信号线

   wr  equ p2.0    ;定义AD的写入数据线

   rd  equ p3.7    ;定义AD的读入数据线

   out equ p1      ;定义AD转换后的数字信号送P1口

;=============================================

   org   0000h

   ajmp  main

org   004h

main:

                ;主程序

   lcall Start     ;调启动转换子程序

   lcall delay1ms  ;延时1ms

   lcall read      ;调读取转换结果子程序

   clr   wr

   mov   p0,a      ;送P0口显示当前AD转换结果

   ajmp  main

;*********************************************

;A/D转换开始

;*********************************************

Start:

   clr   cs        ;选中ADC0804

   nop

   clr   wr

   nop

   setb  wr

   nop

   setb  cs

   nop

   ret

;*********************************************

;读A/D转换结果

Read:

   movout,#0ffh

   clrcs

   nop

   clrrd

   nop

   nop

   mova,out;

   nop

   setbrd

   nop

   setbcs

   ret

;*********************************************

;延时1ms子程序

;*********************************************

delay1ms:

   movr1,#2

tt1:

movr0,#250

   djnzr0,$

   djnzr1,tt1

   ret

  

 

 

图13.信号采集子程序流程图

4.3键盘与显示模块软件设计

4.3.1键盘扫描子程序

键盘扫描子程序对按下的键进行判断,并转到按下的相应键对应的程序段,执行相应的功能。

4.3.2按键产生抖动原因及解决方案

实际中,在按下某个键时,被按按键的弹簧总会有轻微的抖动。

t1,t3分别是闭和和释放的抖动时间,抖动时间的长短与按键的机械特性有关,一般为5ms-20ms。

为确保CPU对键的一次闭和仅做一次处理,必须去抖动,这可以分别通过软件和硬件两种方法实现。

如果用硬件来实现去抖动,那就需要增加必要的元器件这样就使得电路变的复杂,而且也不经济,所以本设计选用了软件去抖动的方法

具体实现的方法就是,当CPU检测到有按键按下后通过软件延时(5ms-20ms)一段时间后再进行扫描,如果延时后检测到仍然有键按下,这时才读取键值并存入寄存器,从而达到了去抖动的效果。

4.3.3窜键的处理

用户在操作时常常因不小心同时按下了一个以上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1