基于TLC549串行AD转换器的简易数字电压表的设计_第1页
基于TLC549串行AD转换器的简易数字电压表的设计_第2页
基于TLC549串行AD转换器的简易数字电压表的设计_第3页
基于TLC549串行AD转换器的简易数字电压表的设计_第4页
基于TLC549串行AD转换器的简易数字电压表的设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、简易数字电压表设计重庆三峡学院单片机课程设计报告书学院(系): 应用技术学院 年级专业: 10级电信(职教) 学 号: 201015254102 学生姓名: 李 依 樯 指导教师: 谢 辉 教师职称: 副 教 授 实验成绩: 制作日期:2012年12月2日基于TLC549串行A/D转换器的简易数字电压表的设计重庆三峡学院应用技术学院 李依樯摘要 本文介绍了一种基于TLC549串行A/D转换器的简易数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,数据处理模块及显示模块。A/D转换主要由芯片TLC549来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯

2、片AT89C51来完成,其负责把TLC549传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着TLC549芯片工作。该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-5V的1路模拟直流输入电压值,并通过一个四位一体的7段数码管显示出来。 关键词 单片机;数字电压表;A/D转换;AT89C51;TLC549目 录第一章 引言1第二章 设计总体方案22.1设计要求22.2 设计思路22.3 设计方案2第三章 硬件电路设计33.1 A/D转换模块33.2 单片机系统53.3 复位电路和时钟电路73.4 LED显示

3、系统设计83.5 总体电路设计11第四章 程序设计134.1 程序设计总方案134.2 系统子程序设计13第五章 仿真155.1 软件调试155.2显示结果及误差分析15结 论18参考文献19附 录20致谢2727第一章 引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。 传统的指针

4、式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新

5、的类型。数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面3。本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。其中,A/D转换采用TLC549对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号。 第二章 设计总体

6、方案2.1设计要求 以MCS-51系列单片机为核心器件,组成一个简单的直流数字电压表。采用1路模拟量输入,能够测量0-5V之间的直流电压值。电压显示用4位一体的LED数码管显示,至少能够显示两位小数。 尽量使用较少的元器件。 2.2 设计思路 根据设计要求,选择AT89C51单片机为核心控制器件。A/D转换采用TLC549实现,与单片机的接口为P1口和P2口的高四位引脚。电压显示采用4位一体的LED显示器。LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。2.3 设计方案硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LED显示系统、时钟电路

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

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

9、述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量5。其原理框图如图2所示:顺序脉冲发生器逐次逼近寄存器ADC电压比较器输入电压输入数字量图2 逐次逼近式A/D转换器原理图3.1.2 TLC549主要特性TLC549是采用IinCMOSTM技术并以开关电容逐次逼近原理工作的8位串行AD7芯片,可与通用微处理器、控制器通过IO CLOCK、CS、DATA OUT三条口线进行串行接口。TLC549具有4MHz的片内系统时钟和软、硬件控制电路,转换时间最长为17s,允许的最高转换速率为40000次/s。总失调误差最大为±05LSB,典型功耗值为6 mW。TLC549采用差

10、分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,由于其VREF-接地时,(VREF+)-(VREF-)1 V,故可用于较小信号的采样,此外,该芯片还单电源36v的供电范围。总之,TLC549具有控制口线少,时序简单,转换速度快,功耗低,价格便宜等特TLC549的极限参数如下:电源电压:65 V: 输入电压范围:0.3VVCC:+o.3V:输出电压范围:0.3VVCC:+03 V; 峰值输入电流(任一输人端):±10 mA;峰值输人电流(所有输入端):±30mA工作温度:TLC549C:070C TLC549I:-4085TLC549M-55"C125TLC5

11、49的引脚图和内部框图如图3所示。图3 (a) TLC549的引脚图3.1.3 TLC549的内部结构及工作原理TLC549带有片内系统时钟,该时钟与IOCLOCK是独立工作的,无需特殊的速度或相位匹配。当CS为高时,数据输DATA OUT端处于高阻状态,此时IO CLOCK不起作用。这种CS控制作用允许在同时使用多片TLc549时,共用IOcLOCK,以减少多路(片)AD使用时的IO控制端口。一组通常的控制时序操作如下: (1)将Cs置低,内部电路在测得CS下降沿后,在等待两个内部时钟上升沿和一个下降沿后,再确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATAOUT端; (

12、2)在前四个IO CLOCK周期的下降沿依次移出第2、3、4和第5个位(D6,D5,D4,D3),片上采样保持电路在第4个IO CLOCK下降沿开始采样模拟辅人: (3)接下来的3个I/O CLOCK周期的下降沿可移出第6、7、8(D2,D1,D0)各转换位;(4)最后,片上采样保持电路在第8个IOCLOCK周期的下降沿将移出第6、7、8(D2,D1,D0)各转换位。然后使保持功能持续4个内部时钟周期,接着开始进行32个内部时钟周期的AD转换。在第8个IO cLCOK后,CS必须为高或IO LOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。如果CS为低时,I

13、O CLOCK上出现一个有效干扰脉冲,则微处理器,控制器将与器件的IO时序失去同步;而在cs为高时若出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。在36个内部系统时钟周期结束之前,实施步骤(1)(4),可重新启动一次新的AD转换,与此同时,正在进行的转换将终止。但应注意,此时的输出是前一次的转换结果而不是正在进行的转换结果。若要在特定的时刻采样模拟信号,则应使第8个IO CLOCK时钟的下降沿与该时刻对应。因为芯片虽在第4个IO CLOCK时钟的下降沿开始采样,却在第8个IO CLOCK的下降沿才开始保存。3.2 单片机系统3.2.1 AT89C51性能AT89C51是美国AT

14、MEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线

15、;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。 3.2.2 AT89C51各引脚功能AT89C51提供以下标准功能:4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。AT89C51采用PDIP封装形式,引脚

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

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

18、.1 TXD(串行口输出)P3.2/INT0(外部中断0输入)P3.3/INT1(外部中断1输入)P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器1的外部输入)P3.6/WR(片外数据存储器写允许) P3.7/RD(片外数据存储器读允许)Vcc为+5V电源线,Vss接地。ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,89C51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。/EA:片外存储器访问选

19、择线,可以控制89C51使用片内ROM或使用片外ROM,若/EA=1,则允许使用片内ROM, 若/EA=0,则只使用片外ROM。/PSEN:片外ROM的选通线,在访问片外ROM时,89C51自动在/PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。RST:复位线,可以使89C51处于复位(即初始化)工作状态。通常89C51复位有自动上电复位和人工按键复位两种。XTAL1和XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC(震荡器)的定时反馈回路。3.3 复位电路和时钟电路3.3.1 复位电路设计单片机在启动运行时都需要复位,使CPU和

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

21、而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,如图7所示。图7 时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了33pF;石英晶振选择范围

22、最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。3.4 LED显示系统设计3.4.1 LED基本结构LED是发光二极管显示器的缩写。LED由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。LED显示器是由若干个发光二极管组成显示字段的显示器件6。在单片机中使用最多的是七段数码显示器。LED七段数码显示器由8个发光二极管组成显示字段,其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED引脚排列如下图8所示:图8 L

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

24、ED引脚对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。3.4.3 LED译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序。本设计系统中为了简化硬件线路设计,LED译码采用软件编程来实现。由于本设计采用的是共阴极LED,其对应的字符和

25、字段码如下表3.3所示。表3.3 共阴极字段码表显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FH3.4.4 LED显示器与单片机接口设计由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作7。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。为了简化数字式直流电压表的电路设计,在LED驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LED的A-G段显

26、示引脚和DP小数点显示引脚并联到P0口与上拉电阻之间,这样,就可以加大P0口作为输出口德驱动能力,使得LED能按照正常的亮度显示出数字,如图10所示。图10 LED与单片机接口间的设计3.5 总体电路设计经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图11所示。图11 简易数字电压表电路图此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后由ADC0808的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C51芯片的P1口,AT89C51负责把接收到的

27、数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮灭。此外,AT89C51还控制ADC0808的工作。其中,单片机AT89C51通过定时器中断从P2.4输出方波,接到ADC0808的CLOCK,P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转换完成后,P2.7置高从P1口读取转换结果送给LED显示出来。简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电

28、路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。 3.6 总体设计结果第四章 程序设计4.1 程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图12所示。开始初始化调用A/D转换子程序调用显示子程序结束图12 数字式直流电压表主程序框图4.2 系统子程序设计4.2.1 初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等9。4.2.2 A/D转换子程序A/D转换子程序

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

30、s的延时。第五章 仿真5.1 软件调试 软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。本系统的调试主要以软

31、件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。5.2 显示结果及误差分析5.2.1 显示结果1. 当IN0口输入电压值为0V时,显示结果如图14所示,测量误差为0V。 图14 输入电压为0V时,LED的显示结果2.当IN0输入电压值为1.50V时,显示结果如图15所示。测量误差为0V。 图15 输入电压为1.50V时,LED的显示结果3. 当IN0口输入电压值为3.50V时,显示结果如图16。测量误差为0V。 图16 输入电压为3.50V时,LED的显示结果5.2.2 误差分析通过以上仿真测量结果可得到简易数字电

32、压表与“标准”数字电压表对比测试表,如下表4所示:表4 简易数字电压表与“标准”数字电压表对比测试表标准电压值/V简易电压表测量值/V绝对误差/V0.000.000.000.500.510.011.001.000.001.501.510.012.002.000.002.502.500.003.003.000.003.503.500.004.004.000.004.995.000.01由于单片机AT89C51为8位处理器,当输入电压为5.00V时,TLC549输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,

33、从上表可看到,测试电压一般以0.01V的幅度变化。 从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正TLC549的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。结 论首先,感谢谢辉老师的指导帮助与这学期的辛勤付出,也感谢同学们的支持帮助。实训历时两周,虽然不是每天都在试验室做练习,但是大家的心未敢有丝毫放松,毕竟机会不多,来之不易,应当好好珍惜。经过一段时间的努力,课程设计是基于TLC549串行A/D转换器的简易数字电压

