说明书正文HJB课设.doc

上传人:wj 文档编号:8460437 上传时间:2023-05-13 格式:DOC 页数:27 大小:564.94KB
下载 相关 举报
说明书正文HJB课设.doc_第1页
第1页 / 共27页
说明书正文HJB课设.doc_第2页
第2页 / 共27页
说明书正文HJB课设.doc_第3页
第3页 / 共27页
说明书正文HJB课设.doc_第4页
第4页 / 共27页
说明书正文HJB课设.doc_第5页
第5页 / 共27页
说明书正文HJB课设.doc_第6页
第6页 / 共27页
说明书正文HJB课设.doc_第7页
第7页 / 共27页
说明书正文HJB课设.doc_第8页
第8页 / 共27页
说明书正文HJB课设.doc_第9页
第9页 / 共27页
说明书正文HJB课设.doc_第10页
第10页 / 共27页
说明书正文HJB课设.doc_第11页
第11页 / 共27页
说明书正文HJB课设.doc_第12页
第12页 / 共27页
说明书正文HJB课设.doc_第13页
第13页 / 共27页
说明书正文HJB课设.doc_第14页
第14页 / 共27页
说明书正文HJB课设.doc_第15页
第15页 / 共27页
说明书正文HJB课设.doc_第16页
第16页 / 共27页
说明书正文HJB课设.doc_第17页
第17页 / 共27页
说明书正文HJB课设.doc_第18页
第18页 / 共27页
说明书正文HJB课设.doc_第19页
第19页 / 共27页
说明书正文HJB课设.doc_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

说明书正文HJB课设.doc

《说明书正文HJB课设.doc》由会员分享,可在线阅读,更多相关《说明书正文HJB课设.doc(27页珍藏版)》请在冰点文库上搜索。

说明书正文HJB课设.doc

武汉理工大学《智能仪器课程设计》说明书

1绪论

数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,其精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

本系统用单片机AT89S51构成智能化数据采集和电压监控系统,具有精度高、速度快、性能稳定和电路简单且工作可靠等特点,具有很好的使用价值。

目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。

本课设用ADS7825制成数字电压表可以测量0~5V的输入电压值,ADS7825进行模数转换然后送给单片机处理,用数码显示器进行测量结果的显示。

以便于与其它设备进行数据交换,便于实现智能化控制。

该系统以单片机为核心具有如下功能:

1)能对2-4v范围变化的模拟信号进行连续采样(模拟信号中有尖峰脉冲干扰和50Hz工频干扰)和实时数字显示,采样频率为10Hz,保存最近的50个连续采样值;2)当采样值小于2v时第1个报警灯闪烁,大于4v时第2个报警灯闪烁;3)能对存在的系统误差进行线性插值校正;4)能和上位机进行串行通信,根据上位机的要求随时将采样数据上传;5)能产生占空比为20%幅度为5v的50Hz脉冲波供外设用。

本章重点对它的硬件和软件部分进行详细介绍

2方案设计

2.1A/D采样模块的选择

方案一:

利用ADS7825芯片来进行A/D转换,,它是4通道,16位模数转换器,由单一5V电源供电,数据采样及转换时间不超过25us,它的最大优点就是数据可以并行输出,又可串行输出,所以转换速度比较快,使用也很方便。

方案二:

MAX197是一种单电源,工作电压为5V,并行12位A/D转换器,其采样速率可以达到100ksps,采样有效动态范围可增至16位。

具有8个采集通道,可独立设置多种输入范围:

±10V、±5V、0V至10V或0V至5V,且任何通道的故障都不影响其他通道的变换结果。

由于该芯片在片内已有采样跟踪保持电路,内部时钟电路和内部参考电压源,所以在应用时,所需外围元件极少,因此,用MAX197构成的数据采集系统具有硬件结构简单、体积小和可扩展功能多的优点。

经比较,为了更好实现电路要求、采集精度适合,AD采样模块采用方案一。

2.2显示模块的选择

方案一:

采用液晶1602显示,它属于工业字符型液晶,能够同时显示16x02即32个字符。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

但它微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。

方案二:

采用数码管显示,数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。

LED数码管常用段数一般为7段有的另加一点,它在单片机里可以用作静态显示和动态显示,只要我们输入段码和位码,我们就可以在相应的数码管显示我们想要的数值,不断的循环移位显示,并且保证间隔时间很短,就可以动态显示了。

