基于51单片机的数字电压表设计Word文件下载.docx

上传人:b****4 文档编号:7477921 上传时间:2023-05-08 格式:DOCX 页数:21 大小:293.39KB
下载 相关 举报
基于51单片机的数字电压表设计Word文件下载.docx_第1页
第1页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第2页
第2页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第3页
第3页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第4页
第4页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第5页
第5页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第6页
第6页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第7页
第7页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第8页
第8页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第9页
第9页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第10页
第10页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第11页
第11页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第12页
第12页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第13页
第13页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第14页
第14页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第15页
第15页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第16页
第16页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第17页
第17页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第18页
第18页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第19页
第19页 / 共21页
基于51单片机的数字电压表设计Word文件下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的数字电压表设计Word文件下载.docx

《基于51单片机的数字电压表设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字电压表设计Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。

基于51单片机的数字电压表设计Word文件下载.docx

ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

(1)实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;

有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(2)支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(3)提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;

同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

(4)具有强大的原理图绘制功能。

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。

还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。

配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:

*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

PROTEUS是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。

前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。

这在相当程度上替代了传统的单片机实验教学的功能,例:

元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。

由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。

1.3本次设计要求

本次设计的作品要求制作数字电压表的量程为0到10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压范围为-0.25v到5.25v之间,但是一般测量的直流电压范围都在这之上,所以采用电阻分压网络,设计的电压测量范围是0到25v之间,满足设计要求的最大量程5v的要求。

同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。

 

2单片机和AD相关知识

2.151单片机相关知识

51单片机是对目前所有兼容intel8031指令系统的单片机的统称。

该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。

单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。

51系列单片机内包含以下几个部件:

一个8位CPU;

一个片内振荡器及时钟电路;

4KB的ROM程序存储器;

一个128B的RAM数据存储器;

寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;

32条可编程的I/O口线;

两个16位定时/计数器;

一个可编程全双工串行口;

5个中断源、两个优先级嵌套中断结构。

51系列单片机如下图:

图151单片机引脚图

2.2A/D转换器相关知识

ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

(1)主要特性:

  1)8路输入通道,8位A/D转换器,即分辨率为8位。

  2)具有转换起停控制端。

  3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时) 

  4)单个+5V电源供电

  5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

  6)工作温度范围为-40~+85摄氏度

  7)低功耗,约15mW。

(2)内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

图2ADC0909引脚

3数字电压表系统设计

3.1系统设计框图

此次设计的是数字电压表,要求的电压范围是0~5v,而设计扩展的量程为0~25v。

系统设计主要包括四个部分:

分别是电源模块、AD模数转换部分、51单片机最小系统部分、1602液晶显示部分。

首先由单片机初始化ADC0809模数转换芯片和1602液晶显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在1602液晶上面。

如下是本次设计作品的框图:

图3系统框图

3.2单片机电路

单片机最小系统如下图所示,各个引脚都已经标出,而且四个I/O口都已经用排阵引出,方便外接I/O扩展用。

图4单片机最小系统

3.3ADC采样电路

由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000~111分别选中IN0~IN7。

ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。

CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为640KHz。

START为AD转换启动信号,正脉冲启动ADDA~ADDC选中的一路模拟信号开始转换。

OE为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0~D7输出。

EOC为转换结束信号,启动转换后EOC变为低电平,转换完成后EOC编程高电平。

图5ADC模数转换

3.4显示电路

以下是1602液晶引脚的接线图,中间没有接线的为数据控制端口。

1602字符型通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样:

图61602引脚图

3.5供电电路和参考电压

由于此次系统的芯片工作电压为+5v,所以用常用的三端稳压器LM317和LM337构成的电源系统供电,其中ADC0809要提供一个准确的参考电源才能正常的工作,而LM317正好能够达到要求。

图7系统供电部分

3.6数字电压表系统电路原理图

如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。

图8数字电压表总原理图

4软件设计

4.1系统总流程图

此次设计的数字电压表系统比较简单,就设置了一个量程为0~25v,所以没有用到按键控制,也没有其他的功能,因此程序比较简单,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,如下为系统总流程图:

图9系统流程图

4.2程序代码

/********电压表********/

#include<

reg52.h>

intrins.h>

//库函数头文件,代码中引用了_nop_()函数

/*ADC初始定义*/

sbitstart=P3^0;

//转换开始控制

sbitoe=P3^2;

//输出允许控制

sbiteoc=P3^1;

//转换结束信号

sbitclock=P3^3;

//转换时钟

sbitP0_2=P0^2;

//蜂鸣器

sbitP0_5=P0^5;

sbitP0_6=P0^6;

sbitP0_7=P0^7;

/*1602液晶初始定义*/

sbitRS=P0^0;

//读控制

sbitRW=P0^3;

//写控制

sbitE=P0^1;

//使能端

unsignedcharda0,da1,da2,da3,da4;

unsignedinttemp;

unsignedintd1,d2,d3;

unsignedchardat;

//数字电压量

unsignedcharlcdd[]="

0123456789"

;

voidlcd_w_cmd(unsignedcharcom);

//写命令函数

voidlcd_w_dat(unsignedchardat);

//写数据函数

voiddisplay(unsignedchardat);

//显示函数

unsignedcharlcd_r_start();

//读状态函数

voidint1();

//LCD初始化函数

voiddelay(unsignedchart);

//可控延时函数

voiddelay1();

//软件实现延时函数,5个机器周期

/*显示函数部分*/

voiddisplay(unsignedchardat)

{

temp=5*dat;

//量程扩大五倍

da0=temp/51/10;

//十位

da1=temp/51%10;

//个位

d1=temp%51;

d1=d1*10;

da2=d1/51;

//十分位

d2=d1%51;

d2=d2*10;

da3=d2/51;

//百分位

d3=d2%51;

d3=d3*10;

da4=d3/51;

//千分位

lcd_w_cmd(0x0c);

//设置光标不显示、不闪烁

delay(20);

lcd_w_cmd(0xc0);

//第二行起始显示地址0x80

delay

(2);

lcd_w_dat('

V'

);

//显示字符串‘volatageis’

o'

l'

a'

t'

g'

e'

'

//显示电压的大小

lcd_w_dat(lcdd[da0]);

lcd_w_dat(lcdd[da1]);

.'

//小数点

lcd_w_dat(lcdd[da2]);

lcd_w_dat(lcdd[da3]);

//百分位

lcd_w_dat(lcdd[da4]);

//单位

}

/*主函数*/

voidmain()

