普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2597|回复: 3

8x8LED点阵下滚动显示时产生拖影

[复制链接]

1

主题

2

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2022-3-31 00:04:32 | 显示全部楼层 |阅读模式
1金钱
想用开发板做滚动显示I Love U,但是不知道为什么有拖影,求解答。
  1. #include <reg51.h>
  2. #include <intrins.h>

  3. sbit SER   = P3^4;
  4. sbit RCLK  = P3^5;
  5. sbit SRCLK = P3^6;

  6. unsigned char lie_array[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  7.                            0x00,0x00,0x82,0xFE,0xFE,0x82,0x00,0x00,
  8.                            0x70,0xF8,0xFC,0x7E,0x7E,0xFC,0xF8,0x70,
  9.                            0x00,0xFC,0xFE,0x06,0x06,0xFE,0xFC,0x00,
  10.                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  11. unsigned char hang_array[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

  12. void HC595(unsigned char);  

  13. void main()
  14. {
  15.   EA = 1;
  16.   TMOD = 0x01;
  17.   TH0 = 0xFC;
  18.   TL0 = 0x67;
  19.   ET0 = 1;
  20.   TR0 = 1;           //配置中断
  21.   while(1);
  22. }

  23. void HC595(unsigned char data1)     //用于点亮每一列
  24. {
  25.   unsigned char j;      
  26.   SRCLK = 0;  
  27.   RCLK  = 0;
  28.   for(j=0;j<8;j++)
  29.   {
  30.     SER   = data1>>7;     
  31.     data1 = data1<<1;   
  32.     SRCLK = 1;        
  33.     _nop_();              
  34.     _nop_();
  35.     SRCLK = 0;           
  36.   }
  37.   RCLK=1;                                 
  38.   _nop_();
  39.   _nop_();
  40.   RCLK=0;       
  41. }

  42. void InterruptTimer0() interrupt 1   
  43. {
  44.   static unsigned char i = 0;
  45.   static unsigned char tmr = 0;      //250ms换帧
  46.   static unsigned char index = 0;   //图片刷新索引

  47.   TH0 = 0xFC;
  48.   TL0 = 0x67;
  49.   switch(i)
  50.   {
  51.     case(0): P0 = hang_array[i]; HC595(lie_array[index+0]); i++; break;
  52.         case(1): P0 = hang_array[i]; HC595(lie_array[index+1]); i++; break;
  53.         case(2): P0 = hang_array[i]; HC595(lie_array[index+2]); i++; break;
  54.         case(3): P0 = hang_array[i]; HC595(lie_array[index+3]); i++; break;
  55.         case(4): P0 = hang_array[i]; HC595(lie_array[index+4]); i++; break;
  56.         case(5): P0 = hang_array[i]; HC595(lie_array[index+5]); i++; break;
  57.         case(6): P0 = hang_array[i]; HC595(lie_array[index+6]); i++; break;
  58.         case(7): P0 = hang_array[i]; HC595(lie_array[index+7]); i=0; break;
  59.   }
  60.   //以下代码每250ms改变一帧图像
  61.   tmr++;
  62.   if (tmr >= 250)
  63.   {
  64.     tmr = 0;
  65.         index++;
  66.         if(index >= 32)
  67.         {
  68.           index = 0;
  69.         }
  70.   }                               
  71. }
复制代码


我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有3人回答

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

1

主题

2

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2022-3-31 00:08:05 | 显示全部楼层
刚注册,没钱,能解决的话可以加钱QAQ
回复

使用道具 举报

2

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2023-1-29 08:49:40 来自手机 | 显示全部楼层
你用一个io口控制595的OE管脚(输出有效管脚),等一个字节数据都输入后,在让它有效
回复

使用道具 举报

2

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2023-1-29 08:50:36 来自手机 | 显示全部楼层
你用一个io口控制595的OE管脚(输出有效管脚),等一个字节数据都输入后,在让它有效
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 14:40 , Processed in 0.101272 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表