24*24点阵屏老是闪烁求大神帮忙,点阵屏采用三块128译码器和三块595
- #include "kaijitu.h"
- void InputTo595(u8 *displayBuff);
- void OutputFrom595();
- u8 code Math_1_1 [4][8]={{0x77,0xFF,0x07,0x0A,0x13,0x23,0x43,0x82},
- {0x20,0x30,0x30,0x30,0x30,0x30,0x30,0xF0},
- {0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x30},
- {0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x98}
- };
- u8 code Math_1_2 [4][8]={{0x03,0x03,0x02,0x07,0x07,0x02,0x03,0x03},
- {0xF0,0x60,0x00,0x00,0x80,0xC0,0x60,0x70},
- {0x18,0x18,0x18,0x18,0x98,0x98,0x18,0x18},
- {0xCC,0xC4,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0}
- };
-
- u8 code Math_1_3 [4][8]={{0x82,0x43,0x23,0x13,0x0A,0x07,0xFF,0x77},
- {0x30,0x20,0x60,0xC0,0x80,0x00,0x00,0x00},
- {0x18,0x18,0xF8,0xF8,0x00,0x00,0x00,0x00},
- {0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
- };
- u8 code Math_2_1 [4][8]={{0xDB,0xFF,0x18,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0xC0,0xF0,0x7C,0x1F,0x07},
- {0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00},
- {0x0C,0x0E,0x47,0xC3,0xF1,0xF8,0xCC,0xCC}
- };
- u8 code Math_2_2 [4][8]={{0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81},
- {0x03,0x78,0xFE,0x87,0x01,0x00,0x00,0x00},
- {0x00,0x00,0x89,0x49,0x4F,0x4F,0x49,0x89},
- {0xCC,0xCC,0xFF,0xFF,0xCE,0xCC,0xCC,0xCC}
- };
- u8 code Math_2_3 [4][8]={{0x00,0x00,0x00,0x00,0x00,0x18,0xFF,0xDB},
- {0x00,0x00,0x00,0x00,0x01,0x03,0x86,0x7C},
- {0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00},
- {0xC4,0xC0,0xC0,0x40,0x00,0x00,0x00,0x00}
- };
- u8 code Math_3_1 [4][8]={{0xEE,0xFF,0xE0,0x50,0xC8,0xC4,0xC2,0x41},
- {0x00,0x0C,0x0F,0x07,0x01,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x08,0x1F,0x3F,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
- };
- u8 code Math_3_2 [4][8]={{0xC0,0xC0,0x40,0xE0,0xE0,0x40,0xC0,0xC0}, //
- {0x00,0x00,0x00,0x01,0x03,0x06,0x0C,0x18},
- {0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x03},
- {0x00,0x00,0x7F,0x7F,0x00,0x00,0x00,0x00}
- };
- u8 code Math_3_3 [4][8]={{0x41,0xC2,0xC4,0xC8,0x50,0xE0,0xFF,0xEE},
- {0x10,0x10,0x18,0x0C,0x06,0x03,0x01,0x00},
- {0x08,0x18,0x3F,0x1F,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
- };
- void delay (u16 i)
- {
- while(i--);
- }
- void Hc595SendByte(u8 *dat)
- {
- u8 a,i;
- SRCLK=0;
- RCLK=0;
- for(i=3;i>0;i--)
- {
- for(a=0;a<8;a++)
- {
- SER=dat[i-1]>>7;
- dat[i-1]<<=1;
- SRCLK=1;
- _nop_();
- _nop_();
- SRCLK=0;
- }
- }
- }
- void out595 ()
- {
- RCLK=1;
- _nop_();
- _nop_();
- RCLK=0;
- }
- //void Hc595SendByte(u8 dat)
- //{
- // u8 a;
- // SRCLK=0;
- // RCLK=0;
- // for(a=0;a<8;a++)
- // {
- // SER=dat>>7;
- // dat<<=1;
- //
- // SRCLK=1;
- // _nop_();
- // _nop_();
- // SRCLK=0;
- // }
- //
- // RCLK=1;
- // _nop_();
- // _nop_();
- // RCLK=0;
- //}
- //致敬祖国
- //爱我中华 普天同庆
- //成立七十年 奋进新时代
- //我和我的祖国
- //祖国万岁
- u8 displayBuff[3]={0,0,0};
- void DigDisplay(u8 len0[4][8],u8 len1[4][8],u8 len2[4][8],u8 n)
- {
- u8 a;
-
- for(a=0;a<8;a++)
- {
- displayBuff[0]=len0[1][a];
- displayBuff[1]=len1[1][a];
- displayBuff[2]=len2[1][a];
- switch(a) //位选,选择点亮的数码管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//显示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//显示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//显示第2位
- case(3):
- LSA=1;LSB=1;LSC=0; break;//显示第3位
- case(4):
- LSA=0;LSB=0;LSC=1; break;//显示第4位
- case(5):
- LSA=1;LSB=0;LSC=1; break;//显示第5位
- case(6):
- LSA=0;LSB=1;LSC=1; break;//显示第6位
- case(7):
- LSA=1;LSB=1;LSC=1; break;//显示第7位
- }
-
- nun=1;
- Hc595SendByte(displayBuff);//发送段码
- out595 ();
- nun=0;
- delay(100);
- out595 ();
- // displayBuff[0]=0x00;
- // displayBuff[1]=0x00;
- // displayBuff[2]=0x00;
- // Hc595SendByte(displayBuff);//发送段码
- // out595 ();
- // InputTo595(displayBuff);
- // OutputFrom595();
- // Hc595SendByte(len[n][i]);//发送段码
- // delay(100); //间隔一段时间扫描
- // Hc595SendByte(0x00);//消隐
- }
-
- }
- void InputTo595(u8 *displayBuff)
- {
- u8 i, j;
- for (j = 3; j > 0; j--)
- {
- for (i = 0; i < 8; i++)
- {
- SER = displayBuff[j - 1] & 0x01 ; //先输入最低位
- displayBuff[j - 1] >>= 1;
- SRCLK = 0;
- _nop_();
- SRCLK = 1; //上升沿,输入到移位寄存器
- }
- }
- }
- void OutputFrom595() //595输出
- {
- RCLK= 0;
- _nop_();
- RCLK= 1;
- RCLK= 0;
- }
- //void In_1_1 (u8 php)
- //{
- // k1=1;
- // k2=0;
- // k3=0;
- //
- // k4=0;
- // k5=1;
- // k6=1;
- // DigDisplay(Math_1_1,php);
- //}
- //
- //void In_1_2 (u8 php)
- //{
- // k1=0;
- // k2=1;
- // k3=0;
- //
- // k4=0;
- // k5=1;
- // k6=1;
- // DigDisplay(Math_1_2,php);
- //
- //}
- //
- //void In_1_3 (u8 php)
- //{
- // k1=0;
- // k2=0;
- // k3=1;
- //
- // k4=0;
- // k5=1;
- // k6=1;
- // DigDisplay(Math_1_3,php);
- //}
- //void In_2_1 (u8 php)
- //{
- // k1=1;
- // k2=0;
- // k3=0;
- //
- // k4=1;
- // k5=0;
- // k6=1;
- // DigDisplay(Math_2_1,php);
- //}
- //
- //void In_2_2 (u8 php)
- //{
- // k1=0;
- // k2=1;
- // k3=0;
- //
- // k4=1;
- // k5=0;
- // k6=1;
- // DigDisplay(Math_2_2,php);
- //}
- //
- //void In_2_3 (u8 php)
- //{
- // k1=0;
- // k2=0;
- // k3=1;
- //
- // k4=1;
- // k5=0;
- // k6=1;
- // DigDisplay(Math_2_3,php);
- //}
- //
- //void In_3_1 (u8 php)
- //{
- // k1=1;
- // k2=0;
- // k3=0;
- //
- // k4=1;
- // k5=1;
- // k6=0;
- // DigDisplay(Math_3_1,php);
- //}
- //
- //void In_3_2 (u8 php)
- //{
- // k1=0;
- // k2=1;
- // k3=0;
- //
- // k4=1;
- // k5=1;
- // k6=0;
- // DigDisplay(Math_3_2,php);
- //}
- //
- //void In_3_3 (u8 php)
- //{
- // k1=0;
- // k2=0;
- // k3=1;
- //
- // k4=1;
- // k5=1;
- // k6=0;
- // DigDisplay(Math_3_3,php);
- //}
- //
- //void xiaoyin ()
- //{
- // k1=0;
- // k2=0;
- // k3=0;
- // k4=1;
- // k5=1;
- // k6=1;
- //}
- void kaijidonghua()
- {
- u8 lat,x;
- u16 i;
- while(1)
- {
- // In_1_1 (lat);
- //
- //
- // In_2_1 (lat);
- //
- // In_3_1 (lat);
- //
- //
- //
- // In_1_2 (lat);
- //
- // In_2_2 (lat);
- //
- // In_3_2 (lat);
- //
- //
- //
- //
- //
- // In_1_3 (lat);
- //
- // In_2_3 (lat);
- //
- // In_3_3 (lat);
- for(x=0;i<3;x++)
- {
- switch(x)
- {
- case(0): k1=1;k2=0;k3=0;DigDisplay(Math_1_1,Math_2_1,Math_3_1,0); break;
- case(1): k1=0;k2=1;k3=0;DigDisplay(Math_1_2,Math_2_2,Math_3_2,0); break;
- case(2): k1=0;k2=0;k3=1;DigDisplay(Math_1_3,Math_2_3,Math_3_3,0); break;
- }
- }
- // DigDisplay(Math_1_1,Math_2_1,Math_3_1,0);
- // i++;
- // if(i>50)
- // {
- // i=0;
- // lat++;
- // if(lat>3)
- // {
- // lat=0;
- // }
- //
- // }
-
- }
- }
复制代码 |