单片机的数字电压表课程设计报告课案.docx
- 文档编号:29532248
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:23
- 大小:408.49KB
单片机的数字电压表课程设计报告课案.docx
《单片机的数字电压表课程设计报告课案.docx》由会员分享,可在线阅读,更多相关《单片机的数字电压表课程设计报告课案.docx(23页珍藏版)》请在冰豆网上搜索。
单片机的数字电压表课程设计报告课案
单片机的数字电压表课程设计报告
设计课题:
基于STC89C51的数字电压表设计
专业班级:
******
学生姓名:
******
指导教师:
******
设计时间:
2016年1月1日
内容摘要
电压表是测量仪器中不可缺少的设备,目前广泛应用的是采用专用集成电路实现的数字电压表。
本系统以8051单片机为核心,以逐次逼近式A/D转换器ADC0809、数码管显示器为主体,设计了一款简易的数字电压表,能够测量0~5V的直流电压,最小分辨率为0.02V。
该设计大体分为以下几个部分,同时,各部分选择使用的主要元器件确定如下:
1、单片机部分。
使用常见的8051单片机,同时根据需要设计单片机电路。
2、测量部分。
该部分是实验的重点,要求将外部采集的模拟信号转换成数字信号,通过单片机的处理显示在显示器上,该部分决定了数字电压表的精度等主要技术指标。
根据需要本设计采用逐次逼近型A∕D转换器ADC0809进行模数转换。
3、数码管显示部分。
其中一位为整数部分,其余位小数部分。
索引关键词:
8051模数转换数码管显示
ContentsAbstract
Thevoltmeterisindispensableinmeasuringinstrumentsandequipment,iswidelyuseddigitalvoltmeterASICimplementation.8051,successiveapproximationtypeA/DconverterADC0809digitaltubedisplayasthemaindesignofasimpledigitalvoltmetercapableofmeasuring0to5VDCvoltage,minimumresolutionof0.02V.
Thedesignisdividedintoseveralparts,eachpartofthemaincomponentsselectedforusearedeterminedasfollows:
1,microcontrollerpart.Usingacommon8051,accordingtotheneedtodesignamicrocontrollercircuit.
2,themeasurementsection.Thispartisthefocusoftheexperiment,requireexternalacquisitionoftheanalogsignalisconvertedintoadigitalsignalthroughthemicrocontrolleroftheprocessinganddisplayonthedisplay,theportiondeterminesthemaintechnicalindicatorssuchastheprecisionofthedigitalvoltmeter.AccordingtotheneedsofthedesignusingsuccessiveapproximationtypeA/DconverterADC0809analog-to-digitalconversion.
3,thedigitaldisplaysection.Onefortheintegerpart,theremainingbitsofthefractionalpart.
IndexKeywords:
8051Analog-to-digitalConversiondigitaldisplay.
目录
内容摘要……………………………………………………………………………………………2
ContentsAbstract………………………………………………………………………………3
一概述……………………………………………………………………………………………5
1.1概述………………………………………………………………………………………5
二、设计题目及要求………………………………………………………………………………6
2.1、题目及设计要求…………………………………………………………………………6
2.2、主要技术指标……………………………………………………………………………6
三、方案论证及选择………………………………………………………………………………7
3.1主要设计方框图如下…………………………………………………………………7
3.2方案论证:
………………………………………………………………………………7
四、电路设计原理…………………………………………………………………………………8
4.1设计原理介绍:
…………………………………………………………………………8
4.2、模数转换…………………………………………………………………………………9
4.3、数据处理及控制………………………………………………………………………10
五、主要元器件的介绍……………………………………………………………………………11
5.1、AT89C51单片机简介……………………………………………………………………11
5.2、ADC0808模数转换芯片简介…………………………………………………………12
5.3、四位共阴极数码管简介…………………………………………………………………13
六、部分电路介绍…………………………………………………………………………………14
6.1、晶振电路…………………………………………………………………………………14
6.2、复位电路…………………………………………………………………………………14
6.3模拟输入电路……………………………………………………………………………14
6.4、显示电路…………………………………………………………………………………15
6.5总电路如下:
…………………………………………………………15
6.6仿真结果如下:
…………………………………………………………………………16
七、程序设计……………………………………………………………………………………17
八、硬件制作与测试………………………………………………………………………………21
8.1、主要仪器及使用方法:
………………………………………………………………21
8.2、硬件制作步骤:
…………………………………………………………………………21
九、设计过程中的问题及解决方案………………………………………………………………22
十、心得体会………………………………………………………………………………………23
一、概述
1.1概述:
数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。
较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
一般说来,A/D转换的方式可分为两类:
积分式和逐次逼近式。
积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。
根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。
逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。
斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。
在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。
本设计以8051单片机为核心,以逐次比较型A/D转换器ADC0809、数码管显示为主体,构造了一款简易的数字电压表,能够测量1路0~5V直流电压,最小分辨率0.02V。
二、设计题目及要求
2.1、题目及设计要求
采用51系列单片机和ADC设计一个数字电压表,输入为0~5V线性模拟信号,输出通过数码管显示,要求显示两位小数。
2.2、主要技术指标
1、数字芯片A/D转换技术
2、单片机控制的数码管显示技术
3、单片机的数据处理技术
三、方案论证及选择
3.1主要设计方框图如下:
数码管显示
单片机处理
模数转换
电压采集
3.2方案论证:
1、主控芯片
方案1:
选用专用转化芯片INC7107实现电压的测量和实现,用四位数码管显示出最后的转换电压结果。
缺点是精度比较低,内部电压转换和控制部分不可控制。
优点是价格低廉。
方案2:
选用单片机AT89C51和A/D转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;优点是转换京都高,且转换的过程和控制、显示部分可以控制。
基于课程设计的要求,我选用了:
方案2。
2、显示部分
方案1:
选用4个单体的共阴极数码管。
优点是价格比较便宜;缺点是焊接时比较麻烦,容易出错。
方案2:
选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;优点是便于控制,价格低廉,焊接简单。
基于课程设计的要求和美观性,我选用了:
方案2。
四、电路设计原理
4.1设计原理介绍:
模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进行A/D转换。
然后送到单片机中进行数据处理。
处理后的数据送到LED中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、数码管显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil和PROTEUS软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在数码管显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时选择数码管显示便有了极大的优点。
本实验采用AT89C51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1所示。
该电路通过ADC0809芯片采样输入口IN0输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P0和P2.1口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1和P2口传送给数码管。
同时它还通过其三位I/O口产生位选信号,控制数码管的亮灭。
另外,AT89C51还控制着ADC0809的工作。
其P2.4口为ADC0809提供了100KHz工作的时钟脉冲;P2.3控制ADC0808的地址锁存端(ALE);P2.3控制ADC0809的启动端(START);P2.0控制ADC0809的输出允许端(OE);P2.2控制ADC0809的转换结束信号(EOC)。
4.2、模数转换
电路原理图如下所示,三个地址位ADDA,ADDB,ADDC均接低电平,因而所需测量的外部电压可由ADC0809的IN0端口输入。
由于ADC0809
在进行A/D转换时需要有CLK信,本设计中利用AT89C51的定时中断产生一个100KHZ的脉冲,由P2.4口送给ADC0809的时钟端,通过软件给其输入一个正脉冲,可立即启动A/D转换。
在软件设计中,由于我们对单片机知识还没能很熟练的掌握,用中断方式较复杂,且这个程序CPU工作量不大,查询方式对速度不会产生影响,所以我们采用查询方式,确保仿真的进度和准确度。
系统原理图
在A/D转换开始之前,逐次逼近寄存器的SAR的内容为0,在A/D转换过程中,SAR存放“试探”数字量,在转换完毕后,它的内容即为A/D转换的结果数字量。
逻辑控制与定时电路在START正脉冲启动后工作,没来一个CLK脉冲,该电路就可能告知向SAR中传送一次试探值,对应输出U0与U1比较,确定一次逼近值,经过8次逼近,即可获得最后转换的结果数字量。
此处,EOC端口的信号显示ADC0808的状态,开始A/D转换时,EOC为低电平,转换结束后,输出高电平。
4.3、数据处理及控制
A/D转换完毕后,单片机的P2.3口接收到一高电平,立马通过P2.0将OE置1,ADC0809的三态输出锁存器被打开,转换完的数字信号经过与D0~D7相连的P0口进入AT89C51。
AT89C51根据公式1-1将数字信号转换为模拟量,然后利用程序获取模拟量的每一位,分别通过P1口输出到LED上。
与此同时,AT89C51会通过P1.0~P3.2口选择用哪一段LED显示所传出的数据。
例如,当S4位选信号为高时,则LED接收到的数据会在第四段LED上显示。
另外,AT89C51一旦获得了数据后便会将ST置0,即模数转换器停止转换,知道LED获得新的数据并显示出来,ST才会重新置1.由于AT89C51转换速率很快(微妙量级),所以不会影响其接收新的数据。
五、主要元器件的介绍
5.1、AT89C51单片机简介
AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C51是一个低电压、高性能CMOS8位单片机。
将通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。
AT89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性:
1、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。
2、兼容MCS51指令系统,8K可反复擦写(>1000次)FlashROM。
3、3个16位可编程定时/计数器中断,时钟频率0-24MHz。
4、32个双向I/O口,256B内部RAM。
5、2个串行中断,可编程UART串行通道。
6、2个外部中断源,共6个中断源。
7、2个读写中断口线,3级加密位。
5.2、ADC0808模数转换芯片简介
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
引脚功能(外部特性)
ADC0808芯片有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转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路。
5.3、四位共阴极数码管简介
数码管有两种:
一种共阴极、另一种为共阳极,本次课程设计用的是共阴极。
下面比较详细说明共阴极与共阳极的共同点与区别:
图(b)的左边为共阴极数码管,也就是数码管的阴极管接地。
那时某段亮,这段就必须接高电平。
共阴极数码管0~9的C51编码为:
1、ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f};
2、ucharcodetable[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
其中1不带小数点,2带小数点。
共阳极就是数码管的每段都接高电平,这样要是哪段亮就这段就得接地。
六、部分电路介绍
6.1、晶振电路
接12MHz晶振,根据芯片手册,适合并联22pf微调电容,从而构成并联谐振,帮助和稳定输出波形。
6.2、复位电路
AT89C51单片机要求至少两个高电平,以便单片机做好准备工作。
当上电时,由于电容的电压不能突变,会输出高电平,当电容充电到一定程度,就会输出低电平,单片机利用输出高电平的这段时间复位。
电阻和电容的值选择要合适。
在这要求R1< ,R2=10 。 6.3模拟输入电路 通过可变电阻一端接电源+5v,一端接地GND,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。 6.4、显示电路 通过P1口控制四位共阴极数码管段选,通过具体接口的低四位控制位选。 值得注意的是P0需要接上拉电阻,否则P0会处于高阻态。 6.5总电路如下: 设计原理: 将模拟量通过IN0输入,经过ADC0809芯片转换,得到数字量输出到单片机P0口,经过单片机处理后,送到四位共阴极数码管上显示。 6.6仿真结果如下: 七、程序设计 为了在C语言源程序中直接编写中断服务函数的需要,KeilCx51编译器对函数的定义进行了扩展,增加了一个扩展关键字interrupt,它是函数定义是的一个选项,加上这个选项即可以将一个函数定义成中断服务函数。 定义中断服务函数的一般形式为: 函数类型函数名(形式参数表)[interruptn][usingn] 由于ADC0808的CLOCK的时钟频率不高于640KHZ,在这利用定时器T0的中断产生时钟频率,则可设置为: voidt0(void)interrupt1using0 ADC0809的时序图如下: 由时序图可知,只有在转换期间,EOC处于低电平,因此在AD转换开始前EOC置为低电平,START在上升沿期间将芯片内的所有寄存器清零,在下降沿来临时开始转换,由于所用的时钟为100KHz,比较的缓慢不需要再延时,在此等待转换结束,结束后将其数字量输出。 根据上述分析及原理,可设计程序流程图如下: 设计程序如下: #include #include #defineucharunsignedchar #defineucharunsignedchar #defineuintunsignedint sbitSTART=P3^0; sbitOE=P3^1; sbitEOC=P3^2; sbitP07=P0^7; sbitCLK=P3^4; uchardataled[4]; uintdatatvdata; ucharcodetv[]={0xfe,0xfd,0xfb,0xf7}; ucharcodea[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; voiddelay(void)//延时程序 { uinti; for(i=0;i<10;i++); } voidledxianshi(void)//显示模块 { uchark,i; if(tvdata>5000) tvdata=5000; led[0]=tvdata%10; led[1]=tvdata/10%10; led[2]=tvdata/100%10; led[3]=tvdata/1000; for(k=0;k<4;k++) { P2=tv[k]; i=led[k]; P0=a[i]; if(k==3) { P07=1; } delay(); } } voidmain(void) { ET0=1; EA=1; TMOD=0x02; TH0=216; TL0=216; TR0=1; while (1) { START=1; START=0;//启动转换 while(EOC==0); OE=1; tvdata=P1; tvdata*=20-0.01; OE=0; ledxianshi(); delay(); } } voidt0(void)interrupt1using0 { CLK=~CLK; } 八、硬件制作与测试 8.1、主要仪器及使用方法: 主要仪器: 5v直流电源,剥线钳,数字万用表,通用版电路板,电烙铁,镊子,USB转串口线。 其中5v电源可以从电脑的USB接口引出,使用电烙铁时注意不要手直接触摸。 调试电路的方法和技巧: (1)目测检查外部的各种元件或者是电路是否有断点,有无虚焊 (2)用万用表测试先用万用表符合目测中有疑问的点,再检查各种电源线与地线之间是否有短路现象 (3)加电检测给板子加电,检测所有的插座或是器件的电源端的电压是否符合要求的值 注意事项在通电检查前,一定要确保电路板没有短路 8.2、硬件制作步骤: (1)将单片机的最小系统焊接出来,进行调试,检验是否能下载程序、进行电路复位、晶振是否起振。 (2)扩展部分的焊接,在这我采用了ADC0809作为扩展芯片,并利用单片机驱动数码管显示。 (3)焊接完后对电路进行调试,检查结果是否正确。 焊接的电路图如下: 九、设计过程中的问题及解决方案 (1)单片机的最小系统完成后,接上发现显示灯不亮。 检查发光二极管是否接地或接电源,若都接了则检查晶振是否起振,电路是否短路或断路,结果发现忘记将发光二极管接地。 (2)通电后发现数码管显示亮度不均匀 检查与数码连接电路是否有误、短路或短路 (3)下载程序到单片机后,通电运行,发现怎么改变电压都没有变化且显示5 检查ADC0809所对应的各个引脚有没有接错,观察各个线路的显示结果,发现ADC0809芯片有问题,换了芯片后可正常显示。 (4)发现每个数码管显示相同的数字 检验段扫描连接是否正确,若无误,在检查程序是否正确,最后发现延时函数有一个地方写错,以致不能扫描,显示相同的数,修改程序后,即可进行扫描。 (5)现数码管显示的数字比较闪 修改程序,调整扫描延时时间,即可改正。 十、心得体会 本次课程设计让我温习了单片机的基本原理、功能以及构造,以及ADC0808/ADC0809的基本工作原理,学会了使用KeilCx51和Protuse这两个软件的基本使用方法,利用C语言在KeilCx51下进行编程实现所需要的功能,同时在Protuse软件上画电路图并进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 电压表 课程设计 报告