数字电压表设计.docx

上传人:b****8 文档编号:9405921 上传时间:2023-05-18 格式:DOCX 页数:19 大小:218.52KB
下载 相关 举报
数字电压表设计.docx_第1页
第1页 / 共19页
数字电压表设计.docx_第2页
第2页 / 共19页
数字电压表设计.docx_第3页
第3页 / 共19页
数字电压表设计.docx_第4页
第4页 / 共19页
数字电压表设计.docx_第5页
第5页 / 共19页
数字电压表设计.docx_第6页
第6页 / 共19页
数字电压表设计.docx_第7页
第7页 / 共19页
数字电压表设计.docx_第8页
第8页 / 共19页
数字电压表设计.docx_第9页
第9页 / 共19页
数字电压表设计.docx_第10页
第10页 / 共19页
数字电压表设计.docx_第11页
第11页 / 共19页
数字电压表设计.docx_第12页
第12页 / 共19页
数字电压表设计.docx_第13页
第13页 / 共19页
数字电压表设计.docx_第14页
第14页 / 共19页
数字电压表设计.docx_第15页
第15页 / 共19页
数字电压表设计.docx_第16页
第16页 / 共19页
数字电压表设计.docx_第17页
第17页 / 共19页
数字电压表设计.docx_第18页
第18页 / 共19页
数字电压表设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字电压表设计.docx

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

数字电压表设计.docx

数字电压表设计

单片机系统

课程设计

指导教师意见:

 

成绩:

签名:

年月日

目录

1概述3

1.1研究背景3

1.2设计思想及基本功能3

2总体方案设计3

2.1方案选取3

2.1.1A/D转换模块选取3

2.1.2接口模块选取3

3硬件电路设计与实现4

3.1电压表的原理4

3.2电源的设计4

3.3A/D转换电路设计5

3.4单片机最小系统电路设计5

3.4.1复位电路部分5

3.4.2时钟电路设计5

3.5显示电路部分6

4系统软件设计7

4.1控制主程序设计7

4.2子程序设计8

4.2.1A/D转换程序8

4.2.2数据处理子程序9

4.2.3显示子程序11

4.3源程序代码12

5总结15

参考文献15

附录16

系统原理图16

元器件清单16

 

1概述

1.1研究背景

通过制作简易的数字电压,可以加深对我们所学专业的认识。

传统的指针式电压表用起来很直观易懂,但是数字电压表更加精确并且易读数,易修理,使用更加方便,成本低廉,生产效率等传统电压表无法比拟的优点,这使得它的开发和应用都具有良好的前景。

1.2设计思想及基本功能

该系统可由电压采集模块、A/D转换模块、主控模块和显示模块组成。

能实现的基本功能有能测量0—5V的输入电压值、测量精度为0.5V、将测量数值在4位数码管上显示出来、具有自动复位功能。

2总体方案设计

2.1方案选取

2.1.1A/D转换模块选取

方案一:

A/D转换模块可采用ICL7107型三位半显示的芯片,信号输入以后,流经取样电路取样后送到ICL7107型三位半A/D转换器,只需要很少的简单外围组件,就可以组成数字电流表模块,直接驱动三位半LED显示器显示,最后输入电压在显示部分显示。

由于我对ICL7107不熟悉,而且ICL7107做的LED数字表的最大的缺点就是数字乱跳不稳定,特别是最后的一位。

所以我决定不采用此方案。

方案二:

转换芯片采用ADC0809,其中A/D转换器用于实现模拟量向数字量的转换,单电源供电。

具有8路模拟量输入、具有8位数字量输出功能的A/D转换器,转换时间100μs,模拟输入电压范围为0V~+5V,不需零点和满刻度校准,功耗较低,约15mW。

由于具有很多模拟转换电路,通过对转换速度,精度和价格方面的综合考虑,所以选择方案二采用ADC0809为本次设计的转换芯片。

2.1.2接口模块选取

方案一:

使用数字电路译码芯片CD4543作为接口芯片,虽然这种方案可以实现功能,但是稳定性不高,结构复杂。

