保捱科技网
您的当前位置:首页中北大学单片机课设数字电压表课程设计

中北大学单片机课设数字电压表课程设计

来源:保捱科技网
单片机原理及接口技术课程设计

1 绪论

数字电压表(Digital Voltmeter )简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电抓)转换成不连续、离散的数字形式并加以显小的仪表。传统的指针式电压表表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字!电压,由精度高、抗十扰能力强,可扩展性强、集成方便,还可与PC 进行实时通信。本系统用单片机ATC51构成数字电压表控制系统,具有精度高、速度快、性能稳定和电路简且工作可靠等特点,具有很好的使用价值。

数字电压表是诸多数字化仪表的核心与基础。以数字电压表为基础,可扩展成各种数字仪表及非.巨量的数字化仪表,其应用覆盖电子电工测量、工业测量、自动化仪表等领域。与指针式电坏表相比,数字电压表具有很多优点:读数直观、准确,以数字形式显示电压,避免读数视差和视觉疲劳;显示范围宽、分辨力高,指针电压表准确度由0.1~5.0 分为7 个等级,数字电压表由0.0005~ 1.0 分为11 个等级,数字电压表分辨力日前可做到从2 到10 ;转入阻抗(转入电阻)高(l~104Mft ) ,吸收被测信号电流极小,测量误差小,几可忽略;集成度高,功耗小;可扩展能力张。

如今,微型化是计算机发展的重要方向,把计算机的运算器、控制器、存贮器输入/输出接口四个组成 部分集成在一个硅片内,于是就出现了以一个大规模集成电路为主组成 的微型计算机——单片微型计算机,简称单片机,由于单片机的重要应用领域为智能化电子产品,一般需要嵌入仪器设备内,故又称为嵌入式微控制器。本课程设计要求采用单片机来设计一个数字电压表,输入为0~5V线性模拟信号,输出通过LED显示。这里就涉及到模数转换,LED显示器与单片机的连接,单片机时钟电路与复位电路和驱动的接法。需了解各设计要求,并清楚各芯片的引脚及其功能和各芯片之间的连接方法,重点为所选单片机C51各引脚的选取及其分配。对于此次课程设计要求,采用了51系列单片机、ADC0808、7段LED数码管、可变电阻等器件,从局部到整体的设计,成功实现其功能要求。

第 - 1 - 页 共 15 页

单片机原理及接口技术课程设计

2 整体系统框图

2.1 整体系统框图和系统原理 2.1.1 系统方案描述

通过电压输入,将其放大(或可省这一步),再将其进行A/D转换,得到数字信号,通过51单片机及其程序控制将其用LED显示出来,51系列单片机需连复位电路和晶振电路。

51系列 单片机 数据显示 电压输入

A/D 电压放大 复位电路 图1系统原理框图

2.1.2 A/D转换器接口

在单片机的实时控制和智能仪器仪表等应用系统中,被控制或被测量对象的有关参量往往是一些连续变化的模拟量,如温度、压力、流量、速度等物理量,这些模拟量必须转换成数字量后才能输入到计算机进行处理。计算机处理的结果,也常常需要转换为模拟信号,驱动相应有招待机构,实现对被控对象的控制。若输入是非电的模拟信号,还必须通过传感器转换成电信号并加以适当的放大。实现模拟量转换成数字量的器件称为A/D转换器。实现数字量转换成模拟量的器件称为D/A转换器。图2为具有模拟量输入和模拟量或数字量输出的MCS-51应用系统结构框图。

第 - 2 - 页 共 15 页

单片机原理及接口技术课程设计

模拟信号(非电量) A/D 转 换 器 MCS-51 数字量输出 模拟信号(电信号) D/A转换器 模拟量输出

图2、具有模拟量输入和模拟量或数字量输出的MCS-51应用系统框图

本设计中是具有模拟量输入和数字量输出的设计,其中模拟信号是电信号,所以如框图中采用相应的结构图。 2.1.3 LED显示器及接口

在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)和LCD(液晶显示器)。这两种显示器成本低廉、配置灵活,与单片机接口方便。这里主要讲LED显示器的结构。LED显示器是由发光二极管来显示字段的器件。在单片机应用系统中常用七段显示器。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。图三为七段发光显示器的结构图。一个显示器由八个发光二极管组成,其中七个发光二极管控制a~g七个段的亮或暗,另一个发光二极管控制一个小数点的亮或暗。这种七段显示器能显示的字符较少,字符的开头有些失真,但与单片机的控制接口非常简单,使用方便。

第 - 3 - 页 共 15 页

单片机原理及接口技术课程设计

表一、七段LED显示器的段选取码

