基于单片机的数字电压表设计毕业设计论文

上传人:a**** 文档编号:157036653 上传时间:2022-09-28 格式:DOC 页数:37 大小:1.13MB
返回 下载 相关 举报
基于单片机的数字电压表设计毕业设计论文_第1页
第1页 / 共37页
基于单片机的数字电压表设计毕业设计论文_第2页
第2页 / 共37页
基于单片机的数字电压表设计毕业设计论文_第3页
第3页 / 共37页
点击查看更多>>
资源描述
基于单片机的数字电压表设计设计总说明本文详细介绍了一种基于单片机的数字电压表设计方案。该设计方案主要由四个模块组成:模拟输入模块,A/D转换模块,数据处理模块及显示模块。模拟输入模块会根据待测电压的大小自动选择不同的转换通道,A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量,然后传送到单片机的数据处理模块。数据处理则由芯片AT89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示,此外,它还控制着ADC0809芯片工作。采用该方案设计的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表可以测量0-20V的1路模拟直流输入电压值,并通过一个四位一体的七段数码管显示出来,具有量程自动转换功能。关键字:单片机;A/D转换;数据处理;量程自动转换Design of Digital Voltage Meterbased on Single-chip MicrocomputerDesign DescriptionThis paper which introduces a kind of simple digital voltmeter is based on single-chip microcontroller design. The circuit of the voltage meter is mainly consisted of four mould pieces:Anolog input mould piece, Anolog input is mainly convert automatically select different channels according to the size of the test voltage.A/D converting mould piece, A/D converting is mainly completed by the ADC0809, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data processing is mainly completed by the AT89C51 chip, it processes the data produced by the ADC0809 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. Also, the AT89C51 chip controls the ADC0809 chip to work. The voltmeter features in simple electrical circuit, lower use of elements, low cost, moreover, its measuring precision and reliability. The voltmeter is capable of measuring voltage inputs from 1 route ranging from 0 to 20 volt, and displaying the measurements though a digital code tube of 7 pieces of LED,and it has a automatic range conversion function.Keywords:Single-chip microcontroller; Digital voltmeter; A/D converter; Automatic conversion range目 录1绪 论1数字电压表简介1课题意义和目的22基于单片机的数字电压表的整体设计3设计指标3系统概述33基于单片机数字电压表的硬件设计6器件的选择6量程选择电路6重要元器件介绍6量程选择电路7A/D转换电路8A/D转换芯片的选择8重要元器件介绍8A/D转换电路11数据处理模块11单片机的选择12重要元器件介绍12单片机复位电路设计14单片机时钟电路设计14电源电路15显示模块16重要元器件介绍16LED显示器与单片机接口设计18单片机和PC机通信模块连接194基于单片机数字电压表的软件设计21程序设计总方案21子程序设计22初始化程序22A/D转换子程序22数据处理子程序22显示子程序245系统调试与分析26软件调试26显示结果及误差分析26显示结果26误差分析276总 结29致 谢30参考文献31附 录321 绪 论1.1 数字电压表简介在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表精度高、抗干扰能力强,可扩展性强,集成方便,还可与PC进行实时通信。目前,由各种单片机和A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器,仪表,也把电量及非电量测量技术提高到崭新水平。数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的从指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度,本文A/D转换器采用ADC0809对输入模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号1。数字电压表是当前电子、电工、仪器、仪表和测量领域大量使用的一种基本测量工具。数字电压表的主要技术指标有:测量范围、输入阻抗、显示位数、测量速度、分辨率。1)新技术的广泛应用20世纪90年代初,世界各国相继研发了新的A/D转换技术。例如:四斜率A/D转换技术(美国)、余数再循环技术(美国)、自动校准技术(英国)、固态真有效值转换技术(英国)、约瑟夫森效应基准源、智能化专用芯片(80C51系列,荷兰)等,这些新技术使数字电压表向高准确度、高可靠性及智能化、低成本方向发展。2)智能化、复合型仪表由CMOS数字IC、模拟IC及微处理器集成在一个超大规模集成电路内,只须外围配置少量元器件,即可构成完整的智能仪表,可以完成存储、计算、比较、控制等多项功能。实际上数字电压表并不能完全取代指针式电压表,在反映电压的连续变化和变化趋势方面不如指针表直观。为克服这种缺憾,20世纪90年代初“一种数字/光柱”的双重显示仪表开始出现,并成功地应用于生产实践2。1.2 课题意义和目的数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计,湿度计,酸度计,重量,厚度仪等),几乎覆盖了电子电工测量,工业测量,自动化仪表等各个领域。除此之外,数字电压还有着传统指针电压表无可比拟的优点:读数直观、准确,显示范围宽、分辨力高,转入阻抗高,功耗小、抗干扰强等。因此对数字电压表作全面深入的了解是很有必要的。但是传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成,可是这种设计方法灵活性差,系统功能固定,难以更新扩展,不能满足日益发展的电子工业要求。而应用微处理器(单片机)为核心单元的数字电压表,其灵活性高、系统功能扩展简单,性能稳定可靠。在这些背景下,设计一种以单片机为基础、结构简单、工作可靠、灵活性好的数字电压表是很有意义的。2 基于单片机的数字电压表的整体设计2.1 设计指标本课题需要以单片机为基础设计出一种能测量0-20V电压的数字电压表,数字电压表分为0-5V和5-20V两档,档位可以根据待测电压的大小自动切换,分辨率达到。2.2 系统概述本课题所设计的数字电压表主要包括两部分:硬件电路及软件程序。而硬件电路采用AT公司的AT89C51作为主处理器,系统主要由信号采集、A/D转换、数据处理输出、驱动显示等几个功能模块组成,整个硬件电路的软仿真在Proteus环境下完成,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil 软件对其编译和仿真,详细的设计算法将会在程序设计部分介绍。量程选择模块显示模块4位一体LED数码管数据处理模块AD转换模块AT89C51ADC0809数字量输入控制信号模拟量输入输出显示图 21 数字电压表系统框图系统框图如下: 图2-1 系统框图被测直流电压先经过量程选择电路选择合适的量程,再由A/D转换单元通过相应的通道采集和量化,接着由单片机对A/D转换的结果进行标度变换,得到被测电压的数值,通过单片机串行数据接口把所得数值输出给显示驱动单元,由该单元完成译码,并驱动数码管显示。硬件电路图如下:图 22 硬件电路图在电路设计和软件设计中都采用了分模块设计,这种设计方法为以后的调试和维修带来了极大的方便。特别是在软件设计中,这种方法增强了程序的可移植性,为以后的功能扩展奠定了基础。3 基于单片机数字电压表的硬件设计3.1 器件的选择单片机 AT89C51 1块模数转换器 ADC0809 1块显示驱动 74HC245 1块AD转换时钟信号 74HC74 1块四位一体数码管 HS420561K-32 1块继电器模块 SRD-05VDC-SL-C 1块升压模块 12M晶振 1个30pF电容 2个10uF电解电容 1个按键开关 1个300电阻 1个100电阻 3个200电阻 1个1K电阻 1个10K电阻 1个3.2 量程选择电路量程选择电路是本课题的核心环节,由于ADC0809只能转换0V-5V的电压,要达到对20V待测电压的测量,就必须进行降压,但不能对任何输入电压都降压处理,因为如果待测电压过小,再进行降压处理,最后得到的电压必然精度降低。因此,将待测信号分为0V-5V,5V-20V两档,0V-5V将直接进入A/D转换进行测量,5V-20V信号通过分压网络进行分压,使其范围落在0V-5V,然后进入A/D转换进行测量。3.2.1 重要元器件介绍LM393介绍LM393是双电压比较器集成电路。主要性能参数:比较器数:2工作电源电压范围宽,单电源、双电源均可工作,单电源: 236V, 双电源:118V;消耗电流小, ICC=0.8mA;输入失调电压小, VIO=2mV;共模输入电压范围宽, VIC=0VCC-1.5V;图 31 LM393引脚图其引脚图(内部结构图)如下:3.2.2 量程选择电路R2和R3对输入信号进行分压,R5、R6和R18产生的基准源,LM393构成比较器,当正端大于负端输入时将输出高电平(+5V),当正端小于负端输入时将输出低电平(0V);RL1为常闭继电器,NPN三极管组成开关电路,当LM393输出高电平时,三极管导通,电流经R17和三极管流向继电器源绕组从而关断继电器。通过上述分析,不难得出:当输入信号小于5VV,LM393输出低电平,三极管截止,继电器导通,信号直接传递至A/D转换器的通道0;当输入信号大于5V而小于20V时,电阻R3端电压大于,LM393输出高电平,三极管导通,继电器截止,跳转到常开端口,信号经R2和R3分压后,转变为0V-5V信号传递至A/D转换器的通道1。和ADC0809引脚ADDA变为高电平。3.3 A/D转换电路3.3.1 A/D转换芯片的选择A/D转换电路是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动校零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示3。本设计中,要求精度小于0.5%,则选用分辨率为8位的芯片,如ADC0809,ADC0801,ADC0808就能满足设计要求。本电路采用ADC0809。3.3.2 重要元器件介绍(1)ADC0809介绍ADC0809是一种8位逐次逼近型A/D转换器。带8个模拟量输入通道,芯片内有通道地址译码锁存器,有输出三态数据锁存器,启动信号为脉冲启动方式,每个通道的转换时间大约为100s,可以和单片机直接接口4。ADC0809的引脚图和内部逻辑结构如图所示:图 32 ADC0809引脚图与内部逻辑结构图由图3-2(b)可知,ADC0809由一个8路模拟开关,一个地址锁存与译码器、一个8位A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道IN0IN7,允许8路模拟分量输入,共用A/D转换器进行转换。三态输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。主要引脚简介:1)IN0IN7:8条模拟量输入通道。ADC0809对输入模拟量的要求是信号单极性,电压范围是05V,若信号太小,必须进行放大。输入的模拟量在转换过程中应保持不变,如若模拟信号变化太快,则需在输入前增加采样保持电路。2)地址输入和控制线:4条,ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A、B、C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转化器进行转换。A、B、C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择如表所示:表 31 AD0809通道选择表地址码 对应输入通道 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 3)数字量输出及控制线: 11条。START为上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换:在转换期间,START应保持底电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束:否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据。OE=0,输出数据线呈高阻状态。D7D0为数字量输出线。4)CLK为时钟输入信号线。由于ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHz,最大不能超过1280KHz。5)VREF(+),VREF(-)为参考电压输入,决定了输入模拟量的范围。一般情况VREF(-)接地,VREF(+)接+5V电源。ADC0809的工作方式:首先输入三位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通1路通道输入到内部的比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,然后EOC输出信号将为低电平,表明正在进行转换,直到A/D转换完成,EOC变为高电平,结果数据存入锁存器中。当OE输入高电平时,输出三态门打开,转换结果输出到数据总线上。(注意:ALE信号常与START信号连在一起,这样连接可以在信号前沿写入地址信号,在其后沿启动A/D转换)4(2)74HC74介绍74HC74为带预置和清除端的两组D型触发器,具有四分频作用。其封装图如下:图 33 74HC74引脚图74HC74分频工作原理:74HC74是个双D触发器,把其中的一个D触发器的Q非输出端接到D输入端,时钟信号输入端CLOCK接时钟输入信号,这样每来一次CLOCK脉冲,D触发器的状态就会翻转一次,每两次CLOCK脉冲就会使D触发器输出一个完整的正方波,这就实现了2分频。把同一片74HC74上的两路D触发器串联起来,其中一个D触发器的输出作为另一个D触发器的时钟信号,可以实现4分频。由于AD转换器的最佳工作频率为10KHz1280KHz,常用为500KHz,单片机的ALE端输出频率为晶振频率的1/6,为2MHz,因此ADC0809的时钟信号可以通过单片机ALE管脚经74HC74四分频后接入。3.3.3 A/D转换电路图 34 A/D转换电路图ADC0809的ALE和START端由单片机P3.6口控制,转换结束信号EOC由单片机P3.4口控制,使能端OE由单片机P3.7口控制,时钟信号由单片机ALE管脚经过74HC74四分频后接入。ADDA、IN0和IN1信号由量程选择电路接入。3.4 数据处理模块数据处理模块主要是通过单片机来完成的。单片机从A/D转换器接收到的是8位二进制的数字量,但最终通过数码管显示的是0-20V的十进制电压值,因此,必须将得到的0-255的数,进行标度变换,最终输出相应的电压值,送到显示模块。3.4.1 单片机的选择在众多的51系列单片机中,要属ATMEL 公司的AT89C51更实用。它是由北京集成电路设计中心在MSC-51单片机的基础上精心设计,由美国生产的至今为止世界上最新型的高性能八位单片机。它不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为ATMEL AT89Cx 做的编程器均带有这些功能。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短5。3.4.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通道;片内震荡器和掉电模式。图 36 AT89C51引脚图AT89C51芯片为40引脚双列直插式封装,实物图和引脚图如下:图 35 AT89C51实物图主要引脚介绍:VCC:电源GND:电源地P0口:P0口是一组8位漏极开路双向I/O口,也既地址/数据总线复用口。在本设计中,P0口接收来自ADC0809转换的结果。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,在设计中P1口用作LED数码管段码的输出。P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,在设计中P2口控制数码管的位选信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:表 3-2 P3口第二功能表端口引脚第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外部中断0) INT1(外部中断1) T0(定时/记数器0) T1(定时/记数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通)在设计中P3口的部分引脚用作ADC0809的控制信号。P时与USBtoTTL 相连。RST:复位输入。当振荡器工作时,RET引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的底8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外部输出时钟或用于定时目的。本设计中ALE管脚主要给A/D转换器提供时钟信号。EA:外部访问允许。本设计中EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.4.3 单片机复位电路设计单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只有RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图3-7是51系列单片机统常用的复位电路6。 图 37 单片机复位电路3.4.4 单片机时钟电路设计单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和 2个电容即可,如图3-8所示。图 38 单片机时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是3010pF,在这个系统中选择了30pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。3.4.5 电源电路电源电路是将220V电压转换成需要的5V电压的装置,需要进行交流电压调理、整流、直流电压调理3个步骤。交流电压调理是将较高的交流电压变成较低的交流电压的过程。由于外部交流电压通常为220V,为了得到51单片机需要得电压,需要通过变压器来实现。整流是将交流电压转化为直流电压的过程,一般使用整流桥来实现。采用的是在变压器后面连接4个二极管组成一个桥式整流电路,整流后就得到一个电压波动很大的直流电源。变压器输出端的9V电压经桥式整流并经电容滤波,在电容C1两端大约会有11V多一点的电压,假如从电容两端直接接一个负载,当负载变化或交流电源有少许波动都会使C1两端的电压发生较大幅度的变化,因此要得到一个比较稳定的电压,在这里接一个三端稳压器的元件。直流电压调理采用的是稳压器。三端稳压器是一种集成电路元件,内部由一些三极管和电阻等组成,可认为是一个能自动调节电阻的元件,当负载电流大时三端稳压器内的电阻自动变小,而当负载电流变小时三端稳压器的内阻又会自动变大,这样就能保持稳压器的输出电压保持基本不变。因为要输出5V的电压,所以选用7085三端稳压器后接一个电容,这个电容有滤波作用7。 图3-9 电源电路3.5 显示模块显示模块是数字电压表设计的重要部分,因为它直观地反映了整个系统设计的精度。单片机将需要显示的电压的段码通过P1口送给LED数码管,此外单片机将位选码通过P2口输出。3.5.1 重要元器件介绍(1)驱动芯片74HC245介绍74HC245是总线驱动器,典型的TTL型三态缓冲门电路。由于单片机等CPU的数据地址控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。其引脚图如下:图 310 74HC245引脚图第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。 第29脚“A”信号输入输出端,A1=B1 A8=B8,A1与B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其他类同。如果DIR=“0”OE=“0”则B1输入A1输出,其他类同。 第1118脚“B”信号输入输出端,功能与“A”端一样,不再描述。 第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。第10脚GND,电源地。第20脚VCC,电源正极。(2)HS420561K-32数码管介绍HS420561K-32是一个四位一体的7段LED数码管,它是一个共阴极的数码管。其中a、b、c、d、e、f、g为4位LED各段的公共输出端,1、2、3、4分别是每一位的位数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。图3-11 4位LED引脚图对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。LED译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序8。本设计系统中为了简化硬件线路设计,LED译码采用软件编程来实现。由于本设计采用的是共阴极LED,其对应的字符和字段码如下表3-3所示。表3-3 共阴极字段码表显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FH3.5.2 LED显示器与单片机接口设计由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。如果驱动电路能力差,即带负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。本设计将采用74HC245作为驱动芯片,连线简单,驱动能力强9。LED显示器与单片机接口设计图如下:图 312 数码管连线图四个数码管分别通过P2.3,P2.2,P2.1,P2.0控制。3.6 单片机和PC机通信模块连接通过单片机与PC机串口通信的应用,我们的个人电脑和单片机系统可以进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制码,单片机系统接收后,用LED显示接收到的数据。通过让单片机和PC机相连,把所采集的数据传送到PC机上,再在PC机上进行数据处理,从而可以随意更改想要LED点阵显示的文字信息。由于单片机的输入、输出电平是TTL电平,而PC机配置的是RS-232标准串行接口,两者的电气规范不一致,因此要完成单片机与PC机的数据通信,必须对单片机输出TTL电平进行电平交换。将单片机和PC机的三个引脚分别连在一起,即将PC机和单片机的发送数据线TXD与接收数据线RXD交叉连接,两者的底线直接相连。但由于单片机的TTL逻辑电平和PC机电气特性完全不同,因此在PC机和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用MAX232电平转换芯片。单片机和PC机的串口通信原理方案如图所示: 图3-13 串口通信连接图4 基于单片机数字电压表的软件设计4.1 程序设计总方案根据模块的划分原则,将该程序划分为初始化模块,A/D转换子程序,数据处理子程序和显示子程序,这四个程序模块构成了整个系统软件的主程序。开 始系统初始化调用A/D转换子程序调用数据处理子程序调用显示子程序结 束图 41 主程序流程图4.2 子程序设计4.2.1 初始化程序初始化子程序的主要工作是定义端口。4.2.2 A/D转换子程序A/D转换子程序用来控制对输入的电压信号的转换,通过判断EOC(引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,并将对应的数值存入相应的内存单元。其转换流程图如图4-2所示。启动转换A/D转换结束?OE置位,输出数据开 始结 束YN图4-2 A/D转换流程图4.2.3 数据处理子程序数据处理子程序主要根据标度变换公式4-1,把0255十进制数转换为05。 (4-1)Ax:模拟测量值;Ao:模拟输入最小值;Am:模拟输入最大值;Nx:模数转换后的值;No:模数转换后的最小值;Nm:模数转换后的最大值。在本设计中,根据要求可知:Ao=0V,Am=5V,No=0,Nm=255,则公式4-1可化简为: (4-2)由于单片机在处理数据时只会保留数据的整数部分,所以不能直接将AD转换得到的数据除以51,这样得到的结果很不准确。本次设计采用的方法是将数据先乘以100后再除51,这样就能保留4位有效数字。单片机通过判断P3.3来确定待测电压的范围,若,则说明待测电压为05V,标度变换后的数据不需做任何处理,便可直接送入显示模块输出;若P3.3为1,则说明待测电压为5V20V,标度变换后的数据需要乘以4后再送入显示部分。程序流程图如下:开 始A=数据100=1?B=A/51C=B4B=A/51将C送入显示模块结 束YN图 42 数据处理程序转换流程图4.2.4 显示子程序通过对数据处理程序得到的一个四位数不断对10取余可以得到四个数字,以便通过四位数码管显示。显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms10。在本设计中,为了简化硬件设计,主要通过软件延时程序来控制每一位数码管的显示时间。程序流程图如下:开 始D=C/10D=0?C对10取余,送给E显示E点亮第二个数码管的小数点把D送给EYN结 束图 43 数据处理程序流程图5 系统调试与分析5.1 软件调试软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80等等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著点的特点是可以与u Visions3 IDE工具软件结合进行编程仿真调试。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。5.2 显示结果及误差分析5.2.1 显示结果(1)软仿真截图图 51 Proteus仿真效果图(2)实物图图 52 实物效果图5.2.2 误差分析通过多次测量的仿真结果可得到简易数字电压表与“标准”数字电压表对比测试表,如下表所示:表5-1 简易数字电压表与“标准”数字电压表对比测试表标准电压值/V简易电压表测量值/V绝对误差/V2.502.514.567.507.5114.1214.1515.08由于单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.01V的幅度变化。从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0V,这可以通过校正ADC0808的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。6 总 结通过这次的毕业设计,我巩固了以前学过的很多知识,培养了分析与解决问题的能力,更使我检索和获取知识的能力的到了很大的提高,而且我在关于电子方面的实际动手能力有很大的提高,在电路的设计、元器件的布置、安装、焊接、调试等方面都有很大的进步。初期的时候由于对这个数字电压表没有一个实质性的概念,所以一时之间不知道该如何下手,后来通过查阅大量相关资料才渐渐的有了一点头绪。在原理图的设计过程中遇到很多难题,通过仿真,实验,不断对电路进行改进,逐步深入,将问题一一解决。最终将设计付诸实践,做出实物。从总体来说,本文重点是实现数字电压表的功能以及对单片机的外围电路等进行了基础性的研究,由于时间和条件的限制,虽然取得了一定的效果,但尚存在一定不足之处,比如测量大电压时精度不够,保护电路不完善,电压波动比较厉害。并且现实中各种模拟量特点不一样,系统设计考虑不够全面,应用范围有限。这些问题主要由于原理设计及程序处理的原因,不能及时解决,有待今后进一步的研究。回顾过去,展望未来,随着科技的发展,出现的各种高级芯片和技术,能够很大程度上提高电压表的精确性和稳定性。只有通过不断地学习,不断地探索,这样才能把自己的知识更好的运用与实践中。致 谢在毕业设计完成时,作者不由的想起大学最后这一学期的学习生活。在这里,作者首先要感谢的是导师杨润玲老师这几个月来给予的关心与指导,刘琦洲老师百忙之中对我们焊接工作的指导,尤其是他们一丝不苟的科研态度、高度的事业心和责任感时刻感染着我。老师不仅教授给我知识,更教给我做人的道理、做学问的态度,这些都将使作者终生受益,恩师的教导将永不忘记,再一次忠心的感谢老师苦心培育之恩。同时也忠心感谢在做毕业设计的过程中给予作者帮助和关心的老师、同学和朋友们。这里向他们表示深深的谢意,感谢你们这些年来为作者所付出的艰辛和无私的奉献。在此,衷心地向在百忙之中审阅作者论文的各位老师表示最诚挚的感谢。参考文献1 M.北京:机械工业出版社,2010年10月2 M.高等教育出版社,2012年12月3 于殿泓,M.西安电子科技大学出版社,2009年5月4 谢维成,M.电子工业出版社,2011年3月5 Grineva.L.V.Amplitudedigitalvoltmeter.InstrumentsandExperimental TechniquesJ.1975,114-117.6 M.北京航空航天大学出版社,2013年5月7 M.北京大学出版社,2005年8 周润景M.北京:电子工业出版社,2006年9 LitaniBarzilaiI,BulatovV,SchechterI.DetectorBasedonTime-ResolvedIon-InducedVoltageinLaserMultiphotonIonizationandLaserInducedFluorescenceJ.AnalChimActa,2004(501):151-156 10 姜志海,黄玉清等著.单片机原理及应用M.北京:电子工业出版社.2012年7月 附 录#include reg52.h#define uchar unsigned charuchar code dispbitcode=0xfe,0xfd,0xfb,0xf7; /定义列扫描uchar dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar dispbuf8=0,0,0,0,0,0,0,0; /定义8 个存储空间uchar dispcount=0;uchar getdata;unsigned int temp;/定义暂存空间uchar i,k;sbit ST=P36; /定义单片机和ADC 的控制信号sbit OE=P37;sbit EOC=P34;sbit DA=P33;/延时程序void delay(int t)int a,b;for(a=0;at;a+)for(b=0;b110;b+); void main()while(1)OE=0;ST=0; ST=1;ST=0;while(EOC=0);OE=1;getdata=P0;OE=0;temp=getdata;temp=temp*100;if(DA=1)temp=temp/51;temp=temp*4;elsetemp=temp/51;/显示部分for(i=0;i8;i+) dispbufi=0;i=0;while(temp/10) /电压值的每个位计算 dispbufi=temp%10; temp=temp/10; i+; dispbufi=temp; for(k=0;k=3;k+) /数码管显示 P2=dispbitcodek;P1=dispcodedispbufk; if(k=2)P1=P1|0x80; delay(5);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!