方案二:

采用AT89S51单片机自带接口作为系统的控制单元,通过A/D转换将被测值转换为数字量送入单片机中,再由单片机来送显。

此方案各类功能易于实现,成本低、功耗低,显示稳定。

通过对成本,方便性等综合考虑,选择方案二。

P3

P1

P2

P0

数字电压表设计框图

3硬件电路设计与实现

3.1电压表的原理

本次课程设计采用的是AT89S51单片机芯片与ADC0809A/D转换芯片构成的数字电压表。

该电路通过ADC0809单片机的采样输入口In0输入0-5V的模拟电压量,在经过A/D转换后,产生相对应的数字量并经过输出通道D0-D7传送给单片机AT89S51的P0口。

AT89S51芯片负责把收到的数字量数据处理,并产生出对应的7段数码管的显示段码,然后通过P1口经芯片SN74LS373驱动,然后传送给数码管。

然后通过P3.0、P3.1、P3.2这3个I/O接口产生位选通信号用来控制数码管的点亮与熄灭。

AT89S51也控制ADC0809。

其ALE管脚是为ADC0809提供1MHz工作的时钟脉冲,P2.3控制ADC0809的地址锁存端(ALE);P2.4控制ADC0809的启动端(START),P2.5控制ADC0809的输出允许端(OE);P3.7控制ADC0809的转换结束信号(EOC)。

3.2电源的设计

电源的最主要功能与任务提供稳定可靠的电压,供整个系统能正常的工作。

我国使用的是220V50Hz的交流电,而单片机的工作电压是直流+5V,因此电源要先通过一个普通的变压器降低电压,然后通过桥式整流,然后再通过7805芯片的进一步稳压,确保+5V电源的可靠和稳定。

7805集成稳压器是常用的固定输出+5V电压的集成稳压器。

它自带限流保护、过热保护和过压保护电路,采用了噪声低、温度漂移小的基准电压源,工作稳定可靠。

1引脚为输入端,2引脚为接地端,3引脚为输出端,使用十分得方便,可以在任何有交流电压的地方使用,不需另配电池。

通过整流滤波以后输出直流电压,为了确保使整个电路能正常工作,考虑到不接负载或电源电压有波动时电容能承受的耐压,必须加电容。

发光二极管D2点亮表示电源电路正常工作。

3.3A/D转换电路设计

A/D转换器一个非常重要的部分,单片机通过数模转换器把输入模拟量变成数字量再处理。

ADC如今主要分为4种,逐次逼近式A/D转换器、双积分式A/D转换器、并行式A/D转换器和计数比较式A/D转换器。

目前最常用的是双积分和逐次逼近式。

 

3.4单片机最小系统电路设计

3.4.1复位电路部分

当单片机通电时立即复位。

电容C和电阻R1具有电自动复位的功能。

 

3.4.2时钟电路设计

单片机工作的时钟信号的产生方式有两种,内部时钟方式和外部时钟方式。

图示是内部时钟方式。

单片机内部有一个构成振荡器的增益反相放大器,引脚XTAL1是放大器的输入端XTAL2是放大器的输出端,放大器和片外晶振一起构成自激振荡器。

电容C1和C2可取20PF,晶体的振荡频率取12MHz,晶体振荡频率高,系统的时钟频率高,单片机运行速度快。

最小系统总电路图

3.5显示电路部分

显示电路由4位一体的7段LED数码管构成,用来显示所测电压值。

该LED是一个共阳极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机芯片P1口发出的显示段码。

1,2,3,4引脚端为位选端,用于接收AT89S51的P3口产生的位选码。

采用动态扫描方式。

扫描方法为用接口电路把所有数码管的8个比划段a-g、DP同名端连在一起,单个数码管的公共极COM各自独立。

CUP从字段输出口送出字型码时,所有数码管接收到相同的字型码,哪个数码管亮,取决COM端。

COM端与单片机的I/O接口相连接,由单片机输出位位选码到I\O接口,控制何时哪一位数码管被点亮。

在轮流点亮数码管的位扫描过程中,每位数码管的点亮时间极为短暂。

