P10屏幕的点亮

xiaoxiao2021-02-28  233

希望有大神能够有所指导啊。还是有点不是很了解,下面是自己调试代码的一些体验过程。

#include <ioCC2530.h>

#include <string.h> #define  uint  unsigned int #define  uchar unsigned char #define time 10 uint i,k,p; //定义LED的端口 #define r    P1_0 #define sclk P1_1 #define ckl  P1_2 #define a    P1_4  //  接了行控制信号A  #define b    P1_3  //接了行控制信号B #define oe   P1_5 //自摸软件没有问题。里面的数值,不需要拍擦啦。看看其他地方有没有毛病。 //发现自模软件里面的自模型怎么对应不上来呢???(PS :虽然没有弄出来目前,但是最少还是了解了自摸软件是怎么弄的。 ) char  tab[128]={/*--  文字:  王  --*/ /*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/ 0xFF,0xFF,0xFD,0xFF,0x80,0x03,0xFD,0xF7,0xFE,0xFF,0xC0,0x2F,0xFE,0xFF,0xFD,0xDF, 0xFE,0xFF,0xFD,0xBF,0xFE,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xFD,0xFF, /*--  文字:  者  --*/ /*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/ 0xFE,0xFF,0xF0,0x0F,0xFE,0xFF,0xE7,0xEF,0xFE,0xFF,0xD7,0xEF,0xFE,0xFF,0xB0,0x0F, 0xFE,0xFF,0x77,0xEF,0xFE,0xFF,0xF7,0xEF,0x00,0x01,0xF0,0x0F,0xFF,0xFF,0xF7,0xEF,                                                                                      };//第一次的程序为什么只显示4行呢?是因为在循环体中只写入了4行的值。               //其次,就是一个16进制的数值代表8个小灯泡,那么一共就得对应于32*16/8=64个字符才对啊。               //对啊,这里就是64个16进制数啊,没毛病。 //函数声明 void Delay_ms(uint tt); void Delay_ms(uint tt) {     uchar i; //for(i=0;i<tt;i++) for(i=tt;i>0;i--); } void input595(uchar dat)  {    uchar i;   for(i=0;i<8;i++)  {    ckl=0;   if(dat&0x80)     r=1;   else      r=0;   dat<<=1;     // delay(2);    ckl=1;    ckl=0; } } void out595() { sclk=0; sclk=1; oe=1; Delay_ms(time); sclk=0; oe=0; } void main(void) {  P1DIR |= 0x3F;    int q;   oe=0;  k=0; //a=1;  //即使是这样,还是亮的,这是为什么呢??无解。 //b=0; int boardnum=4; while(1) {   //  for(q=0;q<=6;q+=2) //   {  for(k=0;k<boardnum;k++)                              {                                          for(p=0;p<4;p++)                                         {                                                                                         input595(tab[48+p+4*k]);                                            input595(tab[32+p+4*k]);                                            input595(tab[16+p+4*k]);                                            input595(tab[p+4*k]);                                                                                                                                                     }                                                                                     switch(k) {    case 0: a=0;b=0; break; //选中每四行的其中一行    case 1 :a=1;b=0; break; //选中每四行的另外一行,以下2者均是如此。    case 2 :a=0;b=1; break; //果然找到原因了,就是由于延时没有弄好,才导致的问题。    case 3: a=1;b=1; break; //以上是由于测试找到的问题,遇到问题还是自己多测试。 }     out595();   //0,0是第一行,1,0是第二行,0,1是第三行,1,1是第四行                                                    }                       //一次循环后,把16个595都装满了。然后接下来释放了。然后又在下一次循环过程中重新给595装上新的值。                    //但是就是还没有明白怎么装的过程。                    //595中叫做锁存信号,而P10中的H信号叫做控制电路的控制信号。控制信号控制好了。led亮灭与否则取决于595了。        // }       }     } //SI4953ADY这个芯片的引脚输出怎么看? //另外扫描方式具体怎么扫描,那个大循环不会看? //a,b具体有什么用,没有理清楚?
转载请注明原文地址: https://www.6miu.com/read-21420.html

最新回复(0)