天津大学《电子系统设计》实验报告部分_第1页
天津大学《电子系统设计》实验报告部分_第2页
天津大学《电子系统设计》实验报告部分_第3页
天津大学《电子系统设计》实验报告部分_第4页
天津大学《电子系统设计》实验报告部分_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

|实验要求(一)利用IDE软件设计输出一个伪正弦阶梯波,要求如下:输出一个频率处于100HZ~1000HZ之间的由明显阶梯的伪正弦波利用开发板控制伪正弦波频率步进步退功能,间隔分别为±100HZ,利用开发板控制伪正弦波的频率,从开发板键盘输入任意三位数,按“键入”之后输出该频率的正弦波,误差不超过±5%开发板的数字显示屏能过显示当前频率,误差不超过±5%(二)利用TINA和FilterProDesktop设计滤波器和放大器根据题目要求,利用FilterProDesktop软件设计出二阶巴特沃斯滤波电路大致的电路模型。利用TINA对初步电路进行修改完善,并进行模拟仿真利用TINA设计放大电路将输出波形放大(三)焊接电路1、根据仿真结果组装电路图,并对组装结果进行调试修改2、强修改结果进行排布并焊接在电路板实验目的了解SDCC和IDE的安装过程熟悉万用表、示波器、实验电源等的使用【学会利用IDE建立工程、编程、连接开发板和拷贝工程到开发板上熟悉开发板,了解不同排针的功能,熟悉开发板的工作原理和构造学习将FilterProDesktop和TINA结合使用并进行电路设计仿真学会独立设计滤波器和放大器,以及解决实验中遇到的各种问题巩固焊接电路的手法,学习如何焊接出更加美观的电路实验器件实验器材:示波器、实验电源、MUC(C8051F020)、数字信号发生器、电脑、电烙铁、剪线钳、吸锡器实验元件:LM358,MAX7400,电阻:10KΩ*3、20kΩ*2,瓷片电容:10nF*3、100nF*2,电解电容:1000μF*1、220μF*1,电路板一个、排针一组、电线若干、焊锡若干]实验过程实验分工:(1)软件部分:刘晓寰(2):硬件加报告:徐婧文、吴美润安装SDCC和IDE软件学习如何使用IDE建立工程,编辑程序,连接开发板,并将工程拷贝到开发板上学习实例程序,了解IDE程序语言以及编程要求在示例程序的基础上对程序进行修改,使经过开发板上的输出波形满足实验要求,并且能在开发板上实现步进,步退以及任意频率输出的实验要求熟悉FilterProDesktop和TINA模拟仿真软件的使用,学会用FilterProDesktop设计基础滤波电路并用TINA进行仿真完善,用TINA设计放大电路并将滤波电路输出作为放大电路的输入进行仿真利用面包板测试仿真结果电路并对其进行参数上的修改(注:测试前检查电路连接是否出错,测试时小心芯片爆炸))将利用IDE编写好的程序通过开发板数出并作为面包板的输入,再次测试电路是否可用,如果不行继续对参数进行修改设计电源电路要求能输入+5V电压,对电源电路进行测试,测试无误后进行焊接(注:测试电路时远离电路板,小心电源电路爆炸)对修改后的实验电路进行排版焊接。(注:电路板上下三排和其中一端的三排接线和其余部分不同,电路板是纵向三孔连在一起的,与面包板不同)焊接完成后对实验电路进行再次测试,测试成功后将电源电路接入总电路,再次进行测试实验代码/*==================================================== — 电子系统设计平台实验板演示程序 Release2013=====================================================*/#include"driver\"~#include"driver\"#include"driver\"#include"driver\""8.""" unsignedcharDIGI[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0x00,0xff}; //键值 D0=0, D1=0, D2=0, D3=0> unsignedcharKEY[4]={ 0x0e, 0x0d, 0x0b, 0x07}; EA=0; //中断全局关闭 //关闭开门狗定时器 WDTCN=0xDE; WDTCN=0xAD;/ /**InitializetheOSC*/ =EXTERNAL_OSC; =CRYSTAL; =; Osc_Init(&Osc_Init_Parameter); Loop_Delay(100); io_config();【 io_init(); XBR0=XBR0|BIT2_MASK; //UART0:和 XBR2=XBR2|BIT6_MASK; //enablecrossbar REF0CN=REF0CN|BIT1_MASK|BIT0_MASK; //enabletheinternalvoltagereference DAC0CN=DAC0CN|BIT7_MASK|BIT2_MASK; //enableDAC0,DAC0H:8bit;DAC0L:4bit DAC1CN=DAC1CN|BIT7_MASK|BIT2_MASK; //enableDAC1,DAC1H:8bit;DAC1L:4bit、 DAC0L=0; DAC0H=0; DAC1L=0; DAC1H=0; Uart0_Init(); /*& printf("\n"); printf("TianjinUniversity\n"); printf("ElectronicSystemDesignKit\n"); printf("Version[C]2012\n"); printf("----------------------------\n"); printf("MCU:C8051F020/24MHz\n"); printf("PWR:100mA\n"); printf("\n");| *///////////////////////////////////////////////////////////Timer0/1initialization//////////////////////////////////////////////////////// $ // BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 // --------------------------------------------------------------------- // TCON: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 // 0 0 0 1 0 0 0 0 // // TMOD: GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 // 0 0 0 0 0 0 1 0 //¥ // IE: EA IEGF0 ET2 ES0 ET1 EX1 ET0 EX0 // 1 0 0 0 0 0 1 0 TL0=(231); //when24MHz&SYSCLK/12,10kHztimeoutTH0=(231); //reload EA=1; ET0=1;. TMOD=0x02; TR0=1;//////////////////////////////////////////////////////#if1\ //测试字符显示 //while(1) { for(j=0;j<12;j++) { for(i=0;i<6;i++) { LED_BUF[i]=DIGI[j];" } P4=0xFF; Loop_Delay(500); P4=0xF0; Loop_Delay(500); } }#endif…///////////////////////////////////////////////////////#if0 //测试IO最大翻转速度 while(1) {- TP0=0; TP0=1; TP0=0; TP0=1; TP0=0; TP0=1;; /*TP0=0; TP0=1; TP0=0; TP0=1;*/ }#endif'///////////////////////////////////////////////////////#if0 //测试LED数码管 while(1) { P2=0x01;~ for(i=0;i<6;i++) { P1=0x00; Loop_Delay(1); P1=0xFF; Loop_Delay(1);。 P2=P2<<1; } }#endif///////////////////////////////////////////////////////#if1( //测试键盘,LED数码管低两位显示行列值 while(1) { intl=0; //KeyValue=0; for(i=0;i<4;i++) { P3=LINE[i];】 Loop_Delay(1); for(j=0;j<4;j++) { if((P3&0x0f)==KEY[j]) { KeyValue=i*4+j;/*计算键值*/· //LED_BUF[0]=DIGI[j+1]; //LED_BUF[1]=DIGI[i+1]; LED_BUF[3]=DIGI[12]; LED_BUF[4]=DIGI[12]; LED_BUF[5]=DIGI[12]; //P2=0x01; //P1=DIGI[j];* //Loop_Delay(1); //P2=0x02; //P1=DIGI[i]; //Loop_Delay(1); //P1=0xFF;{ } while((l<500)&&((P3&0x0f)==KEY[j])) {Loop_Delay(1); l++; } } if((KeyValue==10)&&(f<1000))< {/*设计步进间隔*/ f=f+100; FrequencyControl=10000/f;/*数码管显示当前频率*/ LED_BUF[0]=DIGI[0]; LED_BUF[1]=DIGI[0]; LED_BUF[2]=DIGI[(f/100)];。 KeyValue=16; } if((KeyValue==11)&&(f>100)) {/*设计步退间隔*/f=f-100; FrequencyControl=10000/f;…/*数码管显示当前频率*/LED_BUF[0]=DIGI[0]; LED_BUF[1]=DIGI[0]; LED_BUF[2]=DIGI[(f/100)]; KeyValue=16; } if(KeyValue<10)~ { LED_BUF[(2-KeyTime)]=DIGI[KeyValue]; switch(KeyTime) { case(0):KeyBuffer=KeyBuffer+KeyValue*100;break;case(1):KeyBuffer=KeyBuffer+KeyValue*10;break;case(2):KeyBuffer=KeyBuffer+KeyValue*1;break;}… KeyTime++; if(KeyTime==3) { KeyTime=0; } KeyValue=16; } if(KeyValue==12)` {f=KeyBuffer; FrequencyControl=10000/f; KeyValue=16; KeyBuffer=0; //LED_BUF[0]=DIGI[10]; //LED_BUF[1]=DIGI[10]; //LED_BUF[2]=DIGI[10];( } //P1=0xFF; } } #endif?//////////////////////////////////////////////////////// //前台程序冻结 //while(1);}////////////////////////////////////////////////////////~voidt0_isr(void)interrupt1 //定时器0中断服务程序{ staticunsignedintcnt=0; staticunsignedcharled_cnt=0; TP0=~TP0; //TP0翻转,用来指示中断触发频率或周期 ; TP1=1; //TP1置高,TP1的高电平持续时间代表中断服务程序执行时间/*设计阶梯波的阶梯数*/BreakTime++; if(BreakTime>=(FrequencyControl/4)){ DAC0H=SIN[abc]; //DAC0输出锯齿波,递增 SamplingControl=SamplingControl+8; if(SamplingControl==256)* { SamplingControl=0; } BreakTime=0; } DAC1H--; //DAC1输出锯齿波,递减 //每十次中断执行一次以下代码,扫描一位LED— if(cnt==10) { cnt=0; switch(led_cnt) { case0:@ P2=0x01; P1=LED_BUF[0]; led_cnt=1; break; case1: P2=0x02; P1=LED_BUF[1]; led_cnt=2;] break; case2: P2=0x04; P1=LED_BUF[2]; led_cnt=3; break; case3: P2=0x08;' P1=LED_BUF[3]; led_cnt=4; break; case4: P2=0x10; P1=LED_BUF[4]; led_cnt=5; break;' case5: P2=0x20; P1=LED_BUF[5]; led_cnt=0; break; default: break; }· cnt++; } else { cnt++;! }TP1=0; //TP1置低,TP1的高电平持续时间代表中断服务程序执行时间}/*按键控制*/voidKeyDown(void){ chara=0; GPIO_KEY=0x0f;[ if(GPIO_KEY!=0x0f)//读取按键是否按下 { Delay10ms();//延时10ms进行消抖 if(GPIO_KEY!=0x0f)//再次检测键盘是否按下 { //测试列 GPIO_KEY=0X0F;> switch(GPIO_KEY) { case(0X07):KeyValue=0;break; case(0X0b):KeyValue=1;break; case(0X0d):KeyValue=2;break; case(0X0e):KeyValue=3;break; } //测试行《 GPIO_KEY=0XF0; switch(GPIO_KEY) { case(0X70):KeyValue=KeyValue;break; case(0Xb0):KeyValue=KeyValue+4;break; case(0Xd0):KeyValue=KeyValue+8;break; case(0Xe0):KeyValue=KeyValue+12;break; }{ while((a<50)&&(GPIO_KEY!=0xf0)) //检测按键松手检测 { Delay10ms(); a++; } } }}】voidDelay10ms(void)//误差0us{unsignedchara,b,c;for(c=1;c>0;c--)for(b=38;b>0;b--)for(a=130;a>0;a--);}*/实验电路(一)总电路图6-1总电路图(二)滤波电路图6-2巴特沃斯滤波器幅频特性图图6-3滤波电路图图6-4仿真结果根据实验要求我们设计了一个二阶巴特沃斯低通滤波器,理想状态下100HZ~1000HZ均应处于通带部分。但由于滤波器并不理想,且当按1000HZ滤波频率计算并不适用于是100HZ的伪正弦波。反复衡量我们将截止频率定为左右(三)放大电路图6-5放大电路图图6-6仿真结果我们设计的是反向放大器,电压增益A=U/U=-R/R。实验要求放大电路要相对输入波放大几倍,而我们的放大电路是在对滤波之后的波形进行处理,所以在考虑放大倍数时要考虑到较高频率波形在滤波时有一定的衰减,在放大部分要把衰减的电压进行弥补(四)滤直流部分图图6-7隔直电容为了滤除直流分量,在滤波之后要进行滤直流的操作,为了防止两级电路级间干扰,考虑把滤直流的电容放在两级电路之间(五)电源部分利用7805芯片产生+5V电压图6-8电源电路(六)结果电路图6-9焊接成果操作说明(一)按键操作说明图7-1板监控部分(二)显示说明图7-2开发板显示屏LED显示屏使用右边三位,且从右向左为个、十、百位。程序烧入开发板后开发板输出100HZ伪正弦波,LED显示屏没有任何显示。按一下“步进”键后显示200,输出200HZ伪正弦波,在此基础上按步退,LED显示屏显示100HZ,输出100HZ伪正弦波,其余阶段,按“步进”“步退”键后分别显示±100HZ之后的频率值(当前输出值)。任意数输入时,键入任意三位数(因为是100HZ~1000HZ输出频率,所以设计显示范围为1~999),按“键入”键,开发板输出该数字频率的伪正弦波,LED显示屏显示键入数字实验结果(一)实验输出伪正弦波(以100HZ为例)图8-1伪正弦输出(二)滤波放大结果图8-2100HZ波形滤波放大结果图8-31000HZ波形滤波放大结果图8-4任意频率输入问题分析(一)硬件部分:1、仿真软件是处在理想状态下进行的模拟仿真,所以仿真结果并不存在级间干扰问题。而我们在最初在面包板上测试时是将滤波电路和放大电路两部分分开测试,检验无误后进行两级串联。级联后最终输出显示滤波部分出现问题,再次检验滤波输出,发现其发生明显变化。我们反复对电路进行了一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论