⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 co0511.c

📁 用m128调试CO0511液晶的源代码!
💻 C
📖 第 1 页 / 共 2 页
字号:
/********Co051112864图形液晶*************
CS      接PA0
RES     接PA1
A0		接PA2
SCLk    接PC6
SI      接PC7
C86		接PA5
P/S 	接PA4
*******************************/
/********16位ad函数*************
sclk     接PB3
DOUT     接PB2
CONV     接PB4
EOC      接PB1
cs		 接PB0
pa5输出
*******************************/
#define uint  unsigned int 
#define uchar unsigned char 
#include<iom128v.h>
//#include<math.h>
#include<macros.h>
//#include"ffft.h"
uchar  turn[128]={0};
uchar n=0;
/**************************************************
float FFT_Re[128]={82,88,108,140,164,177,169,148,114,92,81,90,111,141,165,177,169,144,115,91,82,89,112,141,
166,178,168,144,114,90,80,91,112,143,167,178,166,144,112,89,80,91,112,143,168,177,168,142,111,89,82,91,115,
144,168,177,166,142,110,89,81,92,115,146,168,178,165,139,109,88,81,93,117,145,169,177,165,139,109,86,82,93,
117,148,170,176,164,138,106,88,81,94,118,149,170,177,163,137,106,87,80,94,121,149,171,177,163,106,86,82,96,
120,150,171,178,161,136,104,85,82,98,120,152,172,175,161,134,104};    //输入序列实部,初值为20KHz正弦波AD采样得到 
float FFT_Im[128]={0.0};     //虚部分存,因为是序列变换因此初值为零
float Wr_Buff[64]={1,0.9988,0.9952,0.9892,0.9808,0.9700,0.9569,0.9415,0.9239,0.9040,
0.8819,0.8577,0.8315,0.8032,0.7730,0.7410,0.7071,0.6716,0.6344,0.5957,0.5556,0.5141,
0.4714,0.4276,0.3827,0.3369,0.2903,0.2430,0.1951,0.1467,0.0980,0.0491,0,-0.0491,
-0.0980,-0.1467,-0.1951,-0.2430,-0.2903,-0.3369,-0.3827,-0.4276,-0.4714,-0.5141,
-0.5556,-0.5957,-0.6344,-0.6716,-0.7071,-0.7410,-0.7730,-0.8032,-0.8315,-0.8577,
-0.8819,-0.9040,-0.9239,-0.9415,-0.9569,-0.9700,-0.9808,-0.9892,-0.9952,-0.9988}; //旋转因子实部
float Wi_Buff[64]={0,-0.0491,-0.0980,-0.1467,-0.1951,-0.2430,-0.2903,-0.3369,-0.3827,
-0.4276,-0.4714,-0.5141,-0.5556,-0.5957,-0.6344,-0.6716,-0.7071,-0.7410,-0.7730,
-0.8032,-0.8315,-0.8577,-0.8819,-0.9040,-0.9239,-0.9415,-0.9569,-0.9700,-0.9808,
-0.9892,-0.9952,-0.9988, -1,-0.9988,-0.9952,-0.9892,-0.9808,-0.9700,-0.9569,-0.9415,
-0.9239,-0.9040,-0.8819,-0.8577,-0.8315,-0.8032,-0.7730,-0.7410,-0.7071,-0.6716,
-0.6344,-0.5957,-0.5556,-0.5141,-0.4714,-0.4276,-0.3827,-0.3369,-0.2903,-0.2430,
-0.1951,-0.1467,-0.0980,-0.0491};         //旋转因子虚部
float Window[128]={0.0806,0.0822,0.0850,0.0888,0.0938,0.0998,0.1069,0.1150,0.1242,
0.1343,0.1454,0.1575,0.1705,0.1844,0.1992,0.2147,0.2311,0.2482,0.2660,0.2844,0.3035,
0.3232,0.3433,0.3640,0.3850,0.4065,0.4282,0.4503,0.4725,0.4949,0.5174,0.5400,0.5626,
0.5851,0.6075,0.6297,0.6518,0.6735,0.6950,0.7160,0.7367,0.7568,0.7765,0.7956,0.8140,
0.8318,0.8489,0.8653,0.8808,0.8956,0.9095,0.9225,0.9346,0.9457,0.9558,0.9650,0.9731,
0.9802,0.9862,0.9912,0.9950,0.9978,0.9994, 1,0.9994,0.9978,0.9950,0.9912,0.9862,
0.9802,0.9731,0.9650,0.9558,0.9457,0.9346,0.9225,0.9095,0.8956,0.8808,0.8653,0.8489,
0.8318,0.8140,0.7956,0.7765,0.7568,0.7367,0.7160,0.6950,0.6735,0.6518,0.6297,0.6075,
0.5851,0.5626,0.5400,0.5174,0.4949,0.4725,0.4503,0.4282,0.4065,0.3850,0.3640,0.3433,
0.3232,0.3035,0.2844,0.2660,0.2482,0.2311,0.2147,0.1992,0.1844,0.1705,0.1575,0.1454,
0.1343,0.1242,0.1150,0.1069,0.0998,0.0938,0.0888,0.0850,0.0822,0.0806,0.0800};   //窗函数,改进汉宁窗
float Res[128];             //转换结果
float Result1_r;
float Result1_i;
float Result2_r;
float Result2_i;
//*************************************************
void FFT_Proc(void);
/*************************************************
int main(void)
{
    unsigned char i;
	for(i=0;i<128;i++)
	    FFT_Re[i]*=Window[i];
    FFT_Proc();
	while(1);
	return 1;
}
*************************************************/ 
/*------------------------------------------------
FFT_Proc :计算128点FFT
    信息 :标准C浮点运算,可移植
------------------------------------------------/
void FFT_Proc(void)
{
    unsigned char i;
    unsigned char j;
    unsigned char a;
    unsigned char b;
    unsigned char c;
    unsigned char k=0;
    unsigned char temp=0;
    unsigned char revers=0;
    float FFT_Re1[128];
    for(i=0;i<128;i++)
	    FFT_Re1[i]=FFT_Re[i];
    for(i=0;i<128;i++)
    {
        for(j=0;j<7;j++)
        { 
            a=(i&(0x01<<j));
            b=(6-(j<<1));
            c=6-2*(6-j);
            if(j<3)
	       revers+=a<<b;
            else if(j>3)
	       revers+=a>>c;
            else
               revers+=a;
        }
        FFT_Re[i]=FFT_Re1[revers];	    
        revers=0;
    }                               //对128点输入序列进行位倒序
    for(i=0;i<7;i++)                //第一重循环控制蝶形的级数
    {
        for(j=0;(j+(1<<i))<128;j++) //控制每级的蝶形和旋转因子
        {
             if(k<64)
             {
                c=k;
                k+=(1<<(6-i));
             }
             else
             k=0;
             if(temp<(1<<i))
             {
                 temp++;
                 a=j;
                 b=(j+(1<<i));
                 Result1_r=FFT_Re[a]+Wr_Buff[c]*FFT_Re[b]-Wi_Buff[c]*FFT_Im[b];
	             Result1_i=FFT_Im[a]+Wi_Buff[c]*FFT_Re[b]+Wr_Buff[c]*FFT_Im[b];
	             Result2_r=FFT_Re[a]-Wr_Buff[c]*FFT_Re[b]+Wi_Buff[c]*FFT_Im[b];
	             Result2_i=FFT_Im[a]-Wi_Buff[c]*FFT_Re[b]-Wr_Buff[c]*FFT_Im[b];  //蝶形单元
                 FFT_Re[a]=Result1_r;
                 FFT_Im[a]=Result1_i;
                 FFT_Re[b]=Result2_r;
                 FFT_Im[b]=Result2_i;                                              
             }
             else
             {
                 j=(j+(1<<i)-1);
                 temp=0;
             }
		    
         }
         k=0;
         temp=0;
     }
     for(i=0;i<128;i++)
     Res[i]=sqrt(FFT_Re[i]*FFT_Re[i]+FFT_Im[i]*FFT_Im[i]);                      //结果取模
	 turn[i]=Res[i];
}
/**************************************************************************/

