最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数字电压表课程设计

来源:动视网 责编:小OO 时间:2025-09-24 12:25:39
文档

数字电压表课程设计

《数字电压表设计》课程设计报告2010年6月28日目录摘要1第1章绪论2第2章设计任务与要求32.1设计任务32.2设计要求4第3章方法选择方案设计53.1方法选择53.2方案设计5第4章硬件设计54.1模块设计电路54.1.1时钟电路54.1.2复位电路54.2Protues仿真电路.2.1电路仿真图.2.2电路工作原理.3逐次逼近式A/D转换模块设计.3.1ADC0808简介.3.2A/D转换电路设计8第5章系统软件设计145.1主程序设计145.2源程序编写15第6章
推荐度:
导读《数字电压表设计》课程设计报告2010年6月28日目录摘要1第1章绪论2第2章设计任务与要求32.1设计任务32.2设计要求4第3章方法选择方案设计53.1方法选择53.2方案设计5第4章硬件设计54.1模块设计电路54.1.1时钟电路54.1.2复位电路54.2Protues仿真电路.2.1电路仿真图.2.2电路工作原理.3逐次逼近式A/D转换模块设计.3.1ADC0808简介.3.2A/D转换电路设计8第5章系统软件设计145.1主程序设计145.2源程序编写15第6章
《数字电压表设计》

课程设计报告

    

        

            

2010  年  6 月 28 日 

 目 录

摘 要    1

第1章 绪论    2

第2章 设计任务与要求    3

2.1 设计任务    3

2.2 设计要求    4

第3章 方法选择方案设计    5

3.1 方法选择    5

3.2 方案设计    5

第4章 硬件设计    5

4.1 模块设计电路    5

4.1.1 时钟电路    5

4.1.2 复位电路    5

4.2 Protues仿真电路    6

4.2.1 电路仿真图    6

4.2.2 电路工作原理    6

4.3 逐次逼近式A/D转换模块设计    6

4.3.1 ADC0808简介    6

4.3.2 A/D转换电路设计    8

第5章 系统软件设计    14

5.1 主程序设计    14

5.2 源程序编写    15

第6章 系统仿真与调试    16

结 论    18

        

第1章绪论

数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。

电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。一般说来,A/D转换的方式可分为两类:积分式和逐次逼近式。

积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。

逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。

在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。本设计以ATC51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD为主体,构造了一款简易的数字电压表,能够测量1路0~5V直流电压,最小分辨率0.02V。

第2章设计任务与要求

2.1 设计任务

利用单片机ATC51和ADC0809设计一个数字电压表,能够测量0—5V之间的直流电压值,四位数码显示。

2.2 设计要求

测量最小分辨率为0.019V,测最误差约为 0.02V。

第3章方法选择方案设计

3.1 方法选择    

实现数字电压表的方案较多,目前广泛采用的是基于74系列逻辑器件方案,本设计将介绍基于单片机实现的方案。

74系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电路。

单片机系统方案此方案采用输入处理电路+ADC0808+ATC51+液晶显示实现,被测信号由ADC0808模拟输入端输入,单片机采集转换数据,将转换数据送出显示。

系统除能确保实现要求的功能外,还可以方便地进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。我们做好了现在的电路图,经过仿真,我们达到了预期的结果。

3.1方案设计

①经过以上方法设计,决定采用如图1-1所示方案逻辑图。

图3-1方案逻辑图

图3-2设计方案原理框图

②设计模块说明:

本设计方案主要有四大模块:

1、LED显示模块

2、时钟、复位电路

3、ADC0808数模转换模块

4、ATC51单片机控制模块

第4章 硬件设计

4.1 模块设计电路

单片机控制模块设计

单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。

4.1.1时钟电路

单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器和对振荡频率有微调作用,通常取(30±10)pF石英晶体选择6MHz或12MHz都可以。时钟电路如图4-1所示。

图4-1 系统时钟电路

4.1.2 系统复位电路

单片机的RST管脚为主机提供了一个外部复位信号输入口。复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。单片机的复位方式可由手动复位方式完成。

4.2 Protues仿真电路

