1、基于单片机的数字电压表设计设计总说明本文详细介绍了一种基于单片机的数字电压表设计方案。该设计方案主要由四个模块组成:模拟输入模块,A/D转换模块,数据处理模块及显示模块。模拟输入模块会根据待测电压的大小自动选择不同的转换通道,A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量,然后传送到单片机的数据处理模块。数据处理则由芯片AT89C51来完成,其负责把ADC0809传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示,此外,它还控制着ADC0809芯片工作。采用该方案设计的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此
2、数字电压表可以测量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 volt
3、age 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 analo
4、g 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
5、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
6、 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绪 论11.1数字电压表简介11.2课题意义和目的22基于单片机的数字电压表的整体设计32.1设计指标32.2系统概
7、述33基于单片机数字电压表的硬件设计63.1器件的选择63.2量程选择电路63.2.1重要元器件介绍63.2.2量程选择电路73.3A/D转换电路83.3.1A/D转换芯片的选择83.3.2重要元器件介绍83.3.3A/D转换电路113.4数据处理模块113.4.1单片机的选择123.4.2重要元器件介绍123.4.3单片机复位电路设计143.4.4单片机时钟电路设计143.4.5电源电路153.5显示模块163.5.1重要元器件介绍163.5.2LED显示器与单片机接口设计183.6单片机和PC机通信模块连接194基于单片机数字电压表的软件设计214.1程序设计总方案214.2子程序设计22
8、4.2.1初始化程序224.2.2A/D转换子程序224.2.3数据处理子程序224.2.4显示子程序245系统调试与分析265.1软件调试265.2显示结果及误差分析265.2.1显示结果265.2.2误差分析276总 结29致 谢30参考文献31附 录321 绪 论1.1 数字电压表简介在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、
9、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表精度高、抗干扰能力强,可扩展性强,集成方便,还可与PC进行实时通信。目前,由各种单片机和A/D转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,显示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器,仪表,也把电量及非电量测量技术提高到崭新水平。数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的从指针加刻度盘进行读数的方法,避免了读数
10、的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器,转换器的精度很大程度上影响着数字电压表的准确度,本文A/D转换器采用ADC0809对输入模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号1。数字电压表是当前电子、电工、仪器、仪表和测量领域大量使用的一种基本测量工具。数字电压表的主要技术指标有:测量范围、输入阻抗、显示位数、测量速度、分辨率。1)新技术的广泛应用20世纪90年代初,世界各国相继研发了新的A/D转换技术。例如:四斜率A/D转换技术(美国)、余数再循环技术(美国)、自动校准技术(英国)、固态真有效值转换技术(英国)、约
11、瑟夫森效应基准源、智能化专用芯片(80C51系列,荷兰)等,这些新技术使数字电压表向高准确度、高可靠性及智能化、低成本方向发展。2)智能化、复合型仪表由CMOS数字IC、模拟IC及微处理器集成在一个超大规模集成电路内,只须外围配置少量元器件,即可构成完整的智能仪表,可以完成存储、计算、比较、控制等多项功能。实际上数字电压表并不能完全取代指针式电压表,在反映电压的连续变化和变化趋势方面不如指针表直观。为克服这种缺憾,20世纪90年代初“一种数字/光柱”的双重显示仪表开始出现,并成功地应用于生产实践2。1.2 课题意义和目的数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心,可以扩展成各种
12、通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如:温度计,湿度计,酸度计,重量,厚度仪等),几乎覆盖了电子电工测量,工业测量,自动化仪表等各个领域。除此之外,数字电压还有着传统指针电压表无可比拟的优点:读数直观、准确,显示范围宽、分辨力高,转入阻抗高,功耗小、抗干扰强等。因此对数字电压表作全面深入的了解是很有必要的。但是传统的数字电压表设计通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成,可是这种设计方法灵活性差,系统功能固定,难以更新扩展,不能满足日益发展的电子工业要求。而应用微处理器(单片机)为核心单元的数字电压表,其灵活性高、系统功能扩展简单,
13、性能稳定可靠。在这些背景下,设计一种以单片机为基础、结构简单、工作可靠、灵活性好的数字电压表是很有意义的。2 基于单片机的数字电压表的整体设计2.1 设计指标本课题需要以单片机为基础设计出一种能测量0-20V电压的数字电压表,数字电压表分为0-5V和5-20V两档,档位可以根据待测电压的大小自动切换,分辨率达到0.05V。2.2 系统概述本课题所设计的数字电压表主要包括两部分:硬件电路及软件程序。而硬件电路采用AT公司的AT89C51作为主处理器,系统主要由信号采集、A/D转换、数据处理输出、驱动显示等几个功能模块组成,整个硬件电路的软仿真在Proteus环境下完成,各部分电路的设计及原理将会
14、在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil 软件对其编译和仿真,详细的设计算法将会在程序设计部分介绍。量程选择模块显示模块4位一体LED数码管数据处理模块AD转换模块AT89C51ADC0809数字量输入控制信号模拟量输入输出显示图 21 数字电压表系统框图系统框图如下: 图2-1 系统框图被测直流电压先经过量程选择电路选择合适的量程,再由A/D转换单元通过相应的通道采集和量化,接着由单片机对A/D转换的结果进行标度变换,得到被测电压的数值,通过单片机串行数据接口把所得数值输出给显示驱动单元,由该单元完成译码,并驱动数码管显示。硬件电路图如下:图 22 硬件电路图在电路
15、设计和软件设计中都采用了分模块设计,这种设计方法为以后的调试和维修带来了极大的方便。特别是在软件设计中,这种方法增强了程序的可移植性,为以后的功能扩展奠定了基础。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 量
16、程选择电路量程选择电路是本课题的核心环节,由于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;消耗电
17、流小, ICC=0.8mA;输入失调电压小, VIO=2mV;共模输入电压范围宽, VIC=0VCC-1.5V;图 31 LM393引脚图其引脚图(内部结构图)如下:3.2.2 量程选择电路R2和R3对输入信号进行分压,R5、R6和R18产生1.25V的基准源,LM393构成比较器,当正端大于负端输入时将输出高电平(+5V),当正端小于负端输入时将输出低电平(0V);RL1为常闭继电器,NPN三极管组成开关电路,当LM393输出高电平时,三极管导通,电流经R17和三极管流向继电器源绕组从而关断继电器。通过上述分析,不难得出:当输入信号小于5V时,电阻R3端电压小于1.25V,LM393输出低电
18、平,三极管截止,继电器导通,信号直接传递至A/D转换器的通道0;当输入信号大于5V而小于20V时,电阻R3端电压大于1.25V,LM393输出高电平,三极管导通,继电器截止,跳转到常开端口,信号经R2和R3分压后,转变为0V-5V信号传递至A/D转换器的通道1。同时单片机引脚P3.3和ADC0809引脚ADDA变为高电平。3.3 A/D转换电路3.3.1 A/D转换芯片的选择A/D转换电路是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。随着大规模集成电路的发展,目前不同厂家已经生产出了多种型号的A/D转换器,以满足不同应用场合的需要。如果按照转换原理划分,主要
19、有3种类型,即双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。目前最常用的是双积分和逐次逼近式。双积分式A/D转换器具有抗干扰能力强、转换精度高、价格便宜等优点,比如ICL71XX系列等,它们通常带有自动校零、七段码输出等功能。与双积分相比,逐次逼近式A/D转换的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示3。本设计中,要求精度小于0.5%,则选用分辨率为8位的芯片,如ADC0809,ADC0801,ADC0808就能满足设计要求。本电路采用ADC
20、0809。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转换完
21、的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。主要引脚简介:1)IN0IN7:8条模拟量输入通道。ADC0809对输入模拟量的要求是信号单极性,电压范围是05V,若信号太小,必须进行放大。输入的模拟量在转换过程中应保持不变,如若模拟信号变化太快,则需在输入前增加采样保持电路。2)地址输入和控制线:4条,ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A、B、C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转化器进行转换。A、B、C为地址输入线,用于选通IN0IN7上的一路模拟量输入。通道选择如表所示:表 31 AD0809通
22、道选择表地址码 对应输入通道 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为时
23、钟输入信号线。由于ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHz,最大不能超过1280KHz。5)VREF(+),VREF(-)为参考电压输入,决定了输入模拟量的范围。一般情况VREF(-)接地,VREF(+)接+5V电源。ADC0809的工作方式:首先输入三位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通1路通道输入到内部的比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,然后EOC输出信号将为低电平,表明正在进行转换,直到A/D转换完成,EOC变为高电平,结果数据存入锁存器中。当OE输入高电平时,输出三态门打开,转
24、换结果输出到数据总线上。(注意: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触发器的输出作为
25、另一个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 数据处理模块数据处理模块主要是通过单片机来完成
26、的。单片机从A/D转换器接收到的是8位二进制的数字量,但最终通过数码管显示的是0-20V的十进制电压值,因此,必须将得到的0-255的数,进行标度变换,最终输出相应的电压值,送到显示模块。3.4.1 单片机的选择在众多的51系列单片机中,要属ATMEL 公司的AT89C51更实用。它是由北京集成电路设计中心在MSC-51单片机的基础上精心设计,由美国生产的至今为止世界上最新型的高性能八位单片机。它不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器用户可以用电的方式瞬间擦除、改写,一般专为ATMEL AT89Cx 做的编程器均带有这些功能。显而易见,
27、这种单片机对开发设备的要求很低,开发时间也大大缩短5。3.4.2 重要元器件介绍AT89C51介绍AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51主要性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循
28、环;数据保留时间: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
29、口是一个带有内部上拉电阻的8位双向I/O口,在设计中P2口控制数码管的位选信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:表 3-2 P3口第二功能表端口引脚第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(定时/记数器0) P3.5 T1(定时/记数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通)在设计中P3口的部分引脚用作ADC0809的控制信号。P3.0与P
30、3.1口在烧写程序代码时与USBtoTTL 相连。RST:复位输入。当振荡器工作时,RET引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的底8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外部输出时钟或用于定时目的。本设计中ALE管脚主要给A/D转换器提供时钟信号。EA:外部访问允许。本设计中EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。3.
31、4.3 单片机复位电路设计单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只有RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图3-7是51系列单片机统常用的复位电路6。 图 37 单片机复位电路3.4.4 单片机时钟电路设计单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格
32、按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和 2个电容即可,如图3-8所示。图 38 单片机时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是3010pF,在这个系统中选择了30p
33、F;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。3.4.5 电源电路电源电路是将220V电压转换成需要的5V电压的装置,需要进行交流电压调理、整流、直流电压调理3个步骤。交流电压调理是将较高的交流电压变成较低的交流电压的过程。由于外部交流电压通常为220V,为了得到51单片机需要得电压,需要通过变压器来实现。整流是将交流电压转化为直流电压的过程,一般使用整流桥来实现。采用的是在变压器后面连接4个二极管组成一个桥式整流电路,整流后就得到一个电压波动很大的直流电源。变压器输出端的9V电压经桥式整流并
34、经电容滤波,在电容C1两端大约会有11V多一点的电压,假如从电容两端直接接一个负载,当负载变化或交流电源有少许波动都会使C1两端的电压发生较大幅度的变化,因此要得到一个比较稳定的电压,在这里接一个三端稳压器的元件。直流电压调理采用的是稳压器。三端稳压器是一种集成电路元件,内部由一些三极管和电阻等组成,可认为是一个能自动调节电阻的元件,当负载电流大时三端稳压器内的电阻自动变小,而当负载电流变小时三端稳压器的内阻又会自动变大,这样就能保持稳压器的输出电压保持基本不变。因为要输出5V的电压,所以选用7085三端稳压器后接一个电容,这个电容有滤波作用7。 图3-9 电源电路3.5 显示模块显示模块是数
35、字电压表设计的重要部分,因为它直观地反映了整个系统设计的精度。单片机将需要显示的电压的段码通过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
36、 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分别是每一位的位
37、数选端,dp是小数点引出端,4位一体LED数码显示管的内部结构是由4个单独的LED组成,每个LED的段输出引脚在内部都并联后,引出到器件的外部。图3-11 4位LED引脚图对于这种结构的LED显示器,它的体积和结构都符合设计要求,由于4位LED阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个I/O接口控制)显示。LED译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于LED数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显
38、示的字符的字段码,译码程序通常为查表程序8。本设计系统中为了简化硬件线路设计,LED译码采用软件编程来实现。由于本设计采用的是共阴极LED,其对应的字符和字段码如下表3-3所示。表3-3 共阴极字段码表显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FH3.5.2 LED显示器与单片机接口设计由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作。如果驱动电路能力差,即带负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路
39、设计是一个非常重要的问题。本设计将采用74HC245作为驱动芯片,连线简单,驱动能力强9。LED显示器与单片机接口设计图如下:图 312 数码管连线图四个数码管分别通过P2.3,P2.2,P2.1,P2.0控制。3.6 单片机和PC机通信模块连接通过单片机与PC机串口通信的应用,我们的个人电脑和单片机系统可以进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制码,单片机系统接收后,用LED显示接收到的数据。通过让单片机和PC机相连,把所采集的数据传送到PC机上,再在PC机上进行数据处理,从而可以随意更改想要LED点阵显示的文字信息。由于单片机的输入、输出电平是TTL电平,而PC机配置的
40、是RS-232标准串行接口,两者的电气规范不一致,因此要完成单片机与PC机的数据通信,必须对单片机输出TTL电平进行电平交换。将单片机和PC机的三个引脚分别连在一起,即将PC机和单片机的发送数据线TXD与接收数据线RXD交叉连接,两者的底线直接相连。但由于单片机的TTL逻辑电平和PC机电气特性完全不同,因此在PC机和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用MAX232电平转换芯片。单片机和PC机的串口通信原理方案如图所示: 图3-13 串口通信连接图4 基于单片机数字电压表的软件设计4.1 程序设计总方案根据模块的划分原则,将该程序划分为初始化模块,A/D转换子程序,数据处理
41、子程序和显示子程序,这四个程序模块构成了整个系统软件的主程序。开 始系统初始化调用A/D转换子程序调用数据处理子程序调用显示子程序结 束图 41 主程序流程图4.2 子程序设计4.2.1 初始化程序初始化子程序的主要工作是定义端口。4.2.2 A/D转换子程序A/D转换子程序用来控制对输入的电压信号的转换,通过判断EOC(P3.4引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,并将对应的数值存入相应的内存单元。其转换流程图如图4-2所示。启动转换A/D转换结束?OE置位,输出数据开 始结 束YN图4-2 A/D转换流程图4.2.3 数据处理子程序数据处理子程序主
42、要根据标度变换公式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来确定待测电压的范围,若P3.3为0,则说明待测电压为05V,标度变换后的数据不需做任何处理,便可直接送入显示模块输出;若P3.3为1,则说明待测电压为5V20V,标度变换后的数据需要乘以4后再送入显示部分。程序流程图如下:开 始A=数据100P3.3=1?B=A/51C=B4B=A/51将C送入显示模块结 束YN图 42 数据处理程序转换流程图4.2.4 显示子程序通过对数据处理程序得到的一个四位数不断对10取余可以得到四