根据性价比和编程方便的需要,综合考虑我选择方案二

2.3总设计方案与系统框图

根据设计要求,该系统采用51内核的8位机作为控制核心,A/D转换器采用ADS7825,它是16位转换,因为要求电压显示精度要1mv,所以8位转换明显不够,所以就采用了16位转换的,数字量经过CPU处理后,转化为十进制数,这就是我们要显示出来的电压值,我们采用动态显示,把4位数字量循环显示出来,同时我们还可以利用51的定时器在P3.6引脚输出满足条件的方波,利用RS232端口可以实现单片机与PC机之间的串口通信,把单片机采集到的50个数据进行实时传送和显示。

输入AD转换的模拟信号,50hz工频干扰利用带阻滤波器消除,脉冲干扰信号采用数字滤波用软件编程加以去除,零点误差和增益误差利用软件编程进行校正。

本设计的系统框图如下图2-1所示:

LED数码显示

滤波电路

/

模拟量输入通道

A\D转换

/

单片机

PC上位机

RS232串口

方波输出

显示

报警显示

图2-1系统总设计框图

3硬件部分设计

3.1单片机系统介绍以及报警显示方波输出

本设计采用的单片机芯片为AT89C51,提供以下标准功能:

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

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

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

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

由于我们平时学习已经对它有很深的了解,所以在这里我就不对它的各个引脚功能进行详细说明。

如下图3.3所示,我们把P0口做为数码显示通道,把P1口作为A/D转换后的数字量输入通道,P3.0和P3.1作为上位机串口通信的接收发送通道,P3.2和P3.3作为报警LED灯亮灭通道,P3.6作为所需方波输出通道,P2口作为数码管位选通道以及AD芯片的控制信号。

工作原理:

A/D转换后的数字量从P1口输入,由于AD为16位转换,所以数字量分高8位和低8位进行接收,在芯片中进行处理后把模拟量电压的段码从P0口输出给数码管,其中P2.0~P2.3作为数码管的位选信号端,就可以实现动态显示。

P3.2和P3.3口我们可以用软件编程来实现报警灯的亮灭,当电压值小于2.000V时我们让P3.2口置1,这时报警灯1亮,当电压值大于4.000V时,我们让P3.3口置1,这时报警灯2亮。

要想输出符合要求的方波,我们可以编程来实现,同时还需要硬件电路实现,当P3.6口为高电平时,光电耦合器不工作,这时通过上拉电阻得到电压值5V,当P3.6口为低电平时,光耦合导通,这时输出电压为0,占空比为20%,周期为50HZ,只要利用单片机的定时器和中断编程就可以得到。

图3.1单片机芯片及电路图

3.2滤除50Hz工频干扰的滤波电路设计

滤除50HZ工频干扰的滤波电路设计,采用具有滤波,放大,反馈,调节功能的可调Q值双T有源带阻滤波电路,在有源带阻滤波电路基础上,又增加了具有反馈功能的运算放大器U2:

A和具有调节功能的电位器RW。

其中,电位器RW具有调节电路的品质因数Q的作用,Q值越大,阻带宽度越窄,选频特性越好.滤除50HZ工频干扰的滤波电路如图3.2所示,在50Hz带阻滤波电路设计中,带阻滤波器的中心频率f0=1/2πRC,所以令C4=C5=0.01uF,则R4=R5≈318.4KΩ,C11=0.02uF,R6≈159.2KΩ.调整电位器RW,使阻带中心频率在50HZ处,并且阻带带宽在2Hz以内,以达到在输出电压V0中完全滤除50HZ工频信号及其二次谐波干扰的目的.

图3.250HZ工频干扰滤波电路

3.3系统A/D转换电路介绍

由于设计要求规定电压分辨率要达到1mv,因为8位AD的分辨率为1/2^8大于0.001,所以不满足条件,所以我选择16位的AD转换器ADS7825,分辨率为1/2^16小于0.001下面对这个芯片做介绍

ADS7825是美国B-B公司生产的4通道,16位模数转换器。

它由单一5V电源供电,数据采样及转换时间不超过25μs,可输入-10.0~10.0V的模拟电压。

AD转换后的数据既可并行输出,也可串行输出,数据转换模式还可设置为4通道间连续循环转换,使用极其方便。

下面对该芯片引脚做详细说明,如下图3.1所示:

AIN0~AIN3:

4个模拟通道,可接受-10.0~10.0V的模拟输入电压。

PAR/SER:

该管脚为高电平时,数据在D0~D7脚并行输出;为低电平时,数据在SDATA脚串行输出。

BYTE:

并行数据输出选择位,仅在数据作并行输出时使用。

BYTE=1时,输出低8位D0~D7,BYTE=0时,输出高8位D0~D7。

R/C:

读数/启动转换,该管脚被一下降沿触发将保持前次的采样并启动下一次模数转换;上升沿触发,则允许读数。

BUSY:

状态标志位,只读管脚。

在AD转换过程中,该管脚输出始终保持低电平。

转换结束,数据锁存到输出寄存器后,该管脚输出高电平。

当数据作并行输出时,必须使BUSY=1,才可读数。

CONTC:

选择转换模式。

CONTC=0时,必须用CS及R/C来逐次启动AD转换;CONTC=1时,采样和读取数据在4个通道之间自动循环进行。

SYNC:

串行数据输出帧同步信号。

SYNC为输出管脚,仅在数据作串行输出时使用。

输出正脉冲时,其后沿标志着一帧数据的最高位开始输出。

TAG:

该脚仅在多个ADS7825联合工作、数据作串行输出且用外部时钟工作时才起作用。

当电路中使用单个ADS7825时,可在TAG脚接低电平。

当电路中ADS7825联合工作时,可将前一级ADS7825的SDATA脚接至后一级ADS7825的TAG脚。

第一级ADS7825的TAG脚接地,最后一级ADS7825的SDATA脚输出数据,这样,最后一级ADS7825的SDATA脚将由后级至前级依次输出各个ADS7825的转换数据。

图3.3ADS7825芯片模数转换电路

3.4零点误差和增益误差校正电路

如右图所示,它是八通道的模拟输入开关,我们利用CPU对它的控制可以进行通道输入的设置,分别在输入端接入零位电压和标准电源E,测出滤波器后的电压分别为y0和y1,得到两个方程,表示为:

0=b1y0+b0

E=b1y1+b0

把这两个方程联立后解得b1=E/(y1-y0)

b0=E/(1-y1/y0)

于是经过校正后的实际模拟电压输入量

X=E(y-y0)/(y1-y0)

图3.4多路模拟开关

自动增益校正原理如下所示:

A

微处理器

A/D转换器

图3.4.2增益自动校正原理图

3.5数码显示部分设计

数码管就采用共阴极的,由单片机P0口输给它段码,高电平有效,每个数码管显示所要的数字,另外由单片机P2.0~P2.3口来作为数码管的位选通,低电平有效,位不断的循环选通,且延时时间很短就形成了动态显示

图3.5数码显示器

3.6上位机通信电路设计

上位机通讯电路本设计采用MAX232芯片进行电平转换,MAX232芯片是美信公司专门为电脑的RS232标准串口设计的接口电路,使用+5V单电源供电,它的作用就是完成TTL电平与RS232电平的转换,即是一种把电脑的串行口RS232信号电平(-10,+10v)转换为单片机所用到的TTL信号点平(0,+5)的芯片。

MAX232引脚分布如图3.6所示,各引脚标号,作用如下:

1载波检测DCD

2接收数据RXD

3发送数据TXD

4数据终端准备好DTR

5信号地SG

6数据准备好DSR

7请求发送RTS

8清除发送CTS

9振铃提示RI

图3.6RS232串口通信电路

4系统软件部分设计

4.1A/D转换子程序

unsignedintGetAdsvalue()

{

unsignedintDianYa1=0,DianYa2=0,DianYa=0;

Delay(10);

CS_7825=0;//芯片选通使能

RC_7825=0;

RC_7825=1;//相当于给了一个高电平脉冲启动转换

nop();nop();nop();nop();

while(BUSY_7825==1);//等待转换结束

BYTE_7825=1;

Delay(10);

DianYa1=ADS_Data;//返回电压寄存器中低八位的值

BYTE_7825=0;

Delay(10);

DianYa2=ADS_Data;//返回电压寄存器中高八位的值

DianYa=DianYa2*100+DianYa1;

CS_7825=1;

returnDianYa;//返回电压寄存器中的值

}

4.2数码显示以及报警灯子程序

voidDisVoltage(unsignedintV_0804)