但由于人的视觉暂留现象,给人的印象就是一组稳定显示的数码。

动态方式的优点是省电低功耗,在动态扫描过程中,只有一个数码管是处于工作状态的。

4系统软件设计

4.1控制主程序设计

初始化中主要对AT89S51,ADC0809的管脚和数码管的位选及所用到的内存单元70H,78H,79H,7AH进行初始化设置。

准备工作做好后便启动ADC0809对IN0脚输入进的0~5V电压模拟信号进行数据采集并转换成相对应的0~255十进制数字量。

在数据处理子程序中,运用标度变换知识,编写算法将0~255十进制数字量转换成0.00~5.00V的数据,输出到显示子程序进行显示。

整个主程序就是在A/D转换,数据处理及显示程序循环执行。

整个程序流程框图如下图所示。

4.2子程序设计

4.2.1A/D转换程序

启动ADC0809芯片对模拟量的输入信号进行转换,通过判断EOC(P3.1引脚)来确定是否完成转换,若EOC为0,则继续等待;若EOC为1,则置位OE,转换完成的数据将存储到70H中。

4.2.2数据处理子程序

4.2.3显示子程序

显示子程序采用的是动态扫描法实现三位数码管的数值显示。

将测量得到的A/D转换数据存放在内存单元70H中,在显示时需把测量数据转换成10进制BCD码放在78H~7AH单元中。

寄存器R1为显示数据的地址指针。

4.3源程序代码

ORG0000H

LJMPSTART

ORG0003H

RETI

ORG000BH

RETI

ORG0013H

RETI

ORG001BH

RETI

ORG0023H

RETI

ORG002BH

RETI

ORG0030H

;初始化参数

START:

CLRA

SETBP3.7;初始化EOC

CLRP3.0;初始化LED位选,全不选中。

CLRP3.1

CLRP3.2

MOVP2,A;初始化P2口,清除ADC0809控制信号。

MOV70H,A;初始化数据采样后存储空间。

MOV78H,A;初始化数据处理后3位有效数字的存储空间(78H最高位,7AH最低位)。

MOV79H,A

MOV7AH,A

MOVA,#0FFH;初始化P0,P1口,输高电平。

MOVP0,A

MOVP1,A

;主程序

MAIN:

LCALLAD_SUB;调用A/D转换子程序,开始采样并转换。

LCALLTURN_SUB;调用数码转换子程序,将采样转换来的0-255转换成一一对应的

;0.00-5.00

LCALLDISP_SUB;调用显示子程序。

LJMPMAIN

;

====================================================================

;A/D转换子程序

AD_SUB:

CLRA

MOVP2,A;初始化P2口,清除对ADC0809的控制信号。

MOVR0,#70H

LCALLAD_ST;调用采样转换子程序

WAIT:

JBP3.7,DATASAVE;判断采样转换是否完毕,完毕则跳转到DATASAVE进行存储。

AJMPWAIT;否则继续等待。

;启动采样,送脉冲时序

AD_ST:

SETBP2.3;ALE脉冲时序

NOP

NOP

CLRP2.3

SETBP2.4;START脉冲时序(上跳清零,下跳开始转换)

NOP

NOP

CLRP2.4

NOP

NOP

RET

;采样转换的数据存储

DATASAVE:

SETBP2.5;置位OE端,允许ADC0809输出数据

MOVA,P0;将转换的数据存储到70H中

MOV@R0,A

CLRP2.5

CLRA;初始化P0,P1,P2口(P0,P1高电平,P2低电平)

MOVP2,A

MOVA,#0FFH

MOVP0,A

MOVP1,A

RET

;将0~255转换为0.00~5.00

TURN_SUB:

MOVA,@R0

MOVB,#51

DIVAB

MOV78H,A;以上这一段是整数部分(个位)放入78H

MOVA,B;余数部分放入A

CLRF0

SUBBA,#1AH;余数和51的一半即1AH比较,以便四舍五入

MOVF0,C

MOVA,#10

MULAB;余数乘以10,以便再除以51

