单片机课程设计-数字电压表.doc_第1页
单片机课程设计-数字电压表.doc_第2页
单片机课程设计-数字电压表.doc_第3页
单片机课程设计-数字电压表.doc_第4页
单片机课程设计-数字电压表.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要 本设计利用AT89S51单片机、ADC0809和四位数码管制作了一个数字电压表,实现了对05V的直流电压的精确测量的功能,经测试,系统达到了能够测量05V之间的直流电压值的要求,具有电路简单,所用的元器件数目少,测量电压的精度高,误差小,抗干扰能力强,操作方便的优点。关键词:AT89S51单片机;ADC0809;数字电压表;精度高ABSTRACTAT89S51 SCM, ADC0809 and four bit digital tube produced a digital voltage meter with the design, realization of the DC voltage from 0 to 5V the accurate measurement of function, after testing, system can reach to measure between 05V DC voltage requirements, has the advantages of simple circuit, the number of components that use less, measurement voltage error is small, high precision, strong anti-interference capability, convenient operation.关键词:AT89S51单片机;ADC0809;数字电压表;精度高Keywords: AT89S51; ADC0809; digital voltage meter; high precision目 录摘 要ABSTRACT1 设计要求及方案选择11.1 设计要求11.2 方案选择12 理论分析和电路设计22.1 理论分析22.2 电路设计33 软件设计43.1 程序流程图43.2 程序清单54 主要元器件介绍84.1 AT89S51单片机介绍84.2 A/D转换原理及ADC0809介绍95. 电路调试115.1调试所用的基本仪器清单115.2调试结果115.3测试结果分析116 总结12参考文献13附录1 元器件清单及相关参数14附录2 PCB图15II1 设计要求及方案选择1.1设计要求利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量05V之间的直流电压值,四位数码显示所测量的电压值,显示范围为0.000V5.000V,要求使用的元器件数目最少,测量最小分辨率为0.019V,测量误差约为0.02V。1.2方案选择方案一:基于MC14433的数字电压表基准电压双积分A/D转换器MC14433显示译码器CD4511放大稳压电阻分压直流LED数码管显示交流转换电路字位驱动 交流图1 基于MC14433的数字电压表的方框图该方案大致分为五个模块,分别为基准电压模块,A/D转换模块,字形译码驱动模块,显示电路模块,字位驱动模块。由上图可以清楚地看出,交流电流经过AC/DC转换成直流,经过电阻分压集稳压放大后进入双积分A/D转换器MC14433测量,再通过CD4511译码器经过A/D转换器位选电路送到LED显示,完成电压测试。方案二:基于INC 7107数字电压表振荡电路稳压电路INC7107 LED显示直流交流转换电路交流图2 基于INC 7107数字电压表的方框图该方案将直流电压和交流电压转换电路直接同芯片INC7107连接组成,INC7107将转换后的数据显示在LED显示数码管上。INC7107为CMOS单片双积分式A/D转换器,集模拟部分的缓冲器、积分器、电压比较器、正负电压参考源和模拟开关,以及数字部分的振荡器、计数器、锁存器、译码器、驱动器、控制器和逻辑电路于一身的芯片。使用时只需少量电阻、电容等器件即可完成模拟量到数字量的转换。方案三:基于AT89S51的数字电压表时钟电路复位电路LED显示电路AT89S51单片机直流A/D转换交流图3 基于AT89C52的数字电压表的方框图该方案采用12M晶振产生脉冲做AT89S51的内部时钟信号,通过软件设置单片机的内部定时器T0产生中断信号。利用中断设置单片机的P2.4口取反产生脉冲做AT89S51的时钟信号。单片机软件设置ADC0809开始A/D转换并将转换结果存到片内RAM。系统调出显示子程序,将保存结果转化为0.005.00V分别保存在片内RAM;系统调出显示子程序,将转化后数据查表,输出到LED显示电路,将相应电压显示出来,程序进入下一个循环。比较三个方案,方案三结构简单,转换精度高,且转换的过程和控制、显示部分可以控制,比较稳定,抗干扰能力强;而方案一虽然精度也较高,但电路复杂,且工作速度低;方案二虽然价格低廉,但是精度较低,且内部电压转换和控制部分不可控制。综合比较我们选择了方案三。2 理论分析与电路设计2.1 理论分析本设计选择AT89S51作为单片机芯片,选用四位8段共阳极LED数码管实现电压显示,利用ADC0809作为模数转换芯片。该电路通过ADC0809芯片采样输入口IN0输入的05 V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0D7传送给AT89S51芯片的P0口。AT89S51负责把接收到的数字量进行数据处理,产生正确的7段数码管的显示指令,并通过其P1口传送给四位数码管显示所测量的电压值。P2口接数码管段选,P1口接数码管位选,实现数据的动态显示,P3口产生控制信号,控制ADC0809的工作,P0口接ADC0809的D0D7,负责数据的传送,如图2-1所示。AT89S51P0 P2P3 P1ADC0809 D0D7 IN0IN7CLKOESTALE四位数码管位选段选控制线数据待测电压图4 数字电压表的系统框图2.2 电路设计本设计的总电路原理图如图2-2所示,三个地址通道输入A,B, C均接低电平,所需测量的外部电压经过电位器R1分压后可由ADC0809的IN0端口输入。由于ADC0809在进行A/D转换时需要有时钟信号,本设计中利用AT89S51的定时中断产生一个100KHZ的脉冲,由P3.3口送给ADC0809的CLK端,通过软件给其输入一个正脉冲,可立即启动A/D转换。单片机的时钟电路采用内部时钟方式,即外接晶振和电容组成并联谐振回路,晶振频率为12M。单片机的复位电路采用上电按钮复位电路,按下按钮一定时间就能使RST引脚端为高电平,从而使单片机复位。由于51单片机中P0口内部没有上拉电阻,所以,没有输出高电平的能力。而在该电路中需要P0输出高电平,所以在P0口接上排阻R7作为上拉电阻;R3R6为限流电阻;单片机的P0口接ADC0809的D0D7,负责单片机和ADC0809之间的数据传输;P2口接数码管段选,P1口接数码管位选,实现数据的动态显示,P3口产生控制信号,控制ADC0809的工作。图5 数字电压表的总原理图3 软件设计3.1 程序流程图根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图3-1所示。由于ADC0809的参考电压VREFVCC,所以转换之后的数据要经过数据处理。在数码管上显示出电压值,实际显示的电压值的关系为V0D/256VREF。开始初始化调用A/D转换子程序调用显示子程序结束图3-1 系统主程序流程图A/D转换子程序流程图如图3-2所示:开始启动转换A/D转换结束束?输出转换结果数值转换显示结束图3-2 A/D转换子程序流程图3.2 程序清单基于AT89S51单片机的数字电压表的C语言程序清单如下所示:#include STC12c5a60s2.H#define uint unsigned intA#define uchar unsigned charsbit st = P30;sbit eoc = P32;sbit clk = P33;sbit OE = P31;sbit dian= P17;uchar code dt=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uint data1,disi,disan,dier,diyi;/*延时函数*/ void delay(uint ms)uint i,j;for(i=ms;i0;i-)for(j=110;j0;j-);/*初始化函数*/ void init()/ P2M0=0XFF;/设置P0口 推挽输出(强上拉输出)/ P2M1=0X00;EA=1;/开总中断ET0=1;/开定时器中断TMOD=0x01;/定时器工作方式2TH0=(65536-20)/256;TL0=(65536-20)%256;/设定时器初值TR0=1;/启动定时器/*AD转化函数*/ void AD()st=0;OE=0;st=1;st=0;delay(10);while(eoc=0);/等待转换完毕OE=1;/打开传送数据data1=P0;/数据送入P0口OE=0;/*计算除法*/ void chufa()data1=data1*19.6078;disi=data1/1000;disan=data1%1000/100;dier=data1%1000%100/10;diyi=data1%1000%100%10;/*显示函数*/ void xianshi()P1=dtdisi;/整数部分dian=0;/打开小数点P2=0x08;delay(2);P1=0xff;P1=dtdisan;/小数点后一位P2=0x04;delay(2);P1=0xff; P1=dtdier;/小数点后两位P2=0x02;delay(2);P1=0xff;P1=dtdiyi;/小数点后第三位P2=0x01;delay(2);P1=0xff;/*中断函数*/ void time() interrupt 1clk=clk;TH0=(65536-20)/256;TL0=(65536-20)%256;/*主函数*/ void main(void)init();while(1)AD();chufa();xianshi(); 4 主要元器件介绍4.1 AT89S51单片机介绍AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89S51单片机的主要功能特性有:与MCS-51产品指令系统完全兼容4k字节在系统编程(ISP)Flash闪速存储器1000次擦写周期4.05.5V的工作电压范围全静态工作模式:0Hz33MHz三级程序加密锁1288字节内部RAM32个可编程IO口线2个16位定时计数器6个中断源全双工串行UART通道低功耗空闲和掉电模式中断可从空闲模唤醒系统看门狗(WDT)及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP字节或页写模式)图4-1 AT89S51引脚图4.2 A/D转换原理及ADC0809介绍 逐次逼近型A/D转换原理逐次逼近型A/D转换器由一个比较器、A/D转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。其转换原理如下:首先,将输出锁存器的最高位置“1”,然后将D/A转换器输出的电压信号U0和输入信号Ux进行比较。若U0小于Ux,则输出锁存器的最高位保持为1;反之,将锁存器的最高位设置为0,并保持最高位状态。其次,将次高位置“1”,依上面的方法确定其状态。从最高位到低位逐次N位比较(N为A/D位数),使U0逼近输入信号Ux,直到输出锁存器的最后一位。这时D/A转换器的输入数据即为其模数转换后的数据,控制器控制输出锁存器将此数字量输出,这就完成了A/D转换过程。其原理框图如图32所示:图42 A/D转换原理图 ADC0809介绍ADC0809是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个具有锁存控制的8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0809总的不可调误差在(1/2)LSB和LSB之间,典型转换时间为100s,具有三态缓冲输出控制,输出与TTL兼容,工作温度范围为4085。ADC0809芯片有28条引脚,采用双列直插式封装,如下图所示。各引脚功能如下: IN0IN7:8路模拟量输入端; D0D7:8位数字量输出端; ALE:地址锁存允许信号,输入,高电平有效; START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换); EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平); OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量; CLK:时钟脉冲输入端。要求时钟频率不高于640KHz; VR()和VR():参考电压输入端; Vcc:主电源输入端; GND:电源地; ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。图4-3 ADC0809引脚图5 电路调试5.1调试所用的基本仪器清单(1)数字式万用表; (2)5V稳压电源; (3)杜邦线2根 。5.2调试结果接上+5V电源后,给单片机复位,就可以在数码管上显示所测电压值,调节电位器R1可以让电压值从0.000V4.999V变化。当我把电压值定在3.223V时,我用万用表测量ADC0809的第26号管脚(即模拟输入电压)的电压时显示值为3.20V,此后我测量了多个电压值并计算出数字电压表的精确度约为0.02V。5.4测试结果分析刚开始调试时数码管显示的数值很暗,看不清楚,经检查分析,数码管的电流是直接由单片机提供的,而单片机的电流太小,所以数码管的显示不够亮。于是我对电路进行了改进,在数码管的四个段选引脚分别接上+5V电源,即由电源的电流供数码管显示,并且在电源和数码管之间接上四个限流电阻,再进行调试并观察现象,发现数码管的显示是比较亮,但显示的数值不对,再检查时才发现单片机的P0口没有上拉电阻,不能驱动ADC0809的工作,于是我在单片机的P0口接上一个10K的排阻,再调试时数码管显示的数值还是不对,经分析我认为可能是程序有问题,但检查程序后没发现有问题,于是我用万用表检测数码管的阴阳性,发现数码管是共阳的,而我写的程序是共阴的。我把程序改为共阳后再调试时发现数码管上能显示所测电压值,但调节电位器R1时数码管上的电压值没变,经检查发现电位器R1的管脚画错了,我把电位器的管脚调整好后在调试时,数码管能正确显示所测电压值,调节电位器R1电压值也随之改变。6 总结在这次课程设计中,我学到了很多东西。首先,通过这次单片机课程设计,再一次巩固了单片机的知识,加深了对课本知识的理解,尤其是在本设计中用到了ADC0809,使我对ADC0809有了进一步的认识,更加深了对A/D转换原理的理解;通过单片机的编程,进一步提高了我的编程能力。其次,通过这次课程设计,让我学会了去图书馆或在网上查阅资料。例如我这次通过在上网查资料得知51单片机中P0口内部没有上拉电阻,所以,没有输出高电平的能力。因此,仅在需要P0输出高电平的时候,才必须外接上拉电阻。而我刚开始时没有在P0口接上上拉电阻,所以调试不成功,当我在P0口接一个排阻时调试才成功。最后,通过这次课程设计,我学会了K

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论