{doubleVoltage0=(double)V_0804;

unsignedcharGe=0;//用于存取个位数值

unsignedcharXiao1=0;//用于存取小数点后第一位数值

unsignedcharXiao2=0;//用于存取小数点后第二位数值

unsignedcharXiao3=0;//用于存取小数点后第三位数值

LED1=0;

LED2=0;

Voltage0=(60.9365619412*(Voltage0/65535))*1000;//电压值已经转换并且*1000用于提取小数点后三位

if(Voltage0<2000)

{LED1=1; }

if(Voltage0>4000)

{LED2=1; }

//提取每一位的数值

Ge=((unsignedint)Voltage0)/1000%10;

Xiao1=((unsignedint)Voltage0)/100%10;

Xiao2=((unsignedint)Voltage0)/10%10;

Xiao3=((unsignedint)Voltage0)%10;

//显示

SMG_WData=0xff;//消隐

SMG_DData=SMG_Dcode[Ge]|0x80;//段码

SMG_WData=SMG_Wcode[0];//位码

Delay(4);

SMG_WData=0xff;//消隐

SMG_DData=SMG_Dcode[Xiao1];//段码

SMG_WData=SMG_Wcode[1];//位码

Delay(4);

SMG_WData=0xff;//消隐

SMG_DData=SMG_Dcode[Xiao2];//段码

SMG_WData=SMG_Wcode[2];//位码

Delay(4);

SMG_WData=0xff;//消隐

SMG_DData=SMG_Dcode[Xiao3];//段码

SMG_WData=SMG_Wcode[3];//位码

Delay(4);

SMG_WData=0xff;

}

4.3方波输出子程序

voidTimer0(void)interrupt1using1

{

OUT=0;//输出端为0

TR0=0;//关闭计时器0

TH0=0xF1;

TL0=0x9A;//T0重新装入计数初值

}

voidTimer1(void)interrupt3using2

{

OUT=1;//输出端为1

TR0=1;//启动计时器0

TH1=0xB8;//T1重新装入计数初值

TL1=0x00;

}

voidmain()

{

OUT=0;

TMOD=0x11;//定时器设置工作方式

EA=1;//开总中断

ET0=1;//开中断允许标志位

ET1=1;

TH1=0xB8;//T1置计数初值

TL1=0x00;

TH0=0xF1;

TL0=0x9A;//T0置计数初值

TR0=1;//启动计数器

TR1=1;

while

(1)

{

DisVoltage(GetAdsvalue());

}

}

4.4各单元流程图

16进制数字量转换为10进制数

LED1报警灯亮

LED2报警灯亮

提取要显示的个位,十百千分位

位选通0,输入个位段码,延时

位选通1,输入十分位段码,延时

位选通2,输入百分位段码,延时

位选通3,输入千分位段码,延时

小于2000?

大于4000?

开始

选通ADS7825芯片

启动A/D转换

延时等待

BYTE置1,返回电压寄存器低八位

BYTE置0,返回电压寄存器高八位

合并成16位数字量

转换结束即BUSY=1?

开始

返回

图4.4.2数码显示与报警流程图

图4.4.1A/D转换流程图

定时器T0,T1设置工作方式1

置T0计数初值为0F19AH

置T1计数初值为0B800H

开中断允许位ET0和ET1

开总中断EA

启动计数器T0和T1

在主程序运行等待中断

开始

输出端P3.6=0

输出端P3.6=1

开启T0计时,TR=1

关闭T0计时,TR0=0

T0重新装入初值

T1重新装入初值

T0计时4ms后进入中断服务子程序1

T1计时20ms后进入中断服务子程序2

返回

返回

图4.4.3方波产生流程图

设定定时器3工作模式

设定波特率

设定串行口工作方式

启动定时器3

是否被应答?

发送完毕?

发送数据

发送请求

等待

计数变量+1

开始

结束

图4.4.4RS232串口通信流程图

5仿真结果

图5.1电压刚低于4V显示图

图5.2电压刚大于2V显示图

图5.3电压低于2V时报警图

图5.4电压高于4V时报警图

图5.5方波输出图

6课设总结

作为一名测控专业的大三学生,我觉得做智能仪器课程设计是十分有意义的,而且是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?

如何把我们所学的专业基础课理论知识运用到实践中去呢?

我想做类似的课程设计就为我们提供了良好的实践平台。

在这次课程设计中,我们运用到了以前所学的专业课知识,如:

Protel制图、汇编语言、模拟和数字电路知识等。

在学习的过程中带着问题去学,我发现效率很高,这是我做这次课程设计的一大收获。

同时,我认识到,要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

两周的

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2