uchar const tab5[]={
/*--  调入了一幅图像  --*/
/*--  宽度x高度=128x64  --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x01,0x01,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x02,0x02,0x03,0x02,0x03,0x02,0x02,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0xFF,0x00,0x80,0xAB,0xAA,
0xAA,0xAA,0xAA,0xAB,0x80,0x00,0x00,0x00,0x01,0x00,0xFD,0x54,0x54,0x56,0x55,0x54,
0xFC,0x02,0x01,0x00,0x00,0x02,0x02,0x02,0xFA,0x92,0x92,0x92,0x92,0x92,0x90,0x9F,
0x80,0x00,0x00,0x20,0x20,0xBF,0x00,0x7F,0x54,0x54,0xFF,0x54,0x55,0x7F,0x00,0x00,
0x00,0x10,0x20,0xFF,0x00,0x80,0xAB,0xAA,0xAA,0xAA,0xAA,0xAB,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xC0,0x80,
0x80,0x88,0x88,0xC8,0x08,0x0F,0x08,0x48,0x88,0x18,0x88,0x40,0x40,0x40,0x4A,0x4A,
0xCF,0x12,0x92,0x00,0x1E,0x12,0x12,0x12,0x1E,0x00,0x00,0x00,0x80,0x43,0x92,0x0E,
0x02,0x12,0x0E,0x42,0x86,0x1A,0x82,0x43,0x40,0x40,0x40,0x4F,0x49,0x4E,0x40,0x06,
0x05,0x15,0x0D,0xC5,0x04,0x06,0xC0,0x80,0x80,0x80,0x80,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x0C,0x04,0x00,0x00,0x30,0xC0,
0xFE,0x80,0x40,0x82,0x92,0x92,0xFE,0x92,0x92,0x82,0x00,0x00,0x80,0x10,0x10,0x90,
0x90,0x92,0xBE,0xD0,0x90,0x10,0x90,0x10,0x00,0x00,0x00,0xFE,0x10,0x92,0x62,0x44,
0x78,0x40,0x7C,0x42,0x42,0x4E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x18,0x90,0x74,0x14,0x94,0x75,0x16,0x34,0xD0,0x14,0x18,0x00,0x00,0x04,0x08,
0x71,0x11,0x11,0x11,0xFF,0x11,0x11,0x31,0x10,0x00,0x00,0x00,0x08,0x49,0x4A,0x7F,
0x8A,0x09,0x24,0x12,0x00,0xFF,0x01,0x01,0x00,0x00,0x08,0x08,0xFF,0x09,0x06,0x10,
0xFF,0x10,0x10,0x1F,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x80,0x80,0x90,0xF0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x10,0x10,
0x10,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x80,0x00,0x00,0xF0,
0x00,0x80,0x80,0x80,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x10,0x20,0x40,
0x80,0x20,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
/***********************************************************************
延时函数
系统时钟:8M
-----------------------------------------------------------------------*/
void delay_1us(void)                 //1us延时函数
  {
   asm("nop");
  }

void delay_nus(unsigned int n)       //N us延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   delay_1us();
  }
  
void delay_1ms(void)                 //1ms延时函数
  {
   unsigned int i;
   for (i=0;i<1140;i++);
  }
  
void delay_nms(unsigned int n)       //N ms延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
   delay_1ms();
  }
/**********位操作函数*********/
void set_sclk_195(uchar i)//clk     接PB3
{	 
	 if(i)
	 PORTB|=0x08;
	 else
	 PORTB&=0xf7;
}
void set_conv(uchar i)
{	 
	 if(i)
	 PORTB|=0x10;
	 else
	 PORTB&=0xef;
}
void set_cs_195(uchar i)
{	 
	 if(i)
	 PORTB|=0x01;
	 else
	 PORTB&=0xfe;
}
void set_cs(uchar i)
{ if(i)
	 PORTA|=0x01;
	 else
	 PORTA&=0xfe;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -