数字电压表.docx

上传人:b****8 文档编号:10330671 上传时间:2023-02-10 格式:DOCX 页数:26 大小:855.96KB
下载 相关 举报
数字电压表.docx_第1页
第1页 / 共26页
数字电压表.docx_第2页
第2页 / 共26页
数字电压表.docx_第3页
第3页 / 共26页
数字电压表.docx_第4页
第4页 / 共26页
数字电压表.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数字电压表.docx

《数字电压表.docx》由会员分享,可在线阅读,更多相关《数字电压表.docx(26页珍藏版)》请在冰豆网上搜索。

数字电压表.docx

数字电压表

单片机原理与应用课程设计说明书

题目:

基于单片机的数字电压表的设计

系部:

信息与控制工程学院

专业:

测控技术与仪器

班级:

2012级一班

学生姓名:

杨广才学号:

12031240122

指导教师:

吴萍

 

2014年12月12日

目录

1设计任务与要求1

1.1课程设计目的1

1.2课程设计任务1

1.3设计要求1

2设计方案2

2.1设计思路2

2.2器件选择2

2.3主要器件(芯片)简介3

2.3.1ADC0832简介3

2.3.274LS164简介3

2.3.3STC89C51RD简介4

2.3.4MAX232简介5

2.3.5MAX813简介5

3硬件电路设计7

图3-1硬件设计框图7

3.1模块连接图7

3.1.1A/D转换模块7

3.1.2显示控制模块8

3.1.3串口模块9

3.1.4“看门狗”模块9

3.2硬件电路总体设计9

4软件设计11

4.1软件流程图11

4.2源程序清单与注释11

4.2.1ADC0832驱动转换程序11

4.2.2位选(取位)程序13

4.2.374LS164驱动程序13

4.2.5延时程序14

4.2.6主程序14

5系统调试15

5.1软件调试15

5.2硬件调试17

6结论18

参考文献19

1设计任务与要求

本次课程设计主要是以增强型MCS-51系列单片机STC12C5A60S2的定向课题设计,我们小组的设计题目为:

基于单片机的数字电压表的设计。

下面将针对我们的设计进行详细介绍。

1.1课程设计目的

根据单片机课程所学内容,结合其他相关课程知识,设计数字电压表,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实的基础;熟悉汇编语言或C语言的程序设计方法,熟悉51系列单片机的使用方法;掌握单片机内部功能模块的应用,如定时器/计数器、中断、I/0口、串行口通讯等功能。

1.2课程设计任务

本课题实验主要采用STC89C51单片机和ADC0832芯片来完成一个简易的数字电压表,该电压表的测量电路主要有三个模块组成:

A/D转换模块、数据处理模块及显示控制模块。

A/D转换主要由芯片ADC0832来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块;数据处理则由STC89C51单片机来完成,其负责把ADC0832传送来的数据量经一定的数据处理,产生相应的显示码送到显示模块进行显示,另外它还控制着ADC0832芯片的工作,另外,在模拟仿真的时候,可使用AT89C51代替;显示模块主要由七段数码管及相应的驱动芯片(74LS164串入并出芯片)组成,显示测量到的电压值。

1.3设计要求

设计一个以单片机为核心的电压测量系统,可实现功能:

实现对输入电压值的测量,能够测量电压0—5.00V;精度达到0.01V;使用单片机STC12C5A60S2内部自带A/D实现对电位器上的0-5V范围内变化的直流电压进行测量,用一个LCD1602显示测量结果。

2设计方案

首先进行设计方案的确定,设计方案的确定主要包括以下几部分:

设计思路、器件选择、主要器件(芯片)简介三部分。

2.1设计思路

我们针对相应的设计要求,制定相应的设计方案,我们的设计方案采用“总分总”的思维模式。

首先对整个项目设计有一个整体的把握:

本课程设计,主要是对数字电压表的一个实现。

然后对整个设计进行解析:

在设计的过程中,需要有硬件的设计和软件的设计。

要实现数字电压表的硬件设计,就需要确定每个模块负责实现的任务及相关元器件的选择;软件的设计就是要在了解清楚所选元器件的特性后,对其分部分进行相应的程序编写。

