void showMain(double volt) { long temp; temp=volt;//*5.0/255*1000; disp[0]=temp; disp[1]=temp/10; disp[2]=temp/100; disp[3]=temp/1000; disp[4]=temp/10000; disp[5]=temp/100000; display(); }
void display() { P2=P2&0xC0|0X1F;//0xf7; //个位 P1=table[disp[0]]; delay(1); P2=P2&0xC0|0X2F;//0xfb; //十位 P1=table[disp[1]]; delay(1); P2=P2&0xC0|0X37;//0xfd; P1=table[disp[2]]; delay(1); P2=P2&0xC0|0X3B;//0xfe; P1=table[disp[3]]; delay(1); P2=P2&0xC0|0X3D;//0xfe; P1=table[disp[4]]; delay(1); P2=P2&0xC0|0X3E;//0xfe; P1=table[disp[5]]; delay(1); p17=1; }
void delay(uint z)
{ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
void Delay500ms() //误差 -0.000000000114us @11.0592MHz {
uchar a,b,c;
for(c=98;c>0;c--)
for(b=127;b>0;b--) for(a=17;a>0;a--);
_nop_(); //if Keil,require use intrins.h }
void delay100ms(void) //?? -0.000000000023us {
unsigned char a,b; for(b=221;b>0;b--)
for(a=207;a>0;a--); }
void initial() //使用定时器0 { TMOD=0x01; //设置16位定时器/计数器 TH0=(65536-20)/256; //定是20us,通过T=(Tm-Tc)/12/fosc (us)计算得出 TL0=(65536-20)%6; EA=1; //中断总允许位,开放中断 ET0=1; //允许T0引发的中断 TR0=1; //启动T0 }
void UartInit(void) //9600bps@11.0592MHz { SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz TR1 = 1; // TR1: timer 1 打开 EA = 1; //打开总中断 //ES = 1; }
(3) Labview程序框图,及结果显示
四、总 结
智能仪器是一个软件技术与测试技术相结合的领域,通过本次的相关实验,我进一步巩固了电压分档测量的原理与实现步骤,能用软件keil、proteus以及Labview结合万用表分析验证实验结果,判断自己所设计的电路是否满足任务要求,观察实验现象,分析异常情况产生的原因。
实现过程虽然相当不容易,经过多次检查和调试后发现并不是自身电路设计问题,而是实验室提供的ACD0809芯片多数损坏,在经过20多次更换芯片后终于找到了一片完好的芯片并解决了程控放大
器输出模拟电压异常衰减的问题,实现了电压表的整体设计和制作。
虽然与理论值存在差异,但是也相差不多,能够实现电压自动分档测量,然后根据原理图连接电路,通过软件进一步观测实际显示的结果。
参 考 文 献
[1]史健芳.智能仪器设计基础.北京:电子工业出版社.2009 [2]闫玉德、葛龙、俞虹.单片微型计算机原理与设计.北京:中国电力出版社.2010
[3]张重雄 虚拟仪器技术分析与设计 北京:电子工业出版社 2007 紫金学院.微型与单片机原理及应用实验指导书.
附 录
元器件引脚图,真值表:
1)OP07
OP07的功能介绍:OP07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25μV),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。