基于串行AD转换器数字电压表设计.doc_第1页
基于串行AD转换器数字电压表设计.doc_第2页
基于串行AD转换器数字电压表设计.doc_第3页
基于串行AD转换器数字电压表设计.doc_第4页
基于串行AD转换器数字电压表设计.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

重庆三峡学院电子信息工程专业实训(串行A/D转换器数字电压表设计)学 院: 年级专业: 学 号: 学生姓名: 指导教师: 完成日期 2012年11月30日基于TLC549串行A/D转换器的简易电压表的设计重庆三峡学院 摘要:本次设计的数字电压表主要由AT89C51单片机、A/D转换器TLC549、显示电路等模块组成。它是具有电压测量功能的一定精度的数字电压表。它可以测量0-5V的输入电压值,并在3位LED数码管上显示。测量最小分辨为0.020V,测量误差约为0.02V。以AT89C51单片机为核心,设计一个数字电压表。用8位A/D转换器TLC549进行电压信号的采集。由于系统构造简单,抗干扰能力较强,具有一定的实用价值。关键字:单片机;数字电压表;A/D转换;AT89C51;TLC549目录第一章 设计要求3 1.1要求3第二章 数字电压表3 2. 1数字电压表的介绍3 2.2 数字电压表的结构3第三章 总体方案论证3第四章 系统软件的设计4 4.1单片机控制部分4 4.1.1 单机片AT89C51内部结构概述44.1.2 AT89C51性能44.1.3TLC549的内部结构及工作原理54.1.4单机片AT89C51结构6 4.1.5时钟电路7 4.1.6复位电路74.1.7 总线扩展电路和地址锁存电路74.1.8 单片机部分总体结构84.1.9 驱动及显示电路9第五章 程序设计10 5.1 程序设计总方案10 5.2 系统子程序设计115.2.1 初始化程序115.2.2 A/D转换子程序11 5.2.3 显示子程序12第六章 仿真126.1 软件调试126.2显示结果及误差分析136.2.1 显示结果136.2.2 误差分析15第七章 系统软件的设计16 7.1 主程序167.2拆字子程序177.3扫描子程序17 7.4读取字节子程序,读出的值在ACC18 7.5标度变换子程序19 7.6原理图20 7.8最后结果21第八章 实训心得. 21参考文献22附录22致谢26第一章 设计要求1.1要求:1) 以TLC549串行A/D转换器和AT89C51单片机设计一个5V的数字电压表,电压值由电位器模拟。2) 采用3位LED显示器,显示格式为“.”V。1.2:扩展要求:1) 显示器采用LCD1602,显示格式为:“.V”。采用定时采样方式,每隔0.5秒进行一次A/D采样。第二章 数字电压表2.1数字电压表的介绍 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。2.2 数字电压表的结构 数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法, 避免了读数的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器, 转换器的精度很大程度上影响着数字电压表的准确度,数字式电压表是由高阻抗电压表头与分压电路组成的。 各部分的功能:A/D转换器:将输入的模拟信号转换成数字信号。基准电源:提供精密电压,供A/D转换器作参考电压。译码器:将二-十进制(BCD)码转换成七段信号。驱动器:驱动显示器的a、b、c、d、e、f、g七个发光段,驱动发光数码管(LED)进行显示。显示器:将译码输出的七段信号进行数字显示,读出A/D转换结果。键盘:通过键盘输入0-9来设置定时器的时间,进而改变采样时间间隔。第三章 总体方案论证 按系统功能实现要求,决定控制系统采用AT89C51单片机,A/D转换采用TLC549,先由采样电路对直流电压进行采样,因为要达到精度要求,所以选择了8位AD转换电路,然后通过单片机进行控制,不仅可以复位控制,而且可以通过键盘进行定时采样的设置,最后在驱动显示电路上显示出相关的信息。显示采用LED七段共阴极数码管。第四章 系统硬件的设计数字电压测量电路由AT89C51单片机、A/D转换TLC549、3位LED数码管显示等电路组成4.1 单片机控制部分4.1.1 单片机AT89C51内部结构概述它由中央处理区(CPU),内部RAM,内部ROM,定时器/计数器,并行I/O口,串行口,中断控制系统等部分通过片内总线连接组成。4.1.2 AT89C51性能 AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。 4.1.3 TLC549的内部结构及工作原理 TLC549带有片内系统时钟,该时钟与IOCLOCK是独立工作的,无需特殊的速度或相位匹配。当CS为高时,数据输DATA OUT端处于高阻状态,此时IO CLOCK不起作用。这种CS控制作用允许在同时使用多片TLc549时,共用IOcLOCK,以减少多路(片)AD使用时的IO控制端口。一组通常的控制时序操作如下: (1)将Cs置低,内部电路在测得CS下降沿后,在等待两个内部时钟上升沿和一个下降沿后,再确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATAOUT端; (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为低时,IO CLOCK上出现一个有效干扰脉冲,则微处理器,控制器将与器件的IO时序失去同步;而在cs为高时若出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。在36个内部系统时钟周期结束之前,实施步骤(1)(4),可重新启动一次新的AD转换,与此同时,正在进行的转换将终止。但应注意,此时的输出是前一次的转换结果而不是正在进行的转换结果。若要在特定的时刻采样模拟信号,则应使第8个IO CLOCK时钟的下降沿与该时刻对应。因为芯片虽在第4个IO CLOCK时钟的下降沿开始采样,却在第8个IO CLOCK的下降沿才开始保存。4.1.4 单机片AT89C51结构1)电源及时钟引脚(4个)VCC:+5 V电源。提供掉电空闲正常电压3种模式。GND:地线。XTAL1和XTAL2:外接晶体引线端2)控制线引脚(4个)RST:复位信号输入/备用电源输入引脚。ALE/PROG:地址锁存控制/编程脉冲输入信号。/PSEN:外部程序存储器读选通信号。 /EA/VPP:访问程序存储控制信号/可编程电压输入端。3)P0.0P0.7:P0口8位三态双向I/O口。1)作为分时复用的低8位地址线和8位数据线。2)在不访问外部存储器时,作为通用I/O口。P0端口能以吸收电流的方式驱动负载,一般情况下是作为扩展时候的地址数据总线使用的。 P1.0P1.7:P1端口8位带内部上拉电阻的准双向I/O口线(有第二功能)。P2.0 P2.7:3端口8位带内部上拉电阻的准双向I/O口线。P3.0P3.7:P3端口8位带内部上拉电阻的准双向I/O口线(有第二功能)。引脚第二功能功能描述P1.0T2外部计数输入/时钟输出P1.1T2EXT2的重装/捕捉/方向控制P1.2ECIPCA 的外部时钟输入脚P1.3CEX0PCA模块0捕获/比较模式的外部I/O脚P1.4CEX1PCA模块1捕获/比较模式的外部I/O脚P1.5CEX2PCA模块2捕获/比较模式的外部I/O脚P1.6CEX3PCA模块3捕获/比较模式的外部I/O脚P1.7CEX4PCA模块4捕获/比较模式的外部I/O脚4.1.5 时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。但本次只用了内部振荡。如图电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是3010pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。4.1.6 复位电路复位操作通常有两种基本形式:上电复位和按键与上电复位。如图所示上电或按键与上电复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C4的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键后松开,也能使RST为一段时间的高电平,从而实现上电或按键与上电复位的操作。4.1.7总线扩展电路和地址锁存电路 单片机系统的I/O口和数据存储器统一编址,将扩展的I/O口看作片外的数据存储器,一个I/O口占用一个片外数据存储器单元的地址。扩展I/O口也使用 、作为读、写控制信号,使用MOVX指令进行访问。 扩展的I/O口可分为不可编程(简单I/O)和可编程两大类。 74LS240芯片:由于该芯片与74LS244类似,因此可以采用对74LS240的研究来熟悉74LS2404.1.8单片机部分总体结构单片机总体结构部分由主芯片AT89C51、复位电路、时钟电路及总线扩展芯片74LS240等芯片构成。 4.1.9 驱动及显示电路 数码管由8个发光二极管构成,可以用来显示数字、字符等,它在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等,具有显示醒目、直观的特点,如下图所示数码管的内部结构图 这次设计中,采用的是74LS240共阴驱动数码管的a .b.c.d.e.f.g七段显示 显示电路与驱动电路的原理图 第五章 程序设计5.1 程序设计总方案根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图12所示。开始初始化调用A/D转换子程序调用显示子程序结束图12 数字式直流电压表主程序框图5.2 系统子程序设计5.2.1 初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等9。5.2.2 A/D转换子程序A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图13所示。开始启动转换A/D转换结束?输出转换结果数值转换显示结束图13 A/D转换流程图5.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11s定时,通过软件延时程序来实现5ms的延时。第六章 仿真6.1 软件调试软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。6.2显示结果及误差分析6.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的显示结果6.2.2 误差分析通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表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,从上表可看到,测试电压一般以0.01V的幅度变化。 从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正TLC549的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。第七章 系统软件的设计71主程序;*;* 初始化程序 *;*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 p2,#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 7.3 拆字子程序ORG 05D0HPTDS:MOV R1,A ;拆送显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP APTDS1: ANL A,#0FH MOV R0,A INC R0 RET7.4 扫描子程序 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 ;取字形代码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,0C6H,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 RET7.5读取字节子程序,读出的值在ACCRDBYTE: MOV R0,#08HRLP: SETB SDASETB SCL ;时钟线为高,接收数据位 MOV C,SDA ;读取数据位 MOV A,R2 CLR SCL ;将SCL拉低 RLC A ;进行数据位的处理 MOV R2,A CLR SCL DJNZ R0,RLP ;未够8位,再来一次 MOV A, R2 ;MODIFIED RET7.6标度变换子程序;入口:(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 AB MOV R3,A MOV A,#10 ;余数继续分离十位和个位 XCH A,B DIV AB SWAP A ORL A,B ;将十位和个位拼装成码 RETHBD: MOV B,#100 ;原小数扩大一百倍 MUL AB RLC A ;余数部分四舍五入 CLR A ADDC A,B MOV B,#10 ;分离出十分位和百分位 DIV AB SWAP A ADD A,B ;拼装成单字节码小数 DA A ;调整后若有进位,原小数接近整数 RET END ; 结束程序7.7原理图7.8最后结果第八章 实训心得为期两周的实训已经接近尾声,在这2周中,我学到了很多,对单片机的认识也进一步加深了。通过实训,我不仅学到了关于单片机的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课程设计给我的启发,利用好图书馆和网络,是资源的达到最好的利用。通过思考、发问、自己解惑并动手、改进的过程,才能真正的完成课题。我们通过相互学习,相互沟通,一起研究,让很多的实验都做得相当的成功,心中的成就感与自豪感油然而生。班级的那种团结氛围填满了整个实训间。本次课程对单片机设计与应用是我对单片技术有了更进一步的熟悉,实践操作和课本的知识有很大联系,但又高于课本,一个看似简单的电路,要动手把它设计出来就比较困难了,因为要设计要求我们在以后的学习中注意这一点,要把课本上所学到的知识和实际联系起来,同时通过本次电路的设计,不但巩固了所学知识,也是我们把理论与实践从真正意义上结合起来,增强了学习的综合能力。经过这次课程设计的过程,我相信在以后的课程设计中我们会吸取经验教训,做出更好的设计来。我们兢兢业业的老师,也在百忙之中和我们一起忙活,看着围在他身边的那一圈圈的人,他也总会耐心的为我们讲解,直到我们听懂为止。虽然这门课程完了,但是单片机在我们的生活中很重要,因此,我会在以后的时间中继续学习。为以后的工作打下基础;参考文献1 杨居义,单片机课程设计指导书.北京:清华大学出版社,20092 张永枫,单片机应用实训教程.北京:清华大学出版社,20083 姜志红,51单片机技术与应用系统开发案例精选.北京:清华大学出版社,20084 张荫等,单片机应用系统开发综合实例.北京:清华大学出版社,20085 谢辉,单片机原理及应用.化学工业出版社,2010附录;*;* 初始化程序 *;*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 p2,#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 ;拆送显示缓冲区 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 ;取字形代码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

温馨提示

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

评论

0/150

提交评论