{

P0_2=1;

//关蜂鸣器

P0_5=P0_6=P0_7=0;

//选择000第一通道

int1();

//LCD初始化

while

(1)

{

start=0;

start=1;

//获得上升沿复位

//获得下降沿启动转换,同时ALE开锁存

do

{

clock=~clock;

//时钟信号

}

while(eoc==0);

//等待转换结束,eoc=1结束

oe=1;

//三态锁存缓冲器打开

dat=P1;

//数字电压信号输出

oe=0;

//三态锁存缓冲器关闭

display(dat);

/*延时函数*/

voiddelay(unsignedchart)

unsignedcharj,i;

for(i=0;

i<

t;

i++)

for(j=0;

j<

20;

j++);

/*延时函数1*/

voiddelay1()

_nop_();

/*LCD初始化函数*/

voidint1()

lcd_w_cmd(0x3c);

//设置工作方式

//设置光标

lcd_w_cmd(0x01);

//清屏

lcd_w_cmd(0x06);

//设置输入方式

lcd_w_cmd(0x80);

//设置初始显示位置

/*LCD读状态函数*/

//返回值:

返回状态字,最高位D7=0,LCD控制器空闲;

D7=1,LCD控制器忙

unsignedcharlcd_r_start()

unsignedchars;

RW=1;

//RW=1,RS=0,读LCD状态

delay1();

RS=0;

E=1;

//E端时序

s=P2;

//从LCD的数据口读状态

E=0;

RW=0;

return(s);

//返回读取的LCD状态字

/*LCD写命令函数*/

voidlcd_w_cmd(unsignedcharcom)

unsignedchari;

do

{//查LCD忙操作

i=lcd_r_start();

//调用读状态字函数

i=i&

0x80;

//与操作屏蔽掉低7位

}

while(i!

=0);

//LCD忙,继续查询,否则退出循环

RW=0;

delay1();

RS=0;

//RW=0,RS=0,写LCD命令字

E=1;

P2=com;

//将com中的命令字写入LCD数据口

E=0;

RW=1;

delay(255);

/*LCD写数据函数*/

voidlcd_w_dat(unsignedchardat)

{//查忙操作

RS=1;

//RW=1,RS=0,写LCD数据

//E端时序

P2=dat;

//将dat中的显示数据写入LCD数据口

5数字电压表电路仿真

5.1仿真总图

为了验证此次设计原理图的正确性,在制作实物之前用专业软件做了仿真,在Proteus软件中设置AT89C51单片机的晶振频率为12MHz。

本电路EA接高电平,没有扩展片外ROM。

如下图是此次系统仿真的总原理图部分:

图8仿真总图

通过用protues软件的仿真发现此次设计的系统原理图能够实现电压的正确测量,而且电压的误差较小,1602液晶屏能够正确显示出测量出来的结果。

5.2仿真结果显示

如下图为此次仿真的测量电压的结果的截图:

图9仿真结果显示

6系统性能分析

通过理论分析和电路仿真,现在对此次课程设计的数字电压表系统设计结果进行总结。

通过仿真我们可以看到仿真结果和理论分析是相符合的,也即此次设计的系统能够在一定的条件下达到课程设计目的,实现对外接电压的测量,电路结构简单,但是可以看出在系统的稳定性及可靠性方面做得不够。

具体体现在以下几个方面:

(1)数字电压表系统中对于外界被测电压的变化反应不够灵敏,变化比较慢,主要是因为ADC模数转换芯片的转换速率不够;

(2)数字电压表系统测量的外界电压不够准确,跟用示波器或者高精度的电压表测量的结果有偏差,主要是因为ADC芯片的位数不够;

(3)而且ADC的参考电压不准确也会造成测量结果的不准确;

(4)另外很重要的影响因素是因为AD芯片的测量输入电压最大为5v,而设计的是25v,量程扩大了五倍,运用的是电阻分压网络,如果用精密电阻可以做到很高的精度,而设计中用的是5%误差的碳膜电阻,温度系数高,而且不稳定,这是很重要的一个影响因素。

针对上述问题,理论上可以用一下方法进行改进:

(1)在换用高精度的ADC芯片能够改善测量精度的问题,一般用12位AD既能满足要求;

(2)制作高精度电压参考源,通过提高ADC模数转换芯片的参考电压的精度来提高测量的电压精度;

(3)运用高精度的金属膜电阻构成分压网络,能够最大限度提高精度;

(4)通过查阅书籍可以找到ADC0809的误差系数和碳膜电阻的温度系数,然后在编程的时候进行软件的补偿和参数校正,能够最优化的用软件来补偿硬件的误差问题,这个在编程思想中是很重要的。

虽然时间紧迫,最终按照仿真成功的原理图焊接实物,并调试,调试成功!

而且在老师的指点下,使系统得到了最大优化的提高。

7心得体会

通过与同学的讨论与认真计算设计分析所完成的,课程设计的任务是设计、组装并调试一个数字电压表测量系统。

需要我们综合运用单片机等课程的知识,通过查阅资料、方案论证与选定;

设计和选取电路和元器件;

分析指标及讨论,完成设计任务。

在这次课程设计中,我学会了怎样去根据课题的要求去设计电路和调试电路。

动手能力得到很大的提高。

从中我发现自己并不能很好的熟练去使用我所学到的高频电路知识。

在以后学习中我要加强对使用电路的设计和选用能力。

但由于电路比较简单、定型,而不是真实的生产、科研任务,所以我们基本上能有章可循,完成起来并不困难。

把过去熟悉的定型分析、定量计算逐步,元器件选择等手段结合起来,掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。

这对今后从事技术工作无疑是个很好的训练。

通过这种综合训练,我们可以掌握电路设计的基本方法,提高动手组织实验的基本技能,培养分析解决电路问题的实际本领,为以后毕业设计和从事电子实验实际工作打下基础。

同时也让我充分认识到自己的空想与实践的差别,认识莫眼高手低,莫闭门造车,知识都在不断更新和流动之中,而扎实的基础是一切创造的源泉,只有从本质上理解了原理,才能更好的于疑途寻求柳暗花明,实现在科学界的美好畅游和寻得创造的快乐。

还有就是每次在组团做试验都会感觉特别的充实,我们可以按照自己设计的电路去完成,老师也不是死板的要求我们怎么怎么,而是给了我们尽可能大的自己决定的余地,这次的元器件都是按照我们设计出来的电路参数给定的,而且每位老师都很耐心的为我们解决试验中所出现的问题,最后真心的感谢老师对我们课程设计的建议和帮助,我们才得以圆满的完成这次课程设计!

参考文献

[1]李群芳,张士军,黄建.单片微型计算机与接口技术.北京:

电子工业出版社,2008

[2]李群芳.单片机原理接口与应用.北京:

清华大学出版社,2005

[3]张迎新.单片微型计算机原理、应用及接口技术.北京:

国防工业出版社,1999

[4]高峰.单片微机应用系统设计及使用技术.北京:

机械工业出版社,2007

[5]彭伟.单片机c语音程序设计实例基于protues仿真.北京:

电子工业出版社,2007

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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