4.2.1 电路仿真图

图4-2 Protues仿真电路原理图

4.2.2 电路工作原理

图4-2所示。A/D转换由集成电路0808完成,0808具有8路模拟输入端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个2μS宽高电平脉冲时,就开始A/D转换。7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出10脚为0808的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1MHz时钟。单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。P0端口作A/D转换数据读入用,P2端口用作0808的A/D转换控制。

4.3逐次逼近式A/D转换模块设计

4.3.1 ADC0808简介

1.ADC0808引脚功能

图4-3  ADC0808引脚图

 IN0~IN7:8路模拟量输入。A、B、C:3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。

ALE:地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。

D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。

OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。

START:启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。

EOC:转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。

2.ADC0808内部结构图

图4-4  ADC0808内部结构

逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。

4.3.2  A/D转换电路设计

图ADC0808与单片机的连接

第5章 系统软件设计

5.1  系统主程序设计

①  初始化程序

系统上电时,初始化程序将70H~77H内存单元清0,P2口置0。

②  主程序

在刚上电时,系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1s左右。主程序在调用显示子程序和测试子程序之间循环,主程序流程图见图5-1

图5-1 主程序流程图

③ 显示子程序

显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的A/D转换数据放在70H~77H内存单元中,测量数据在显示时需转换成为十进制BCD码放在78H~7BH内存单元中,其中7BH存放通道标志数。寄存器R3用作8路循环控制,R0用作显示数据地址指针。

④ 模/数转换测量子程序

模/数转换测量子程序用来控制对0808八路模拟输入电压的A/D转换,并将对应的数值移入70H~77H内存单元。

    5.1  系统源程序编写

LED_0    EQU     30H

LED_1     EQU     31H

LED_2     EQU     32H                   ;存放段码

ADC        EQU        35H

CLOCK    BIT        P2.4            ;定义ADC0808时钟位

ST         BIT     P2.5

EOC     BIT     P2.6

OE         BIT     P2.7

        ORG     00H

        SJMP    START

        ORG        0BH

        LJMP    INT_T0

START:    MOV        LED_0,#00H

        MOV        LED_1,#00H

        MOV        LED_2,#00H

        MOV        DPTR,#TABLE        ;段码表首地址

        MOV        TMOD,#02H

        MOV        TH0,#245

        MOV        TL0,#00H

        MOV        IE,#82H

        SETB    TR0

WAIT:     CLR     ST                  

        SETB     ST

        CLR     ST                ;启动AD转换

         JNB     EOC,$            ;等待转换结束

        SETB     OE 

        MOV     ADC,P1            ;读取AD转换结果

        CLR     OE        

        MOV     A,ADC

        MOV     B,#100            ;AD转换结果转换成BCD码

        DIV     AB

        MOV     LED_2,A

        MOV     A,B

        MOV     B,#10

        DIV     AB

        MOV     LED_1,A

        MOV     LED_0,B

        LCALL    DISP

        SJMP     WAIT

INT_T0:    CPL        CLOCK             ;提供ADC0808时钟信号

        RETI

    

DISP:    mov    dptr,#table

       MOV    A,LED_0            ;数码显示子程序

    MOVC    A,@A+DPTR

    CLR    P2.3

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.3

        mov    dptr,#table

    MOV    A,LED_1

    MOVC    A,@A+DPTR

    CLR    P2.2

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.2

        mov    dptr,#table

    MOV    A,LED_2

    MOVC    A,@A+DPTR

    setb    acc.7

    CLR    P2.1

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.1

    RET

DELAY:    MOV    R6,#10            ;延时5毫秒

D1:    MOV    R7,#250

    DJNZ    R7,$

    DJNZ    R6,D1

ntov:  

    mov dptr,#tab

    mov a,adc 

    movc a,@a+dptr

    mov b,#2

    div ab

    mov r1,b

    mov b,#10

    div ab

    mov led_2,a

    mov led_1,b

    cjne r1,#01,kk1

        mov led_0,#05

back:   ret

kk1:    mov led_0,#00

        ajmp back

    RET

TABLE:     DB         3FH,06H,5BH,4FH,66H

    DB         6DH,7DH,07H,7FH,6FH        MOV     B,#10

        DIV     AB

        MOV     LED_1,A

        MOV     LED_0,B

        LCALL    DISP

        SJMP     WAIT

INT_T0:    CPL        CLOCK             ;提供ADC0808时钟信号

        RETI

    

DISP:    mov    dptr,#table

       MOV    A,LED_0            ;数码显示子程序

    MOVC    A,@A+DPTR

    CLR    P2.3

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.3

        mov    dptr,#table

    MOV    A,LED_1

    MOVC    A,@A+DPTR

    CLR    P2.2

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.2

        mov    dptr,#table

    MOV    A,LED_2

    MOVC    A,@A+DPTR

    setb    acc.7

    CLR    P2.1

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.1

    RET

DELAY:    MOV    R6,#10            ;延时5毫秒

D1:    MOV    R7,#250

    DJNZ    R7,$

    DJNZ    R6,D1

ntov:  

    mov dptr,#tab

    mov a,adc 

    movc a,@a+dptr

    mov b,#2

    div ab

    mov r1,b

    mov b,#10

    div ab

    mov led_2,a

    mov led_1,b

    cjne r1,#01,kk1

        mov led_0,#05

back:   ret

kk1:    mov led_0,#00

        ajmp back

    RET

TABLE:     DB         3FH,06H,5BH,4FH,66H

    DB         6DH,7DH,07H,7FH,6FH

        

MOV     B,#10

        DIV     AB

        MOV     LED_1,A

        MOV     LED_0,B

        LCALL    DISP

        SJMP     WAIT

INT_T0:    CPL        CLOCK             ;提供ADC0808时钟信号

        RETI    

DISP:    mov    dptr,#table

       MOV    A,LED_0            ;数码显示子程序

    MOVC    A,@A+DPTR

    CLR    P2.3

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.3

        mov    dptr,#table

    MOV    A,LED_1

    MOVC    A,@A+DPTR

    CLR    P2.2

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.2

        mov    dptr,#table

    MOV    A,LED_2

    MOVC    A,@A+DPTR

    setb    acc.7

    CLR    P2.1

    MOV    P0,A

    LCALL    DELAY

    SETB    P2.1

    RET

DELAY:    MOV    R6,#10            ;延时5毫秒

D1:    MOV    R7,#250

    DJNZ    R7,$

    DJNZ    R6,D1

ntov:  

    mov dptr,#tab

    mov a,adc 

    movc a,@a+dptr

    mov b,#2

    div ab

    mov r1,b

    mov

    div ab

    mov led_2,a

    mov led_1,b

    cjne r1,#01,kk1

        mov led_0,#05

back:   ret

kk1:    mov led_0,#00

        ajmp back

    RET

TABLE:     DB         3FH,06H,5BH,4FH,66H

    DB         6DH,7DH,07H,7FH,6FH

    mov r1,b

    mov b,#10

    div ab

    mov led_2,a

    mov led_1,b

    cjne r1,#01,kk1

        mov led_0,#05

back:   ret

kk1:    mov led_0,#00

        ajmp back

    RET

TABLE:     DB         3FH,06H,5BH,4FH,66H

    DB         6DH,7DH,07H,7FH,6FH

tab:

db      0,      0   ,      0   ,    1,    0,    2,    0,    0,    3,    0

db    4,    0,    0,    5,    0,    6,    0,    0,    7,    0

db    8,    0,    0,    9,    0,    0,    10,    0,    11,    0

db    0,    12,    0,    13,    0,    0,    14,    0,    15,    0

db    0,    16,    0,    17,    0,    0,    18,    0,    19,    0

db    0,    20,    0,    0,    21,    0,    22,    0,    0,    23

db    0,    24,    0,    0,    25,    0,    26,    0,    0,    27

db    0,    28,    0,    0,    29,    0,    0,    30,    0,    31

db    0,    0,    32,    0,    33,    0,    0,    34,    0,    35

db    0,    0,    36,    0,    37,    0,    0,    38,    0,    39