最后整合在一起,形成整体规划:

制作实物模型,并烧录程序进行调试。

实际的设计思路的确定,可参考图2-1所示框图:

图2-1设计思路框图

2.2器件选择

本设计运用了五个模块,并将其组合形成最终的实物模版。

这五个模块分别为:

A/D转换模块、数据处理模块、显示控制模块、串口模块以及“看门狗”模块。

下面分别对这五个模块所选用的主要器件进行简单的介绍:

1、A/D转换模块:

选用ADC0832芯片作为模/数转换芯片。

本模块的主要作用是:

将输入进来的模拟信号通过模/数转换芯片,换成数字信号。

2、数据处理模块:

选用STC89C51单片机来充当核心数据处理模块,本模块的主要作用是:

处理来自各个芯片的数据,并将其输出。

3、显示控制模块:

本模块选用74LS164以及LED数码管共同构成。

74LS164的主要作用是:

数据以串行的方式进入,以并行的方式输出。

LED数码管的主要作用是:

显示数据。

4、串口模块:

选用MAX232芯片作为控制串口模块的主要芯片。

该模块的作用是:

在程序烧录的过程中,为数据提供通道。

5、“看门狗”模块:

选用MAX813芯片。

“看门狗”模块的主要功能是:

使“跑飞”或进入“死循环”的程序自动恢复,重新正常工作,若程序发生“死机”,则看门狗产生复位信号,引导单片机程序重新进入正常运行。

2.3主要器件(芯片)简介

2.3.1ADC0832简介

图2-2ADC0832示意图

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。

由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。

学习并使用ADC0832可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。

管脚功能介绍:

 

·CS_片选使能,低电平芯片使能。

·CH0模拟输入通道0,或作为IN+/-使用。

·CH1模拟输入通道1,或作为IN+/-使用。

·GND芯片参考0电位(地)。

·DI数据信号输入,选择通道控制。

·DO数据信号输出,转换数据输出。

·CLK芯片时钟输入。

·VCC/REF电源输入及参考电压输入(复用)。

2.3.274LS164简介

74LS164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。

74LS164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。

数据通过两个输入端之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。

两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。

下面为其管脚介绍:

CLOCK:

时钟输入端 

CLEAR:

同步清除输入端(低电平有效)  

A1、A2:

串行数据输入端 

QA-QH:

输出端

图2-374LS164示意图

2.3.3STC89C51RD简介

图2-4STC89C51示意图

STC89C51单片机中包含中央处理器、程序存储器、数据存储器、定时/计数器、UART串口、I/O接口、EEPROM、看门狗等模块。

它几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。

2.3.4MAX232简介

MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

图2-5MAX232示意图

引脚功能介绍:

第一部分是电荷泵电路。

由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)为第一数据通道。

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)。

2.3.5MAX813简介

MAX813是具有监控电路的微处理芯片,它具有4个功能:

具有独立的看门狗计时器;掉电或电源电压低于1.25V时,产生掉电输出;上电时能自动产生200ms宽的复位脉冲;具有人工复位功能。

图2-6MAX813示意图

1脚^MR:

手动复位输入端,当该端输入低电平保持140ms以上,MAX813就输出复位信号。

该输入端的最小输入脉宽要求可以有效地消除开关的抖动,^MR与TTL/CMOS兼容。

 

2脚VCC:

5V电源。

 

3脚GND:

电源地。

 

4脚PFI:

电源检测输入端。

可将需要检测的电源连接于此,不用时接地或电源。

 

5脚^PFO:

电源检测输出端。

被检测电源正常时,输出高电平,否则输出低电平。

 

6脚WDI:

看门狗输入端,俗称“喂狗”信号。

程序正常运行时,必须在小于1.6s的时间间隔内向该输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。

若超过1.6s该输入端收到脉冲信号,则内部定时器溢出,8脚由高电平变为低电平。

 

7脚RESET:

上电时自动产生200ms的复位脉冲;手动复位端输入低电平时,该端也产生复位信号输出。

 

8脚^WDO:

