智能仪器设计报告-紫金学院(2)

2020-02-22 12:06

RF1244KU1121415111524A10B96XX0X1X2X3Y0Y1Y2Y3ABINH4052XY133XRF219.6kRV18%R21k5K5KU2R1OPAMP 同相放大器的放大增益为:Au=1+Rf/R1 , 在本电路中使R3、R4、R5与多路选择开关连接,使电路分别放大50、5和1倍。

2).A/D采集和串口:

RF1244KU1121415111524A10B96XX0X1X2X3Y0Y1Y2Y3ABINH4052XY133XRF219.6kRV18%R21k5K5KU2R1OPAMP

P116RXD27TXD3849DCDDSRRXDRTSTXDCTSDTRRIERRORCOMPIM

3.3软硬件设计 (1)原理图

RF1244KU1121415111524A10B96XX0X1X2X3Y0Y1Y2Y3ABINHXY133XX26272812345U3IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808P10P11P12P13P14P15P16P1712345678CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT810CLOCKSTA67212019188151417EOC18P07P06P05P04P03P02P01P0019RP1U4XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P00P01P02P03P04P05P06P07123456STAOERXDTXDEOCClock123456789RESPACK-8RF219.6kXTAL2RV145%9RV1(3)V=2.24999R21k5K5KU2+5VR1OPAMPXV=2.407384052252423STA221216RSTOE9OE293031PSENALEEAP116RXD27TXD3849DCDDSRRXDRTSTXDCTSDTRRIP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51ABP10P11P12P13P14P15P16P17123456ERRORCOMPIM

分析: 根据同相放大器Au=1+Rf/R1,可计算出各反馈电阻值,设R1=5k,则50倍时,Rf=245k;5倍时,Rf=20k,1倍时,相当于一根导线。调节电位器,使得输入在0-100mV之间,此时通过仿真会发现输出会是在输入的50倍左右;同理,

100mV-1V间,输出会是在5被左右;而1-5V时,则与输入差不多。 在这一过程中,我们会发现理论值与实际值并不是完全一致,这是因为实验过程中存在着一些干扰因素。

(2)程序

1)主程序main.c文件

#include //#include #include \

#define X1 1 #define X5 5 #define X50 50

sbit _A=P3^6; sbit _B=P3^7;

double get_ad(int weight); void uartSendInfo(uchar info); double volatile volt=0;

unsigned char numSBUF=0; unsigned char weightSBUF=0;

void main() { initial(); UartInit();

while(1) {

volt=get_ad(X50); //weightSBUF=X50; if(volt>=0.1) {

volt=0; volt=get_ad(X5); if(volt>=1) { volt=0; volt=get_ad(X1)/1.06;//此处除以的1.06是程控放大器在

放大1倍时,由系统自身误差导致的最大放大倍数(实际电压在4.7V时程控放大器输出5.02V,即实际放大了1.06倍,故除以放大的倍数,消除误差) } } uartSendInfo(numSBUF); uartSendInfo(weightSBUF); showMain(volt*100000); }

}

double get_ad(int weight) {

// unsigned char num=0; switch(weight) {

case X1 :_B=1;_A=0;break; case X5 :_B=0;_A=1;break; case X50:_B=0;_A=0;break; default :break; } OE=0;//数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 ST=0;//start是A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 ST=1; delay(1); ST=0; while(EOC==0);//(EOC): A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE=1; //打开输出三态门 numSBUF=P0; OE=0; weightSBUF=weight;

return numSBUF*5.0/255/weight; }

void timer0() interrupt 1 {

TH0=(65536-20)/256; TL0=(65536-20)%6;

CLK=~CLK; }

void uartSendInfo(uchar info) {

//ES = 0; //关串口中断 TI = 0; //发送中断标志清零 SBUF = info; while (!TI) showMain(volt*100000); TI = 0;

//ES = 1; //开串口中断 }

2)头文件ext.h #ifndef __ext_H__ #define __ext_H__

#define uint unsigned int #define uchar unsigned char

sbit ST=P2^6; sbit OE=P2^7; sbit EOC=P3^2; sbit CLK=P3^3; sbit p17=P1^7;

void delay(uint z); void Delay500ms(); void delay100ms(void); void display(); void initial();

void UartInit(void);

void showMain(double volt); #endif

3)子文件ext.c #include #include #include

uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar disp[6];


智能仪器设计报告-紫金学院(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:直线与双曲线的相交弦问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: