基于单片机的数字电压表的设计.docx
《基于单片机的数字电压表的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表的设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于单片机的数字电压表的设计
基于单片机的数字电压表的设计任务书
1.课程设计的内容和要求(包括原始数据、技术要求、工作要求等):
一、设计电压测量电路
数字式电压表是电压测量的常用仪表,本课题即要求应用单片机、A/D转换器及其他器件组成数字式电压检测仪表。
二、主要技术指标与要求:
2.1基本要求:
(1)电压测量范围0-5V;
(2)能用数码管显示电压值;
(3)测量精度达0.1V;
(4)要求系统具备复位功能;
2.2发挥部分:
(1)电压测量范围5—20V;
(3)电压表具备20V超量程报警功能;
(4)测量精度:
0-5V内可调可达0.02V,5-20V可达0.1V;
(5)尽可能减少芯片的使用节能成本;
三.设计思路
(1)方案的对比和确定
(2)硬件电路设计
a)AT89S52-24PU是DIPloma-40集成电路芯片,该芯片有4个八位并行的双向I/O口,分别为P0、P1、P2、P3、口.AT89S52具有较大程序存储空间和数据存储空间能满足用户的需要易于实现功能拓展,AT89S52内部置有ISP在线编程技术可以应用下载线直接连到计算机的并口相连就可烧写程序。
b)ADC0809CCN是CMOS器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”。
利用它可直接输入8个单端的模拟信号分时进行A/D转换。
c)LED84S-------LED动态显示模块.12引脚,包含四个数码管,应用起来相当简便。
(3)程序设计
i.由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。
因此产生CLK信号的方法就得用软件来产生了。
ii.由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值 (D/256*VREF)
(4)结果分析
参照实验现象和结果进行必要的分析和思考
2.对课程设计成果的要求〔包括图表、实物等硬件要求〕:
(1)设计电路,安装调试或仿真,分析实验结果,并写出设计说明书。
(2)做出实物,有良好的性能。
3.主要参考文献:
[1]何立民.单片机高级教程,[M].北京:
北京航空航天大学出版社,2007
[2]肖洪兵高茂科.CAI课件自主开发
[3]杭和平.单片机原理与应用[M].北京:
机械工业出版社,2008
[4].ATMEL公司AT89S52的技术手册
[4].豆丁文档.基于单片机的数字电压表的设计
[6]吴金戌等.8051单片机实践与应用.北京:
清华大学出版社,2002
[7]张友德等单片微型机原理、应用和实验复旦大学出版社
[8]徐爱军.单片机高级语言C51[M].北京:
电子工业出版社,2001
[9]深圳市中源单片机发展有限公司AT89C52Datasheets
[10]赵伟军.PROTEL99SE教程.人民邮电出版社.2004
4.课程设计工作进度计划:
序号
起迄日期
工作内容
1
2010-12-20
布置任务,教师讲解设计方法及要求
2
2010-12-21
学生查找阅读资料,并确定方案
3
2010-12-22
学生讨论方案
5
2010-12-24~2010-12-29
制作实物并写说明书
6
2010-12-30
答辩
7
2010-12-31
答辩
主指导教师
苏泽光
日期:
2010年12月20日
单片机课程设计
题目:
基于单片机的数字电压表
学院名称:
指导老师:
班级:
学号:
学生姓名:
2010年12月31日
基于单片机的数字电压表的设计
内容摘要:
在电子信息科技高速的时代,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。
在现代检测技术中,常用高精度数字电压表进行检测,将检测到的数据送入微型计算机系统,完成计算、存储、控制等功能。
本文中数字电压表的控制系统采用AT89S52单片机,A/D转换器采用ADC0809为主要硬件,LED动态显示模块、电源模块、量程选择模块和报警系统,实现数字电压表的硬件电路与软件设计。
该系统能完成电压量的采集、A/D转换、手动量程切换、实时显示采集到电压量和声光提示等功能。
依据实际的情况还可以添加自动量程切换工能。
关键词:
AT89S52、A/D转换ADC0809、数码产品、四位LED动态扫描、功能实现。
引言:
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。
市场前景可观。
一、系统方案选择和论证:
1、设计要求
1.1基本要求:
(1)电压测量范围0-5V;
(2)能用数码管显示电压值;
(3)测量精度达0.1V;
(4)要求系统具备复位功能;
1.2发挥部分:
(1)电压测量范围5—20V;
(3)电压表具备20V超量程报警功能;
(4)测量精度:
0-5V内可调可达0.02V,5-20V可达0.1V;
(5)尽可能减少芯片的使用节能成本;
2、系统基本方案
2.1建议数字电压表系统框图如图1
2.2主控部分的选择
方案一:
用以AT89S52为核心的单片机控制系统方案,AT89S52具有较大程序存储空间和数据存储空间能满足用户的需要易于实现功能拓展,AT89S52内部置有ISP在线编程技术可以应用下载线直接连到计算机的并口相连就可烧写程序,可代替市场上专用的程序烧写器,既经济又实用,从而提高了系统性价比。
方案二:
用AT89S52作为主控制系统易于实现对程序的编写,但是用户在编写较长程序时它的程序存储空间和数据存储空间不能满足需求,且其不支持ISP在线编程技术,需要专用的烧写器来烧写程序,故成本高,进而降低了系统性价比。
方案三:
应用ICL7107集成芯片制作的方案。
ICL7107是一块应用非常广泛的集成电路,它包含31/2位数字A/D转换器,可直接驱动LED数码管,内部设有参考电压、独立模拟开关、逻辑控制、显示驱动、自动调零功能等。
ICL7107是一种制作数字电压表典型的应用电路。
由于该集成芯片在使用上有一定的局限性,不可编程故不能实现功能拓展,无法满足作品的设计要求故不可取。
综合以上三种方案分析,采用AT89S52作为主控制系统,可以大大提高系统功能的性能指标,还可以简化系统电路,成本低,故采用方案一。
2.3显示器的选择
方案一:
运用液晶显示器主要能显示大量的文字、数字和图形,而且清晰化程度高,成本高。
而次作品主要是简单的显示数字,故不采纳。
方案二:
运用点阵显示器主要能显示文字、数字,但其内部结构较为复杂,不易连接,故不使用它。
方案三:
运用数码管显示数字比较直观,且其在使用方面连线比较简单、成本低。
综合各方面考虑系统的性价比故采用方案三。
2.4A/D转换器的选择
方案一:
采用双积分A/D转换器MC14433.它有多路调制的BCD码输出端和超量程输出端,采用动态扫描显示,便于实现自动控制。
单芯片只能完成A/D转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:
采用A/D转换芯片ADC0809。
ADC0809是一块8路8位模数转换芯片,将模拟电路和数字电路集成在一个用28个功能端的电路内,包含了A/D转化、逻辑控制、译码驱动等电路,其转换时间为100μS左右,符合作品8路采集要求且电路设计简单,电路板布线不复杂,便于焊接、调试。
综上所述,故采用方案二。
二、系统的硬件设计与实现
1、系统硬件概述
该作品由六大部分组成,分别是主控模块、A/D转换模块、显示模块、声光报警模块、量程选择模块、直流稳压电源模块。
2、主要单元电路的设计
2.1AT89S52单片机
数字电压表的控制模块采用AT89S52单片机,AT89S52是DIPloma-40集成电路芯片,该芯片有4个八位并行的双向I/O口,分别为P0、P1、P2、P3、口。
如图2示。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个
TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2
的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个
TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
P3.0RXD(串行输入)
P3.1TXD(串行输出)
P3.2INT0(外部中断0)
P3.3INT0(外部中断0)
P3.4T0(定时器0外部输入)
P3.5T1(定时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器写选通)
20引脚为接地端;40引脚为电源端;31引脚需要接高电位使单片机选用内部程序存储器;18、19脚接上一个12MHZ的晶振为单片机提供时钟信号,第9脚为复位引脚,单片机只有满足这些条件才能正常工作。
图2AT89S52引脚图
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,
2.2主控模块
如图3:
a):
把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的abcdefgdp端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.3与“动态数码显示”区域中的S1S2S3S4端口用8芯排线连接。
c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
d)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
e)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
f)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
图3主控模块
2.3显示模块
2.3.1显示模块芯片介绍
LED84S—四位八段数码管
四位数码管,内部的4个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有4个数码管,所以它有4个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。
引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。
图4LED84S引脚图
4位数码管引脚图数码管使用注意事项说明:
(1)数码管表面不要用手触摸,不要用手去弄引角;
(2)焊接温度:
260度;焊接时间:
5S
(3)表面有保护膜的产品,可以在使用前撕下来。
图5实物图
2.3.2显示模块的连接
a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的abcdefgdp端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.3与“动态数码显示”区域中的S1S2S3S4端口用8芯排线连接。
如图6
图6与AT89S52相连显示接线图
2.4A/D转换模块
A/D转换器用于实现模拟量向数字量的转换,由于模数转换电路的种类很多,选择A/D的转换器件主要从速度、精度和价格方面考虑。
目前最常用的是双积分式和逐次逼近式A/D转换器。
双积分式A/D转化器的优点是转换精度高,抗干扰性能好,价格便宜;但转换速度较慢。
因此这种转换器主要用于速度要求不高的场合。
逐次逼近式A/D转换器是一种速度较快、精度较高的转换器,其转换时间大约在几微秒到几十微秒之间。
该系统采用的模数转换器芯片为adc809,该芯片为8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μS左右。
2.4.1ADC0809的内部逻辑结构
ADC0809的内部逻辑结构图如图7所示
图7ADC0809的内部逻辑结构图
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是种经济的多路采集方法。
地址锁存与译码电路完成对A、B、C3个地址进行锁存译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线。
表1为通道选择表
CBA
被选择的通道
000
IN0
001
IN1
010
IN2
011
IN3
100
IN4
101
IN5
110
IN6
111
IN7
表1通道选择表
2.4.2ADC0809引脚功能
(1)ADC0809引脚图8
图8ADC0809CCN
ADC0809芯片为DIP-28,其主要信号引脚的功能说明如下:
IN7~IN0——模拟量输入通道。
A、B、C——地址线。
通道端口选择线,A为低地址,C为高地址,引脚图中ADDC、ADDB和ADDC。
其地址状态与通道对应关系见表6.1
ALE——地址锁存允许信号。
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。
START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。
写为ST。
D4~D0——数据输出线。
为三态缓冲输出形式。
可以和单片机的数据线直接相连。
D0为最低位,D7为最高。
OE——输出允许信号。
用于控制三态门输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换所得到的数据。
CLK——时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500KHZ的时钟信号。
EOC——转换结束信号。
EOC=0,正在进行转换;EOC=1,转换结束。
使用中该状态信号即可作为查询的状态标志,又可以作为中断请求信号使用。
VCC——+5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
起典型值为+5V{Vref(+)=5V,Vref(-)=-5V。
2.4.3AT89S52与ADC0809接口电路
AT89S52与ADC0809接口电路如
图9ADC0809数模转换接线图
a)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。
b)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
c)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
d)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
e)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
f)把“模数转换模块”区域中的IN0端子用导线连接到“三路可调电压模块”区域中的VR1端子上。
g)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端子上。
接口电路的连接要涉及两个问题:
一是由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。
因此产生CLK信号的方法就得用软件来产生了。
二是由于ADC0809的参考电压VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。
实际显示的电压值 (D/256*VREF)
2.4.4封装规格:
DIP-28:
2.5量程选择模块
量程模块根据电阻分压原理而设计,该系统的量程模块由一个15K的电阻和10K的滑动电阻串上8个1K的电阻构成分压模式,根据作品设计要求采集电压值的量程可在0V~5V,5V~20V之内的电压量进行选择,图(8)中SW开关就起到选择量程的作用,AT89S52的P3.3~P3.5所对应接的按键开关和发光二极管起到这里则起来到选择量程通道的作用。
三、系统的软件设计
1、系统软件概述
基于单片机的数字电压表是一种实时测试电压变化量的数码智能产品。
该系统由AT89S52单片机系统、A/D转换模块、LED动态显示模块、电源模块、量程选择模块组成。
该系统能完成电压量的采集、A/D转换、手动量程切换、实时显示采集到电压量等功能。
依据实际的情况还可以添加自动量程切换功能。
本系统成本低廉,功能实用它以可靠的性能、便捷的使用和极低的功耗特性而获得广阔的市场前景。
2、数字电压表程序流程图及显示子函数
2.1程序流程图:
2.2显示子程序
七段数码管显示四位数字的C代码:
#include
//#include
unsignedchara,b,c,d;
unsignedcharcodedispbitcode[]={0x10,0x20,0x40,0x80,0x00};//共阴位码
unsignedcharcodedispcode[]={0X3F,/*0*/
0X06,/*1*/
0X5B,/*2*/
0X4F,/*3*/
0X66,/*4*/
0X6D,/*5*/
0X7D,/*6*/
0X07,/*7*/
0X7F,/*8*/
0X6F,/*9*/};//共阴段码
/*************延时子程序*******************************/
voiddelay(unsignedintx) //最小1毫秒
{
unsignedcharj;
while(x--)
{
for(j=0;j<125;j++)
{;}
}
}
/***************显示子程序**********************/
voiddisplay(unsignedcharqian,unsignedcharbai,unsignedcharshi,unsignedcharge)
{
P3=dispbitcode[0];
P0=dispcode[qian];//显示千位
delay(5);
//P3=dispbitcode[5];
//P2=dispcode[11];
P3=dispbitcode[1];
P0=dispcode[bai];//显示佰位
delay(5);
//P3=dispbitcode[5];
//P2=dispcode[11];
P3=dispbitcode[2];
P0=dispcode[shi];//显示十位
delay(5);
//P3=dispbitcode[5];
//P2=dispcode[11];
P3=dispbitcode[3];
P0=dispcode[ge];//显示个位
delay(5);
}
voidmain(void)
{
while
(1)
{
unsignedintabcd=1024; //一定要注意数据类型之前我一直用的是char(0^225)导致千位无法显示
a=abcd/1000;//送去显示
b=abcd%1000/100;
c=abcd%1000%100/10;
d=abcd%1000%100%10;
display(a,b,c,d);
}
}
四、系统测试
1、测试仪器与设备
测试仪器及设备如表4.1所示
表4.1测试仪器及设备
2、测试指标和误差分析
(1)基本要求
0~5V预置电压与实测电压的偏差测试如表4-2所示
表4-2预置