《基于51单片机的数字电压表的设计(共16页).doc》由会员分享,可在线阅读,更多相关《基于51单片机的数字电压表的设计(共16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 数字电压表的设计目录111112222346779959101112专心-专注-专业绪论本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。简易数字电压测量电路由A/D转换、数据处理、显示控制等组成。关键词: 单片机 AT89C52 A/D转换 ADC0808 数据处理课程设计要求:利用八位A/D转换器实现分辨率位八位二进制数的电压表,测量结果用四位数码管显示。第一章系统总体方案与选择实现数字电压表的方案很多,目前广泛采用的时
2、基于74系列逻辑器件,本设计将介绍基于单片机实现的方案。1.1 项目分析及其设计方案设计此设计包含两个模块,通道转换和显示部分方案。1.1.1通道转换方案设计方案一:考虑到ADC0808的8路模拟量输入本质上也是模拟开关,因此可以利用其8个模拟通道中的3个作为通道转换器,即根据通道对应的电压测量范围确定对应的电压方法倍数设计对应的放大电路。方案二:利用手动开关实现通道转换。该方案可简化控制程序,消减系统开销。缩短反应时间,不足之处在于操作麻烦。综上所述:方案二所需元件少、成本低且易于实现,则选此方案。1.1.2显示部分方案设计方案一:单片机的P0、P2口分别接74LS248和ULN2003A芯
3、片来驱动四位数码管方案二:直接用单片机的P1、P2口驱动数码管,此处把ADC0808的输出端接P1口 ,因为P1口能够驱动数码管。综上所述,两个方案都可行,但方案二所需元件少、成本低,则选择此方案。第二章 系统总体结构2.1 系统结构框图根据项目要求,确定该系统的设计方案,图2-1为该系统设计方案的结构框图。硬件电路由6各部分组成,即单片机、时钟电路、复位电路、LED显示电路、A/D装唤器和测量电压输入电路。 图2-1 系统结构框图2.2系统功能在一切准备就绪以后,滑动变阻器RV1的阻值,A/D采样数据,经过单片机的处理,在4位一体的LED数码管管上显示当前电压值。每改变一次RV1的阻值,在数
4、码管上就会获得一个新的数值。 第三章 硬件电路设计3.1 单片机的选择及时钟电路根据初步设计方案的分析,设计这样一个简单的应用系统,可以选择带有EPROM的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。此电路选择ATmel公司生产的AT89C51。AT89系列与MCS-51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片,使整个电路体积更小。它以较小的体积、良好的性价比倍受青睐。单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电
5、路中,电容C1和C2对震荡电路有微调的作用,通常的取值范围位(30+10)pF。石英晶体选择6MHz或12MHz都可以,其结果只是机器周期时间不同,影响计数器的计数初值,此设计取12MHz。图3-1 单片机最小系统3.2驱动模块该设计的驱动电路是由74LS245来驱动的。74LS245是我们常用的芯片,用来驱动LED或其他设备,它是8路同相三态双向总线收发器,课双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当51单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端CE低电平有效时,AB/BA=0;信号由B向A传输;AB/
6、BA=1,信号由A向B传输;当CE位高电平时,A,B均为高阻图3-2 74LS245管脚图3.3 LED 显示电路设计与器件选择单片机应用系统中,通常都需要进行人机对话。这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果。显示器、键盘电路就是用来完成人机对话活动的人机通道。 图3-3 LED显示管脚LED显示器的驱动是一个非常重要的问题,由图3-2-1可知,显示电路由LED显示器、段驱动电路和位驱动电路组成。此设计不采用段驱动芯片和位驱动芯片,直接由单片机的P0,P2口驱动,实验证明可行。在应用系统中,设计要求不同,使用的LED显示器的位数也不同,因此生产厂家就生
7、产了多种位数、尺寸、型号不同的LED显示器。在我们的设计中,选择4位一体的共阴极时钟型LED显示器,采用动态显示方式。图3-4 LED动态显示采用P0口作为LED的段码输出信号,P2口的低四位作为LED位码的输出控制信号。硬件电路的连接如图3-2-2所示。该电路的工作原理:当P0口输出段码信号的BCD码后,输出具有一定驱动能力的七段字形码,由于4-LED的段码输入管脚是并联在一起的,所以每一位LED的段码输入管脚都能获得这个段码信号。若要控制在每一时刻只有一位LED被点亮,必须靠位码信号控制。P2口低四位输出位码信号后接到LED的位码控制端,因此P2口的低四位的位码信号在每一时刻只有一位是“0
8、”,其他位全为“1”,然后按时间顺序改变输出“0”的位置,控制在每一时刻只有一位LED被点亮,达到动态显示的目的。3.4 A/D转换模块及转换电路设计A/D转换器的功能是将模拟量转换为与其大小成正比的数字量信号。能实现这种转换的原理和方法很多,此设计采用ADC0808转换器。ADC0808是一种逐次逼近型的8位A/D转换器件,片内有8路模拟开关,可输入8个模拟量,单极性,量程为0+5V。3.4.1 ADC0808 简介1. ADC0808引脚功能图3-5ADC0808引脚图(1) IN0IN7:8路模拟量输入。(2) ADDA、ADDB、ADDC:模拟量输入通道地址选择,其8位编码分别对应IN
9、0IN7.(3) ALE:地址锁存允许,上升沿将通道选择信号存入地址锁存器。(4) START:ADC转换启动信号,正脉冲有效,引脚信号要求保持在200ns以上,其上升沿将内部逐次逼近寄存器清零。(5) EOC:转换解释信号,可做为中断请求信号或供CPU查询。(6) CLK:时钟输入端,要求频率范围在10kHz1.2MHz.(7) OE:允许输出信号。(8) Vcc:芯片工作电压。(9) VREF(+)、VREF(-):基准参考电压的正、负值。(10) OUT1OUT8:8路数字量输出端。3.4.2 A/D转换电路设计集成摸数转换芯片ADC0808实现的A/D转换电路被测信号由ADC0808模
10、拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。 第四章 软件设计与说明进行应用软件设计时可以采用模块化结构设计,其优点是:每个模块的程序结构简单,任务明确,易于编写、调试和修改;程序可读性好,对程序的修改可局部进行,其他部分可以保持不变,易于功能扩充和版本升级;易于使用频繁的子程序可以建立子程序,便于多个模块调用;便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。4.1 数字电压表系统软件设计方案确定(1)根据设计要求,根据系统所要完成的功能,设计出图4-1所示的功能模块。 图4-1 数字电压表软件设计的模块(2)程序的设计主程序的设计 主程序的内容一般
11、包括:主程序的起始地址、中断服务额程序的起始地址、有关内存单元及相关部件的初始化和一些子程序调用等。根据设计要求,设计出如图4-2所示的主程序流程图。 图4-2 主程序流程图 图4-3 A/D转换子程序流程图 A/D转换子程序的设计 A/D转换程序的功能是采集数据,再整个系统设计中占有很高的地位。当系统置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平则转换完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。程序流程图如图4-3所示。数码转换及显示子程序的设计 由于人们日常习惯使用十进制数,而计算机的键盘输入、输出以及显示常采用二进制编码的十进制数(即BCD码)或A
12、SCII码。因此,在程序设计中经常要进行数码转换。4.2 数字电压表应程序设计(1)程序起始地址 MCS-51系列单片机复位后,(PC)=0000H,而0003H002BH分别为各中断源的入口地址。所以,编程序时应在0000H处写一条跳转指令。当CPU接到中断请求信号并予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入相应的中断服务程序入口处执行。(2)LED动态显示延时 LED显示器每一位的显示时间是5ms,延时5ms子程序是典型的软件定时程序。说明:LED采用7段字形代码,第1位采用把dp置1的方式显示小数点。第五章调试结果及其说明5.1 调试结果及其说明采用Keil Visio
13、n编译器进行源程序编译,调试好程序后将.Hex文件导入Proteus进行软件调试。在Proteus ISIS编辑窗口中单击开始仿真按钮,4位LED数码管显示相应的电压值。当通道打到通道0时,滑动变阻器RV1的阻值调至最小位置时,LED显示0.000,正确显示数值;把RV1调至中间位置时,LED显示2.650,同样正确读出数据;当把RV1的阻值调至最大位置时,LED显示5.000,正确读出数据。同理调试其他通道时,能正确显示通道数和电压值,证明该8路电压表合格。调试结果如图5-1 图5-1 调试结果 参考文献1 单片微机原理及应用 徐春晖 主编 电子工业出版社2 单片机应用技术(C语言版) 王静
14、霞 主编 电子工业出版社3 新概念51单片机C语言教程 郭天祥 主编 电子工业大学 4 单片机典型系统设计实例精讲 彭为等 电子工业出版社5 单片机原理与应用设计 张毅刚等电子工业出版社附录A 系统原理图附录A 系统原理图附录B 系统源程序LED_0EQU 30HLED_1 EQU 31HLED_2 EQU 32HLED_3 EQU33H/存放四个数码管的段码ADCEQU35H/存放转换后的数据ST BIT P3.2OE BIT P3.0EOC BIT P3.1ORG 0000HSTART: MOVLED_0,#00HMOVLED_1,#00HMOVLED_2,#00HMOV LED_3,#0
15、0HMOVDPTR,#TABLE/送段码表首地址SETBP3.4SETBP3.5CLRP3.6 /选择ADC0808的通道3WAIT: CLR STSETB STCLR ST/启动转换 JNB EOC,$ /等待转换结束SETB OE /允许输出MOV ADC,P1/暂存转换结果CLR OE /关闭输出LCALL INTOVLCALLDISP /显示AD转换结果SJMP WAITINTOV:MOV DPTR,#TAB/因为所用的滑动变阻器为0.01的精度,所以MOVA,ADC/最小的读数为0.05,其余均为0.05的倍数MOVCA,A+DPTR/因此,第三位小数,要么是5,要么是0MOV B,
16、#2 DIV AB MOV R0,B/A/2的余数付给R0,通过判断R0的值,MOV B,#100DIV ABMOV R1,A /将A 除以100,并将商赋给R1MOV A,#10XCH A,B /交换数据DIV AB / 得到得商为整数位,余数为第一个小数位MOV LED_3,A /整数位MOV LED_2,B /第一位小数MOV LED_0,R1 /第三位小数CJNER0,#01,KK1 /若R0=1,则执行下条语句,否则转移到KK1MOV LED_1,#05 /第二位小数BACK: RETKK1: MOV LED_1,#00AJMPBACKDISP: / 采用4位共阴数码管,故选通开关低
17、有效,MOVDPTR,#TABLE/整数位MOVA,LED_3MOVCA,A+DPTRSETB ACC.7CLRP2.0MOVP0,ALCALLDELAYSETBP2.0MOVDPTR,#TABLE /十分位MOVA,LED_2MOVCA,A+DPTRCLRP2.1MOVP0,ALCALLDELAYSETBP2.1MOVDPTR,#TABLE/百分位MOVA,LED_1MOVCA,A+DPTRCLRP2.2MOVP0,ALCALLDELAYSETBP2.2MOV DPTR,#TABLE/千分位 MOVA,LED_0MOVCA,A+DPTRCLRP2.3MOVP0,ALCALLDELAYSETB
18、P2.3RETDELAY:MOVR6,#10/延时5毫秒D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETTABLE: DB 3FH,06H,5BH,4FH,66H /数码管0-9的码表DB 6DH,7DH,07H,7FH,6FHTAB:DB 0,0 , 0 ,1,0,2,0,0,3,0/存放AD转换后的数DB4,0,0,5,0,6,0,0,7,0DB8,0,0,9,0,0,10,0,11,0DB0,12,0,13,0,0,14,0,15,0DB0,16,0,17,0,0,18,0,19,0DB0,20,0,0,21,0,22,0,0,23DB0,24,0,0,25,0,26,
19、0,0,27DB0,28,0,0,29,0,0,30,0,31DB0,0,32,0,33,0,0,34,0,35DB0,0,36,0,37,0,0,38,0,39DB0,0,40,0,0,41,0,42,0,0DB43,0,44,0,0,45,0,46,0,0DB47,0,48,0,0,49,0,50,0,0DB51,0,0,52,0,53,0,0,54,0DB55,0,0,56,0,57,0,0,58,0DB59,0,0,60,0,0,61,0,62,0DB0,63,0,64,0,0,65,0,66,0DB0,67,0,68,0,0,69,0,70,0DB0,71,0,0,72,0,73,0,0,74DB0,75,0,0,76,0,77,0,0,78DB0,79,0,0,80,0,0,81,0,82DB0,0,83,0,84,0,0,85,0,86DB0,0,87,0,88,0,0,89,0,90DB0,0,91,0,0,92,0,93,0,0DB94,0,95,0,0,96,0,97,0,0DB98,0,99,0,0,100,0,0,0 END