MOVB,#51

DIVAB

JBF0,LOOP1;判断四舍五入,跳到LOOP1是“四舍”

ADDA,#5;这是“五入”

LOOP1:

MOV79H,A;十分位

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP2

ADDA,#5

LOOP2:

MOV7AH,A;百分位

RET

;

====================================================================

;显示子程序

DISP_SUB:

MOVR1,#78H;R1辅助寄存器,用于存放要显示的数据的地址(初始为最高位78H)

CLRA

MOVP1,#0FFH;初始化P1,P2口(P1高电平,P2低电平)

ANLP2,A

LCALLPLAY;调用显示位码子程序

CLRP1.7;显示最高位(个位)后的小数点

SETBP3.0;选中最高位LED数码管

LCALLDELAY;调用延迟子程序

CLRP3.0;取消最高位位选

INCR1;提取第二位有效数字(十分位)的数据地址(79H)

LCALLPLAY;调用显示位码子程序

SETBP3.1;选中第二位LED数码管

LCALLDELAY;调用延迟子程序

CLRP3.1;取消第二位位选

INCR1;提取最低位(百分位)的数据地址(7AH)

LCALLPLAY;调用显示位码子程序

SETBP3.2;选中最低位LED数码管

LCALLDELAY;调用延迟子程序

CLRP3.2;取消最低位位选

RET

;位码显示

PLAY:

MOVA,@R1;送偏移量

MOVDPTR,#TAB;送表首地址

MOVCA,@A+DPTR;查表得出相应LED段码

MOVP1,A;输出显示

RET

;

====================================================================

;延时程序

DELAY:

MOVR6,#10H

DL1:

MOVR7,#10H

DL2:

DJNZR7,DL2

DJNZR6,DL1

RET

;

====================================================================

;0-9段码

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END

5调试

6总结

通过了两周的设计时间,我完成了单片机课程设计。

我的项目是通过AT89S51单片机主控与ADC0809数/模转换芯片结合的数字电压表。

通过本次设计,使我对单片机有了更进一步的了解。

在硬件连接方面还是在软件编程方面,都有不少的收获。

本次实验采用了AT89S51单片机芯片,与以往我们所熟悉的C51芯片有许多不同之处,通过查阅相关资料,我对其之间的区别有了一定的认识。

S51在C51的基础上增加了许多新的功能,功能更为完善,应用领域也更为广泛。

同时,由于设计能力有限,还有许多功能和技术没有充分研究,可能存在不合理的地方。

但是,一个完整的课程设计过程,让我掌握了单片机系统知识,尤其是熟悉了用protel画电路原理图和用visio画程序流程图。

这使我在动手能力方面有很大的提升,也给今后更成功、完善的设计打下坚实的基础。

参考文献

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

国防工业出版社,2007

[2]夏路易石宗义.Protel99se电路原理图与电路板设计教程.北京:

北京希望电子出版社,2004

[3]阎石.数字电子技术基础.北京:

高等教育出版社,2009.

[4]伟福LAB6000系列单片机仿真实验系统使用说明书

附录

系统原理图

元器件清单

1K电阻

R1

104电阻

C8

10K电阻

R2

10K电阻

R5

10K电阻

R4

10K电阻

R3

2K电阻

R14

20PF电容

C3

20PF电容

C1

22uF电容

C2

104电容

C4

104电容

C5

470UF/16V电容

C7

470UF/25V电容

C6

510电阻

R11

510电阻

R12

510电阻

R13

510电阻

R6

510电阻

R7

510电阻

R8

510电阻

R10

510电阻

R9

7805三端稳压集成电路

U5

ADC0809FN转换芯片

U3

BRIDGE1桥式整流电路

D1

LED发光二极管

D2

PNP三极管

Q3

PNP三极管

Q4

PNP三极管

Q1

PNP三极管

Q2

POWER

J1

SN74LS14六路施密特触发反向器

U4

SN74LS373具有三态输出的八路D类透明锁存器

U2

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

当前位置:首页 > 农林牧渔 > 林学

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

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