db    0,    0,    40,    0,    0,    41,    0,    42,    0,    0

db    43,    0,    44,    0,    0,    45,    0,    46,    0,    0

db    47,    0,    48,    0,    0,    49,    0,    50,    0,    0

db    51,    0,    0,    52,    0,    53,    0,    0,    54,    0

db    55,    0,    0,    56,    0,    57,    0,    0,    58,    0

db    59,    0,    0,    60,    0,    0,    61,    0,    62,    0

db    0,    63,    0,    ,    0,    0,    65,    0,    66,    0

db    0,    67,    0,    68,    0,    0,    69,    0,    70,    0

db    0,    71,    0,    0,    72,    0,    73,    0,    0,    74

db    0,    75,    0,    0,    76,    0,    77,    0,    0,    78

db    0,    79,    0,    0,    80,    0,    0,    81,    0,    82

db    0,    0,    83,    0,    84,    0,    0,    85,    0,    86

db    0,    0,    87,    0,    88,    0,    0,    ,    0,    90

db    0,    0,    91,    0,    0,    92,    0,    93,    0,    0

db    94,    0,    95,    0,    0,    96,    0,    97,    0,    0

db    98,    0,    99,    0,    0,    100,    0,    0,    0

END

第6章 系统仿真与调试

简易数字电压表与“标准”数字电压表测得的绝对误差应在0.02V以内。

在进行电路的局部调试之后,我又进行了系统整机调试。首先为ADC0808接上+12V的电压,为其它芯片接上+5V的工作电压。另外还要输入待测的模拟电压,该电压从200mV以下的电压开始输起,依次增大,直到达到待测电压的上限5V为止,记录测量数据并分析系统性能。

6.1 系统仿真

调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见表5-2所示。

表6-1 测试值与真实值

电压表测得值/V

0.000.3320.390.5070.9961.2501.5032.0002.480
绝对误差/V

0.00+0.02+0.01+0.02+0.01+0.01+0.03+0.00+0.01
电压表测得值/V

4.9805.079.9612.5015.0319.9229.8839.8449.80
绝对误差/V

+0.00+0.02+0.01+0.01+0.02+0.02+0.02+0.03+0.02
从表中可以看出,电压表测得值误差均在0.02V以内,这与采用8位A/D转换器所能达到的理论误差精度相比较接近,因此在一般的应用场合都可以满足要求。

6.2 性能分析

(1)由于单片机为8位处理器,当输入电压为5.00V时,输出数据值为255(FFH),因此单片机最大的数值分辨率为0.0196V(5/255)。这就决定了该电压表的最大分辨率(精度)只能达到0.0196V。测试时电压数值的变化一般以0.02的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。

(2)简易电压表测得的值基本上均比标准值偏大0.01~0.02V。这可以通过校正0809的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。

结论

仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0~5V,最小分辨率为0.02V,满足任务书指标要求。但是,该系统也存在一定程度的不足,例如:

1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;

2、输出量可用平均值算法来改善,使测量准确度更高。

3、若能将测量的电压值实时保存,使用时将更方便。

4、ADC0808可实现对8个通道的输入信号轮流转换,本设计仅仅使用了其中一个通道,造成了较大的资源浪费。若能对电路稍加改进,实现对多路信号的轮流测量并自动保存相应结果,其应用价值将会更大。

收获:此次数字电压表的设计我们小组成员认真参与,积极探讨,很好地完成了设计,我们把所学知识加以运用,收获良多……

    

文档

数字电压表课程设计

《数字电压表设计》课程设计报告2010年6月28日目录摘要1第1章绪论2第2章设计任务与要求32.1设计任务32.2设计要求4第3章方法选择方案设计53.1方法选择53.2方案设计5第4章硬件设计54.1模块设计电路54.1.1时钟电路54.1.2复位电路54.2Protues仿真电路.2.1电路仿真图.2.2电路工作原理.3逐次逼近式A/D转换模块设计.3.1ADC0808简介.3.2A/D转换电路设计8第5章系统软件设计145.1主程序设计145.2源程序编写15第6章
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top