显示字符 0 1 2 3 4 5 6 7 8 9 A B 共阴极段选码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH 共阳极段选码 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 88H 83H 显示字符 共阴极段选码 C D E F P U 39H 5EH 79H 71H 73H 3EH 31H 6EH FFH 00H 共阳极段选码 C6H A1H 86H 8EH 8CH C1H CEH 91H 00H FFH  Y 8. “灭”

2.2 系统原理

如图3所示,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 - 页 共 15 页

单片机原理及接口技术课程设计

图3系统原理图

3 系统硬件设计

3.1 内部时钟电路

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

图4内部时钟电路

第 - 5 - 页 共 15 页

单片机原理及接口技术课程设计

最常用的内部时钟方式是采用外接晶体(陶瓷谐振器的频率稳定性不高)和电容组成的并联谐振回路,否认是HMOS还是CHMOS型单片机,其并联谐和振回路及参数相同, MCS-51单片机允许的振荡晶体可在1.2MHz~24MHz之间选择,一般取11.0592MHz。我们取12MHz。电容的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有少许影响。C1、C2可在20pF~100pF之间选择,一般当外接晶体时典型取值为30pF,外接陶瓷谐和振器时典型取值为47pF, 取60pF~70pF时振荡器有较高的频率稳定性。

3.2 上电复位电路

图5上电复位电路图

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

3.3 A/D转换模块设计 3.3.1 ADC0808简介

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

图6 ADC0808引脚图

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

第 - 6 - 页 共 15 页

单片机原理及接口技术课程设计

八路模拟量输入。

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

D0~D7:八位数据输出线,A/D转换结果由这8根线传送给单片机。 OE:允许输出信号。当OE=1时,即为高电平,允许输出锁存器输出数据。

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

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

图7 ADC0808内部结构图

3.3.3 A/D转换电路设计

第 - 7 - 页 共 15 页

单片机原理及接口技术课程设计

图8 ADC0808与单片机的连接

4 系统软件设计

4.1 主程序设计 1. 初始化程序

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

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

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

第 - 8 - 页 共 15 页

单片机原理及接口技术课程设计

图9主程序流程图

4. 模/数转换测量子程序

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

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

第 - 9 - 页 共 15 页

单片机原理及接口技术课程设计

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

第 - 10 - 页 共 15 页

单片机原理及接口技术课程设计

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 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, 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

0, 3, 0 第 - 11 - 页 共 15 页

单片机原理及接口技术课程设计

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

5 系统仿真与调试

简易数字电压表与“标准”数字电压表测得的绝对误差应在0.05V以内。 在进行电路的局部调试之后,我又进行了系统整机调试。首先为ADC0808接上+5V的电压,为其它芯片接上+5V的工作电压。另外还要输入待测的模拟电压,该电压从0V开始输起,依次增大,直到达到待测电压的上限5V为止,记录测量数据并分析系统性能。

图10 Protues电路仿真图

第 - 12 - 页 共 15 页

单片机原理及接口技术课程设计

图11输入电压 图12实际显示电压

调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表如图11和图12所示,测试值与真实值分析见表2。

表2 测试值与真实值

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

第 - 13 - 页 共 15 页

单片机原理及接口技术课程设计

课设总结及心得

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

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

2、输出量可用平均值算法来改善,使测量准确度更高。 3、若能将测量的电压值实时保存,使用时将更方便。

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

本次实验为制作一个数字电压表,用到51系列单片机和模数转换器,显示器等,并且需要编程,硬件制作和调试。设计过程中出现不少问题,也可以学到不少知识。要了解单片机系统结构、指令系统、C语言(汇编语言也可)及单片机应用系统的基本设计方法。利用Proteus和Keil软件进行设计,掌握其应用,在绘制电路图时,开始不是很熟悉,对一些基本操作都不是很熟练,在经过看一些操作介绍和对同学的请教后对其操作了解得很清楚了,再在已有的电路图制作安排上将其绘制出来就很简单了。在实验中,获得不少,首先是将一些单片机和C语言的知识复习了一遍,其次是学会了两个软件的用法,最后是增加了动手经验。也发现自己还有很多地方有待改进,需要去多努力。最后要感谢老师在百忙之中指点我,谢谢!

第 - 14 - 页 共 15 页

单片机原理及接口技术课程设计

参考文献

1、李朝青,单片机原理及接口技术,北京航空航天超大型出版社。 2、王贤勇,赵传申,单片机原理与接口技术应用教程,清华大学出版社 3、杨恢先 黄辉先等.单片机原理及应用.长沙:国防科技大学出版社,2003年 4、谭浩强. C程序设计(第三版).北京:清华大学出版社,2005年

第 - 15 - 页 共 15 页

因篇幅问题不能全部显示,请点此查看更多更全内容