毕业论文
}
}
WriData(*str); str++;
/**********************end LCD程序**************************/ void Brush(void) { }
/***********************************************************/
#define d_keyPort P3 sbit keyP30 = P3^0; sbit keyP31 = P3^1; sbit keyP32 = P3^2; sbit keyP33 = P3^3;
unsigned char GetKey(void) {
//刷新LCD
SetCursor(16);
WriData(g_ulFreq/10000000 + '0'); WriData(g_ulFreq000000/1000000 + '0'); WriData(g_ulFreq00000/100000 + '0'); WriData(g_ulFreq0000/10000 + '0'); WriData(g_ulFreq000/1000 + '0'); WriData(g_ulFreq00/100 + '0'); WriData(g_ulFreq0/10 + '0'); WriData(g_ulFreq + '0'); WriData(' '); WriData('H'); WriData('z');
//定义按键的引脚端口
//扫描键盘,取按键码
d_keyPort = 0x0f; if(d_keyPort != 0x0f) {
delay(5000);
//等一会
//确认有键按下
if(d_keyPort != 0x0f)
//下键按下吗?
毕业论文
{
d_keyPort = ~0x80; if(!keyP30)
return 0x41; if(!keyP31) d_keyPort = ~0x10; if(!keyP30)
return 0x11; return 0x12; return 0x13; return 0x14; if(!keyP31) if(!keyP32) if(!keyP33)
d_keyPort = ~0x20; if(!keyP30)
return 0x21; return 0x22; return 0x23; return 0x24; if(!keyP31) if(!keyP32) if(!keyP33)
d_keyPort = ~0x40; if(!keyP30)
return 0x31; return 0x32; return 0x33; return 0x34; if(!keyP31) if(!keyP32) if(!keyP33)
毕业论文
}
}
return 0x42; return 0x43; return 0x44;
if(!keyP32) if(!keyP33)
return 0;
}
void main(void) {
//主函数
unsigned char key; InitLcd();
WriStr(\delay(60000); InitLcd();
WriStr(\delay(60000); InitLcd(); WriStr(\ResetDDS(); SetFreq(); Brush(); while(1) {
key = GetKey(); if(key == 0x34)
g_ulFreq ++; g_ulFreq --; g_ulFreq +=10; g_ulFreq -=10; else if(key == 0x44) else if(key == 0x33) else if(key == 0x43)
//扫描键盘
//复位DDS //DDS初始频率设定
毕业论文
}
else if(key == 0x32)
g_ulFreq +=100; g_ulFreq -=100; g_ulFreq +=1000; g_ulFreq -=1000; g_ulFreq +=10000; g_ulFreq -=10000; g_ulFreq +=100000; g_ulFreq -=100000; g_ulFreq +=1000000; g_ulFreq -=1000000; g_ulFreq +=10000000; g_ulFreq -=10000000; else if(key == 0x42) else if(key == 0x31) else if(key == 0x41) else if(key == 0x14) else if(key == 0x24) else if(key == 0x13) else if(key == 0x23) else if(key == 0x12) else if(key == 0x22) else if(key == 0x11) else if(key == 0x21)
}
if(key) { }
//如果不键按下,则重新设置频率
SetFreq(); Brush();
//重设频率 //重刷LCD
delay(10000); //延时
毕业论文
5 系统调试
根据方案设计要求,调试过程公分三大部分,硬件调试,软件调试,软件和硬件联调。电路按模块逐个调试,各模块调试通过后在联调。程序先在最小系统板调试,通过后在软硬联调。 5.1 硬件电路调试 5.1.1 调试与测试所用仪器
1. 微机一台以及Protel软件; 2. 信号源; 3. 示波器; 4. 万用表; 5. 直流稳压电源; 6. 失真度仪; 5.1.2 调试过程
高频电路抗干扰设计 AD9851的时钟频率很高,对周围的电路有一定的影响,我们采取了各种抗干扰措施。例如引线尽量短,减少交叉,尽量减少跳线,在电源输入端都加上去藕电容,数字地与模拟地分开,信号源与地尽量隔远,实践证明,这些措施对消除某些引脚上的毛刺及干扰噪声起到了很好的作用。将系统的各模块分开测试,调通后再进行整机调试,提高调试效率。 5.1.3 调试经验总结
1、系统属于高频电路,对干扰比较敏感,所以调试时应该远离高频干扰源。 2、在安装元件的时候,要特别注意器件的安装。例如三极管的引脚对应,电解电容的极性等,如果安装的时候不注意,在调试时就容易出现问题。
3、系统设计的是多模块的,一块板到另一块板的引线,电源的正负极性等要特别注意。解决问题的最好办法是用墨笔在板上做适当标注,这样不至于引起混淆。
4、由于系统应用了高频电路,设计电路时应该在电源旁边放置适当值的电容,以减少电源对系统的干扰,数据输入输出的波形也会比较“干净”。总之,要设计出一个性能良好的系统需要注意许多问题,在硬件设计的时候为减少外干扰应加入滤波。
5.2 软件调试
本系统的软件系统采用C编写,调试也是分模块进行,各个模块调试通过函数里调 这样写结构明了,出错时容易查错。 5.3 总调试
按程序定义的各个口分别把线接好,然后把程序写进单片机控制各个模块。依据设计要求,分别对输出波形、输出电压峰峰值、输出频率和功率放大器输出测试。
测试输出电压的峰峰值时,对放大电路和AGC电路参数的适当调整,使输出频率在