2013年全国大学生电子设计大赛E题论文.doc

上传人:jian****018 文档编号:8711459 上传时间:2020-03-31 格式:DOC 页数:24 大小:844.17KB
返回 下载 相关 举报
2013年全国大学生电子设计大赛E题论文.doc_第1页
第1页 / 共24页
2013年全国大学生电子设计大赛E题论文.doc_第2页
第2页 / 共24页
2013年全国大学生电子设计大赛E题论文.doc_第3页
第3页 / 共24页
点击查看更多>>
资源描述
2013年全国大学生电子设计竞赛简易频率特性测试仪(E题)【本科组】2013年9月7日摘 要本系统以STC12C5A60S2为主控制器,该单片机是高速,低功耗,超强抗干扰的新一代8051单片机,速度快8-12倍。以自制DDS电路板AD9854为信号发生器,产生两路正交信号,观察输出波形,分析并改正信号输出模块的性能。然后将信号接入被测网络RLC串联谐振电路,经AD835构成的乘法器后,再经过低通滤波器,得到直流信号,返回单片机后经处理计算,从而得到被测网络的幅频和相频特性。关键词:STC12C5A60S2 AD9854 AD835 Abstract This system to STC12C5A60S2 as the main controller, the single chip microcomputer is a high-speed, low power consumption, strong anti-interference of a new generation of 8051 single chip microcomputer, 8-12 times faster. Signal generator using self-made DDS circuit board AD9854, resulting in two orthogonal signal, the output waveform is observed, analyzed and performance correction signal output module. The signal is then access the tested network RLC series resonant circuit, the AD835 multiplier, and low pass filter, get the DC signal, to the microprocessor after processing, which can be obtained by measuring the network the amplitude frequency and phase frequency characteristic. Keywords: STC12C5A60S2 AD9854 AD835目 录1、系统方案11.1 MCU控制模块的论证与选择11.2 DDS信号源的论证与选择11.3 乘法器的论证与选择21.4 键盘模块的论证与选择22、系统理论分析与计算22.1 系统原理2 2.2 低通滤波器的设计22.3 ADC的设计32.4被测网络的计算43、电路与程序设计53.1电路的设计53.1.1系统总体框图53.1.2 MCU控制子系统框图与电路原理图53.1.3电源63.2程序的设计63.2.1程序功能描述与设计思路63.2.2程序流程图74、测试方案与测试结果74.1测试方案74.2 测试条件与仪器94.3 测试结果及分析94.3.1测试结果(数据)94.3.2测试分析与结论9参考文献:9附录1:电路原理图11附录2:源程序131、系统方案 本系统主要由信号源模块、被测网络模块、乘法器模块、低通模块、ADC模块、测量显示模块、电源模块组成,下面分别论证这几个模块的选择。1.1 MCU控制模块的论证与选择方案一:采用51单片机控制。STC12C5A60S2系列单片机是高速,低功耗,超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。 方案二:采用FPGA控制。FPGA即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,但是功耗较低。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。 综合以上两种方案与实际情况,选择方案一。1.2 DDS信号源的论证与选择 方案一:采用分立元件和中小规模集成电路构成波形发生器采用RC串并联振荡器生成正弦信号。该方案的优点:技术成熟,可供参考的资料较多。缺点:外围元器件多,调试工作量较大,频率稳定度和准确度差,很难满足频率变化的范围要求,更难准确地实现频率步进的要求。 方案二:利用专用直接数字合成DDS芯片AD9851实现波形发生器。AD9851可以产生一个稳定的频率和相位且可数字化编程的模拟正弦波输出。但是该芯片理论上可达到70MHz,其实在实际应用中,当频率达到30MHz时,波形就失真了,而且外围电路较为复杂,需耗费大量时间。 方案三:采用AD9854芯片构成信号源。AD9854芯片整合了两路高速、高性能正交D/A转换器通过数字化编程可以输出I、Q两路合成信号,而且可产生一高稳定的频率、相位、幅度可编程的正弦和余弦信号,允许输出的信号频率高达150MHz,而数字调制输出频率可达100MHz。综合以上三种方案,选择方案三。1.3乘法器的论证与选择 方案一:选用集成模拟乘法器MC1496。模拟乘法器MC1496电路模块MC1496是根据双差分对模拟相乘器基本原理制成的乘法器芯片,用来实现调幅电路具有电路简单,调试方便的优点,但是MC1496器件内部元件参数不可能完全相同,致使输出波形出现载波漏信号,实际电路的波形并不完全对称。 方案二:选择模拟乘法器AD835。AD835是个完备的4象限电压输出模拟乘法器,适用于各种信号处理应用,只需极少的外部器件,易于使用,性价比高,适合要求使用混合或板级解决方案的应用。综合以上两种方案,选择方案二。1.4 键盘模块的论证与选择 方案一:独立键盘。控制简单,但是占用单片机IO口资源太多。 方案二:矩阵键盘。控制较为复杂,但是占用单片机IO口资源少。 综合以上两种方案,选择方案二。202、系统理论分析与计算2.1 系统原理 根据数据手册制作了核为AD9854的DDS集成板。通过STC12C5A60S2的控制,使AD9854输出两路正交信号,将被测网络接入电路,通过乘法器之前,考虑到乘法器芯片 AD835对小信号精度较高,所以利用放大器AD8009将AD9854输出信号适当放大,再送入乘法器。这两路波分别与输入信号在各自的环路中进行混频,经低通滤波后分别得到两路直流信号,返回单片机处理即可得到被测网络的幅频特性及相频特性。2.2 低通滤波器的设计 所谓的低通滤波器就是允许低频信号通过,而将高频信号衰减(如图2.2.1所示)的电路。RC低通滤波器电路: 图2.2.1 一阶RC低通滤波器 图2.2.2 信号幅值变化过程已知一阶RC低通滤波器的微分方程为:,经拉氏变换后得传递函数 :,截止频率:。分析: (1)时,A(f)=1,此时信号几乎不受衰减的通过; (2)时,A(f)=0.707,此式表明RC值决定着截止频率,因此适当改变RC数值,就可以改变 滤波器的截止频率; (3)时,输出与输入的积分成正比,信号发生衰 减,衰减率为-20dB/10倍频,当需进行n阶RC低通滤波器并联时。本次设计选用MAX4187,根据题目截止频率要求滤波器电路图具体电路图如图2.2.3 图2.2.3 反相比例放大器 其中,R为500欧姆, Rf为可调电阻,0-5k欧姆,放大倍数A=-Rf/R (2-2-5)所以A可取0到10,可以满足题目要求。2.3 ADC的设计 数据采集电路是用A/D转换器型号AD7822来实现。转换后的数字量送给后级电路进行进一步的处理。采用实时采样方式和等效采样方式对输入信号进行采集。采用实时采样方式时示波器对每个采集周期的采样点按时间顺序进行简单的排列就形成了输入信号的波形。首先经过调整的信号被输入到A/D转换器为了减少干扰在这之前要经过滤波其次CPLD控制A/D转换电路和双口RAM的工作时序保证快速正确的采集。最后双口RAM可以直接被A/D转换电路、输出扫描电路访问CPLD控制时序将采集到的存储在RAM里的数据输出给扫描电路输出波形。2.4被测网络的计算 RLC串联谐振仿真电路图如图1所示 图1 RLC仿真电路图 仿真后输出的波特图如图2所示 图2 波特图根据相量法,电路的输入阻抗可表示为:其品质因数为:其角频率为:谐振频率为:将条件代入上述公式,可求得RLC串联谐振电路中:,。3、电路与程序设计3.1电路的设计以STC12C5A60S2为主控制器,以自制DDS电路板AD9854为信号发生器,产生两路正交信号,接入被测网络RLC串联谐振电路,经AD853构成的乘法器后,再经过低通滤波器,得到直流信号,返回单片机后经处理计算,从而得到被测网络的幅频和相频特性。3.1.1系统总体框图系统总体框图如图3-1-1所示图3-1-1 系统总体框图3.1.2 MCU控制子系统框图与电路原理图1、 正交扫频信号源子系统框图图3-1-2 正交扫频信号源子系统框图2、 正交扫频信号源子系统电路原理图图3-1-3 正交扫频信号源子系统电路原理图3.1.3电源电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或者12V电压,确保电路的正常稳定工作。这部分电路比较简单,都采用三端稳压管实现,故不作详述。3.2程序的设计3.2.1程序功能描述与设计思路1、程序功能描述根据题目要求软件部分主要实现键盘的设置和显示。1)正交扫频信号:要求输出1MHZ40MHZ的正弦信号。2)AD转换:把输出的模拟信号转换为数字信号。3)按键:设置频率增减和扫频设置。4)显示部分:显示电压值、频段、步进值、信号类型、频率。2、程序设计思路1)复位DDS,即Master保持10个以上系统时钟周期的正脉冲;写控制寄存器。设置工作模式、数据更新方式、锁相环倍数、开启和屏蔽的功能。写数据寄存器。写入扫频的起始频率和终止频率,设置扫频步进和扫频斜率。数据设置完成以后,在数据更新管脚产生正脉冲,芯片开始扫频,并不断以终频-初频-终频的方式循环。 2)采用8路A/D转换3)设置一个按键用来控制增加和减少输出信号的频率,一个按键用来控制扫频设置。4)采用STC12C5A60S2单片机来控制LCD显示电压值、频段。3.2.2程序流程图 主控制芯片以单片机STC12C5A60S2,采用C语言进行编程。主程序流程图信号源流程 A/D转换流程显示序流程图 4、测试方案与测试结果4.1测试方案1、 硬件测试 使用DS1022C数字示波器观察并测量。 在硬件测试过程中没有雨器件的大量投资,焊工的精致,在第一次测试 时,还算比较理想,基本部分的要求几乎都达到了,只有正交信号电压的峰值大于等于1V时,示波器显示的输出电压最大为460mV,达不到题目的要求,经队员讨论,决定加一有AD8009芯片构成的放大器电路,可是在一次又一次的调试中,只有第一次测试时正交信号电压得到放大,而后几次调试,输出电压一直处于衰减状态,后经指导老师指点,原来是示波器的衰减度被设置过了,经重新设置后,正弦信号电压的峰峰值处于3到5V之间,基本完全实现试题的基本要求。2、 软件仿真测试 仿真结果: 4.2 测试条件与仪器测试条件:检查多次,仿真电路和硬件电路与系统原理图几乎相同,并且硬件电路无虚焊。测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。4.3 测试结果及分析4.3.1测试结果(数据)2V档信号测试结果好下表所示: (单位/V)信号值0.20500.21000.20450.40261.0071.5421.6691.999显示0.20510.21000.20440.40261.0061.5421.6691.9994.3.2测试分析与结论根据上述测试数据,本次设计出的简易频率特性测试仪,由此可以得出以下结论1、 利用AD9854制作的正交扫频信号源,可以输出两列正弦波,频率范围为1MHz40MHz。2、 在基本要求部分,几乎都实现了题目的要求,输出的信号电压值为3到5V,满足题目要求。3、在发挥部分,根据题目要求,我们制作了一个RLC串联谐振电路作为被测网络,也都几乎达到题目所需的要求。综上所述,本设计达到设计要求。参考文献:1 童诗白 华成英.模拟电子线路基础M.北京:高等教育出版社,2006年2 张毅刚.单片机原理及应用M.北京:高等教育出版社,2003年3 金孟尝.数字电子技术基础M.北京:高等教育出版社,2006年4 黄智伟.全国大学生电子设计竞赛(电路设计)M.北京:北京航天航空大 学出版社,2011年。附录1:电路原理图图1 正交扫频信号源子系统电路原理图 图2 AD835构成的乘法器电路图 图3 AD8009管脚图附录2:源程序#include /STC单片机头文件#include #define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define KeyPort P1uchar FreqWord6; /6个字节频率控制字ulong fre;/*修改硬件时要修改的部分*#define AD9854_DataBus P0 #define AD9854_AdrBus P2sbit AD9854_RST = P37; /AD9854复位端口sbit AD9854_UDCLK = P36; /AD9854更新时钟sbit AD9854_WR = P35; /AD9854写使能,低有效sbit AD9854_RD = P34; /AD9854读使能,低有效sbit AD9854_FDATA = P33; /AD9854 FSK,PSK控制sbit AD9854_OSK = P32; /AD9854 OSK控制端/*以下部分为函数定义*static void AD9854_WR_Byte(uchar addr,uchar dat); extern void AD9854_Init(void); static void Freq_convert(long Freq); extern void AD9854_SetSine(ulong Freq,uint Shape); static void Freq_double_convert(double Freq); extern void AD9854_SetSine_double(double Freq,uint Shape);extern void AD9854_InitFSK(void);extern void AD9854_SetFSK(ulong Freq1,ulong Freq2); extern void AD9854_InitBPSK(void); extern void AD9854_SetBPSK(uint Phase1,uint Phase2);extern void AD9854_InitOSK(void); extern void AD9854_SetOSK(uchar RateShape); extern void AD9854_InitAM(void); extern void AD9854_SetAM(uint Shape);extern void AD9854_InitRFSK(void); extern void AD9854_SetRFSK(ulong Freq_Low,ulong Freq_High,ulong Freq_Up_Down,ulong FreRate);static void delay (uint us);void AD9854_WR_Byte(uchar addr,uchar dat)AD9854_AdrBus = (addr&0x3f) | (P2&0xc0);AD9854_DataBus = dat;AD9854_WR = 0;AD9854_WR = 1;void AD9854_Init(void)AD9854_WR=1;/将读、写控制端口设为无效 AD9854_RD=1; AD9854_UDCLK=0; AD9854_RST=1; AD9854_RST=0; /复位AD9854 AD9854_WR_Byte(0x1d,0x10); /关闭比较器 AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频 AD9854_WR_Byte(0x1f,0x00); /设置系统为模式0,由外部更新 AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿 AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void Freq_convert(long Freq) ulong FreqBuf; ulong Temp=Freq_mult_ulong; uchar Array_Freq4; /将输入频率因子分为四个字节Array_Freq0=(uchar)Freq; Array_Freq1=(uchar)(Freq8);Array_Freq2=(uchar)(Freq16); Array_Freq3=(uchar)(Freq24);FreqBuf=Temp*Array_Freq0; FreqWord0=FreqBuf; FreqBuf=8; FreqBuf+=(Temp*Array_Freq1); FreqWord1=FreqBuf; FreqBuf=8; FreqBuf+=(Temp*Array_Freq2); FreqWord2=FreqBuf; FreqBuf=8;FreqBuf+=(Temp*Array_Freq3); FreqWord3=FreqBuf; FreqBuf=8; FreqWord4=FreqBuf; FreqWord5=FreqBuf8; void AD9854_SetSine(ulong Freq,uint Shape)uchar count;uchar Adress;Adress = 0x04; /选择频率控制字地址的初值Freq_convert(Freq); /频率转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count); AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff); AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void Freq_double_convert(double Freq) ulong Low32;uint High16; double Temp=Freq_mult_doulle; /23ca99为2的48次方除以120MFreq*=(double)(Temp);High16 = (int)(Freq/4294967295); /232 = 4294967295Freq -= (double)High16*4294967295;Low32 = (ulong)Freq; FreqWord0=Low32;FreqWord1=Low328; FreqWord2=Low3216; FreqWord3=Low3224; FreqWord4=High16; FreqWord5=High168; void AD9854_SetSine_double(double Freq,uint Shape)ucar count=0;uchar Adress;Adress=0x04; /选择频率控制字1地址的初值Freq_double_convert(Freq); /频率转换 for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count); AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void AD9854_InitFSK(void)AD9854_WR=1; AD9854_RD=1; /将读、写控制端口设为无效 AD9854_UDCLK=0; AD9854_RST=1; /复位AD9854 AD9854_RST=0;AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x02); /设置系统为模式1,由外部更新AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;void AD9854_SetFSK(ulong Freq1,ulong Freq2) uchar count=6;uchar Adress1,Adress2;const uint Shape=4000; /幅度设置. 为12 Bit,取值范围为(04095)Adress1=0x04;Adress2=0x0a; /选择频率控制字1/2地址的初值Freq_convert(Freq1); /频率转换1for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress1+,FreqWord-count); Freq_convert(Freq2); /频率转换2for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress2+,FreqWord-count); AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出void AD9854_InitBPSK(void)AD9854_WR=1; AD9854_RD=1; /将读、写控制端口设为无效 AD9854_UDCLK=0; AD9854_RST=1; AD9854_RST=0; /复位AD9854 AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x08); /设置系统为模式4,由外部更新AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;void AD9854_SetBPSK(uint Phase1,uint Phase2)uchar count;const ulong Freq=1200000; const uint Shape=4000; uchar Adress;Adress=0x04; /选择频率控制字1地址的初值AD9854_WR_Byte(0x00,Phase18); /设置相位1AD9854_WR_Byte(0x01,(uchar)(Phase1&0xff);AD9854_WR_Byte(0x02,Phase28); /设置相位2AD9854_WR_Byte(0x03,(uchar)(Phase2&0xff);Freq_convert(Freq); /频率转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count);AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; /更新AD9854输出 AD9854_UDCLK=0;void AD9854_InitOSK(void)AD9854_WR=1; AD9854_RD=1; /将读、写控制端口设为无效AD9854_UDCLK=0;AD9854_RST=1; AD9854_RST=0; /复位AD9854AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x00); /设置系统为模式0,由外部更新AD9854_WR_Byte(0x20,0x70);/设可调节幅度,取消插值补偿,通断整形内部控制AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出void AD9854_SetOSK(uchar RateShape)uchar count;const ulong Freq=60000;const uint Shape=4000; /设置载频 幅度设置. 为12 Bit,取值范围为(04095)uchar Adress;Adress=0x04; /选择频率控制字地址的初值Freq_convert(Freq); /频率转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count);AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff); AD9854_WR_Byte(0x25,RateShape); /设置OSK斜率AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void AD9854_InitAM(void)uchar count;const ulong Freq=60000; /设置载频uchar Adress;Adress=0x04; /选择频率控制字地址的初值 AD9854_WR=1; AD9854_RD=1; /将读、写控制端口设为无效 AD9854_UDCLK=0; AD9854_RST=1; AD9854_RST=0; /复位AD9854 AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x00); /设置系统为模式0,由外部更新AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿Freq_convert(Freq); /频率转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress+,FreqWord-count); AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void AD9854_SetAM(uint Shape)AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1;AD9854_UDCLK=0; /更新AD9854输出 void AD9854_InitRFSK(void)AD9854_WR=1; AD9854_RD=1; /将读、写控制端口设为无效 AD9854_UDCLK=0; AD9854_RST=1; AD9854_RST=0; /复位AD9854 AD9854_WR_Byte(0x1d,0x10); /关闭比较器AD9854_WR_Byte(0x1e,CLK_Set); /设置系统时钟倍频AD9854_WR_Byte(0x1f,0x24); /设系统模式2,由外部更新,使能波扫频 AD9854_WR_Byte(0x20,0x60); /设置为可调节幅度,取消插值补偿AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void AD9854_SetRFSK(ulong Freq_Low,ulong Freq_High,ulong Freq_Up_Down,ulong FreRate)uchar count=6;uchar Adress1,Adress2,Adress3; const uint Shape=4000; /幅度设置. 为12 Bit,取值范围为(04095)Adress1=0x04;Adress2=0x0a; Adress3=0x10; /选择频率控制字地址的初值 Freq_convert(Freq_Low); /频率1转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress1+,FreqWord-count); Freq_convert(Freq_High); /频率2转换 for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress2+,FreqWord-count); Freq_convert(Freq_Up_Down); /步进频率转换for(count=6;count0;) /写入6字节的频率控制字 AD9854_WR_Byte(Adress3+,FreqWord-count); AD9854_WR_Byte(0x1a,(uchar)(FreRate16)&0x0f); /设置斜升速率AD9854_WR_Byte(0x1b,(uchar)(FreRate8);AD9854_WR_Byte(0x1c,(uchar)FreRate);AD9854_WR_Byte(0x21,Shape8); /设置I通道幅度AD9854_WR_Byte(0x22,(uchar)(Shape&0xff);AD9854_WR_Byte(0x23,Shape8); /设置Q通道幅度AD9854_WR_Byte(0x24,(uchar)(Shape&0xff);AD9854_UDCLK=1; AD9854_UDCLK=0; /更新AD9854输出 void delay (uint us) uint i;for(i=0;ius;i+)_nop_();unsigned char KeyScan(void) /键盘扫描函数,使用行列逐级扫描法 unsigned char Val; KeyPort=0xf0;/高四位置高,低四位拉低 if(KeyPort!=0xf0)/表示有按键按下 delay(10); /去抖if(KeyPort!=0xf0) KeyPort=0xfe; /检测第一行if(KeyPort!=0xfe) Val=KeyPort&0xf0; Val+=0x0e; while(KeyPort!=0xfe); delay(10); /去抖 while(KeyPort!=0xfe); return Val; KeyPort=0xfd; /检测第二行if(KeyPort!=0xfd) Val=KeyPort&0xf0; Val+=0x0d; while(KeyPort!=0xfd); delay(10); /去抖 while(KeyPort!=0xfd); return Val; KeyPort=0xfb; /检测第三行if(KeyPort!=0xfb) Val=KeyPort&0xf0; Val+=0x0b; while(KeyPort!=0xfb); delay(10); /去抖 while(KeyPort!=0xfb); return Val; KeyPort=0xf7; /检测第四行if(KeyPort!=0xf7) Val=KeyPort&0xf0; Val+=0x07; while(KeyPort!=0xf7); delay(10); /去抖 while(KeyPort!=0xf7); return Val; return 0xff;unsigned char KeyPro(void) switch(KeyScan() case 0x7e:return 0;break;/0 按下相应的键显示相对应的码值 case 0x7d:return 1;break; case 0x7b:return 2;break;/2 case 0x77:return 3;break; case 0xbe:return 4;break;/4 case 0xbd:return 5;break; case 0xbb:return 6;break;/6 case 0xb7:return 7;break; case 0xde:return 8;break;/8 case 0xdd:return 9;break; case 0xdb:return 10;break;/a case 0xd7:return 11;break; case 0xee:return 12;break;/c case 0xed:return 13;break; case 0xeb:return 14;break;/e case 0xe7:return 15;break; default:return 0xff;break; int main()uchar num;fre=1000000;while(1) num=KeyPro(); if(num=1) AD9854_SetSine(1000000,4000); AD9854_FDATA = 1;delay(300); /延时AD9854_FDATA = 0;delay(300); if(num=2) fre+=100000; AD9854_Init();AD9854_SetSine(fre,4000); AD9854_FDATA = 1;delay(300); /延时时间长,便于观察AD9854_FDATA = 0;delay(300); else if(num=3) fre-=100000;AD9854_Init();AD9854_SetSine(fre,4000);AD9854_FDATA = 1;delay(300); /延时时间长,便于观察AD9854_FDATA = 0;delay(300); else if(num=4) AD9854_SetSine(40000000,4000); AD9854_FDATA = 1;delay(300); /延时时间长,便于观察AD9854_FDATA = 0;delay(300); else if(num=5) AD9854_InitBPSK();AD9854_SetBPSK(0,8192);AD9854_FDATA = 1;delay(10); AD9854_FDATA = 0;delay(10); else if(num=6) AD9854_InitRFSK();AD9854_SetRFSK(100000,4000000,100000,30);delay(30000);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!