课程设计(论文)-基于单片机的数字电压表设计.doc_第1页
课程设计(论文)-基于单片机的数字电压表设计.doc_第2页
课程设计(论文)-基于单片机的数字电压表设计.doc_第3页
课程设计(论文)-基于单片机的数字电压表设计.doc_第4页
课程设计(论文)-基于单片机的数字电压表设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书 第ii页基于单片机的数字电压表设计摘 要本论文讲述了基于at89c51单片机的数字电压表的设计及仿真,设计主要由三个部分组成:单片机(at89c51)、led显示模块、a/d转换器。a/d转换主要由芯片adc0808来完成,作用是把电压的模拟量转换为相应的数字量并传送到数据处理模块。数据处理则由芯片at89c51来完成,其负责把adc0808传送来的数字量经过一定的处理,产生相应的显示代码驱动显示模块进行显示;另外,它还控制着adc0808芯片工作。该系统的数字电压表电路简洁明了,所涉及到的元件较少,成本低,而测量精度和可靠性较高。该数字电压表可以测量0-5v的1路模拟直流输入电压值,并通过一个4位一体的7段数码管显示出来。 关键词: at89c51,adc0808,led数码显示管,数字电压表1绪论11.1课题描述11.2设计需求11.3设计思路21.4基本工作原理及框图22 硬件电路22.1 a/d转换器22.1.1逐次逼近型a/d转换器原理32.1.2 adc0808的主要性能32.1.3 adc0808的外部脚42.1.4 adc0808的内部结构、工作原理及时序图42.2单片机最小系统62.2.1 单片机的介绍62.2.2 at89c51的引脚功能62.3 led显示系统82.3.1 led的基本结构82.3.2 led显示器的选择82.3.3 led的译码方式82.3.4 led与c51的接口设计92.4复位电路和时钟电路92.4.1复位电路92.4.2时钟电路102.5 总电路硬件图113 程序设计113.1程序设计方案113.2 系统子程序设计123.2.1子程序初始化123.2.2 a/d转化子程序123.2.3程序设计134 仿 真16 4.1软件调试16 4.2仿真结果17总 结19致 谢20参考文献21课程设计说明书 第19页1绪论1.1课题描述电压、电流和频率是最基本的三个被测电量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等优点而泛应用到实际生活中。 传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量转换离散的数字形式并加以显示。数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和a/d转换器构成的数字电压表作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(ic)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。数字电压表问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(ic),另一方面,精度较以前有所提高目前,数字电压表的内部核心部件是a/d转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。本文是以简易数字直流电压表的设计仿真为研究内容,系统主要包括三大模块:转换模块、数据处理模块、显示模块。其中,a/d转换采用adc0808,对输入的模拟电压信号进行转换,控制核心at89c51再对转换的结果进行运算处理,最后驱动显示装置led来显示数字电压信号。1.2设计需求 1、以at89c51单片机为核心器件,组成一个简单的直流数字电压表。2、采用1路模拟量输入,能够测量0-+5v之间的直流电压值。3、电压显示用4位一体的led数码管显示,至少能够显示两位小数。 1.3设计思路 1、根据设计要求,选择at89c51单片机为核心控制器件。2、a/d转换采用adc0808实现,输出端口与单片机的接口为p1口,时钟等端口与p2口的低四位引脚相连。3、数字电压显示采用4位一体的7段led数码管。4、led数码的段码输入,由并行端口p0产生:位码输入,用并行端口p3低四位产生。1.4基本工作原理及框图硬件电路设计由3个部分组成:a/d转换电路,at89c51单片机系统,led显示系统。硬件电路设计框图如图所示: 图1数字电压表系统硬件设计框图2 硬件电路2.1 a/d转换器能把模拟量转化成数字量的器件称为模/数转换器(a/d转换器),a/d转换器是单片机数据采集系统的关键接口电路,按照各种a/d芯片的转化原理可分为逐次逼近型,双重积分型等等。双积分式a/d转换器具有抗干扰能力强、转换精度高、价格便宜等优点。与双积分相比,逐次逼近式a/d转换的转换速度更快,而且精度更高,比如adc0809、adc0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。一个n位的逐次逼近型a/d转换器只需要比较n次,转换时间只取决于位数和时钟周期,逐次逼近型a/d转换器转换速度快,因而在实际中广泛使用。2.1.1逐次逼近型a/d转换器原理逐次逼近型a/d转换器是由一个比较器、a/d转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入a/d转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量。其原理框图如图2所示:顺序脉冲发生器逐次逼近寄存器adc电压比较器输入电压输入数字量 图2逐次逼近式a/d转换器原理2.1.2 adc0808的主要性能adc0808是cmos单片型逐次逼近式a/d转换器,带有使能控制端,与微机直接接口,片内带有锁存功能的8路模拟多路开关,可以对8路0-5v输入模拟电压信号分时进行转换,由于adc0808设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域。adc0808主要特性:它有8路模拟开关、地址锁存、译码器、8位a/d转换器以及三态输出锁存器组成。0808芯片可以处理8路模拟输入信号而不是1路,许多可以和微机接口的a/d转换器芯片都有这种特性。为了区分是对哪一路输入信号进行a/d转换,了;由3个通道地址信号adda、addb和addc来决定是哪一路模拟信号被选中并送到内部的a/d转换器去转换。输出位8位数字量d7-d0.2.1.3 adc0808的外部脚 adc0808芯片有28条引脚,采用双列直插式封装,其引脚图如下图所示:图3 adc0808引脚图in0-in7(8条):8路模拟量输入线,用于输入和控制被转换的模拟量。ale:地址锁存信号。高电平有效是把3个通道地址信号送入地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道。 eoc:转换结束信号,是芯片的输入信号。转换一开始,eoc信号变低,转换结束时,eoc返回高电平。这个信号可以作为a/d转换器的状态信号来查询,也可以直接做中断申请信号。oe:输出控制信号,高电平输入有效时,打开输出缓冲器。clock:时钟信号,最高允许值位640khz.2.1.4 adc0808的内部结构、工作原理及时序图adc0808由8路模拟通道选择开关,地址锁存与译码器,比较器,8位开关树型a/d转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图4所示。图4 adc0808的内部结构1、8路模拟通道选择开关实现从8路输入模拟量中选择一路送给后面的比较器进行比较。2、地址锁存与译码器用于当ale信号有效时,锁存从adda、addb、addc 3根地址线上送来的3位地址,译码后产生通道选择信号,从8路模拟通道中选择当前模拟通道。3、比较器,8位开关树型a/d转换器,逐次逼近型寄存器,定时和控制电路组成8位a/d转换器,当start信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到8位三态锁存器,同时通过引脚送出转换结束信号。4、三态输出锁存器保存当前模拟通道转换得到的数字量,当oe信号有效时,把转换的结果送出。adc0808的工作原理:1、输入3位地址,并使ale=1,将地址存入地址锁存器中,经地址译码器从8路模拟通道中选通1路模拟量送给比较器。2、送start一高脉冲,start的上升沿使逐次寄存器复位,下降沿启动a/d转换,并使eoc信号为低电平。3、当转换结束时,转换的结果送入到输出三态锁存器中,并使eoc信号回到高电平,通知cpu已转换结束。4、当cpu执行一读数据指令时,使oe为高电平,则从输出端d0-d7读出数据。2.2单片机最小系统2.2.1 单片机的介绍 at89c51是一种带4k字节flash存储器的低电压、高性能cmos 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪速存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2.2 at89c51的引脚功能at89c51提供以下标准功能:4kb的flash闪速存储器,128b内部ram,32个i/o口线,2*16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。引脚配置如下图所示:图5 at89c51的引脚图vss:接地端。vcc:电源端。p0.0-p0.7:通道0,双向i/o口。第二功能是在访问外部存储器时可分时用作低8位地址线和8位数据线,在编程和检验是,用于数据的输入和输出。p1.0-p1.7:通道1,双向i/o口,在编程和检验是,用于接收地位地址字节。p2.0-p2.7:通道2,双向i/o口,在第二功能是在访问外部存储器时,输出高8位地址,在编程和检验时,用做高位地址字节和控制信号。p3.0-3.7:双向i/o口,每条线都有自己的功能。详见下表:表1 p3口各位的第二功能p3口各位第二功能p3.0 rtd(串行口输出)p3.1 txd(串行口输入)p3.2(外部中断0输入)p3.3 (外部中断1输入)p3.4t0(定时器/计数器0的外部输入)p3.5t1(定时器/计数器1的外部输入)p3.6(片外数据存储器写信号) p3.7(片外数据存储器读信号)ale:地址锁存允许线,在访问外部存储器是,用来锁存p0口送出的低8位地址信号。在不访问外部存储器是,ale也震荡频率的六分之一的固定速率输出,此时,它可用做外部时钟和外不定时。但若要访问外部存储器,则ale不是连续周期脉冲,无法用做时钟信号。:片外存储器访问选择线,可以控制89c51使用片内rom或使用片外rom,若=1,则允许使用片内rom, 若=0,则只使用片外rom。psen:片外rom的选通线,在访问片外rom时,89c51自动在psen线上产生一个负脉冲,作为片外rom芯片的读选通信号。rst:复位线,可以使89c51处于复位(即初始化)工作状态。通常89c51复位有自动上电复位和人工按键复位两种。xtal1和xtal2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89c51片内osc(震荡器)的定时反馈回路。2.3 led显示系统2.3.1 led的基本结构led显示器是由若干个发光二极管组成显示字段的显示器件。在单片机中使用最多的是七段数码显示器。led七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。led引脚排列如下图所示:图6 led引脚排列2.3.2 led显示器的选择4-led显示器引脚如图6所示,是一个共阴极接法的4位led数码显示管,其中a,b,c,e,f,g为4位led各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端: 图7 4位led引脚2.3.3 led的译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于led数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。本设计系统中为了简化硬件线路设计,led译码采用软件编程来实现。由于本设计采用的是共阴极led,其对应的字符和字段码如下表所示:表2 led字符表2.3.4 led与c51的接口设计由于单片机的并行口不能直接驱动led显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。如果驱动电路能力差,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,led显示器的驱动电路设计是一个非常重要的问题。为了简化数字式直流电压表的电路设计,在led驱动电路的设计上,可以利用单片机p0口上外接的上拉电阻来实现,即将led的a-g段显示引脚和dp小数点显示引脚并联到p0口与上拉电阻之间,这样,就可以加大p0口作为输出口的驱动能力,使得led能按照正常的亮度显示出数字。2.4复位电路和时钟电路2.4.1复位电路单片机在启动运行时都需要复位,使cpu和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。mcs-51单片机有一个复位引脚rst,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。复位完成后,如果rst端继续保持高电平,mcs-51就一直处于复位状态,只要rst恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,下图是51系列单片机统常用的上电复位和手动复位组合电路,只要vcc上升时间不超过1ms,它们都能很好的工作。图8 复位电路2.4.2时钟电路 在mcs51单片机片内有一个高增益的反相放大器,反相放大器的输入端为xtal1,输出端为xtal2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。在内部方式时钟电路中,必须在xtal1和xtal2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路,通常电容一般取30pf,晶振的频率取值在1.2mhz12mhz之间。晶体振荡器的振荡信号从xtal2端送入内部时钟电路,它将该振荡信号二分频,产生一个两相时钟信号p1和p2供单片机使用。时钟信号的周期称为状态时间s,它是振荡周期的2倍,p1信号在每个状态的前半周期有效,在每个状态的后半周期p2信号有效。cpu就是以两相时钟p1和p2为基本节拍协调单片机各部分有效工作的。如图所示: 图9时钟电路2.5 总电路硬件图经过以上的设计过程,整合可得出基于单片机的简易数字直流电压表硬件电路原理图。如图所示:图10简易数字电压表电路图3 程 序 设 计3.1程序设计方案 根据模块的划分原则,将该程序划分初始化模块,a/d转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图11所示。图11数字式直流电压表主程序框图3.2 系统子程序设计3.2.1子程序初始化所谓初始化,是对将要用到的at89c51单片机内部部件或扩展芯片进行初始工作状态设定,主要是设置定时器的工作模式,初值预置,开中断和打开定时器等。3.2.2 a/d转化子程序a/d转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图12所示。图12a/d转换流程图3.2.3程序设计org 00hmain: mov 30h,#00h mov 31h,#00h lcall reset ;复位 mov a,#0cch ;跳过rom lcall write mov a,#44h ;启动转换 lcall write ;延时 mov r7,#100d1: mov r4,#20d2: mov r5,#248 djnz r5,$ djnz r4,d2 djnz r7,d1 lcall reset ;复位 mov a,#0cch ;跳过rom lcall write mov a,#0beh ;启动转换 lcall write lcall read mov a,3dh mov 30h,a lcall read mov a,3dh mov 31h,a ;- mov 36h,#00h mov 37h,#00h mov 38h,#00h mov 39h,#00h ;- anl a,#00000111b mov 36h,a mov a,30h swap a anl a,#00001111b mov 37h,a mov a,36h swap a mov 41h,a mov a,37h add a,41h mov 41h,a mov b,#10 div ab mov 46h,a mov 47h,b mov a,30h anl a,#00001111b mov 39h,a jnb acc.3,jin mov a,38h add a,#50h mov 38h,ajin: mov a,39h jnb acc.2,jin1 mov a,38h add a,#25h mov 38h,ajin1: mov a,39h jnb acc.1,jin2 mov a,38h add a,#12h mov 38h,ajin2: mov a,39h jnb acc.0,jin3 mov a,38h add a,#06h mov 38h,ajin3: mov a,38h swap a anl a,#00001111b mov 38h,a sjmp $ ;数据处理reset: nopl0: clr p1.4 mov r2,#200l1: nop djnz r2,l1 setb p1.4 mov r2,#30l4: djnz r2,l4 clr c orl c,p1.4 jc l3 mov r6,#80l5: orl c,p1.4 jc l3 djnz r6,l5 sjmp l0l3: mov r2,#250l2: djnz r2,l2 retwrite: mov r3,#8wr1: setb p1.4 mov r4,#8 rrc a clr p1.4wr2: djnz r4,wr2 mov p1.4,c mov r4,#20wr3: djnz r4,wr3 djnz r3,wr1 setb p1.4 retread: mov r6,#8re1: clr p1.4 mov r4,#6 nop setb p1.4re2: djnz r4,re2 mov c,p1.4 rrc a mov r5,#30re3: djnz r5,re3 djnz r6,re1 mov 3dh,a setb p1.4 retend4 仿 真4.1软件调试 软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。本系统的调试主要用到keil和protues软件。其中,系统电路图的绘制和仿真采用的是proteus软件,而c语言程序用keil软件调试并把程序写入单片机。程序调试:图13程序调试图硬件仿真:图14硬件仿真图4.2仿真结果仿真结果有三种情况:当滑动变阻器短路时,数字电压表没有读数显示;滑动变阻器滑片处于正中央,在理想情况下电压表的读数是2.5;当滑动变阻器全部接入电路中,理想情况下电压表的读数是5.图15滑动变阻器短路时图16滑动变阻器滑片处于中间图17滑动变阻器滑到最大端总 结经过过一段时间的努力,基于单片机的简易数字电压表课程设计基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计,我学习并掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了at89c51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为

温馨提示

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

评论

0/150

提交评论