简易数字电压表课程设计.doc

上传人:风**** 文档编号:976334 上传时间:2024-03-19 格式:DOC 页数:12 大小:12.94MB
下载 相关 举报
简易数字电压表课程设计.doc_第1页
第1页 / 共12页
简易数字电压表课程设计.doc_第2页
第2页 / 共12页
简易数字电压表课程设计.doc_第3页
第3页 / 共12页
简易数字电压表课程设计.doc_第4页
第4页 / 共12页
简易数字电压表课程设计.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、 目录1.摘要及关键字12设计总体方案1 2.1设计要求12.2 设计思路12.3 设计方案13.硬件电路设计23.1 A/D转换模块23.1.1 逐次逼近型A/D转换器原理23.1.2ADC0809主要特性23.1.3ADC0809外部引脚特征23.2单片机系统33.2.1AT89S51性能33.2.2AT89S51芯片的各引脚功能33.3复位电路和时钟电路53.3.1 复位电路设计53.3.2 时钟电路设计53.4数码管显示设计63.5 总体电路设计74.程序设计84.1程序设计总方案84.2系统子程序设计84.2.1初始化程序84.2.2 A/D转换子程序84.2.3显示子程序95.总结

2、96.参考文献9附录:C语言源程序9word文档 可自由编辑1. 摘要及关键字摘要:本文介绍了一种基于单片机的简易数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,芯片AT89S51还控制着ADC0809芯片工作。该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-5V的1路

3、模拟直流输入电压值,并通过一个四位一体的8段数码管显示出来。关键词: 单片机;数字电压表;A/D转换;AT89S51;ADC08092设计总体方案2.1设计要求 利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量05V之间的直流电压值,四位数码显示。2.2 设计思路根据设计要求,选择AT89S51单片机为核心控制器件。A/D转换采用ADC0809实现,与单片机的接口为P0口和P3口的低四位引脚。电压显示采用4位一体的LED数码管。LED数码的段码输入,由并行端口P1产生:位码输入,用并行端口P2低四位产生。2.3 设计方案硬件电路设计由6个部分组成; A/D转换电路,AT89

4、S51单片机系统,LED显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路设计框图如图1所示 图1 硬件电路设计框图3.硬件电路设计3.1 A/D转换模块现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D转换器),A/D转换器是单片机数据采集系统的关键接口电路,按照各种A/D芯片的转化原理可分为逐次逼近型,双重积分型等等。双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0809、ADC0808等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系

5、统连接,将数字量送到单片机进行分析和显示。一个n位的逐次逼近型A/D转换器只需要比较n次,转换时间只取决于位数和时钟周期,逐次逼近型A/D转换器转换速度快,因而在实际中广泛使用1。3.1.1 逐次逼近型A/D转换器原理逐次逼近型A/D转换器是由一个比较器、A/D转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置1,把数据送入A/D转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则1保留,如果转换的模拟量比输入的模拟量大,则1不保留,然后从第二位依次重复上述过程直至最低位,最后寄存

6、器中的内容就是输入模拟量对应的二进制数字量2。3.1.2ADC0809主要特性ADC0809具有较高的转换速度和精度,分辨率为8位,且受温度影响较小,能较长时间保证精度,重现性好,功耗较低,且具有8路模拟开关,满足本电路的设计要求,故在该电路模块中采用了ADC0809进行8路模拟信号采集,模数转换器ADC0809各引脚功能如图二所示。3.1.3ADC0809外部引脚特征 表1 ADC0809通道选择表地址码 对应的输入通道 C B A 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7

7、IN7IN0:8个模拟量输入端;START:启动信号,当START为高电平时,A/D转换开始;EOC:转换结束信号,当A/D转换结束后,发出一个正脉冲,表示A/D转换完毕。此信号可用做A/D转换是否结束的检测信号,或向CPU申请中断的信号; OUTPUT ENABLE:输出允许信号。当此信号有效时,允许从A/D转换器的锁存器中读取数字量。此信号可作为ADC0809的片选信号,高电平有效; CLOCLK:实时时钟,可通过外接RC电路改变时钟频率; ALE:地址锁存允许,高电平有效。当ALE为高电平时,允许C,B,A所示的通道被选中,并把该通道的模拟量接入A/D转换器;ADDC,ADDB,ADDA

