(分享文件)(ADF4351 24M+ads8344+掃頻步進1M)調幅信號處理實驗電路-TFT屏ILI9341(可用) - 固定輸出 5個按鍵
全國大學生電子設計大賽F題-調幅信號處理實驗電路-軟件部分-MSP430
模塊由本振和ADS8344以及液晶TFT屏ILI9341組成
QQ圖片20171129091054.png (14.08 KB, 下載次數: 114)
下載附件
2017-11-29 09:11 上傳
圖片1.png (34.53 KB, 下載次數: 109)
下載附件
程序流程圖
2017-11-29 09:08 上傳
單片機源程序如下:
- #include "msp430x54x.h"
- #include "string.h"//strlen函數頭文件
- #include "sys.h"//延時
- #include "font.h"
- #include "lcd.h"//液晶設置基本配置
- #include "XT2.h"
- #include "gui.h"
- #include "test.h"
- #include "ADF4351.c"
- #include"ADS8344.h"
- #include"timer.h"
- uchar flag_key=0;
- #define key1 (P2IN&BIT2)
- #define key2 (P2IN&BIT3)
- #define key3 (P2IN&BIT4)
- #define key4 (P2IN&BIT5)
- #define key5 (P2IN&BIT6)
- #define key6 (P2IN&BIT7)
- void KEY_Fun(void);
- void saopin_chuli(void);
- unsigned long voltage_Trans( unsigned long num);
- void keyscan1_init()
- {
- P2DIR &= ~(BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); //按鍵初始化
- P2REN |= (BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); //上拉/下拉電阻使能(高)
- P2OUT |= (BIT2+BIT3+BIT4+BIT5+BIT6+BIT7); //REN上拉/下拉電阻使能寄存器需和輸出寄存器配合使用
- }
- //主函數
- void main()
- {
- WDTCTL = WDTHOLD + WDTPW;
- XT2_Init();
- P8_DIR=0xff;
- P10_DIR=0xff;
- P9_DIR=BIT3+BIT4+BIT5+BIT6+BIT7;
- P11_DIR=BIT0;
- LCD_Init();//液晶屏初始化
- LCD_Clear(GBLUE);
- timerB_init();
-
- ADF_Init();
- ADS8344_init();
- keyscan1_init();
- display();//液晶固定顯示
- while(1)
- {
- KEY_Fun();
- switch(flag_key)
- {
- case 1:
- saopin_chuli(); //掃頻處理
- break;
- case 2:
- TBCCTL0&=~CCIE;
- freq=264300;
- WriteFreq(freq);
-
- break;
-
-
- }
-
- //WriteFreq(freq); //直接寫入頻率值,就可以得到輸出頻率了,單位是KHZ
- LCD_ShowNum(122,92,freq,8,16);
- play_voltage(voltage_Trans(ads(0xF7)));//電壓顯示)//電壓顯示
- }
- }
- void saopin_chuli(void)
- {
- Show_Str(40,170,BLUE,GBLUE,"掃頻模式",24,1);
- //LCD_ShowNum(50,90,freq,4,16);
- while(number<=130) //掃頻(9M到20M,中斷兩次(0.2s)步進0.1M,110次步進,number至少220次)
- {
- WriteFreq(freq);
- LCD_ShowNum(122,92, freq,8,16);
- //LCD_ShowNum(50,90,ads(0xF7),4,16);
- while(flag1==1) //有載波的時候
- {
- TBCCTL0&=~CCIE; //關掉中斷處理電壓
- play_voltage(voltage_Trans(ads(0xF7)));//電壓顯示)//電壓顯示
- //LCD_ShowNum(50,130,ads(0xF7),4,16);
- TBCCTL0|=CCIE;
- TBR=0;
- flag1=0; //回到無載波正常狀態
-
-
- }
- }
-
- // freq=239300; //回到最初的狀態
- number=0;
-
-
- }
- void KEY_Fun(void)
- {
- if(key1==0)
- {
- delay_ms(10);
- if(key1==0)
- {
- while(!key1);
- TBCCTL0|=CCIE; //重新打開使能,重新掃頻
- flag_key=1;
-
- }
- }
- if(key2==0)
- {
- delay_ms(10);
- if(key2==0)
- {
- while(!key2);
- freq+=10000;
- WriteFreq(freq);
- // TBCCTL0&=~CCIE;
- }
- }
- if(key3==0)
- {
- delay_ms(10);
- if(key3==0)
- {
- while(!key3);
- freq-=10000;
- WriteFreq(freq);
- }
- }
- if(key4==0)
- {
- delay_ms(10);
- if(key4==0)
- {
- while(!key4);
- freq+=1000;
- WriteFreq(freq);
- }
- }
- if(key5==0)
- {
- delay_ms(10);
- if(key5==0)
- {
- while(!key5);
- freq-=1000;
- WriteFreq(freq);
- }
- }
- if(key6==0)
- {
- delay_ms(10);
- if(key6==0)
- {
- while(!key6);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 test.h:
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- //#define LCD ((LCD_TypeDef *) LCD_BASE)
- void display();
- void play_voltage(ulong zhi);//電壓顯示
- void play_dB(uint temp);//增益顯示
- void display()
- {
- Show_Str(100,10,BLACK,GBLUE,"2017年國賽F題",24,1);
- Show_Str(40,50,BLACK,GBLUE,"調幅信號處理實驗電路",24,1);
- Show_Str(50,90,BLUE,GBLUE,"本振:",24,1);
- Show_Str(195,90,BLUE,GBLUE,"KHZ",16,0);
- Show_Str(50,130,BLUE,GBLUE,"幅度:",24,1);
-
-
- /*Show_Str(50,130,BLUE,GBLUE,"高性能射頻寬帶放大器",24,1);
- Show_Str(50,170,RED,GBLUE,"當前增益值",24,1);
- Show_Str(30,75,RED,YELLOW,"Company shortens the miles.",25,1);*/
-
- //Show_Str(30,135,BLUE,YELLOW,"dfsdsgfueuewui",16,1);
- //Show_Str(30+5,155,BLUE,YELLOW,"123456789",16,1);
- //Show_Str(30+5,175,BLUE,YELLOW,"123456789",17,1);
- //delay_ms(1200);
- //LCD_ShowChar(70,0,WHITE,YELLOW,' ',16,0);
- //LCD_ShowChar(80,200,BLUE,YELLOW,0x30+1,16,1);
- //LCD_ShowChar(96,200,BLUE,YELLOW,0x30+2,16,1);
- //LCD_ShowChar(112,200,BLUE,YELLOW,0x30+1,16,1);
-
-
- }
- void play_voltage(ulong zhi)//電壓顯示
- {
- uint i=0,j;
-
- unsigned long a0,a2,a3,a4;
- a0=zhi/1000;
- a2=zhi/100%10;
- a3=zhi/10%10;
- a4=zhi%10;
- uint table[4]={a0,a2,a3,a4};
-
- for(j=150;j<230;j+=16) //一個字符x占16個點,8個數128個點,116+16*7=228
- {
- if(j==166){LCD_ShowChar(166,130,BLUE,GBLUE,'.',16,0);}
- else
- {LCD_ShowChar(j,130,BLUE,GBLUE,0x30+table[i++],16,0);}
- }
- Show_Str(230,130,BLUE,GBLUE,"V",16,0);
- }
- void play_dB(uint temp)//增益顯示
- {
- uint i=0,j;
- unsigned int a3,a4;
- a3=temp/10%10;
- a4=temp%10;
- uint table[4]={a3,a4};
-
- for(j=174;j<196;j+=16) //一個字符x占16個點,2個數128個點,96+16*1=208
- {
- LCD_ShowChar(j,220,RED,GBLUE,0x30+table[i++],16,0);
- }
- Show_Str(150,220,RED,GBLUE,":",24,0);
- Show_Str(215,220,RED,GBLUE,"dB",16,0);
- }
- void play_freq(uint temp)//頻率顯示
- {
- uint i=0,j;
- unsigned int a3,a4,a5,a6,a7,a8;
- // a3=temp/10%10;
- // a4=temp%10;
-
- a3=temp/100000;
- a4=temp/10000%1000;
- a5=temp/1000%100;
- a6=temp/100%10;
- a7=temp/10%10;
- a8=temp%10;
- uint table[6]={a3,a4,a5,a6,a7,a8};
-
- for(j=174;j<270;j+=16) //一個字符x占16個點,2個數128個點,96+16*1=208
- {
- LCD_ShowChar(j,175,RED,GBLUE,0x30+table[i++],16,0);
- }
- // Show_Str(150,175,RED,GBLUE,":",24,0);
- // Show_Str(215,175,RED,GBLUE,"dB",16,0);
- }
- void play_Freq(ulong freq)//頻率顯示
- {
- uint i=0,j;
-
- unsigned long a3,a4,a5,a6,a7,a8; //a0,a1,a2,
- //a0=freq/100000000;
- //a1=freq/10000000%1000000;
- // a2=freq/1000000%100000;
- a3=freq/100000%10000;
- a4=freq/10000%1000;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (9.84 KB, 下載次數: 122)
下載附件
2017-11-29 19:49 上傳
所有資料51hei提供下載:
(ADF4351 24M ads8344 掃頻步進1M)調幅信號處理實驗電路-TFT屏ILI9341(可用) - 固.rar
(92.08 KB, 下載次數: 568)
2017-11-29 09:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|