资源描述
目 录1、系统方案- 3 -1.1、方案比较与选择- 3 -1.1.1、单片机选择与论证- 3 -1.1.2、显示器件选择与论证- 3 -1.1.3、键盘形式选择与论证- 4 -1.1.4排阻形式选择与论证- 4 -2理论分析与计算- 8 -2.1、D/A转换器的主要技术指标- 8 -1分辨率- 8 -2转换精度- 8 -3 输出电压(或电流)的建立时间(转换速度)- 8 - 4. 温度系数2.2 数模转换器2.2.1权电阻网络DAC的原理分析- 9 -3、 电路与程序设计- 11 -3.1.1、总体框图设计- 11 -3.1.2、显示电路- 11 -3.1.3、权电路- 12 -3.1.4、按键电路- 13 -3.1.5、驱动电路- 14 - 3.1.6、输出电路 3.1.7、总电路- 16 -3.2、程序流程图- 17 -3.2.2、液晶显示子程序流程图- 18 -3.2.3、输出电路程序流程图- 19 -4、 测试方案与测试结果- 20 -4.1、测试方案- 20 -4.2、测试结果与测试分析- 20 -附录- 21 -附录1:电路原理图- 21 -附录2:源程序- 21 -1、系统方案1.1、方案比较与选择1.1.1、单片机选择与论证方案一:AT89C51单片机。AT89C51是美国ATMEL公司生产的低电压,高性能CMOS位单片机,片内含4k字节的可反复擦写1000次的只读程序存储器(PEROM)和128字节的随机存取数据存储器(RAM),片内置通用8位中央处理器(CPU)和Flash存储单元。方案二:C8051F060单片机。C8051F060芯片是由Cygnal公司生产的,集成有高速、流水线结构的CIP-51内核,具有内置RAM,2个16位1Msps的ADC,芯片自身带有CAN总线控制器、59个I/O口。它是高度集成的芯片,减少了外围器件,进而降低了系统硬件设计的复杂性。基于对功能齐全性的考虑,和本次设计的要求我们运用方案一。1.1.2、显示器件选择与论证方案一:数码管。数码管显示能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。发光响应时间极短(01s),高频特性好,单色性好,亮度高。体积小,重量轻,抗冲击性能好。寿命长,使用寿命在10万小时以上,甚至可达100万小时。但显示功能有限,只能显示数字和个别字母。方案二:液晶显示器。液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,显示质量高。其接口都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。方案三:阴极射线管显示器。此种显示器图像色彩丰富,还原性好,有丰富的几何失真调整能力。但不能长期暴露在磁场下,会磁化或损坏,不能让强光直射,会降低发光效率,不能在高温下使用,工作性能和使用寿命会大打折扣。基于对显示器功能的稳定性和齐全性考虑,我们采用方案二。1.1.3、键盘形式选择与论证方案一:独立式按键。独立按键的输入线较多,结构复杂,一般适用于按键较少,操作速度较高的场合。方案二:行列式键盘。行列式键盘由行和列线交叉组成,一般适用于按键较多的场合。使用22矩形键盘,这样键盘模块仅使用8根线与处理器相连,节省了系统资源。由于我们功能比较少,矩形键盘占用电路板位置较大,因此选择方案一。1.1.4排阻形式选择与论证 方案一:多个单个电阻。个数多,接线困难,误差大。且浪费资金。 方案二:排阻。数量少,接线容易,价格便宜。由于本次试验本身对接线要求就高,所以采用方案二。1.1.5、材料选择与论证方案一 :塑料板。塑料板质量轻,不易碎,但是也不好加工,且不环保。方案二 :木板。木板质量比塑料板重,但比玻璃板轻,易于加工,可塑性强。由于本次试验对材料的可塑性要求较高,因此采用方案二。1.2 所选器件的分析1.2.1 STEC89C51引脚图如下:1.2.2 LED显示屏1.2.3 LM3242理论分析与计算 2.1、D/A转换器的主要技术指标 1分辨率分辨率用于表征D/A转换器对输入微小量变化的敏感程度。D/A转换器模拟输出电压可能被分离的等级数可用输入数字量的位数n表示D/A转换器的分辨率;可用D/A转换器的最小输出电压与最大输出电压之比来表示分辨率。2转换精度D/A转换器的转换精度是指输出模拟电压的实际值与理想值之差,即最大静态转换误差。3 输出电压(或电流)的建立时间(转换速度) 从输入的数字量发生突变开始,到输出电压进入与稳定值相差0.5LSB范围内所需要的时间,称为建立时间tset。目前单片集成D/A转换器(不包括运算放大器)的建立时间最短达到0.1微秒以内。 4 温度系数 在输入不变的情况下,输出模拟电压随温度变化产生的变化量。一般用满刻度输出条件下温度每升高1,输出电压变化的百分数作为温度系数。2.2 数模转换器 2.2.1权电阻网络DAC的原理分析 集成运算放大器,作为求和权电阻网络的缓冲,并将电流转换为电压输出。 开关Si的位置受数据锁存器输出的数码di控制:当di=1时,Si将对应的权电阻接到参考电压UREF上;当di=0时,Si将对应的权电阻接地。虚短运算放大器总的输入电流为虚断运算放大器输出电压为令 RF=R/2 ,则即:输出的模拟电压uO正比于输入的数字量Dn,从而实现了从数字量到模拟量的转换。当Dn=Dn-1D0=0时,uO=0;因而uO的变化范围是 当Dn=Dn-1D0=111时,权电阻网络D/A转换器的特点优点:结构简单,电阻元件数较少;缺点:阻值相差较大,制造工艺复杂。3、 电路与程序设计3.1.1、总体框图设计系统总体框图如图所示 C P U 模 块控制模块显示模块输出模块驱动模块3.1.2、显示电路LED显示屏与传统的CRT相比,LED不但体积小,厚度薄,耗能少(1到10微瓦、平方厘米),工作电压低(1.5到6v)能与集成电路直接连用。并且在与集成电路焊接是比数码管接线简单。容易操作。3.1.3、权电路1、权电阻网络D/A转换器电路 权电阻网络D/A转换器电路如下图所示,它由理想运算放大器、电阻网络、电子模拟开关等组成。当di=1时(i=0,1,2,3),电子模拟开关接VREF, 当di=0时,电子模拟开关接地。 3.1.4、按键电路此电路实现四种不同功能的转换。按键一实现平板旋转360功能,按键二实现一枚硬币平衡摆动的功能,按键三实现八枚硬币平衡摆动的功能,按键四实现始终指向一点的功能。电路图如图。图 按键电路3.1.5、驱动电路本次的电路主要是有程序通过AT89C51驱动的。显示电路是由P0口和P2.0 ;P2.1;P2.2口驱动的。权电路是由P1口来驱动的。输出电路是由单片机通过权电路驱动。3.1.6、输出电路电路经过输入的数字电路通过单片机的程序,输出通过权电路,然后2R等比分流,再通过LM324输入给电压表。3.1.7、总电路 开始3.2、程序流程图 结束电压放大输出启动D/A转换单片机检测按键按键按下系统初始显示电压值 图 程序流程图3.2.2、液晶显示子程序流程图开始初始化LCD显示内容写入缓存LCD控制器启动延时置DISP为高电平液晶屏正常显示置DISP为低电平延时LCD控制器关闭液晶屏无显示图 液晶显示流程图 图所示的程序用来显示为调节电压。3.2.3、输出电路程序流程图判断? 频率增加退出波形输出等待按键命令判外部中断2 DAC输出单片机输出的数据判外部中断NY 图 LM324工作流程图4、 测试方案与测试结果 4.1、测试方案基本要求:此次试验是通过软件程序和硬件搭建电路实现。通过按键电路对显示电路数字显示分别输入0V,1V,2V,3V,4V.此时,通过转换电路后读出电压表的显示示数。观察计算误差。4.2、测试结果与测试分析测量结果: 在允许的误差范围内,观察电压表的示数。如果误差超过了允许的范围,我们先对硬件电路进行排查分析,进行对电路的数据分析,最后到软件程序的分析。附录附录1:电路原理图 附录2:源程序#include#define uchar unsigned char#define uint unsigned int sbit lcdrs=P20;sbit lcdwr=P21;sbit lcden=P22;sbit S1=P24;sbit S2=P25;sbit S3=P26;sbit S4=P27;uchar code PresetDat=SHU RU :0.00 V;uchar code CurrentDat=Made By Jbms:0.00 V;uchar count,S1num,V_point,V_ge,V_shi,I_point,I_ge,I_shi;uchar S1_OK=0,Confirm=0,DA,VCC,Power;/uchar lcd_read_dat();/延时1ms子程序开始/void delay(uint z) uint x,y; for(x=0;x121;x+) for(y=0;yz;y+);/延时1ms子程序结束/*写指令子函数*/void lcd_write_com(uchar com) lcdrs=0; /lcdrs=0即设置写指令状态 lcdwr=0; /写状态 lcden=0; /从这句开始将en置1然后又置零,是将其显示为高脉冲 P0=com; /将要写的指令传给P0口 delay(5); lcden=1; delay(5); lcden=0; / en的高脉冲设置完毕/*写数据子函数*/void lcd_write_dat(uchar x_pos,uchar y_pos,uchar dat) x_pos &= 0x0f; / X位置范围 015 / y_pos &= 0x01; / Y位置范围 0 1 / if(y_pos=1) x_pos += 0x40; x_pos += 0x80; lcd_write_com(x_pos); lcdrs=1; /lcdrs=1即设置写数据状态 lcdwr=0; /写状态 lcden=0; /从这句开始将en置1然后又置零,是将其显示为高脉冲 P0=dat; /将要写的数据传给P0口 delay(5); lcden=1; delay(5); lcden=0; / en的高脉冲设置完毕 /*初始化子函数*/void lcd_init() uchar num; lcd_write_com(0x38); /显示162,57点阵,8位数据接口。 lcd_write_com(0x0c); /显示开/关及光标设置 lcd_write_com(0x06); /设置读写一个字符后指针自动加1或减1及整屏左移动 lcd_write_com(0x01); lcd_write_com(0x80); /设置数据指针位置,即从什么位置开始显示, for(num=0;num14;num+) lcd_write_dat(num,0,PresetDatnum); delay(5); lcd_write_com(0x80+0x40); /设置数据指针位置 for(num=0;num5.00) VCC=5.00; P0=10*VCC+1*V_ge+0.1*V_point;
展开阅读全文