1第二章总体方案设计2.1数字电流表的工作原理用单片机及其扩展的外部电路先做成一个理想电压表[3],图1中用G表示。由于通常所说的电流表是指灵敏电流计其量程太小,不能直接测量电流,仅用于检测有无电流和电流的方向,所以要想得到一个有多量程或量程较大的电流表需要将一个理想电压表改装而成。本设计是用一个内阻视为无穷大的电压表并联分流电阻而成的数字电流表。待测电流I随搬动开关K的位置而流过R1或R2,因而本电流表的两个量程就取决于G的满量程电压和R1、R2的阻值,记G的满量程电压为Ug,根据欧姆定律Ug=RgIg,若Ug和Rg已知则Ig就是电流表的满量程电流。100R11R2VKiGt2.2方案比较及方案选择方案一:选用内置AD转换器的单片机如MSP430系列作为核心处理器,实现本设计的需求,此方案的好处在于,所需芯片、外围电路较少,但对程序要求比较高。单片机MSP430信号输入显示2方案二:方案二是选用ADC0809为转换芯片和单片机组成的系统,ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换,它的输出为并行输出。且功耗低,工作温度范围广转换时间较快为100us,具有转换起停控制端。2.3方案选择通过比较两种方案,采用方案二ADC0809转换芯片来完成本次设计,他功耗低,模拟输入电压范围0~+5V,不需零点和满刻度校准,换时间快,具有转换起停控制端,且并行输出单片机引脚也够,所以本次设计采用方案二。信号放大MCUSTC89C52单片机A/D转换信号输入档位选择数码管显示信号放大32.4功能要求1、数字电流表在平常工作环境中能良好工作2、能测0——20mA电流,至少能达0.1%的精度3、要求掌握I/V信号转换,A/D转换器的使用和数据采集系统的设计4、电流表能数字显示,且由单片机处理采集数据并驱动LED显示2.5计思路1、根据设计要求,选择STC89C52单片机作为核心控制器件。2、A/D转换采用ADC0809。与单片机的接口为P1口的高四位引脚。3、采用数码管显示。4、又P0口输出显示数据。4第三章单元模块设计3.1各单元模块功能介绍及电路设计3.1.1高共模抑制比放大电路如下图,由双运放组成的同相输入高共模抑制比放大电路,其闭环输出可表示为:为使共模输入为0,可令R1/R2=R4/R3,此时电路的差动闭环增益为Kd=1+R1/R2,U0=Kd(U1-U2);下图即Kd=11,U0=11(U1-U2);第二级为同相放大电路,放大倍数可通过电位器调节。)21)(3*14*22121(21)221(*)3*14*21(0UURRRRRRUURRRRU53.1.2数模转换模块ADC0809美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。63.1.3单片机周边电路复位电路与晶振电路(12Mhz),保证单片机正常运行73.1.4显示电路采用6位LED数码管显示,P0口为段选,P2口为位选,P0口有8个1K上拉电阻83.2电路参数的计算及元器件的选择3.2.1单片机STC89C52STC52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。主要性能参数·与MCS-51产品指令和引脚完全兼容·8k字节可擦写Flash闪速存储器·1000次擦写周期·全静态操作:0Hz-24MHz·三级加密程序存储器·256×8字节内部RAM·32个可编程I/O口线·3个16位定时/计数器·8个断源·可编程串行UART通道9·低功耗空闲和掉电模式功能特性概述STC89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32I/O口线,3个16位定时/计数器,一个6向量两级断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.2.2ADC0809ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。(1)ADC0809的内部逻辑结构由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。(2).ADC0809引脚结构ADC0809各脚功能如下:D7-D0:8位数字量输出引脚。IN0-IN7:8位模拟量输入引脚。VCC:+5V工作电压。GND:地。REF(+):参考电压正端。REF(-):参考电压负端。START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。xiaoyllyA、B、C:地址输入线。10ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7数字量输出及控制线:11条ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。3.2.3放大芯片UA741741放大器为运算放大器中最常使用的一种,拥有反相向与非反相两输入,由输入端输入欲被放大的电流或电压信号,经放大后由输出端输出。放大器作用的最大特点为需要一对同样大小的正负电源,其值由正负12V至正负18V不等,而一般使用正负1511的电压。UA741运算放大器的外型与管脚配置分别如下图。图1:放大器外型图2:放大器管脚UA741运算放大器使用时需于7、4管脚供应一对同等大小的正负电源电压+Vdc与-Vdc,一旦于2、3管脚即两输入端间电压差存在,压差即会被放大于输出端,唯Op放大器具有的一特色其输出电压值决不会于正电源电压+Vdc或小于电源电压-Vdc,输入电压差经放大后若大于外接电源电压+Vdc至-Vdc之范围,其值会等于+Vdc或-Vdc,故一般运算放大器输出电压均具有下图的曲线。图3:放大器输入输出与电源电压的关系运放类型:低功率12放大器数目:1带宽:1MHz针脚数:8工作温度范围:0°Cto+70°C封装类型:DIP器件标号:741器件标记:UA741增益带宽:1MHz工作温度最低:0°C工作温度最高:70°C放大器类型:低功耗温度范围:商用运放特点:高增益频率补偿运算额定电源电压:+15V3.2.4LED显示LED显示电路的选择LED显示器是由N个LED显示块拼接成N位LED显示器。N个LED显示块有N跟位选线,根据显示方式的不同,位选线和段选线的连接方法也各不相同,段选线控制显示字符的字型,而位选线为各个LED显示块的公共端,它控制该LED显示位的亮、暗。LED显示器有静态显示和动态显示两种显示方式。(1)LED静态显示方式:LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);每位的段选线(a~dp)分别与一个8位的锁存器输出相连。所以称为静态显示。各个LED的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。也正因此如此,静态显示器的亮度都较高。这种显示方式接口编程容易。付出的代价是占用口线较多,若用I/O接口,则要占用6个8位I/O口,若用锁存器接口,则要用6片74LS373芯片。如果显示器位数增多,则静态显示方式更是无法适应,因此在显示位数较多的情况下,一般都采用动态显示方式。13(2)LED动态显示方式:在多位LED显示时,为了简化硬件电路,通常将所有位的段选线相应的并联在一起,有一个8位I/O口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O线控制,实现各位的分时选通。其中段选线占用一个8位I/O口,而位选线占用一个4位I/O口。由于各位的段选线并联,段码的输出对各位来说都是相同的,因此,同一时刻,如果各位位选线都处于选通状态的话,4位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字节的段码。在确定LED不同位显示的时间间隔,不能太短,因为发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱人眼无法看清。但也不能太长,因为毕竟要受限于临界闪烁频率,而且此时间越长,占用CPU时间也越多,另外,显示位增多,也将占用大量的CPU时间,因此动态显示实质是一牺牲CPU时间来换取元件的减少。所以,由于本系统涉及到6位显示输出,采用LED动态扫描显示方式。143.3各单元模块的联接3.3.1采样探针与放大电路153.3.2放大电路与AD芯片ADC0809选用IN0作为为信号输入端。163.3.3ADC0809与80c52单片机连接ADC0809与单片机P1口连接。173.3.4单片机与LED数码管显示段选为P0口,位选为P2口18第四章软件设计程序均用keil4软件C语言编写。4.1系统程序设计总方案根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图5.1所示。图4.1数字式直流电流表主程序框图入口初始化调用A/D转换子程序判断档位调用显示程序出口194.2系统子程序设计4.2.1初始化程序所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。4.2.2A/D转换子程序A/D转换子程序用来控制对输入的模块电流信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图4.2所示。图4.2A/D转换流程图入口初始化启动转换A/D转换结束?输出转换结果出口204.2.3显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显