此本程序有小BUG
单片机使用STC12C5A60S2单片机24M晶振 响应速度还行,基本跟得上音乐节奏
就是有两行灯特别亮,其他的有点暗,而且有频闪感觉,像是交流供电的感觉。
哪位得神帮忙修改一下。
电路如下:
- #include "stc12c5a60s2.h"
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- #define FOSC 30000000L
- #define BAUD 9600
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- /*Define ADC operation const for ADC_CONTR*/
- #define ADC_POWER 0x80 //ADC power control bit
- #define ADC_FLAG 0x10 //ADC complete flag
- #define ADC_START 0x08 //ADC start control bit
- //#define ADC_STOP 0x08
- #define ADC_SPEEDLL 0x00 //540 clocks
- #define ADC_SPEEDL 0x20 //360 clocks
- #define ADC_SPEEDH 0x40 //180 clocks
- #define ADC_SPEEDHH 0x60 //90 clocks
- #define scan0 {IA=0;IB=0;IC=0;ID=0;}
- #define scan1 {IA=1;IB=0;IC=0;ID=0;}
- #define scan2 {IA=0;IB=1;IC=0;ID=0;}
- #define scan3 {IA=1;IB=1;IC=0;ID=0;}
- #define scan4 {IA=0;IB=0;IC=1;ID=0;}
- #define scan5 {IA=1;IB=0;IC=1;ID=0;}
- #define scan6 {IA=0;IB=1;IC=1;ID=0;}
- #define scan7 {IA=1;IB=1;IC=1;ID=0;}
- #define scan8 {IA=0;IB=0;IC=0;ID=1;}
- #define scan9 {IA=1;IB=0;IC=0;ID=1;}
- #define scan10 {IA=0;IB=1;IC=0;ID=1;}
- #define scan11 {IA=1;IB=1;IC=0;ID=1;}
- #define scan12 {IA=0;IB=0;IC=1;ID=1;}
- #define scan13 {IA=1;IB=0;IC=1;ID=1;}
- #define scan14 {IA=0;IB=1;IC=1;ID=1;}
- #define scan15 {IA=1;IB=1;IC=1;ID=1;}
- void scan(unsigned char Value);
- void InitUart();
- void SendData(BYTE dat);
- void Delay(WORD n);
- void InitADC();
- void FFT();
- void scan(unsigned char Value);
- BYTE ch = 0; //ADC channel NO.
- BYTE a = 0x55; //ADC channel NO.
- //放大128倍后的sin整数表(128)
- code char SIN_TAB[64] = { 0x00, 0x0c, 0x18, 0x24, 0x30, 0x3b, 0x46, 0x50,
- 0x59, 0x62, 0x69, 0x70, 0x75, 0x79, 0x7c, 0x7e,
- 0x7f, 0x7e, 0x7c, 0x79, 0x75, 0x70, 0x69, 0x62,
- 0x59, 0x50, 0x46, 0x3b, 0x30, 0x24, 0x18, 0x0c,
- 0x00, -0x0c, -0x18, -0x24, -0x30, -0x3b, -0x46, -0x50,
- -0x59, -0x62, -0x69, -0x70, -0x75, -0x79, -0x7c, -0x7e,
- -0x7f, -0x7e, -0x7c, -0x79, -0x75, -0x70, -0x69, -0x62,
- -0x59, -0x50, -0x46, -0x3b, -0x30, -0x24, -0x18, -0x0c,
- };
- //放大128倍后的cos整数表(128)
- code char COS_TAB[64] = { 0x7f, 0x7e, 0x7c, 0x79, 0x75, 0x70, 0x69, 0x62,
- 0x59, 0x50, 0x46, 0x3b, 0x30, 0x24, 0x18, 0x0c,
- 0x00, -0x0c, -0x18, -0x24, -0x30, -0x3b, -0x46, -0x50,
- -0x59, -0x62, -0x69, -0x70, -0x75, -0x79, -0x7c, -0x7e,
- -0x7f, -0x7e, -0x7c, -0x79, -0x75, -0x70, -0x69, -0x62,
- -0x59, -0x50, -0x46, -0x3b, -0x30, -0x24, -0x18, -0x0c,
- 0x00, 0x0c, 0x18, 0x24, 0x30, 0x3b, 0x46, 0x50,
- 0x59, 0x62, 0x69, 0x70, 0x75, 0x79, 0x7c, 0x7e,
- };
- //采样存储序列表
- code char LIST_TAB[64] = { 0, 32, 16, 48, 8, 40, 24, 56,
- 4, 36, 20, 52, 12, 44, 28, 60,
- 2, 34, 18, 50, 10, 42, 26, 58,
- 6, 38, 22, 54, 14, 46, 30, 62,
- 1, 33, 17, 49, 9, 41, 25, 57,
- 5, 37, 21, 53, 13, 45, 29, 61,
- 3, 35, 19, 51, 11, 43, 27, 59,
- 7, 39, 23, 55, 15, 47, 31, 63
- };
- int xdata Fft_Real[64]=0XFF;
- int xdata Fft_Image[64]=0XFF; // fft的虚部
- uchar xdata LED_TAB2[32]=0XFF; //记录 漂浮物 是否需要 停顿一下
- uchar xdata LED_TAB[32]=0XFF; //记录红色柱状
- uchar xdata LED_TAB1[32]=0XFF; //记录 漂浮点
- //sbit SDA_R=P4^4; //下半屏红色数据
- //sbit SDA_R_TOP=P2^7;//上半屏红色数据
- sbit SDA_R=P2^4; //下半屏红色数据
- sbit SDA_R_TOP=P2^3;//上半屏红色数据
- sbit SDA_G=P2^6;//下半屏绿色数据
- sbit SDA_G_TOP=P2^5;
- sbit STCP=P4^1;
- sbit SHCP=P2^7;
- sbit OE=P0^4; ////输出使能
- sbit IA =P4^0; //行控制线A
- sbit IB =P2^0; //行控制线B
- sbit IC =P2^1; //行控制线C
- sbit ID =P2^2; //行控制线D
- sbit Key_light=P1^5; //亮度控制
- sbit key_moda=P3^0; //模式转换
- sbit key_color=P3^1; //颜色切换
- //sbit key_Down=P3^3; //时钟减
- void Scan_Mode();
-
-
-
-
- uchar COUNT=15,COUNT1=0,ADC_Count=0,LINE=15,G,T;
- uchar i,j,k,b,p;
- int Temp_Real,Temp_Imag,temp; // 中间临时变量
- uint TEMP1;
- uchar PWM;
- uchar Mode=0;//模式 0-2
- uchar color=1; //0-7
- uchar Stop_time=0;
- uchar stop=0;
- uchar count_time=0;
- uchar Light=0;
- uchar fractional_frequency=24;//分频
- /*----------------------------ADC interrupt service routine
- ----------------------------*/
- void adc_isr() interrupt 5 using 1
- {
- OE=0;
- EADC=0; //ADC中断关
- ADC_CONTR &= !ADC_FLAG; //每次中断后重新置0
- Fft_Real[LIST_TAB[ADC_Count]]=(int)((ADC_RES*3)<<2)+(ADC_RESL)*2;//-512;
- //ADC_RES:A/D转换结果寄存器高,ADC_RESL:A/D转换结果寄存器低
-
- if(ADC_Count<64) //采集64个AD值 没有滤波
- ADC_Count++;
- ADC_CONTR = ADC_POWER | ADC_SPEEDHH| ADC_START | ch; //重新开启ADC 保正每扫描一行取样一次(如果在中断中实时频繁取样会闪得厉害和有干扰问题)
-
- }
- /*----------------------------Initial ADC sfr
- ----------------------------*/
- void main()
- {
- //uchar i;
- InitUart(); //Init UART, use to show ADC result
- InitADC(); //Init ADC sfr
- IE = 0xa0; //Enable ADC interrupt and Open master interrupt switch
- P4SW=0x30;
- P4M0=0x30;
- P4M1=0x00;
- ADC_Count=0;
- EADC=1; //开启ADC中断
- while(1)
- {
- if(ADC_Count==64)//等待取样到64个点
- {
- OE=0; //必需关138,否则会有点闪
- for(i=0;i<64;i++)
- {
- Fft_Image[i]=0; //虚部清0
- }
- FFT();
- ADC_Count=0;
- }
-
- if(key_moda==0) //按键S2 模式改变 16与64分频
- {
- Delay(1) ;
- if(key_moda==0)
- {
- Mode++;
- if(Mode>2)
- {
-
- Mode=0;
- }
- Scan_Mode(); //16还是64分频的扫描模式
-
- }
- while(key_moda==0);
- }
- //******************************************/
- if(key_color==0) //送颜色按键 3 柱条颜色改变
- {
- Delay(1) ;
- if(key_color==0)
- {
- color++;
- if(color>7)
- {
- color=0;
- }
- }
- while(key_color==0);
- }
- //**********************************
- if(Key_light==0) //亮度控制
- {
- Delay(1) ;
- if(Key_light==0)
- {
- Light++;
- if(Light>11)
- {
- Light=1;
- }
-
-
- }
- // while(Key_light==0);
- }
-
- //////////////////////以下只产生一行扫描动作///////////////////////////////////////////////////////////////////////////////
-
- // for (G=1;G<fractional_frequency+1;G++) //往点阵屏送 一行的 数据 (fractional_frequency=16 对应16条光柱,每一次G++就送出下一位光柱)
- for (G=0;G<fractional_frequency;G++)
- {
- if(color==0) //如果是柱状红色
- {
-
- if(LED_TAB[G]<=LINE+16) ///////////上半屏 LED_TAB[G]记录着1至32级其中一级的功率值,LINE扫描行数初始15,LED_TAB[G]存着FFT值,
- SDA_R_TOP=1; //熄灭
- else
- SDA_R_TOP=0; //点亮
- if(LED_TAB[G]<=LINE) /////////////下半屏LINE--
- SDA_R=1;
- else
- SDA_R=0;
- if(LED_TAB1[G]==LINE) /////////////// 记录浮点
- {
- SDA_G_TOP=1;
- SDA_G=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_G_TOP=0;
- SDA_G=1;
- }
- else
- SDA_G=SDA_G_TOP=1;
- SHCP=1;
- SHCP=0;
- }
-
- if(color==1) //如果是柱状绿色 浮点红色
- {
-
- if(LED_TAB[G]<=LINE+16) ///////////上半屏 LED_TAB[G]记录着1至32级其中一级的功率值,LINE扫描行数初始15,LED_TAB[G]存着FFT值,
- SDA_G_TOP=1; //熄灭
- else
- SDA_G_TOP=0; //点亮
- if(LED_TAB[G]<=LINE) /////////////下半屏LINE--
- SDA_G=1;
- else
- SDA_G=0;
- if(LED_TAB1[G]==LINE) /////////////// 记录浮点
- {
- SDA_R_TOP=1;
- SDA_R=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=0;
- SDA_R=1;
- }
- else
- SDA_R=SDA_R_TOP=1;
- SHCP=1;
- SHCP=0;
- }
- if(color==2) //如果是柱状橙色 无浮点
- {
-
- if(LED_TAB[G]<=LINE+16) ///////////上半屏 LED_TAB[G]记录着1至32级其中一级的功率值,LINE扫描行数初始15,LED_TAB[G]存着FFT值,
- {
-
- SDA_G_TOP=1; //熄灭
- SDA_R_TOP=1; //熄灭
- }
- else
- {
- SDA_G_TOP=0; //点亮
- SDA_R_TOP=0; //熄灭
- }
- if(LED_TAB[G]<=LINE) /////////////下半屏LINE--
- {
- SDA_G=1;
- SDA_R=1;
- }
- else
-
- {
- SDA_G=0;
- SDA_R=0;
- }
- SHCP=1;
- SHCP=0;
- }
- if(color==3) //如果是柱状橙色 无浮点
- {
-
- if(LED_TAB[G]<=LINE+16) ///////////上半屏 LED_TAB[G]记录着1至32级其中一级的功率值,LINE扫描行数初始15,LED_TAB[G]存着FFT值,
- {
-
- SDA_G_TOP=1;
-
- }
- else
- {
- SDA_G_TOP=0;
-
- }
- if(LED_TAB[G]<=LINE) /////////////下半屏LINE--
- {
- SDA_G=1;
-
- }
- else
-
- {
- SDA_G=0;
-
- }
- SHCP=1;
- SHCP=0;
- }
- if(color==4) //如果是柱状橙色 无浮点
- {
-
- if(LED_TAB[G]<=LINE+16) ///////////上半屏 LED_TAB[G]记录着1至32级其中一级的功率值,LINE扫描行数初始15,LED_TAB[G]存着FFT值,
- {
-
-
- SDA_R_TOP=1; //熄灭
- }
- else
- {
-
- SDA_R_TOP=0; //熄灭
- }
- if(LED_TAB[G]<=LINE) /////////////下半屏LINE--
- {
-
- SDA_R=1;
- }
- else
-
- {
-
- SDA_R=0;
- }
- SHCP=1;
- SHCP=0;
- }
- if(color==5) //如果是浮点红色
- {
- if(LED_TAB1[G]==LINE) /////////////// 记录浮点
- {
- SDA_G_TOP=1;
- SDA_G=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_G_TOP=0;
- SDA_G=1;
- }
- else
- SDA_G=SDA_G_TOP=1;
- SHCP=1;
- SHCP=0;
- }
- if(color==6) //如果是浮点红色
- {
- if(LED_TAB1[G]==LINE) /////////////// 记录浮点
- {
- SDA_R_TOP=1;
- SDA_R=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=0;
- SDA_R=1;
- }
- else
- SDA_R=SDA_R_TOP=1;
- SHCP=1;
- SHCP=0;
- }
- if(color==7) //如果是浮点红色
- {
- if(LED_TAB1[G]==LINE) /////////////// 记录浮点
- {
- SDA_R_TOP=SDA_G_TOP=1;
- SDA_R=SDA_G=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=SDA_G_TOP=0;
- SDA_R=SDA_G=1;
- }
- else
- SDA_R_TOP=SDA_R=SDA_G=SDA_G_TOP=1;
- SHCP=1;
- SHCP=0;
- }
-
- /* else if(color==1) //如果是柱状 绿色漂浮点是红色
- {
- if(LED_TAB[G]<=LINE+16)
- SDA_G_TOP=1;
- else
- SDA_G_TOP=0;
- if(LED_TAB[G]<=LINE)
- SDA_G=1;
- else
- SDA_G=0;
-
- if(LED_TAB1[G]==LINE)
- {
- SDA_R_TOP=1;
- SDA_R=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=0;
- SDA_R=1;
- }
- else
- SDA_R=SDA_R_TOP=1;
- SHCP=1;
- SHCP=0;
-
- }
- else if(color==2) //如果是柱状 绿色 漂浮点是黄色
- {
- if(LED_TAB1[G]==LINE)
- {
- SDA_R_TOP=SDA_G_TOP=1;
- SDA_R=SDA_G=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=SDA_G_TOP=0;
- SDA_R=SDA_G=1;
- }
- else
- {
- SDA_R=SDA_R_TOP=1;
- SDA_G=SDA_G_TOP=1;
- }
- if((LED_TAB[G]<=LINE+16)&&(LED_TAB1[G]!=(LINE+16)))
- SDA_G_TOP=1;
- else
- SDA_G_TOP=0;
- if((LED_TAB[G]<=LINE)&&(LED_TAB1[G]!=LINE))
- SDA_G=1;
- else
- SDA_G=0;
- SHCP=1;
- SHCP=0;
-
- }
- if(color==3) //如果是 柱状红色 漂浮点是黄色
- {
- if(LED_TAB1[G]==LINE)
- {
- SDA_R_TOP=SDA_G_TOP=1;
- SDA_R=SDA_G=0;
- }
- else if(LED_TAB1[G]==(LINE+16))
- {
- SDA_R_TOP=SDA_G_TOP=0;
- SDA_R=SDA_G=1;
- }
- else
- {
- SDA_R=SDA_R_TOP=1;
- SDA_G=SDA_G_TOP=1;
- }
- if((LED_TAB[G]<=LINE+16)&&(LED_TAB1[G]!=(LINE+16)))
- SDA_R_TOP=1;
- else
- SDA_R_TOP=0;
- if((LED_TAB[G]<=LINE)&&(LED_TAB1[G]!=LINE))
- SDA_R=1;
- else
- SDA_R=0;
-
- SHCP=1;
- SHCP=0;
- }
- */
- if(fractional_frequency==16) //如果是16分频 送2次一样的数据 中间送个空格
- {
- SHCP=1;
- SHCP=0; //发送2次上一次的点亮数据 (时钟)
- SHCP=1;
- SHCP=0;
- /////////////////////
- SDA_G_TOP=1;
- SDA_G=1; //这里送上熄灭数据
- SDA_R_TOP=1;
- SDA_R=1;
- ////////////////////
- SHCP=1;
- SHCP=0; //发送1位熄灭数据 (时钟)
- }
-
- if(fractional_frequency==32) //如果是16分频 送2次一样的数据 中间送个空格
- {
- /////////////////////
- SDA_G_TOP=1;
- SDA_G=1; //这里送上熄灭数据
- SDA_R_TOP=1;
- SDA_R=1;
- ////////////////////
- SHCP=1;
- SHCP=0; //发送1位熄灭数据 (时钟)
- }
- if(fractional_frequency==24) //如果是16分频 送2次一样的数据 中间送个空格
- {
- SHCP=1;
- SHCP=0; //发送2次上一次的点亮数据 (时钟)
- /////////////////////
- SDA_G_TOP=1;
- SDA_G=1; //这里送上熄灭数据
- SDA_R_TOP=1;
- SDA_R=1;
- ////////////////////
- SHCP=1;
- SHCP=0; //发送1位熄灭数据 (时钟)
- }
- }
- ////////////////////////////////////////////////////////////////////////
- for(j=0;j<1;j++) //根据是16分频 与64分频 来判断柱状递减的速度 ///////////////
- {
- if(LED_TAB[COUNT]>0)
- LED_TAB[COUNT]--; //(CORNT初始15)柱状递减,
- //////////////////////////////////////
- if(COUNT>0)
- COUNT--;
- else
- {
- COUNT=fractional_frequency;
- }
- ///////////////////////////////
- }
-
- //////////////////////////////////////////////////
- if(fractional_frequency==16) //判断是否是16分频
- {
- count_time++;
- if(count_time==1)
- {
- count_time=0;
- Stop_time=1;
- } //设置16或64分频递减时间
-
-
- }
- else //如果是64分频
- {
- Stop_time=2;
- }
- ////////////////////////////////////////////////////
- for(j=0;j<Stop_time;j++) //16 Stop_time 变量漂浮点递减速度控制
- {
- if(LED_TAB2[COUNT1]==0)
- {
- if(LED_TAB1[COUNT1]>LED_TAB[COUNT1])
- LED_TAB1[COUNT1]--;
- }
- else
- LED_TAB2[COUNT1]--;
- COUNT1++;
- }
- ////////////////////////////////////////////////////
- if(fractional_frequency==16)
- {
- if(COUNT1>=fractional_frequency+1)
- COUNT1=0;
- }
- else
- {
- if(COUNT1>=fractional_frequency)
- COUNT1=0;
- }
- //*******************************************************************
- OE=0;
- //////////////////////////////////
- //ADC_CONTR = ADC_POWER | ADC_SPEEDHH| ADC_START | ch; //重新开启ADC 保正每扫描一行取样一次(如果在中断中实时频繁取样会闪得厉害和有干扰问题)
- EADC=1; //ADC中断开
- ////////////////////////////
- STCP=0;
- STCP=1; //595锁存时钟
-
- scan(15-LINE); //行扫描
- OE=0;
- if(LINE>0)
- LINE--;
- else
- {
- LINE=15;
- }
-
- }
-
- }
- void InitADC( )
- {
- P1ASF = 0x01; //00000010, 将 P1.1 置成模拟口那一位为1那一位就为输入口
- AUXR1 &=0xFB; //1111,1011, 令ADRJ=0时,10A/D转换后高8位在ADC_RES中,低2位在ADC_RESL中,为1时相反
- ADC_RES = 0; //Clear previous result
- ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
- Delay(10); //ADC power-on delay and Start A/D conversion
- }
- /*----------------------------Initial UART
- ----------------------------*/
- void InitUart()
- {
- SCON = 0x5a; //8 bit data ,no parity bit
- TMOD = 0x20; //T1 as 8-bit auto reload
- TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
- //TH1=TL1=-(FOSC/12/32/BAUD);
- TR1 = 1; //T1 start running
- }
- /*----------------------------Send one byte data to PC
- Input: dat (UART data)
- Output:-----------------------------*/
- void SendData(BYTE dat)
- {
- while (!TI); //Wait for the previous data is sent
- TI = 0; //Clear TI flag
- SBUF = dat; //Send current data
- }
- /*----------------------------Software delay function
- ----------------------------*/
- void Delay(WORD n)
- {
- WORD x;
- while (n--)
- {
- x = 5000;
- while (x--);
- }
- }
- void FFT()
- {
- for( i=1; i<=6; i++) /* for(1) */
- {
- b=1;
- b <<=(i-1); //碟式运算,用于计算 隔多少行计算 例如 第一极 1和2行计算,,第二级
- for( j=0; j<=b-1; j++) /* for (2) */
- {
- p=1;
- p <<= (7-i);
- p = p*j;
- for( k=j; k<64; k=k+2*b) /* for (3) 基二fft */
- {
- Temp_Real = Fft_Real[k];
- Temp_Imag = Fft_Image[k];
- temp = Fft_Real[k+b];
- Fft_Real[k] = Fft_Real[k] + ((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);
- Fft_Image[k] = Fft_Image[k] - ((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);
- Fft_Real[k+b] = Temp_Real - ((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);
- Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);
- // 移位.防止溢出. 结果已经是本值的 1/64
- Fft_Real[k] >>= 1;
- Fft_Image[k] >>= 1;
- Fft_Real[k+b] >>= 1;
- Fft_Image[k+b] >>= 1;
-
- }
- }
- }
- // Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量
- for(j=0;j<=fractional_frequency;j++) //转换记录一行16列功率值
- {
- TEMP1=((((Fft_Real[j]* Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j]))));//求功率
- //以下将功率转为一列32级,对应LED32个点
- if(TEMP1<4)
- TEMP1=0;
- else if(TEMP1<9)
- TEMP1=1;
- else if(TEMP1<16)
- TEMP1=2;
- else if(TEMP1<25)
- TEMP1=3;
- else if(TEMP1<36)
- TEMP1=4;
- else if(TEMP1<49)
- TEMP1=5;
- else if(TEMP1<55)
- TEMP1=6;
- else if(TEMP1<60)
- TEMP1=7;
- else if(TEMP1<65)
- TEMP1=8;
- else if(TEMP1<70)
- TEMP1=9;
- else if(TEMP1<75)
- TEMP1=10;
- else if(TEMP1<80)
- TEMP1=11;
- else if(TEMP1<96)
- TEMP1=12;
- else if(TEMP1<125)
- TEMP1=13;
- else if(TEMP1<156)
- TEMP1=14;
- else if(TEMP1<189)
- TEMP1=15;
- else if(TEMP1<224)
- TEMP1=16;
- else if(TEMP1<261)
- TEMP1=17;
- else if(TEMP1<300)
- TEMP1=18;
- else if(TEMP1<341)
- TEMP1=19;
- else if(TEMP1<384)
- TEMP1=20;
- else if(TEMP1<429)
- TEMP1=21;
- else if(TEMP1<476)
- TEMP1=22;
- else if(TEMP1<525)
- TEMP1=23 ;
- else if(TEMP1<576)
- TEMP1=24;
- else if(TEMP1<629)
- TEMP1=25;
- else if(TEMP1<684)
- TEMP1=26;
- else if(TEMP1<741)
- TEMP1=27;
- else if(TEMP1<800)
- TEMP1=28;
- else if(TEMP1<861)
- TEMP1=29;
- else if(TEMP1<1024)
- TEMP1=30;
- else
- TEMP1=31;
-
- if(TEMP1>(LED_TAB[j]))
- LED_TAB[j]=TEMP1; ////////////////开始j=17 j--
- if(TEMP1>(LED_TAB1[j]))
- {
- LED_TAB1[j]=TEMP1;
- LED_TAB2[j]=80; //12 //提顿速度=12
- }
- }
-
-
- }
- void scan(unsigned char Value)
- {switch(Value)
- {case 0: scan0;break;
- case 1: scan1;break;
- case 2: scan2;break;
- case 3: scan3;break;
- case 4: scan4;break;
- case 5: scan5;break;
- case 6: scan6;break;
- case 7: scan7;break;
- case 8: scan8;break;
- case 9: scan9;break;
- case 10:scan10;break;
- case 11:scan11;break;
- case 12:scan12;break;
- case 13:scan13;break;
- case 14:scan14;break;
- case 15:scan15;break;
- default:break;
- }
- }
- void Scan_Mode() //扫描模式
- {
- switch (Mode)
- {
- case 0x00:
- fractional_frequency=16; //16分频
- break;
- case 0x01:
- fractional_frequency=24;// 64分频
- break;
- case 0x02:
- fractional_frequency=32; //预留功能
- break;
- default:
- fractional_frequency=64;//否则为16分频
- break;
- }
- }
复制代码
修改版64X32.zip
(74.79 KB, 下载次数: 13)
|