8、:通道号选择端子。C为最高位,A为最低位;D7D0:数字量输出端; 图2 ADC0809管脚图3.2单片机系统3.2.1AT89S51性能在本设计中,采用了AT89S51单片机,AT89S51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80S51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,由单片机P0口接收二进制数据。3.2.2AT89S51芯片的各引脚功能P0口:这组引脚共有8条,P0.0为最低位。这8个引

9、脚有两种不同的功能,分别适用于不同的情况,第一种情况是89S51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89S51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。P1口:这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和

10、P0口的第一功能相同,也用于传送用户的输入和输出数据。P2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。P3口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表2所示:表2 P3口各位的第二功能P3口各位第二功能P3.0 RXT(串行口输入)P3.1 TXD(串行口输出)P3.2/INT0(外部中断0输入)P3.3/INT1(外部中断1输入)P3.4T0(定时器/计数器0的

11、外部输入)P3.5T1(定时器/计数器1的外部输入)P3.6/WR(片外数据存储器写允许) P3.7/RD(片外数据存储器读允许) Vcc为+5V电源线,Vss接地。ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89S51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,89S51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。EA:片外存储器访问选择线,可以控制89S51使用片内ROM或使用片外ROM,若EA=1,则允许使用片内ROM, 若EA=0,则只使用片外ROM。PSE

12、N:片外ROM的选通线,在访问片外ROM时,89S51自动在PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。RST:复位线,可以使89S51处于复位(即初始化)工作状态。通常89S51复位有自动上电复位和人工按键复位两种。XTAL1和XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89S51片内OSC(震荡器)的定时反馈回路。 图3 单片机管脚图3.3复位电路和时钟电路3.3.1 复位电路设计单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输

13、入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图4是51系列单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。 图4 电复位和手动复位组合电路3.3.2 时钟电路设计单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序

14、。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,如图5所示。电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是3010pF,在这个系统中选择了30pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。 图5

15、 时钟电路3.4数码管显示设计在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此就生产了位数,尺寸,型号不同的LED显示器供选择,在本设计中,选择4位一体的数码型LED显示器,简称“4-LED”。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。4-LED显示器引脚如图6所示,是一个共阴极接法的4位LED数码显示管,其中a,b,c,e,f,g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。对于这种结构的LED显示

16、器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作3。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。为了简化数字式直流电压表的电路设计,在LED驱动电路的设计上,可以利用单片机P1口上外接的上拉电阻来实现,即将LED的A-G段显示引脚和DP小数点显示

