微机原理课程设计 数字电压表

更新时间:2024-06-15 10:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电气工程学院

微机原理与接口设计 课程设计

设计题目: 数字电压表

学 号: xxxxxxxxxxx 姓 名: xxxxxxxx 同 组 人: xxxxxxxx 指导教师: xxxxxxxx

设计时间: xxxxxxxxxxxxxxxxxxxxxxx 设计地点: 电气学院实验中心

1

微机原理与接口设计课程设计成绩评定表

姓 名 课程设计题目: 学 号 数字电压表 课程设计答辩或提问记录: 成绩评定依据: 课程设计预习报告及方案设计情况(30%): 课程设计考勤情况(15%): 课程设计调试情况(30%): 课程设计总结报告与答辩情况(25%): 最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

年 月 日

2

微机原理与接口设计课程设计任务书

学生姓名: 指导教师:

一、课程设计题目:

二、课程设计要求

1. 根据具体设计课题的技术指标和给定条件,独立进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;

2. 查阅有关参考资料和手册,并能正确选择有关元器件和参数,对设计方案进行仿真; 3. 完成预习报告,报告中要有设计方案,设计电路图,还要有仿真结果; 4. 进实验室进行电路调试,边调试边修正方案;

5. 撰写课程设计报告——最终的电路图、调试过程中遇到的问题和解决问题的方法。

数字电压表

三、进度安排

1.时间安排 序 号 1 2 3 4 内 容 方案论证和系统设计 完成电路仿真,写预习报告 电路调试 写设计总结报告与答辩 合 计 设计调试地点:电气楼410

2.执行要求

微机原理与接口技术课程成绩优秀的可以自拟题目,其余的同学都是指定题目。,每组不得超过2人,要求学生在教师的指导下,独力完成所设计的详细电路(包括计算和器件选型)。严禁抄袭,严禁两篇设计报告雷同。

学时安排(天) 1 1 2 1 5 3

摘要

随着我国现代化技术建设的发展,电子检测技术日新月异,我们的课程设计是基于80C51单片机的一种8路输入电压测量电路,该电路采用ADC0832 A/D转换元件,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单, 可以测量0~2V和0~0.2V的电压值,并在四位LED数码管上轮流显示或单路选择显示。所用的元件较少,成本低,调节工作可实现自动化,还可以方便地进行8路A/D转换量的测量。

关键词:数字电压表 A/D转换器 电压测量

Abstract

With the construction of modern technology, electronic detection technology advances, the 80C51 microcontroller for this design is based on an 8-input voltage measurement circuit that uses ADC0832 A / D conversion components, digital voltage meter hardware and software design . The system's digital voltmeter circuit is simple, can measure the voltage 0 ~ 2V and 0~0.2V, and the four turns on the LED digital display or a single select Show. Fewer components used in low cost, regulation work can be automated, You can also easily 8 A / D conversion volume measurement.

Key words: digital voltmeter A/D converter voltage measurement

4

目录

摘要 ................................................. 4 Abstract ............................................. 4 目录 ................................................. 5 第一章 系统方案设计 ................................... 1 第二章 仿真 ........................................ 14 第三章 调试 ........................................ 17 第四章 结论 ........................................ 18 第五章 心得体会与建议 ............................... 19 参考文献 ............................................ 20 附录1:元器件清单 ................................... 21

5

第一章 系统方案设计

一. 数字电压表设计要求简介

做一个量程可变的数字电压表。主要用到的芯片有AD0832,继电器,8051单片机,运放及其外围设备。主要的设计思路是将电压表设计成两档,0~200mV和0~2V。其相对应的运放的放大增益是25倍和2.5倍。

二. 工作原理

1. STC89C51单片机

89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

管脚说明:

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

1

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想

2

禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

2. 74HC245

总线收发器(bus transceiver),典型的CMOS型三态缓冲门电路。

由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。

第1脚DIR,为输入输出端口转换用, DIR=“1”高电平时信号由“A”端输入“B”端输出, DIR=“0”低电平时信号由“B”端输入“A”端输出。第2~9脚“A”信号输入输出端,A1=B1﹑﹑﹑﹑﹑﹑A8=B8,A1与B1是一组,如果DIR=“1”G=“0”则A1输入B1输出,其它类同。如果DIR=“0”G=“0”则B1输入A1输出,其它类同。 第11~18脚“B”信号输入输出端,功能与“A”端一样,不在描述。第19脚G,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用 第10脚GND,电源地。第20脚VCC,电源正极。

3

管脚说明:

第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。

第2~9脚“A”信号输入输出端,A0=B0、、、、、、A7=B7,A0与B0是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。

第11~18脚“B”信号输入输出端,功能与“A”端一样,不再描述。

第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。

第10脚GND,电源地。 第20脚VCC,电源正极。

3. ADC0832

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。

正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择

4

的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见官方资料。

如资料 所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行

输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出

DC0832封装以及各端子(1张)完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

管脚说明:

CS_ 片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。

Vcc/REF 电源输入及参考电压输入(复用)。

4. 继电器和放大器

5

继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

放大器:能把输入讯号的电压或功率放大的装置,由电子管或晶体管、电源变压器和其他电器元件组成。

P1.2控制继电器的工作状态,当P1.2低电平时,继电器处于常闭状态,那么相对应的运放的放大增益为25倍。而当P1.2为高电平时继电器工作,其对应的放大增益即变为2.5倍。对于一个模拟输入,现将其放大2.5倍,然后由AD输入并相应转化,如果它的输出要是小于0.5V,也就是19H,则选择此档位是不精确的,也说明此时的输入电压介于0~200mV之间。那么我们就需要让P1.2置低电平,将相应的放大倍数改成25以提高转换精度。若其满足相应的条件则直接将其转换成BCD码并直接送数显示即可。

三. 实验原理和设计思路

由ADC0832采集电压信号,电压信号经过ADC0832变成相应的数字信号进入89s51,89s51根据输入电压的大小通过继电器和放大器电路选择对应的放大倍数及量程,然后显示在数码管上。

6

最终电路图如下:

1、 系统组成框图如下

STC89C51 ADC0832 电源、时钟、复位电路 显示电路 输入电压

7

程序流程图:

开始 清除显示器 启动AD转换 AD转换完成 是 转换数据送A BCD转换调整 输出显示 8 否2、

3、 ADC0832数据读取程序流程图

开始 初始化通道选择 ADCLK清零、CS置低 产生CLK信号 输入通道控制串行循环送数 CS 、CLK初始化 将值送入指定寄存器 结束

9

四. 程序设计

ORG 0000H LJMP MAIN ORG 0600H

MAIN: MOV SP,#70H ;设堆栈起始地址

MOV R0,#40H ;将转换得到BCD码高位地址给R0 MOV R2,#0DFH ; CLR 20H.0 ;

START: LCALL TOAD ; MOV 30H,A ; JB 20H.0,READY

LCALL SWITCH ; JB 20H.0,START

READY: LCALL TRANSFER ; LCALL DISPLAY ; CLR 20H.0

SJMP START ;

;AD转换电压采集程序

TOAD: CLR P3.3 ;CS=0

MOV A,#03H ; MOV R3,#03H

LOOPB1: CLR P3.2 ;CLK=0 RRC A MOV P3.0,C NOP

SETB P3.2 ;CLK=1 DJNZ R3,LOOPB1

CLR P3.2 ; NOP

SETB P3.2 ;CLK=1 MOV R3,#08H

LOOPB2: CLR P3.2 ;CLK=0 MOV C,P3.1 ;

将高位LED数码位选择地址给R2 调用AD电压采集程序 将采集回来的数据存储到30H 调用量程判断切换程序 调用BCD码换算程序 调用显示程序 返回作循环电压测量 起始位和配置位为011 通道稳定脉冲 读入一位数据

10

RLC A

SETB P3.2 ;CLK=1 DJNZ R3,LOOPB2

SETB P3.3 ;CS=1 RET

;量程判断切换程序 SWITCH: MOV A,30H JB P3.4,SWITCH2 SWITCH1: CJNE A,#0FEH,NEXT1 NEXT1: JC BACK SETB P3.4

MOV A,#0FEH

MOV P0,A MOV

MOV DPTR,#TAB1 ; MOVC

MOV P2,A

LCALL DELAY SETB 20H.0 SJMP BACK

SWITCH2: CJNE A,#15H,NEXT2 NEXT2: JNC BACK CLR P3.4

MOV A,#0FEH

MOV P0,A MOV

MOV DPTR,#TAB1 ; MOVC

MOV P2,A

LCALL DELAY SETB 20H.0 BACK: RET

;BCD码转换程序

;大量程

;由小量程变为大量程

;显示字符1

选择表TAB1 ;小量程

;由大量程变为小量程

;显示字符2

选择表TAB1 11 A,#01H

A,@A+DPTR A,#02H

A,@A+DPTR

TRANSFER: MOV A,30H JNB P3.4,TRF1

ADD A,#06H ;补偿量程切换造成的电压差值 TRF1: MOV B,#200 ;B赋值200 MUL AB MOV R1,A MOV A,B

;B赋给A ;B赋值100

;A除以100,A为商,B为余数

;AB乘 低8位给A

MOV B,#100 DIV AB MOV 40H,A MOV A,B MOV B,#10 DIV AB MOV 41H,A MOV 42H,B MOV A,R1 MOV B,#100 DIV AB MOV 43H,A RET ;数码显示输出程序

DISPLAY: MOV R4,#06H DISPLAY1: MOV A,R2 MOV P0,A JNB P3.4,AB1

;B赋给A

;A除以10,A为商

;R1赋给A ;B赋值100

;A除以100,A为商,B为余数

JB ACC.5,ABX ;根据字位选择查相应的表 AB2: MOV DPTR,#TAB2 ;选择表TAB2 SJMP CONTINUE AB1:

JNB ACC.3,AB2

ABX: MOV DPTR,#TAB1 ;选择表TAB1 CONTINUE: MOV A,@R0 MOVC A,@A+DPTR MOV P2,A LCALL DELAY MOV A,R2

12

JNB ACC.2,RETURN RR A MOV R2,A INC R0 SJMP DISPLAY1 RETURN: MOV R0,#40H MOV R2,#0DFH DJNZ R4,DISPLAY1 RET

TAB1: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H TAB2: DB 0BFH 86H 0DBH 0CFH 0E6H 0EDH 87H 0FFH 0EFH 0F7H ;延时程序

DELAY: MOV R7,#0AH DELAY1: MOV R6,#0FFH DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END

13

第二章 仿真

实验电路图:

电阻为0欧姆时:

14

电压为<200mV时:

15

电压为>200mV时:

电压最大值为1.99V时:

16

第三章 调试

电压为0mV时:

电压为193.1mV时:

电压为0.210V时:

17

电压为1.922V时:

第四章 结论

本次课程设计在老师的帮助下,我们解决了切换档位、字符错误的问题,完成了规定的所有要求,并对该电路板上所用电路以及元器件有了更为深刻的认识。但是对于一个完整的电压表而言,我们的工作还存在缺陷,就是当电压表超出量程的时候,我们的电压表会出现重新开始计数的问题。这个问题我们能力有限所以难以解决,这将是我们今后认真研究的一个问题。

遇到的问题:

本次实验我们根据老师发的电路板做了仿真,虽然做仿真不太难,但是调程序的时候遇到了一些解决的问题。

1. 量程的调变。我们组先根据电路图和课设的要求把程序写了,然后做了仿真。做完

仿真后把程序调到仿真电路图里面,经过一个小时左右的调试得到了单量程的电压表效果。但是得到双量程的电压表不是那么容易了。

2. 字符错误。当处于低量程时候,电压表示数会出现A字符,这不符合十进制的基本

常识,说明算法出现了严重错误。 解决步骤:

我们先把程序查了两三次,没发现问题,然后查了仿真电路图,也没发现问题。我们跟其他组同学讨论了很长时间也没发现问题,虽然把电路图改了以后显示效果有发生变化,但是比200mv一下的电压值显示不是理想的。我们周末两天的时间为了解决这个问题而奋斗得到了双量程的电压表,输入电压从小到大变化过程没错,从大到小变化时就乱了,。我们程序按照逻辑构成又分析了一遍,结果发现问题在于仿真电路和实际电路的不同即我们所选的量程转折点电压值对应的数字在仿真里面没有,于是我们把量程转折点改了以后就得到了理想的有两个量程的数字电压表。

同时,在详细剖析程序时候,我们还一起对小量程时候的算法进行逻辑分析,发现我们的算法在小量程时,进位的写错了,应该是当余数出现10时候,要考虑对其进行“+1”运算,才能避免出现字符里的A情况。

18

第五章 心得体会与建议

此次单片机课程设计较其他课程设计而言时间较充足,因此我们组也做了充分的前期准备。得知课程设计的题目与要求之后,便与组员一起查找资料,对相关元器件的工作原理和结构进行分析和研究,并设计了电路图。由于这次实验AD采集用的不是AD0809而是AD0832,而AD0832是我们所不熟悉的,为了弄明白AD0832的工作原理和模拟量采集与模数转换的具体实现过程进而为编程做准备,我们在网上和图书馆查找资料,这也加强了我们的自学能力。同时对单片机的引脚连接有了更为直观的认识,对于程序的编写也有了很大的提高。

指导老师的严谨负责,也给了我们很大的帮助。例如在验收时他提问继电器的结构和它内部的工作原理是怎样的。我们对继电器的认识只停留在了它在整个设计中的作用上而忽略了它本身内部的结构和原理,当老师提出这一问题时,我们认真思索,翻阅资料,在较短的时间内牢牢的掌握住了继电器的工作原理,老师的鼓励也给了我们很大的信心。在此要感谢王老师,他使我们懂得在学习中要有自主钻研的精神,要踏踏实实,从小的知识点全方位的掌握课程内容。

19

参考文献

[1]李维波,MATLAB在电气工程中的应用,中国电力出版社,2007 [2]胡汉才,单片机原理及其接口技术,清华大学出版社,2004

20

附录1:元器件清单

1. 实验指定所用电路板 2. 51单片机wave仿真器 3. +5V,±12V稳压电源

21

本文来源:https://www.bwwdw.com/article/48c3.html

Top