基于AT89C51和ADC0809简易数字电压表的设计_第1页
基于AT89C51和ADC0809简易数字电压表的设计_第2页
基于AT89C51和ADC0809简易数字电压表的设计_第3页
基于AT89C51和ADC0809简易数字电压表的设计_第4页
基于AT89C51和ADC0809简易数字电压表的设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

桂林电子科技大学微机综合设计报告PAGE5-基于AT89S51的简易数字电压表的设计摘要:本课题是利用单片机设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。此外,本文还讨论了设计过程中的所用的软件硬件环境,调试所出现的问题等。关键词:单片机;AT89S51;数字电压表;ADC0809,四位数码管任务书1.设计题目基于AT89S51的简易数字电压表的设计。2.设计内容与要求用AT89S51单片机和ADC0809组成一个数字电压表,要求能够测量0~5V的直流电压值,并用四位数码管显示,并要求所用元器件最少。3,。设计目的意义(1).通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。(2).通过数字电压表的设计系统掌握51单片机的应用。掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入EPROM并进行调试等。目录一、系统原理框图二、AT89S51的结构 三、器件的比较与选择四、系统硬件及仿真图五、相关软件简介六、程序流程图与源程序七、数字电压表发展及未来八、设计体会九、参考文献基于AT89S51的简易数字电压表的设计P3.1TXD串行数据发送口P3.2INT0外中断0输入P3.3INT1外中断1输入P3.4T0计数器0计数输入P3.5T1计数器1计数输入P3.6WR外部RAM写选通信号P3.7RD外部RAM读选通信号2.5时钟电路和复位电路 1.时钟电路单片机的时钟一般需要多相时钟,所以时钟电路由振荡器和分频器组成。MCS-51内部有一个用于构成振荡器的可控高增益反向放大器。两个引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。在片外跨接一晶振和两个匹配电容C1、C2如图2.5所示。就构成一个自激振荡器。振荡频率根据实际要求的工作速度,从几百千赫至24MHz可适当选取某一频率。匹配电容C1、C2要根据石英晶体振荡器的要求选取。当晶振频率为12MHz时,C1C2一般选30pF左右。图2.5中PD是电源控制寄存器PCON.1的掉电方式位,正常工作方式PD=0。当PD=1时单片机进入掉电工作方式,是一种节能工作方式。上述电路是靠MCS-51单片机内部电路产生振荡的。也可以由外部振荡器或时钟直接驱动MCS-51。图4.3复位电路的内部及外部方式图4.3复位电路的内部及外部方式2.复位电路复位是单片机的初始化操作。其功能主要是将程序计数器(PC)初始化为0000H,使单片机从0000H单元开始执行程序,并将特殊功能寄存器赋一些特定值。复位是使单片机退出低功耗工作方式而进入正常状态一种操作。复位是上电的第一个操作,然后程序从0000H开始执行。在运行中,外界干扰等因素可能会使单片机的程序陷入死循环状态或“跑飞”。要使其进入正常状态,唯一办法是将单片机复位,以重新启动。复位后,程序计数器(PC)及各特殊功能寄存器(SFR)的值如表4.2所示。表4.2程序计数器及各特殊功能寄存器的复位值寄存器复位状态寄存器复位状态PC0000HTH100HACC00HP0~P3FFHPSW00HIPxx000000BSP07HIE0xx00000BDPTR0000HTMOD00HTCON00HSCON00HTL000HSBUF不定TH000HPCON0xxx0000BTL100HRST引脚是复位端,高电平有效。在该引脚输入至少连续两个机器周期以上的高电平,单片机复位。RST引脚内部有一个斯密特ST触发器(图2.10)以对输入信号整形,保证内部复位电路的可靠,所以外部输入信号不一定要求是数字波形。使用时,一般在此引脚与VSS引脚之间接一个8.2kΩ的下拉电阻,与VCC引脚之间接一个约10μF的电解电容,即可保证上电自动复位。图4.4自动和手动复位电路图图4.4自动和手动复位电路图上电或手动复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或手动复位的操作。第三章器件的比较与选择 3.1显示器本次设计中有显示模块,而常用的显示器件比较多,有数码管,LED点阵,1602液晶,12864液晶等。1.数码管是最常用的一种显示器件,它是由几个发光二极管组成的8字段显示器件,其特点是价格非常的便宜,使用也非常的方便,显示效果非常的清楚。小电流下可以驱动每光,发光响应时间极短,体积小,重量轻,抗冲击性能好,寿命长。但数码管只能是显示0——9的数据。不能够显示字符。这也是数码管的不足之处。2.LED点阵显示器件是由好多个发光二极管组成的。具有高亮度,功耗低,视角大,寿命长,耐湿,冷,热等特点,LED点阵显示器件可以显示数字,英文字符,中文字符等。3.1602液晶是工业字符型液晶,能够同时显示16*2即32个字符。1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。使用时直接编写软件程序按一定的时序驱动即可。它的特点是显示字迹清楚,价格相对便宜。4.12864液晶也是一种工业字符型液晶,它不仅能够显示1602液晶所可以显示的字符,数字等信息,而且还可以显示8*4个中文汉字和一些简单的图片,显示信息也非常的清楚。使用时也直接编写软件程序按一定的时序驱动即可。不过它的价格比1602液晶贵了很多。综合上述,根据本设计的要求和价格的考虑,选择数码管显示器。单位数码管如图4.4所示,四位共阴极数码管如图4.5所示。图4.4单位数码管图4.4单位数码管图4.5四位共阴极数码管图4.5四位共阴极数码管3.2模数(A/D)芯片A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。A/D转换的常用方法有:①计数式A/D转换,②逐次逼近型A/D转换,③双积分式A/D转换,④V/F变换型A/D转换。在这些转换方式中,记数式A/D转换线路比较简单,但转换速度较慢,所以现在很少应用。双积分式A/D转换精度高,多用于数据采集及精度要求比较高的场合,如5G14433(31/2位),AD7555(41/2位或51/2位)等,但速度更慢。随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。(1)A/D芯片的比较双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点。1.AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。2.AD0832也是8位逐次逼近型A/D转换器,可支持致命伤个单端输入通道和一个差分输入通道。它易于和微处理器接口或独立使用;可满量程工作;可用地址逻辑多路器选通各输入通道。3.TLC2543C是12位开关电容逐次逼近A/D转换,每个器件有三个控制输入端,片选,输入/输出时钟以及地址输入端。它可以从主机高速传输转换数据。它有高速的转换,通用的控制能力,具有简化比率转换,刻度以及模拟电路与逻辑电路和电源噪声隔离,耐高温等特点。综合上述,逐次逼近型A/D转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的A/D转换芯片ADC0809。图4.6ADC0809内部结构图4.6ADC0809内部结构图4.6ADC0809引脚图图4.6ADC0809引脚图(2)ADC0809的工作原理1.IN0-IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。2.数字量输出及控制线:11条ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。3.ADC0809应用说明①ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。②初始化时,使ST和OE信号全为低电平。③送要转换的哪一通道的地址到A,B,C端口上。④在ST端给出一个至少有100ns宽的正脉冲信号。⑤是否转换完毕,我们根据EOC信号来判断。⑥当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。第四章系统硬件及仿真图4.1系统仿真图4.2系统原理图4.3系统PCB图第五章相关软件简介5.1Protel99与KeilProtel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。(1)Protel99SE的系统组成按照系统功能来划分,Protel99se主要包含以下俩大部分和6个功能模块。1.电路工程设计部分①电路原理设计部分(AdvancedSchematic99)②印刷电路板设计系统(AdvancedPCB99)③自动布线系统(AdvancedRoute99)(2)电路仿真与PLD部分①电路模拟仿真系统(AdvancedSIM99)②可编程逻辑设计系统(AdvancedPLD99)③高级信号完整性分析系统(AdvancedIntegrity99)(3)Protel99SE的功能特性①开放式集成化的设计管理体系②超强功能的、修改与编辑功能③强大的设计自动化功能KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。5.2ProtuesProtues软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。(1)功能特点Protues软件具有其它EDA工具软件(例:multisim)的功能。(2)革命性的特点1.互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。2.仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。(3)四大功能模块1.智能原理图设计(ISIS)2.完善的电路仿真功能(Prospice)3.独特的单片机协同仿真功能(VSM)4.实用的PCB设计平台(4)软件仿真支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1.提供软件调试功能2.提供丰富的外围接口器件及其仿真3.提供丰富的虚拟仪器4.具有强大的原理图绘制功能(5)电路功能仿真在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。PROTUES是单片机课堂教学的先进助手。PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。第六章程序流程图与源程序6.1程序流程图初始化开始初始化开始ST、OE端口拉低ST上升沿清除AD缓存器CLK提供AD工作的时钟信号ST下降沿,AD开始转换转换结束?P1口读取数据,存储在地址70H数据除以51,商为电压整数部分,储存在地址71H余数乘以10后,再除以51,为电压小数相应位部分,分别储存在地址72H~74H电压小数相应位加5调整余数>25?四位处理完?①NYP2口为位选P2口为位选①延时1.5msP0分别赋地址71H~74H里的值,P0口为段选查询数码管显示表四位显示完?返回程序开始图6.1程序流程图NY6开始开始AD采集函数数据处理函数显示函数图6.2主函数流程图6.2汇编语言程序清单QIANEQU71HBAIEQU72HSHIEQU73HGEWEIEQU74H ;71H-74H存放显示数据,依次为个位、十位、百位、千位SHUJUEQU70H;地址70H存放采集数据STBITP3.0;START和ALE共用一个端口OEBITP3.6EOCBITP3.7CLKBITP3.3ORG0000HLJMPSTARTORG0030HTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHSTART:MAIN:LCALLTEST;数据采集函数LCALLTURNDATA;数据处理函数LCALLDISPLAY;显示函数 LJMPMAIN/***************延时函数****************/DELAY:MOVR7,#06H ;约延时1.5msLOOP1: MOVR6,#0FFHLOOP2: DJNZR6,LOOP2 DJNZR7,LOOP1RET /***************ADC0809采集函数*************/TEST: CLRST CLROE SETBST CLRST;ST端口下降沿,开始转换LOOPCLK: SETBCLK;由软件来提供ADC0809工作的时钟频率 CLRCLK JNBEOC,LOOPCLK;EOC=1时,退出循环 SETBOE ;转换后数据的传送 MOVP1,#0FFH;P1端口读数据,需先给高电平 MOVA,P1 CLROE MOVSHUJU,A;存储数据到地址70HRET/**************数据处理函数***********/TURNDATA: MOVA,SHUJU MOVB,#51 DIVAB;余数在B,相除以后C=0 MOVQIAN,A ;储存千位CLRF0 MOVA,B SUBBA,#1AH;A减去26,测试上面AB相除时,余数与26相比较 MOVF0,C;余数<26,则C=1,不用加5调整 MOVA,#10 MULAB MOVB,#51 DIVAB JBF0,LP1 ADDA,#5;若AB相除后B>=26,百位加五LP1: MOVBAI,A;储存百位CLRF0MOVA,B SUBBA,#1AH MOVF0,C MOVA,#10 MULAB MOVB,#51 DIVAB JBF0,LP2;F0=1时,转移 ADDA,#5;若AB相除后B>=26,十位加五LP2: MOVSHI,A;储存十位 CLRF0 MOVA,B SUBBA,#1AH MOVF0,C MOVA,#10 MULAB MOVB,#51 DIVAB JBF0,LP3;F0=1时,转移 ADDA,#5;若AB相除后B>=26,个位加五LP3: MOVGEWEI,A;储存个位RET/***************显示函数*******************/DISPLAY:MOVR1,#4;循环四次 MOVR2,#0FEH MOVR0,#71H;存放显示初始地址XIANSHI:MOVDPTR,#TAB MOVA,@R0 MOVCA,@A+DPTR CJNER2,#0FEH,NOT_ONE;不是左边第一个数码管,则转移 ORLA,#80H;左边第一个数码管显示小数点NOT_ONE: MOVP0,A;数码管段选 MOVP2,R2;数码管位选 LCALLDELAY;延时 MOVA,R2 RLA;循环左移 MOVR2,A INCR0;选取下一个地址 DJNZR1,XIANSHIRETEND 6.3C语言程序清单#include<reg51.h>sbitCLK=P3^3;sbitOE=P3^6;sbitST=P3^0;sbitEOC=P3^7;unsignedintdianya;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/***************延时函数****************/voiddelay(unsignedintz){ while(z--);}/***************ADC0809采集函数*************/voidADC_0809(){ unsignedchartemp=2; ST=0; OE=0;ST=1; ST=0; CLK=1;CLK=0;CLK=1;CLK=0; while(!EOC) { CLK=1; CLK=0; } OE=1; P1=0xff;//读取P1端口数据 temp=P1;dianya=(unsignedint)temp*19.53; OE=0;}/***************数据转换和显示函数*******************/voidVpp_Show(){ unsignedcharqian,bai,shi,ge; qian=dianya/1000; bai=dianya%1000/100; shi=dianya%100/10; ge=dianya%10;P2=0xfe; P0=table[qian]|0x80;//显示小数点 delay(50);P2=0xfd; P0=table[bai];delay(50);P2=0xfb; P0=table[shi];delay(50);P2=0xf7; P0=table[ge];}voidmain(){ while(1) {ADC_0809(); Vpp_Show(); }}第七章系统功能分析与说明数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D转换器以及由它们构成的基于单片机的数字电压表的工作原理。数字电压表的系统工作原理:首先,被测电压信号进入A/D转换器,单片机中控制信号线发出控制信号,启动A/D转换器进行转换,其采样得到的数字信号数据在相应的码制转换模块中转换为显示代码。最后发出显示控制与驱动信号,驱动外部的数码管显示相应的数据。图2.1所示为DVM的基本组成框图,需指出的是,图中将DVM分成模拟和数字两大部分,从框图上看,A/D转换器包含在模拟部分,这样划分并不严格,因为A/D转换器本身具有数字电路的性质,特别是大规模集成化A/

温馨提示

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

评论

0/150

提交评论