自动增益放大器毕业设计论文(7)

2019-08-31 13:35

自动增益控制放大器

// CCR0 = 32768 - 1; //设置定时器A的中断时间为1S //TACTL = TASSEL_1 + MC_1; //计数时钟ACLK, 增计数模式 // CCTL0 |= CCIE;

_EINT(); //开启总中断 // _BIS_SR(LPM0_bits+GIE); //低功耗模式 LPM0 DACreset();

while (1) {

if(keyin!=0x0f) {

//delay(); switch(keyin) { case 0x0e:

bz_v+=248;break; //P1.0键按下,标准电压步进加0.2v case 0x0d:

bz_v-=248;break; //P1.1键按下,标准电压步进减0.2v case 0x0b:

t+=1;if(t==2) t=0;break; //选择是否开启噪声监测 default:break; }

while(keyin!=0x0f);

if(bz_v>=3724) //上限为3v bz_v=3724;

else if(bz_v<=1241) //下限为1v bz_v=1241; }

DACout(); } }

/******************************************* 函数名称:ADC12ISR

功 能:ADC中断服务函数,在这里用多次平均的 计算P6.0和P6.1口的模拟电压数值 参 数:无

25

成都工业学院毕业设计(论文)

返回值 :无

********************************************/ #pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) {

static uint index = 0;

results[index++] = ADC12MEM0; // 采样输出电压 if(index == Num_of_Results) {

uchar i;

//unsigned long sum0 = 0;

index = 0;

for(i = 0; i < Num_of_Results; i++) {

sum0 += results[i]; }

sum0 >>= 5; //除以32 Trans_val(sum0); //显示输出电压值 if(t==0) //没有按键按下时 {

if( sum0>bz_v) //判断采样值是否大于标准值 { z+=50; //如果大于,则增大DA输出,减小反馈增益 if(z>=3276) //输出2v时,衰减倍数最大 z=3276; }

else if(sum0

z=0; //输出为0v时,放大倍数最大,3倍 }

bzxs(bz_v); //显示标准值 }

else if(t==1) //如果有键按下 {

26

自动增益控制放大器

if(sum0>micbz_v) //如果麦克风输入小于反馈值 z+=100; //衰减输出信号

if(sum0

static uint index1 = 0; results1[index1++] = ADC12MEM1; if(index1 == Num_of_Results) {

uchar i1;

unsigned long sum1 = 0;

index1 = 0;

for(i1 = 0; i1 < Num_of_Results; i1++) {

sum1 += results1[i1]; }

sum1>>= 5; micbz_v=1241+sum1; if(micbz_v>3723) micbz_v=3723; if(micbz_v<1241) micbz_v=1241;

//Trans_val1(sum1); }

static uint index2 = 0;

results2[index2++] = ADC12MEM2; if(index2 == Num_of_Results) {

uchar i2;

unsigned long sum2 = 0;

index2 = 0;

// 麦克风采样数据控制标准值 //除以32

//麦克风输入的电压,固定增加1v //显示麦克风采集的电压 // 采样数据控制模拟开关 27

成都工业学院毕业设计(论文)

for(i2 = 0; i2 < Num_of_Results; i2++) {

sum2 += results2[i2]; }

sum2>>= 5; //除以32

Trans_val2(sum2); //显示输入信号幅度

if(sum2<13) //当输入电压大于100mv时, P3OUT=BIT0; //打开衰减信号通道 else if(sum2>=13&&sum2<125)

P3OUT=BIT1; //打开未衰减信号(P3.1)通道 else if(sum2>=125)

P3OUT=BIT2; //打开未衰减信号(P3.2)通道 } }

/******************************************* 函数名称:Trans_val

功 能:将16进制ADC转换数据变换成4位10进制 真实的模拟电压数据,并在液晶上显示 参 数:Hex_Val--16进制数据

n--变换时的分母等于2的n次方 返回值 :无

********************************************/

void Trans_val(uint Hex_Val) //电压测量 {

unsigned long caltmp; unsigned long daa; uchar i; uchar ptr[5]; caltmp = Hex_Val;

daa=((caltmp/1)*805664)/1000000; //参考电压为3.3v时,转化为十进制 // daa=((caltmp/1)*610351)/1000000; //参考电压为2.5v时 ptr[0] = daa / 1000; //取参数的权位值 ptr[1] = 10;

28

自动增益控制放大器

ptr[2] = (daa - ptr[0]*1000)/100;

ptr[3] = (daa - ptr[0]*1000-ptr[2]*100)/10;

ptr[4]=daa; //shuzi表中第10位对应符号\ for(i = 0;i < 5;i++)

Disp1Char((1 + i),0,shuzi[ptr[i]]); }

void Trans_val1(uint Hex_Val) //输入信号幅度测量,更改运算参数 {

unsigned long caltmp; unsigned long daa; uchar i; uchar ptr[5]; caltmp = Hex_Val;

daa=((caltmp/1)*805664)/1000000;

ptr[0] = daa / 1000; //Hex->Dec变换 ptr[1] = 10;

ptr[2] = (daa - ptr[0]*1000)/100;

ptr[3] = (daa - ptr[0]*1000-ptr[2]*100)/10;

ptr[4]=daa; //shuzi表中第10位对应符号\ for(i = 0;i < 5;i++)

Disp1Char((1 + i),1,shuzi[ptr[i]]); }

void Trans_val2(uint Hex_Val) //输入信号频率测量,更改运算参数 {

unsigned long caltmp; unsigned long daa; uchar i; uchar ptr[5]; caltmp = Hex_Val;

daa=((caltmp/1)*805664)/1000000;

ptr[0] = daa / 1000; //Hex->Dec变换 ptr[1] = (daa - ptr[0]*1000)/100;

ptr[2] = 10; //shuzi表中第10位对应符号\ ptr[3] = (daa - ptr[0]*1000-ptr[1]*100)/10;

29


自动增益放大器毕业设计论文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:作为阿米巴经营的主体,如何使阿米巴经营在本部门切实运行,并请

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

马上注册会员

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