📄 fft.lst
字号:
C51 COMPILER V8.08 FFT 11/20/2012 17:34:52 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE FFT
OBJECT MODULE PLACED IN FFT.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE FFT.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<STC12C5A60S2.H>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define channel 0x00 //设置AD通道为 P1.0
5 //----http://59tiaoba.taobao.com------------------qq:77554971---------------------------------------------
---
6 #define ADC_POWER (1<<7)
7 #define ADC_SPEEDHH (0x03<<5)
8 #define ADC_START (1<<3)
9 #define PADCH (1<<5)
10 #define ADC_FLAG (1<<4)
11
12 #define scan0 {IA=0;IB=0;IC=0;ID=0;}
13 #define scan1 {IA=1;IB=0;IC=0;ID=0;}
14 #define scan2 {IA=0;IB=1;IC=0;ID=0;}
15 #define scan3 {IA=1;IB=1;IC=0;ID=0;}
16 #define scan4 {IA=0;IB=0;IC=1;ID=0;}
17 #define scan5 {IA=1;IB=0;IC=1;ID=0;}
18 #define scan6 {IA=0;IB=1;IC=1;ID=0;}
19 #define scan7 {IA=1;IB=1;IC=1;ID=0;}
20 #define scan8 {IA=0;IB=0;IC=0;ID=1;}
21 #define scan9 {IA=1;IB=0;IC=0;ID=1;}
22 #define scan10 {IA=0;IB=1;IC=0;ID=1;}
23 #define scan11 {IA=1;IB=1;IC=0;ID=1;}
24 #define scan12 {IA=0;IB=0;IC=1;ID=1;}
25 #define scan13 {IA=1;IB=0;IC=1;ID=1;}
26 #define scan14 {IA=0;IB=1;IC=1;ID=1;}
27 #define scan15 {IA=1;IB=1;IC=1;ID=1;}
28
29 sbit SDA_R=P2^4; //下半屏红色数据
30 sbit SDA_R_TOP=P2^3;//上半屏红色数据
31 sbit SDA_G=P2^6;//下半屏绿色数据
32 sbit SDA_G_TOP=P2^5;
33 sbit STCP=P4^1;
34 sbit SHCP=P2^7;
35 sbit OE=P0^4; //时钟减
36 sbit IA =P4^0; //行控制线A
37 sbit IB =P2^0; //行控制线B
38 sbit IC =P2^1; //行控制线C
39 sbit ID =P2^2; //行控制线D
40
41
42 sbit resget=P1^5; //时钟复位
43 sbit key_moda=P1^7; //模式转换
44 sbit key_color=P4^3; //时钟加
45 sbit key_Down=P3^3; //时钟减
46 void Scan_Mode();
47 extern uchar byte_read(uint);
48 extern void sector_erase(uint);
49 extern void byte_program(uint, uchar);
50 uchar Mode=0;//模式
51 uchar color=0;
52 uchar Stop_time=0;
53 uchar stop=0;
54 uchar Move,Speed,linee; //变量
C51 COMPILER V8.08 FFT 11/20/2012 17:34:52 PAGE 2
55 uint zimuo; //字模计数器
56 uchar BUFF[20]; //缓存
57 uchar BUFF1[20]; //缓存
58 uchar fractional_frequency=0;//分频
59 uchar code hanzi[]; //汉字字模
60 uchar code hanzi1[]; //汉字字模
61 //uchar code sw[16]={0X00,0X08,0x04,0x0C,0X02,0X0A,0X06,0X0E,0X01,0X09,0X05,0X0D,0X03,0X0B,0X07,0X0F};/*16
-行段码*/
62 //---------------------------------------------------------------------
63 //--------------------------------------------------------------------------------------------------------
---------------
64 //放大128倍后的sin整数表(128)
65 code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,
66
67 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 1
-14, 112,
68
69 108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24
-, -30,
70
71 -36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119,
- -121,
72
73 -123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105
-, -102,
74
75 -98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };
76
77 //放大128倍后的cos整数表(128)
78 code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,
79
80 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -
-54, -59,
81
82 -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125,
--126, -
83
84 126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -8
-5, -80,
85
86 -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59,
-65, 70,
87
88 75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };
89
90 //采样存储序列表
91 code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,
92 8, 72, 40, 104, 24, 88, 56, 120,
93 4, 68, 36, 100, 20, 84, 52, 116,
94 12, 76, 44, 108, 28, 92, 60, 124,
95 2, 66, 34, 98, 18, 82, 50, 114,
96 10, 74, 42, 106, 26, 90, 58, 122,
97 6, 70, 38, 102, 22, 86, 54, 118,
98 14, 78, 46, 110, 30, 94, 62, 126,
99 1, 65, 33, 97, 17, 81, 49, 113,
100 9, 73, 41, 105, 25, 89, 57, 121,
101 5, 69, 37, 101, 21, 85, 53, 117,
102 13, 77, 45, 109, 29, 93, 61, 125,
103 3, 67, 35, 99, 19, 83, 51, 115,
104 11, 75, 43, 107, 27, 91, 59, 123,
105 7, 71, 39, 103, 23, 87, 55, 119,
106 15, 79, 47, 111, 31, 95, 63, 127
C51 COMPILER V8.08 FFT 11/20/2012 17:34:52 PAGE 3
107 };
108
109
110 uchar COUNT=15,COUNT1=0,ADC_Count=0,LINE=15,G,T;
111 uchar i,j,k,b,p;
112 int Temp_Real,Temp_Imag,temp; // 中间临时变量
113 uint TEMP1;
114 uchar PWM;
115 int xdata Fft_Real[128];
116 int xdata Fft_Image[128]; // fft的虚部
117 uchar xdata LED_TAB2[64]; //记录 漂浮物 是否需要 停顿一下
118 uchar xdata LED_TAB[64]; //记录红色柱状
119 uchar xdata LED_TAB1[64]; //记录 漂浮点
120 void show_start();
121 void DelayMs(void);
122
123 /*------------------------------------------------
124 发送一个字节
125 ------------------------------------------------*/
126 void SendByte(unsigned char dat)
127 {
128 1 SBUF = dat;
129 1 while(!TI);
130 1 TI = 0;
131 1 }
132 /*****不影响其他端口的扫描*************************/
133 void scan(unsigned char Value)
134 {switch(Value)
135 1 {case 15: scan0;break;
136 2 case 0: scan1;break;
137 2 case 1: scan2;break;
138 2 case 2: scan3;break;
139 2 case 3: scan4;break;
140 2 case 4: scan5;break;
141 2 case 5: scan6;break;
142 2 case 6: scan7;break;
143 2 case 7: scan8;break;
144 2 case 8: scan9;break;
145 2 case 9:scan10;break;
146 2 case 10:scan11;break;
147 2 case 11:scan12;break;
148 2 case 12:scan13;break;
149 2 case 13:scan14;break;
150 2 case 14:scan15;break;
151 2 default:break;
152 2 }
153 1 }
154 /*------------------------------------------------
155 发送一个字符串
156 ------------------------------------------------*/
157 void SendStr(unsigned char *s)
158 {
159 1 while(*s!='\0')// \0 表示字符串结束标志,
160 1 //通过检测是否字符串末尾
161 1 {
162 2 SendByte(*s);
163 2 s++;
164 2 }
165 1 }
166
167 void FFT()
168 {
C51 COMPILER V8.08 FFT 11/20/2012 17:34:52 PAGE 4
169 1 //uchar x;
170 1 for( i=1; i<=7; i++) /* for(1) */
171 1 {
172 2 b=1;
173 2 b <<=(i-1); //碟式运算,用于计算 隔多少行计算 例如 第一极 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -