搜索
bottom↓
回复: 7

点阵左移问题,高人指点

[复制链接]

出0入0汤圆

发表于 2013-6-7 11:33:28 | 显示全部楼层 |阅读模式
本帖最后由 feixiang1990 于 2013-6-7 11:37 编辑

自己买了个点阵屏幕,但是编写左移功能的时候出现问题,希望做过的能指点一二,帮下小弟。
先贴出代码:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. uchar hang[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
  4.                                 0x08,0x09,0x0a,0x0b,0xfc,0x0d,0xfe,0x0f};
  5. sbit R1=P1^0;//接LED屏输入口的R1上 这个是红色数据输入口 输出到单元板上595芯片上 08接口R1是上半屏 R2是下半屏
  6. sbit G1=P1^1;//同上 绿色数据
  7. sbit R2=P1^2;
  8. sbit G2=P1^3;
  9. sbit CLK=P1^4;//时钟信号
  10. sbit STB=P1^5;//锁存信号
  11. sbit OE=P1^6;//理解成显示或不显示的开关吧

  12. char code HZ[];//字库数组
  13. char code DZ[];
  14. char HC0[14],HC1[14];//缓存数组
  15. char XS0[14],XS1[14];

  16. unsigned int move,speed;

  17. void delay_nms(unsigned int x)
  18. {
  19.         unsigned int i,j;
  20.         for(i=0;i<x;i++)
  21.                 for(j=0;j<100;j++);
  22. }

  23. void WriteByterR1(char dat,dat2)//写一个字节数据
  24. {
  25.         char i;
  26.         for(i=0;i<8;i++)
  27.         {
  28.                 R1=dat&0x01;
  29.                 dat=dat>>1;
  30.                 G1=dat2&0x01;
  31.                 dat2=dat2>>1;
  32.                 CLK=0;
  33.                 CLK=1;
  34.         }
  35. }

  36. void WriteByterR2(char dat,dat2)//写一个字节数据
  37. {
  38.         char i;
  39.         for(i=0;i<8;i++)
  40.         {
  41.                 R2=dat&0x01;
  42.                 dat=dat>>1;
  43.                 G2=dat2&0x01;
  44.                 dat2=dat2>>1;
  45.                 CLK=0;
  46.                 CLK=1;
  47.        
  48.         }
  49. }

  50. void main()//主函数
  51. {
  52.         unsigned int lie;
  53.         unsigned char speed,yidong,zishu;
  54.         unsigned char i,s,k;
  55.         while(1)//大循环
  56.     {
  57.                 for(zishu=0;zishu<14;zishu++)
  58.                 {
  59.                         for(yidong=0;yidong<16;yidong++)  //数据移位
  60.                         {
  61.                                 for(speed=0;speed<200;speed++)         //移动速度
  62.                                 {       
  63.                                         //下半部分
  64.                                         for(lie=0;lie<16;lie++)                 //16列数据
  65.                                 {
  66.                                                  for(i=0;i<6;i++)     //i为显示的汉字个数
  67.                                                  {
  68.                                                          HC1[i*2]= HZ[2*lie+i*32+zishu*32];
  69.                                                          HC1[i*2+1]= HZ[2*lie+1+i*32+zishu*32];
  70.                                                  }
  71.                                                  for(s=0;s<10;s++)//左移实现部分
  72.                                                  {
  73.                                                         if(yidong<8)
  74.                                                         {
  75.                                                                 XS1[s] = ((HC1[s]>>yidong)|(HC1[s+1]<<(8-yidong)));
  76.                                                         }
  77.                                                         else
  78.                                                         {
  79.                                                                 XS1[s] = (HC1[s+1]>>(yidong-8)) | (HC1[s+2]<<(16-yidong));
  80.                                                         }
  81.                                                        
  82.                                                  }
  83.                                                  for(k=0;k<10;k++)
  84.                                                  {
  85.                                                          WriteByterR2(XS1[k],0xff);
  86.                                                  }               
  87.                                                  P0=hang[lie]; //行循环,num等于0的时候,第一行亮,依次类推
  88.                                      STB=1;//锁存信号
  89.                                                  STB=0;  
  90.                                 }
  91.                                 }
  92.                         }
  93.                 }
  94.         }
  95. }

  96. char code DZ[]=
  97. {//此处省略

  98. };

  99. char code HZ[]=
  100. {

  101.   0xFB,0xFF,0x7B,0xC0,0x80,0xEF,0xFB,0xF7,0xF5,0xFB,0xF5,0xF5,0xF6,0xCE,0x40,0xDF,
  102. 0x37,0x80,0xF7,0xFB,0xC7,0xFB,0xF0,0xFB,0xF7,0xFB,0xF7,0xFB,0x17,0x80,0xF7,0xFF,/*"轻",0*/
  103. /* (16 X 16 , 宋体 )*/

  104. 0xFB,0xFF,0x7B,0xC0,0x80,0xEF,0xFB,0xF7,0xF5,0xFB,0xF5,0xF5,0xF6,0xCE,0x40,0xDF,
  105. 0x37,0x80,0xF7,0xFB,0xC7,0xFB,0xF0,0xFB,0xF7,0xFB,0xF7,0xFB,0x17,0x80,0xF7,0xFF,/*"轻",1*/
  106. /* (16 X 16 , 宋体 )*/

  107. 0xF7,0xFE,0xF7,0xFE,0xFB,0xFE,0xC1,0xC0,0x5D,0xDF,0x5D,0xDF,0x9D,0xDF,0xC1,0xDE,
  108. 0xDD,0xDD,0xDD,0xD9,0xDD,0xDB,0xDD,0xDF,0xC1,0xDF,0xDD,0xEB,0xFD,0xF7,0xFF,0xFF,/*"的",2*/
  109. /* (16 X 16 , 宋体 )*/
  110. //省略部分

  111. };
复制代码
效果视频如下:
http://v.youku.com/v_show/id_XNTY3NjAyODYw.html

感觉左移,做的有问题,但是又不清楚,怎么才能调成效果,也请多多指点下

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出70入0汤圆

发表于 2013-6-11 15:50:09 | 显示全部楼层
没做过点阵,帮顶!

出0入20汤圆

发表于 2013-6-11 16:16:35 | 显示全部楼层
建立缓存区,移动指针就行了。

出0入0汤圆

发表于 2013-6-11 16:47:09 | 显示全部楼层
以前做的 左移供你参考

for(disrow_U8=0; disrow_U8<16; disrow_U8++)
   {
      for(s=screen_size+1; s>0; s--)
      {
         BUFF1[2*s-2] = SRAM_ADDR[zimo_U32+32*(s-1)+disrow_U8];
         BUFF1[2*s-1] = SRAM_ADDR[zimo_U32+32*(s-1)+disrow_U8+16];
      }
      for(s=1; s<(screen_size+1)*2; s++)
      {
         temp=((BUFF1[s-1]<<move_U8)|(BUFF1[s]>>(8-move_U8)));
         LED_Senddata(temp,color_U8);
      }
      OE138_SET();
      OE5926_SET();
      LST_SET();
      IO0CLR  = 0x78000000;
      IO0SET  = ((15-disrow_U8)<<27)&0x78000000;
      if(LEDsta_U8 == 0)
      {
         OE138_CLR();
         OE5926_CLR();
         Delay(1000);
      }
   }

出0入0汤圆

发表于 2013-6-12 23:55:02 | 显示全部楼层
貌似是买我的板子 哈哈

出0入0汤圆

 楼主| 发表于 2013-6-14 09:44:23 | 显示全部楼层
虫行天下 发表于 2013-6-12 23:55
貌似是买我的板子 哈哈

对的的啊啊

出0入0汤圆

发表于 2013-6-14 13:04:52 | 显示全部楼层
左移程序搞定了没有

出0入0汤圆

 楼主| 发表于 2013-6-15 21:05:47 | 显示全部楼层
虫行天下 发表于 2013-6-14 13:04
左移程序搞定了没有

嗯,搞定了啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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