34、表基本完成。但设计中的不足之处仍然存在。这次设计是我第一次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计学会了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。其次,基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的

35、设计、电路图的仿真再到软件的调试的各个过程。最后,通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89C51单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片TLC549,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练,认识不够到位。参考文献1谢辉 单片机原理及应用. 北京化学工业出版社 2010年6月2陈立万 脉冲与数字电路. 中国物资出版

36、社 3于殿泓、王新年.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007年5月4谢维成、杨加国.单片机原理与应用及C51程序设计实例.电子工业出版社,2006年3月5李广弟.单片机基础.北京航空航天大学出版社,2007年5月6姜志海,黄玉清等著.单片机原理及应用M .北京:电子工业出版社.2005年7月 7魏立峰.单片机原理及应用技术.北京大学出版社,2005年8周润景.Protues在MCS-51&ARM7系统中的应用百例.第一版.北京:电子工业出版社,2006年9边春远等著.MCS-51单片机应用开发实用子程序M .北京:人民邮电出版社.2005年9月.10苗红霞.单片

37、机实现数字电压表的软硬件设计J .河海大学常州分校学报,2002,(03).11宋凤娟,孙军,李国忠.基于89C51单片机的数字电压表设计J .工业控制计算机,2007,(04). 附 录(1)程序代码 ;*;* 初始化程序 *;*SDA EQU P1.7 ;DATA OUTSCL EQU P1.6 ;I/O CLOCKCS EQU P1.0 ;/CS片选DP EQU P0.7MTD EQU 30H ;发送缓冲区首址MRD EQU 40H ;接收缓冲区首址;*;* 电压表实验主程序 *;* ORG 0000H LJMP SE11 ORG 0590HSE11:MOV SP,#53H ;MOV p

38、2,#0ffh ;MOV A,#81H ;MOV DPTR,#0FF23H ;MOVX DPTR,A MOV 7CH,#09H ;显示缓冲区赋初值 MOV 7BH,#14H MOV 7AH,#10H MOV 79H,#10H LO18:LCALL SSEE ;调用显示子程序 CLR CS ;选中TLC549器件 LCALL RDBYTE ;读取采样/保持的数字量,并送到寄存器A SETB CS ;等待A/D转换结束 NOP ;NOP NOP NOP NOP NOP NOP LCALL BIAODUSJMP LO18 ;*;* 拆字子程序 *;* ORG 05D0HPTDS:MOV R1,A ;

39、拆送显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP APTDS1: ANL A,#0FH MOV R0,A INC R0 RET;*;* 显示扫描子程序 *;* ORG 0D50HL1:LCALL SSEESJMP L1SSEE:SETB RS1 ;换工作区MOV R5,#04HSSE2:MOV 30H,#20H;位控码MOV 31H,#7BH;显示缓冲区MOV R7,#03HSSE1: ; MOV R1,#20H MOV A,30HCPL A;低电平位控MOV P3,A ;字位送入MOV R0,31HMOV A,R0MOV DPTR,#DDFFMOVC A,A+DPTR ;取

40、字形代码JB P3.5 , LL1CLR ACC.7;MOV R1,#21H;MOVX R1,A ;字形送入LL1:MOV P0 , A LCALL DELY5MSMOV A,30HRR A ;左移MOV 30H,ADEC 31HMOV A,#0ffH;MOVX R1,A ;关显示;MOV P3 , ADJNZ R7,SSE1 ;六位显示完了吗?DJNZ R5,SSE2 ;8次显示完了吗?CLR RS1RETDDFF:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0F1H,0C6

41、H,092H,0BFH;共阳代码 ;DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH;动态扫描代码DELY5MS: MOV R2, #5 D5: MOV R3,#248 DJNZ R3,$ DJNZ R2,D5 RET ;*;*读取字节子程序,读出的值在ACC*;*RDBYTE: MOV R0,#08HRLP: SETB SDA SETB SCL ;时钟线为高,接收数据位 MOV C,SDA ;读取数据位 MOV A,R2 CLR SCL ;将SCL拉低 RLC

42、A ;进行数据位的处理 MOV R2,A CLR SCL DJNZ R0,RLP ;未够8位,再来一次 MOV A, R2 ;MODIFIED RET;*;*标度变换子程序*;入口:(A)=采样值;出口:(7CH、7BH)=BCD码整数;(7AH、79H)=BCD码小数;*BIAODU: MOV B,#5 MUL AB;高字节电压的整数部分;低字节电压的小数部分 MOV R2,B;暂存整数部分 LCALL HBD;BCD码的小数部分放A中 JNC BIA1;无进位,跳转 INC R2;有进位,整数部分加1BIA1: MOV R0,#79H;拆送显示缓冲区7AH,79H(小数) LCALL PTDS MOV A , R2 LCALL HBCD;BCD码的整数部分转换 MOV R0,#7BH;拆送显示缓冲区7AH,79H(小数) LCALL PTDS RET HBCD: MOV B,#100 ;分离出百位,存放在R3中 DIV

温馨提示

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

评论

0/150

提交评论