17、引脚并联到P1口与上拉电阻之间,这样,就可以加大P1口作为输出口德驱动能力,使得LED能按照正常的亮度显示出数字,如图6所示。把“单片机系统”区域中的P1.0P1.7与“动态数码显示”区域的ABCDEFGH端口用8芯排线连接。把“单片机系统”区域中的P2.0P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接 图6 LED与单片机接口间的设计3.5 总体电路设计经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图7所示。图7 简易数字电压表电路图此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后由ADC0809的IN0通道进入(

18、由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89S51芯片的P0口,AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮灭。此外,AT89S51还控制ADC0809的工作。其中,单片机AT89S51通过定时器中断从P3.3输出方波,接到ADC0809的CLOCK,P3.2发正脉冲启动A/D转换,P3.0检测A/D转换是否完成,转换完成后,P3.1置高从P0口读取转换结果送

19、给LED显示出来3。简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。4.程序设计4.1程序设计总方案根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图8所示。 图8 数字式直流电压表主程序框图4.2系统子程序设计4.2.1初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要

20、工作是设置定时器的工作模式,初值预置,开中断和打开定时器等4。4.2.2 A/D转换子程序 A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图9所示。 图9 A/D转换流程图4.2.3显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms5。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出

21、中断功能实现11s定时,通过软件延时程序来实现5ms的延时。5.总结这是我第一次做课程设计,经过一周时间的学习,翻阅资料或是询问指导老师,我设计的简易数字电压表基本完成了。虽然我的设计仍存在不足之处,但这次设计简易数字电压表的过程却是很有意义的,这次的课程设计不仅使我进一步加深了对单片机知识的了解,而且锻炼了我的学习和动手能力,让我受益匪浅。通过本次的课程设计,我体会到了单片机强大的功能,可以通过程序和元器件相结合,能够做出一个有相应功能的器件。此次课程设计的简易数字电压表可以测0-5V电压,可以显示4位十进制电压值。数字电压表主要使用到AT89S51、ADC0809芯片,AT89S51芯片控

22、制着电压表各个芯片的正常运行,将ADC0809输出的数字量电压进行数据处理。ADC0809对模拟量电压采样转换成数字量电压。AT89S51驱动LED显示管显示电压值。 这次我们用的软件有PROTUES仿真软件、KEIL编程软件和VISIO软件,通过这次的课设,明显在画电路图方面我熟练了很多,虽然实验课的时候我们的已经学过PROTUES的使用,也实现过一些程序的仿真,但是这次的电路图较为复杂,画完之后感觉自己对整个设计了解了更多。在PROTUES软件中搜索不到AT89S51芯片,于是我用AT89C51芯片代替的AT89S51芯片实现整个设计的控制部分。通过这次设计,这也对我们今后的工作敲响了警钟

23、:要认真的看待每个需要处理的问题,不要认为事情过于简单,不能急于求成,但不要放弃,要保持头脑清醒。单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习。课程设计的时间是短暂的,但意义对我来说是重大的。书本上的知识学的再多也远远比不上自己动手学习的知识来得多,正如:纸上得来终觉浅,绝知此事要躬行。所以,课程设计不仅仅是对我们平时学习内容的检查,也是提升我们综合素质的有效途径。6.参考文献1胡健.单片机原理及接口技术.北京:机械工业出版社,2004年1

24、0月2于殿泓、王新年.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007年5月3魏立峰.单片机原理及应用技术.北京大学出版社,2005年4边春远等著.MCS-51单片机应用开发实用子程序M .北京:人民邮电出版社.2005年9月.5苗红霞.单片机实现数字电压表的软硬件设计J .河海大学常州分校学报,2002,(03).附录:C语言源程序#include unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f;unsigned char code dispcode=0x3f,0x06,0x5b,0

25、x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;unsigned char dispbuf8=10,10,10,10,0,0,0,0;unsigned char dispcount;unsigned char getdata;unsigned int temp;unsigned char i;sbit ST=P30;sbit OE=P31;sbit EOC=P32;sbit CLK=P33;void main(void)ST=0;OE=0;ET0=1;ET1=1;EA=1;TMOD=0x12;TH0=216;TL0=216;TH1=(65536-4000)/256

26、;TL1=(65536-4000)%256;TR1=1;TR0=1;ST=1;ST=0;while(1)if(EOC=1)OE=1;getdata=P0;OE=0;temp=getdata*235;temp=temp/128;i=5;dispbuf0=10;dispbuf1=10;dispbuf2=10;dispbuf3=10;dispbuf4=10;dispbuf5=0;dispbuf6=0;dispbuf7=0;while(temp/10)dispbufi=temp%10;temp=temp/10;i+;dispbufi=temp;ST=1;ST=0;void t0(void) interrupt 1 using 0CLK=CLK;void t1(void) interrupt 3 using 0 TH1=(65536-4000)/256;TL1=(65536-4000)%256;P1=dispcodedispbufdispcount;P2=dispbitcodedispcount;if(dispcount=7)P1=P1; /| 0x80;dispcount+;if(dispcount=8)dispcount=0;word文档 可自由编辑

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922