找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6999|回复: 3
打印 上一主题 下一主题
收起左侧

8X8行扫描,右移显示

[复制链接]
跳转到指定楼层
楼主
ID:21659 发表于 2010-9-5 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

这是是在51hei板子上成功运行的一个8*8点阵右移程序,我遇到了一个问题需要大家的帮助,能否?

     问是如下:

          /*8X8行扫描, 右移显示
如果将扫描方式改为列扫描,那么左右移动的程序就容易写了,但当点阵比较巨大
并且硬件已经定下时,改变扫描方式不是好方法,甚至不可能实现。这里是以行
扫描为例(逐行取字模),第一次取字码数组中的第1~8个数据到点阵列输入端,
行码 扫描1~8行。第二次将第一次的 1~8个数据都循环左(右)移一位,并且
将第9个数据的最高位移到第二次数据的最低处,再输入到列端口,行扫描1~8行。
即每次扫描都要把前一次扫描的列码右移一位。
程序如下:
*/
#include<reg52.h>
#include "51hei.H"
#define uchar unsigned char
#define uint unsigned int
uchar code TAB[]={0x10,0x20,0x40,0xFc,0x40,0x20,0x10,0x00};
uchar i,t,j=0;
delay(uchar t)
{
while (t--)
{;}
}
void main(void)
{ uchar T,Y,Q,d;
P2=0x75;
while(1)
   {
   for(Q=0;Q<8;Q++)
    for(T=0;T<50;T++)    //速度
      {
    d=0x01;
out164(d);
         for(i=0;i<8;i++)
         {
       Y=TAB[i+1]*256+TAB;
    Y=Y>>(7-Q)|Y<<Q;
    P0=~Y%256;
    delay(60);
    d=d<<1|d>>7;
 P0=0xff; // 消隐,很重要,不加要红一片
out164(d);
       }
    }
}
}

       程序中的 for(i=0;i<8;i++)
         {
       Y=TAB[i+1]*256+TAB;
    Y=Y>>(7-Q)|Y<<Q;
    P0=~Y%256;

    是表示什么功能,请高手详解析下啊?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2010-9-5 17:01 | 只看该作者
正在处理问题中…… 请稍等
回复

使用道具 举报

板凳
ID:22246 发表于 2010-9-6 02:52 | 只看该作者
这个的确有点难度,还不是一般的难,有高手能解释吗?
回复

使用道具 举报

地板
ID:21659 发表于 2010-9-6 21:21 | 只看该作者
不会吧,这个程序是哪个人写的啊!这也解答不出?写的那个人呢?到那去了啊。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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