自己写的用STM32F103,正点原子的mini板(自带TTL显示屏),版接本地振荡器芯片模块ADF4351,来产生一个频率范围在250MHZ~300MHZ的本地正弦波信号。其中,程序可以根据不同按键进行不同频差的步进。
源程序:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "lcd.h"
- #include "adc.h"
- #include "key.h"
- #include "dac.h"
- #include "ADF4351.h"
-
- int main(void)
- {
- // u16 adcx;
- u16 temp;
- // u8 t=0;
- // u16 dacval=0;
- int key;
- float num=285.7;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
- LED_Init(); //初始化与LED连接的硬件接口
- LCD_Init(); //初始化LCD
- key_init();
- // Adc_Init(); //ADC初始化
- // Dac1_Init(); //DAC通道1初始?
- ADF4351Init();
- ADF4351WriteFreq(num);
-
- POINT_COLOR=RED;//设置字体为红色
- LCD_ShowString(60,130,200,16,16,"HANG_R1:+ HANG_R3:-");
- //显示提示信息
- POINT_COLOR=BLUE;//设置字体为蓝色
- //// LCD_ShowString(60,150,200,16,16,"DAC VAL:");
- LCD_ShowString(60,170,200,16,16,"NUM VAL:000M");
- //// LCD_ShowString(60,190,200,16,16,"ADC VOL:0.000V");
- // DAC_SetChannel1Data(DAC_Align_12b_R, 0);//????0
- while(1)
- {
- // t++;
- key=key_scan();
- if(key==1)
- {
- LED0=!LED0;
- num+=1;
- }
- else if(key==2)
- {
- LED0=!LED0;
- num+=0.5;
- }
- else if(key==3)
- {
- LED0=!LED0;
- num+=0.2;
- }
- else if(key==4)
- {
- LED0=!LED0;
- num+=0.1;
- }
- else if(key==5)
- {
- LED0=!LED0;
- num-=1;
- }
- else if(key==6)
- {
- LED0=!LED0;
- num-=0.5;
- }
- else if(key==7)
- {
- LED0=!LED0;
- num-=0.2;
- }
- else if(key==8)
- {
- LED0=!LED0;
- num-=0.1;
- }
-
- if(key==1|key==2|key==3|key==4|key==5|key==6|key==7|key==8)
- ADF4351WriteFreq(num);
-
-
- LCD_ShowxNum(124,170,num,3,16,0);
- temp=num;
- temp=(num-temp)*100;
- LCD_ShowxNum(150,170,temp,5,16,0);
- }
-
- }
-
复制代码
代码资料51hei附件下载:
本振信号.rar
(1.06 MB, 下载次数: 168)
|