标题: 8*8点阵的显示问题 [打印本页]

作者: 科技论2    时间: 2018-2-7 21:00
标题: 8*8点阵的显示问题
这是我写的代码:
#include<reg52.h>
unsigned char lie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};                 //从高位到低位流水
unsigned char hang1[]={0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00}; //数字3
unsigned char hang2[]={0x00,0x3c,0x20,0x38,0x04,0x24,0x38,0x00}; //数字5
unsigned char hang3[]={0x18,0x24,0x24,0x18,0x24,0x24,0x18,0x00}; //数字8
void delay_50us(int t)               //延时程序
  {
     int j;
          for(;t>0;t--)
            for(j=19;j>0;j--);
  }
void main()                            //主函数
{
  int i;
  while(1)
  {
        for(i=0;i<8;i++)
      {
          P2=hang2[i];           //行扫描
            P3=lie[i];                  //列流水
          delay_50us(40);
     }
  }
}
为什么8是好的,5是不好的???这是我用仿真软件后的结果希望各位看看


58.JPG (99.45 KB, 下载次数: 35)

58.JPG

59.JPG (76.78 KB, 下载次数: 41)

59.JPG

作者: wc86110    时间: 2018-2-7 23:41
显示得好不好跟编码有关系
作者: 科技论2    时间: 2018-2-9 16:42
加个消影语句就行了

作者: wacke    时间: 2018-2-16 21:23
void main()                            //主函数
{
  int i;
  while(1)
  {
        for(i=0;i<8;i++)
      {
           P3=0xff;                  //关输出
          P2=hang2[i];           //行扫描
            P3=lie[i];                  //列流水
          delay_50us(40);
     }
  }
}
作者: jizi    时间: 2018-2-17 01:22
把延时拉长点看看
不是太多逻辑ic做的点阵是不会闪的
就尽情的拉长吧
作者: 忘川秋水    时间: 2019-11-28 22:47
你P3定义的是段码,P2定义的是位码,需要先将位码语句执行,才可执行段码语句,将你 P2=hang2[i];           
            P3=lie[i];   这两句调换顺序就不会出现乱码的情况了
作者: 小小小白。    时间: 2021-9-15 13:32
我做出来的跳的很快,是编码问题吗
作者: xianfajushi    时间: 2021-9-15 17:09
http://www.51hei.com/bbs/dpj-205824-1.html




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1