数字电压表课程设计.docx
- 文档编号:30756167
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:19
- 大小:294.15KB
数字电压表课程设计.docx
《数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《数字电压表课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
数字电压表课程设计
目录
摘要2
一.设计目的与功能要求.................................................................................................2
§1.1设计目的…………………………………………………………………2
§1.2功能要求2
二.总体设计2
§2.1系统设计………………………………………………………………..2
§2.2设计方案…………………………………………………………………3
§2.3总体设计框图……………………………………………………………4
三.设计原理图4
四.硬件电路设计5
§4.1核心元器件介绍5
§4.1.1芯片介绍5
§4.1.2其它部分简介.....................................10
1.四位八段共阴极数码管.................................................................10
2.模拟电压输入部分......................................11
五.软件设计…………………………………………………………………11
§5.1汇编流程图...............................................................................11
§5.2汇编程序清单..........................................................................13
§5.3程序说明.....................................................................................14
六.调试仿真…...................................................................................15
七.设计总结与致谢...........................................................................16
<参考文献>.............................................17
基于单片机的数字电压表设计
摘要:
随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
另外,准确可靠的电压测量在教学实验中也具有重要意义。
数字电压表是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
而传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由于精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片机及A/D 转换器构成的数字电压表成本较低,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,表现出强大的生命力。
本次设计就是为了更好地掌握单片机及相关的电子技术,在参阅一些资料的基础上利用ADC0809而设计的数字电压表。
关键词:
单片机,ADC0809,数字电压,A/D转换
一.设计目的与功能要求
§1.1设计目的
利用单片机及ADC0809核心元件制作3位数字电压表,更好地学习掌握ADC0809的工作原理及A/D的转换编程方法。
§1.2功能要求
利用ADC0809设计实现数字电压表的测量值为0~5V,用电位器模拟ADC0809的输入电压,用3位数码管显示,实时模拟数字电压表。
二.总体设计
§2.1系统设计
主要分为两部分:
硬件电路及软件程序。
硬件电路包括:
单片机及外围电路,模拟信号采集电路,A/D转换电路,数码管显示电路,各部分电路的衔接。
软件的程序可采用C语言或汇编,这里采用汇编语言,详细的设计思路在后面介绍。
§2.2设计方案
数字电压表的设计方案很多,但采用集成电路来设计较流行。
其设计主要是由模拟电路和数字电路两大部分组成,模拟部分包括A/D转换器,基准电源等;数字部分包括振荡器,数码显示,计数器等。
其中,A/D转换器将输入的模拟量转换成数字量,它是数字电压表的一个核心部件,对它的选择一般有两种选择方案:
1.采用双积分A/D转换器MC14433,它有多路调制的BCD码输出端和超量程输出端,采用动态扫描显示,便于实现自动控制。
但芯片只能完成A/D转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
2.逐次逼近式A/D转换器。
它的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。
这样电路设计简单,电路板布线不复杂,便于焊接、调试。
这里采用这种方案。
显示部分可以采用各类数码管或用LCD显示器显示。
在此简化采用4位八段共阴极数码管对A/D转换变换后的结果加以显示。
§2.3总体设计框图
四位八段共阴极数码管
单
片
机
A/D
转换器
ADC0809
外界模拟信号
显示出模拟电压
的数值
振荡器、时序脉冲
预先写好的汇编程序
三.设计原理图
四.硬件电路设计
§4.1核心元器件介绍
§4.1.1芯片介绍
1.单片机AT89C51介绍
a.芯片引脚图:
b.描述:
AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
C.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
d.引脚描述
VCC:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。
作为输出口时,每一个管脚都能够驱动8个TTL电路。
当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。
P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。
P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。
P1口:
P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。
闪烁编程时和程序校验时,P1口接收低8位地址。
P2口:
P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。
闪烁编程或校验时,P2口接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。
对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。
P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示:
端口引脚
第二功能
P3.0
RXD
P3.1
TXD
P3.2
INT0
P3.3
INT1
P3.4
T0
P3.5
T1
P3.6
WR
P3.7
RD
P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。
RST:
复位输入。
当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。
ALE/
:
当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。
如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。
这个位置后只有一条MOVX和MOVC指令ALE才会被应用。
此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器时,这两次有效的PSEN信号不出现。
EA/VPP:
外部访问允许。
欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。
需要注意的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。
XTAL1:
震荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
震荡器反相放大器的输出端。
时钟震荡器:
AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。
外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。
对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
电路内部振荡外部振荡电路
2.ADC0809芯片
a.引脚图:
b.主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
C.外部特性(引脚功能)
IN0~IN7:
8路模拟量输入端。
DB0-DB7:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
接地。
§4.1.2其它部分简介
1.四位八段共阴极数码管
这种数码管可显示4位值,每位由8个发光二极管(以下简称字段)即a、b、c、d、e、f、g、dp字段构成,通过控制不同的LED的亮灭的不同组合可用来显示数字09及小数点“”。
数码管又分为共阴极和共阳极两种结构。
结构和接法分别如下图
2.模拟电压输入部分
这里设计将实际的模拟信号采集电路简化成一个分压电路模型如右图所示
五.软件设计
§5.1汇编流程图
§5.2汇编程序清单
;初始化定义
LED1EQU30H
LED2EQU31H
LED3EQU32H;存放三个数码管的段码
ADCEQU35H;存放转换后的数据
STBITP3.2
OEBITP3.0
EOCBITP3.1;定义ADC0809的功能控制引脚
ORG0000H
LJMPMAIN;跳转到主程序执行
ORG0030H
;主程序,各寄存器初始化,ADC0809采集数据和调用显示主程序;
MAIN:
MOVLED1,#00H
MOVLED2,#00H
MOVLED3,#00H;寄存器初始化
CLRP3.4
SETBP3.5
CLRP3.6;选择ADC0809的通道2
WAIT:
CLRST
SETBST
CLRST;在脉冲下降沿启动转换
JNBEOC,$;等待转换结束
SETBOE;允许输出信号
MOVADC,P1;暂存A/D转换结果
CLROE;关闭输出
MOVA,ADC;将转换结果放入A中,准备个位数据转换
MOVB,#50;变换个位调整值50送B
DIVAB
MOVLED1,A;将变换后的个位值送显示缓冲区LED1
MOVA,B;将变换结果的余数放入A中,准备十分位变换
MOVB,#5;变换十分位调整值5送B
DIVAB
MOVLED2,A;将变换后的十分位值送LED2
MOVLED3,B;最后的余数作百分位值送LED3
LCALLDISP;调用显示程序
AJMPWAIT
;显示子程序:
DISP:
MOVR1,#LED1
CJNE@R1,#5,GO;@R1=5V?
是往下执行,否,则到GO
MOVLED2,#0H;是5V,即最高值,将小数的十分位清零
MOVLED3,#0H;将小数的百分位清零
GO:
MOVR2,#3;显示位数赋初值,用到3位数码管
MOVR3,#0FDH;扫描初值送R3
DISP1:
MOVP2,#0FFH;关闭显示,目的防止乱码
MOVA,@R1;显示值送A
MOVDPTR,#TAB;送表首地址给DPTR
MOVCA,@A+DPTR;查表取段码
CJNER2,#3,GO1;判断是否个位数码管?
否则跳到GO1
ORLA,#80H;将整数的数码管显示小数点
GO1:
MOVP0,A;送段码给P0口
MOVA,R3
MOVP2,A;送位码给P2口
LCALLDELAY;调用延时
MOVR3,A
RLA;改变位码
MOVR3,A
INCR1;改变段码
DJNZR2,DISP1;三位是否显示完?
否则调到DISP1
RET
;延时5S程序:
DELAY:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
;显示数据表:
TAB:
DB3FH,06H,5BH,4FH,66H;共阴极数码管显示0-4
DB6DH,7DH,07H,7FH,6FH;显示5-9
END
§5.3程序说明
程序先定义了ADC0809的控制线,对其控制端口要注意的是操作时序;要将A/D转换来的数据变换成对应的BCD码,这是因为ADC0809是8位A/D转换,对0~5V的模拟量转换成00H~FFH的数字量,即0~255。
这要变换成对应十进制的BCD码才能显示。
最高255/50=5.0(≈5V),BCD码取0101B,只精确到十分位。
例如A/D转换来的数据为235,变换对应的BCD码为:
235/50=4(是个位)余35/5=6(十分位)余5,余数5直接作百分位(此位不精确),即为4.65V,BCD码为010001100101.然后查表,缓存,调显示程序显示。
六.调试仿真
电路在proteus中的仿真图如下:
仿真结果:
输入的电压从0~5V变化时,数字电压表能够测量出并利用数码管显示出来。
测量的精度与要求的一致,前两位精确,百分位不作精确。
要更精确,只需修改相应的源程序代码即可。
七.设计总结与致谢
通过这次设计,我学到了许多课外的东西,加深了对单片机等知识的了解,提高了应用思考和设计能力。
在分析设计课题,查阅资料,了解设计原理并进行仿真的过程中尽管遇到了些许问题,但在老师的指导下,最终独立地完成了任务,不仅锻炼了分析解决问题的能力,更重要的是加强了我对电子应用学习的兴趣。
在设计的过程中老师给予一定的启发和指导,并叮嘱我们独立认真完成本次课程设计,在此表示衷心的感谢。
参考文献
[1]《单片机微型计算机原理及应用》鲍小南等编著浙江大学出版社
[2]《.单片机课程设计指导》楼然苗、李光飞编著.电子工业出版社,2007
[3]《单片机应用技术.》吴经国等编著.中国电力出版社,2000
[4]《8051单片机实践与应用》吴金戌沈庆阳郭庭青编著清华大学出版社
[5]《单片机原理及应用》余修武编著电子科技大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电压表 课程设计