《单片机技术及其应用》课程设计报告题目:数字电压表的设计班级:11通信本2班学号:1011028432姓名:段苓苓同组人员:钟梦为梅韶田赵赫宇周洋指导教师:刘少敏薛莲2014年06月26日目录1 引言 (1)1.1 设计意义 (1)1.2 系统功能要求 (1)2 设计内容 (1)2.1 设计思路 (1)2.2 主要功能 (2)3 方案论证 (2)3.1 程序设计 (2)3.2 电路设计原理 (3)3.3 软件设计方案 (4)3.4 硬件设计方案 (4)4 单元电路设计 (5)4.1 数码管显示器 (5)4.2 单片机的晶振电路 (6)4.3 显示模块 (7)4.4 ADC0808模数转换芯片 (7)4.5 复位电路 (8)4.6 AT89C52单片机的引脚介绍 (9)4.7 模拟输入电路 (10)4.8 总电路设计 (10)5 系统软件程序的设计 (11)5.1 主程序 (11)5.2 A/D转换子程序 (11)5.3 显示子程序 (11)6 调试及性能分析 (11)6.1 调试方法及步骤 (11)6.2 实物调试数据 (12)6.3 误差分析 (13)7 心得体会 (14)8 指导老师意见 (15)附录: (16)数字电压表的设计1 引言1.1 设计意义我们学习的是单片机这门课程,这门课程最显著的特点就是它是一门实用技术课程,它要求我们不仅仅要掌握扎实的理论基础,更重要的是要学会如何去真真利用它为我们的电路设计服务,也只有通过课程设计这样的动手实践才是我们掌握这门技术的最佳途径,因此,我们开设这样的实践是很重要的,也是我们努力去学习钻研的动力。
数字电压表是采用数字化检测技术,把连续的模拟量(直流输入电压)换成不连续的、离散的数字形式并加以现实的仪表,克服了传统模拟电压表的读书不方便和不精确等问题。
不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强集成方便,还可以与PC进行实时通信。
目前,由各种单片A/D转换器构成的数字电压表,已广泛应用于电子电工测量、工业自动化仪表、自动测试系统等智能化测量领域,展现了强大的生命力。
与此同时,由数字电压表扩展而成的各种通用及专用数字化仪器,也把电量及非电量测量技术提高到了崭新的水平,因此,通过这次课程设计能让我们了解这些知识,为以后研究相关技术打下坚实的基础。
1.2 系统功能要求采用51系列单片机和ADC设计一个数字电压表,测量0~5V范围内的8路输入电压值,并在4位LED数码管上轮流显示或单路选择显示,要求显示两位小数。
2 设计内容2.1 设计思路(1)根据设计要求,选择AT89C51单片机为核心控制器件。
(2)A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四位引脚。
(3)电压显示采用4位一体的LED数码管。
(4)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。
2.2 主要功能(1)以MCS-51系列单片机为核心器件,组成一个简单的直流数字电压表(2)1路模拟量输入,能够测量0-5V之间的直流电压值。
(3)电压显示用4位一体的LED数码管显示,至少能够显示两位小数。
3 方案论证3.1 程序设计为了在C语言源程序中直接编写中断服务函数的需要,KeilCx51编译器对函数的定义进行了扩展,增加了一个扩展关键字interrupt,它是函数定义是的一个选项,加上这个选项即可以将一个函数定义成中断服务函数。
定义中断服务函数的一般形式为:函数类型函数名(形式参数表) [interrupt n] [using n] 由于ADC0809的CLOCK的时钟频率不高于640KHZ,在这利用定时器T0的中断产生时钟频率,则可设置为:void t0(void) interrupt 1 using 0ADC0809的时序图如下:图3-1 ADC0808的时序图由时序图可知,只有在转换期间,EOC处于低电平,因此在AD转换开始前EOC置为低电平,START在上升沿期间将芯片内的所有寄存器清零,在下降沿来临时开始转换,由于所用的时钟为100KHz,比较的缓慢不需要再延时,在此等待转换结束,结束后将其数字量输出。
根据上述分析及原理,可设计程序流程图如下:图3-2 程序流程图3.2 电路设计原理模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进行A/D转换。
然后送到单片机中进行数据处理。
处理后的数据送到LED中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用汇编语言编程,利用Keil和PROTEUS 软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。
驱动电路有多种,常用的是TTL或MOS集成电路驱动器,在本设计中采用了74LS244驱动电路。
本实验采用AT89C51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1所示。
该电路通过ADC0809芯片采样输入口IN0输入的0~5 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P0口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口传送给数码管。
同时它还通过其三位I/O口P1.0、P1.1、P1.2、P1.3产生位选信号,控制数码管的亮灭。
另外,AT89C51还控制着ADC0809的工作。
其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.4控制ADC0809的地址锁存端(ALE);P2.1控制ADC0809的启动端(START);P2.3控制ADC0809的输出允许端(OE);P2.0控制ADC0808的转换结束信号(EOC)。
3.3 软件设计方案系统刚上电时,初始化程序主要执行70H-77H内存单元清0和P2口置0等准备工作。
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间在1S左右。
主程序在调用显示子程序与测试子程序之间循环。
图3-3 A/D 转换测试子程序流程图A/D转换测量子程序用来控制对ADC0809的8路模拟输入电压的A/D转换,并将对应的数值移入70H~77H内存单元。
3.4 硬件设计方案3.4.1 主控芯片选用单片机AT89C52和A/D转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;优点是转换京都高,且转换的过程和控制、显示部分可以控制。
3.4.2 显示部分基于课程设计的要求和实验室所能提供的仪器,选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。
图3-4 数字电压表系统设计方框图4 单元电路设计4.1 数码管显示器数码管的驱动方式的不同,可以分为静态式和动态式两类。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
图4-1 共阴极数码管及其接口电路4.2 单片机的晶振电路晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。
这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。
本设计采用12MHz晶振,并联两个30pF电容构成晶振电路。
图4-2 单片机晶振电路4.3 显示模块该模块为数字电压表的显示模块,主要由4位7端共阳LED数码管和PNP 三极管构成的选通电路构成。
其中,我们需注意共阳数码管的数字0-9的编码,另外,每个位选管要与程序对应。
位选是通过单片机P3.0-P3.3口控制三极管的基极从而控制每位数码管的选通。
图4-3 显示模块电路4.4 ADC0808模数转换芯片图4-4 ADC0808的引脚ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
引脚功能(外部特性)ADC0809芯片有28条引脚,采用双列直插式封装,如右图所示。
各引脚功能如下:1~5和26~28(IN0~IN7):8路模拟量输入端。
8、14、15和17~21:8位数字量输出端。
22(ALE):地址锁存允许信号,输入,高电平有效。
6(START): A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。