看门狗输出端喂狗信号在1.6s内能及时送入时,该脚即产生1个低电平信号。

3硬件电路设计

根据拟定的设计方案,在proteus中对相关模块进行连接。

本课程设计的硬件设计主要采用的方式是:

框图法,根据相应芯片、器件的特性,以单片机为中心分别进行发散的整理,最后综合形成流程图。

再根据各个芯片管脚所代表的特性,与单片机的相应管脚进行匹配,得出最后的硬件原理图。

相对应的硬件框图如下所示:

图3-1硬件设计框图

3.1模块连接图

3.1.1A/D转换模块

本数字电压表课程设计的A/D转换部分,主要是由ADC0832来完成的,在数据处理及控制模块中,通过89C51将A/D转换后的串行信号处理后,送到单片机的中,连接LED用于显示。

同时单片机控制模拟开关进行自动换档。

在输出显示模块中,采用LED显示输入电压值,连接线较少,控制方便,显示简洁且可控性强。

在进行A/D转换时,通道地址先发送到输入端。

然后在输入端加一个正跳变脉冲,将通道地址锁存到ADC0832的内部地址锁存器中,这样对应的模拟输入就和内部变换电路接通。

为了启动A/D转换,必须在开始端加一个负的跳变信号,此后变换开始进行,标志ADC0832正在工作状态的信号由高电平变为低电平。

变换结束,正在工作状态的信号又由低电平变为高电平,此时加一个高电平,即可打开数据线的三态缓冲器从D0-D7读得变换后的数据。

ADC0832的连接图如下所示:

图3-2A/D转换模块接线图

3.1.2显示控制模块

本数字电压表课程设计的显示控制模块,主要有74LS164和七段数码显示器(三个)构成。

74LS164的主要任务是减少数码管占用单片机管脚,很好的起到了一个中转作用,它的输入输出方式是串入并出,提高了单片机的工作效率。

而显示的责任则交给七段数码显示器来完成。

具体的实现过程见下图:

图3-3显示控制模块接线示意图

3.1.3串口模块

串口模块主要的任务是在电路连接完毕,将要进行程序烧录的过程中起作用的部分。

其硬件链接如下图所示:

图3-4串口模块接线示意图

3.1.4“看门狗”模块

“看门狗”模块主要由MAX813来控制,它的主要目的是对电路来进行复位。

其硬件连接如下所示:

图3-5“看门狗”模块接线示意图

3.2硬件电路总体设计

在对各个模块分别进行设计后,将各个模块的特性进行整合,结合单片机的引脚,并以单片机为中心进行模块组合。

整合后的电路整体效果,如图3-6所示:

图3-6硬件电路总体设计图

 

4软件设计

4.1软件流程图

 

 

 

图4-1软件设计流程图

4.2源程序清单与注释

4.2.1ADC0832驱动转换程序

unsignedcharADconv(void)

{

unsignedchari=0,x=0,y=0;

unsignedinttemp=0;

do//时钟12Mhz,整个转换时间为224us

{

AD0832_CLK=0;//时钟置低平

AD0832_DI=1;//开始信号为高电平

AD0832_CS=0;//片选信号置低,启动AD转换芯片

//输入开始信号(构成一个正脉冲)

_nop_();

AD0832_CLK=1;//时钟上升沿,输入开始信号

_nop_();

AD0832_CLK=0;//时钟下降沿

//模拟信号输入选择(1:

单模信号,0:

双模差分信号)

AD0832_DI=1;

_nop_();

AD0832_CLK=1;//时钟上升沿,输入开始信号

_nop_();

AD0832_CLK=0;//时钟下降沿

//模拟信号输入通道选择(1:

通道CH1,0:

通道CH0)

AD0832_DI=0;//选择通道0

_nop_();

AD0832_CLK=1;//时钟上升沿,输入开始信号

_nop_();

AD0832_CLK=0;//时钟下降沿

AD0832_DI=1;//数据线置高,准备接收数据

for(i=0;i<8;i++)//从高位移入数据

{

AD0832_CLK=1;

_nop_();

AD0832_CLK=0;//时钟下降沿,AD0832输出数据,高位(MSB)先

x=x<<1;//数据左移位,补0

if(AD0832_DI==1)

x=x|0x01;//如果数据为"1",移入1,

}//如果数据为"0",移入0,

for(i=0;i<8;i++)//从低位移入数据

{

y=y>>1;//数据左移位,补0

if(AD0832_DI==1)

y=y|0x80;//如果数据为"1",移入1,如果数据为"0",移入0

AD0832_CLK=1;

_nop_();

AD0832_CLK=0;//时钟下降沿,AD0832输出数据,高位(MSB)先

}//数据线置高,释放总线,完成一次转换

AD0832_CLK=1;

AD0832_DI=1;

AD0832_CS=1;

}

while(x-y!

=0);//判断取值,若X=Y,跳出do

returnx;

}

4.2.2位选(取位)程序

voidshow_value(ucharad_data)

{

Uinttemp=0x00;

temp=temp|ad_data;

temp=ad_data*1.9607843;//(参考电压为5V,8位。

5/255*100=1.96(取2)

dis[2]=temp/100;//取最高位

dis[1]=temp%100/10;//取中间位

dis[0]=temp%10;//取最低位

}

4.2.374LS164驱动程序

voidout_simuseri(uchardata_buf)

{

uchari;

i=8;

ACC=data_buf;

do

{

simuseri_CLK=0;

simuseri_DATA=a0;

simuseri_CLK=1;

ACC=ACC>>1;

}

while(--i!

=0);

}

4.2.4段码输出程序

voidSegDisplay()

{

out_simuseri(dis_code[dis[0]]);//输出段码

P0=SEG[0];//输出位码

delay1(5);

P0=SEGo[0];

out_simuseri(dis_code[dis[1]]);

P0=SEG[1];

delay1(5);

P0=SEGo[1];

out_simuseri(dis_code[dis[2]]|0x80);

P0=SEG[2];

delay1(5);

P0=SEGo[2];

}

4.2.5延时程序

voiddelay1(uintz)

{

uintx;

while(z>0)

{

z--;

for(x=110;x>0;x--);

}

}

4.2.6主程序

voidmain(void)

{

unsignedchardata_temp;

while

(1)

{data_temp=ADconv();

show_value(data_temp);//按位分开

SegDisplay();//显示}

}

5系统调试

5.1软件调试

软件调试是利用KEILC51软件进行调试,新建工程后新建文件,写好程序后进行编译,最后生成HEX文件,通过烧录机将程序烧入单片机即可。

KEILC51软件简介:

支持8051微控制器体系结构的KEIL开发工具,产业标准的KEILC编译器、宏汇编器、调试器、实时内核、单板计算机和仿真器,支持所有的251系列微控制器。

软件调试的过程并不是一帆风顺的,我们总共进行了5次调试,分别出现以下现象,针对相应的现象进行了修改:

1、由于仿真电路图出现错误,使得程序无法加载运行;

2、修改电路图后,加载程序,无法正常运行,经检查得出是74LS164的程序出错;

3、对出错的程序进行修改后,再次进行仿真,发现LED显示不正常;

4、对显示程序进行检查后,没有出现错误,再次检测定义字符串程序,发现错误,对其进行修改;

5、LED正常显示后,却发现精度达不到理论值,返回程序,搜集资料、重新计算;

6、仿真成功,并且达到仿真要求。

最终仿真结果如图5-1、5-2、5-3所示:

图5-1电路起始仿真图

图5-2电路中值仿真图

 

图5-3电路终止仿真图

5.2硬件调试

将源程序编译生成HEX文件用STC-ISP烧录器写入STC89C51单片机中,按照调整好的电路图焊接好万能板,将ADC0832的输入通道接上5V电压,调整电压值可以看见LED上显示出相应的数字量,如表5-1所示。

输入信号(VP-P)

输出信号(测量值)

理论值

绝对误差

相对误差

0.40v

0.41v

0.41v

0.01v

0.32%

0.63v

0.64v

0.01v

0.01v

0.18%

0.91v

0.91v

0.91v

0v

0

1.00v

1.04v

1.04v

0.01v

0.1%

1.68v

1.67v

16.6v

0.01v

0.1%

2.22v

2.21v

2.22v

0.01v

0.45%

2.82v

2.81v

2.82v

0.01v

0.37%

3.07v

3.07v

3.06v

0

0.25%

3.67v

3.67v

3.67v

0

0

4.35v

4.36v

4.35v

0.01v

0.23%

4.76v

4.76v

4.76v

0

0

5.00v

4.99v

5.00v

0.18%

表5-1调试数据表

绝对误差=|输出信号-输入信号|

相对误差=绝对误差/理论值×100%

测试结果分析:

精度是偏移误差、增益误差、积分线性误差、微分线性误差、温度漂移等综合因素引起的总误差。

因量化误差是模拟输入量在量化取整过程中引起的,因此,分辨率直接影响量化误差的大小。

量化误差是一种原理性误差,只与分辨率有关,与信号的幅度,采样速率无关,它只能减小而无法完全消除,只能使其控制在一定的范围之内,一般在±1/2LSB范围内。

除此之外,影响该转换系统的因素还有数字万用表精度以及参考电源精度等。

6结论

通过本次的单片机课程设计,我体会到了一个真理,那就是:

无论做什么事情都是靠日积月累的努力积累起来的。

单片机是一门比较难的课程,它的难度不仅在于知识点复杂,更进一步说,它真正难的是对于知识点的理解和应用。

在平时的日子里,我们总是过分注重书本上知识的学习,而忽略了动手能力时间以及知识点的应用。

本次课程设计进行了改革,感觉我们真的进入了大四,进行毕业设计的时候。

其实,我们离毕业这个词已经不远了,这次的课程设计在我看来恰巧是一个很好的机会,让我能够清楚的认清自己的位置和价值,看到自己的不足之处,及时进行补救,这是我最大的收获。

当然,在进行课程设的时候遇到了很多的问题,比如程序错误、绘图不仔细等,如果是我自己一个人来解决所有问题肯定是不会做的这么快、这么精美的。

这就显现出了团队协作的重要性。

人无法自己生存在世界上,而每一个人都有自己的长处,我很荣幸的担任我们小组的组长,我们组的成员在行动的过程中,与我平时所认识的他们完全不同,这让我有了很大的感触:

别人总是有我看不到的一面,在自己懒惰的时候,别人没准就在你看不见的地方努力着。

因此,我也要改掉我的坏习惯,多多的向别人学习请教,吸取别人的长处,多多的给予别人正确的意见,达到互利共赢的效果是最令人高兴的!

 

参考文献

[1]吴金戌.《8051单片机实践与应用》.北京:

清华大学出版社2002.23-60

[2]李建中.《单片机原理及应用》.西安电子科技大学出版社.2002.10-90

[3]房小翠.王金凤.《单片机实用系统设计技术》.国防工业出版社.1999.5-19

[4]王松武.《电子创新设计与实践》.国防工业出版社.2005.7-48

[5]彭为.单片机典型系统设计实例精讲.电子工业出版社.2002.1:

14-100

[6]朱定华.《单片机原理及接口技术实验》.北方交通大学出版社.2002.45-55

[7]王维俭.《电气主设备继电保护原理与应用》.中国电力出版社2002.11-34

潍坊学院信息与控制工程学院

单片机课程设计成绩评定表

专业班级:

姓名:

学号:

设计项目

内容

得分

备注

平时

表现

工作态度、遵守纪律、独立完成设计任务

5分

独立查阅文献、收集资料、制定课程设计方案和日程安排

5分

设计

报告

电路设计、程序设计

10分

测试方案及条件、测试结果完整性、测试结果分析

10分

摘要、设计报告正文的结构、图表规范性

10分

仿真与

实物制作

按照设计任务要求的功能仿真

15分

按照设计任务要求的实物制作

10分

按照设计任务要求的实物功能

15分

设计任务工作量、难度

15分

设计亮点

5分

综合成绩

 

指导教师

签名

 

指导老师签名:

年月日

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

当前位置:首页 > 求职职场 > 简历

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

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