7417|3

43

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

8*8点阵 循环显示LOVE [复制链接]


如下方的程序红色部分。我有个疑问,这样子执行的话,不相当于左移了两位吗?  请大神指导,谢谢!


#include
#define uchar unsigned char
uchar i,t,d;

sbit WEI=P2^7;
sbit DUAN=P2^6;
sbit love_clk=P2^4;
sbit love_data=P2^5;

uchar code TAB[]={//0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xC1,0xFF, //L
0xE3,0xDD,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //O
0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //V
0xC1,0xFD,0xFD,0xC1,0xFD,0xFD,0xC1,0xFF, //E
0xff,0xc9,0xb6,0xbe,0xdd,0xeb,0xf7,0xff, //心号
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //空屏
};

delay(uchar t)
{
while (t--);

}


void out164(unsigned char k)
{
unsigned char i;
for(i=0;i<8;i++) //因为是1字节是8位,所以循环8次
  {
   love_data=k&0x80; //将要发送的数据与上0X80(也就是取最高位)送到数据引脚上
   love_clk=0; //时钟引脚加低电平,以便下次拉高便可产生上升沿
   love_clk=1; //低电平到高电平边沿触发到来,并行数据输出至74hc164的Q0-Q7
  k<<=1;     //将发送的数据左移1位
  }
}

/*void guandz(void)
{
out164(0x00);
}
*/

/* //--让所有led不亮
void guanled(void)
{
        P0=0x00;   //P0口全送高低平,让所有段都不亮
        DUAN=1;  //让u1 74hc573处于直通状态,也就是输入0,输出也是0,输入1输出也是1
        DUAN=0;  //锁存 也就是保持74hc573现在这个时刻的输出状态一直不变
    P0=0xFF;

        P0=0xFF;   //P0口送高电平,也就是关闭所有数码管的位选
        WEI=1;  //让位选的这个u2 74hc573处于直通状态,也就是输入0,输出也是0,输入1输出也是1
        WEI=0;  //锁存 也就是保持74hc573现在这个时刻的输出状态一直不变
}

*/

void main()
{


uchar N,T;
P2=0x75;

while(1)
{

for(N=0;N<40;N++) //循环扫描一遍40帧
for(T=0;T<60;T++) //移动速度 以后可做缓冲
{
d=0x01;
//out164(d);
for(i=0;i<8;i++)
{
P0=TAB[i+N];
delay(100);
d=d<<1|d>>7; //
P0=0xff; // 消隐,很重要,不加要红一片
out164(d);
}
}
}
}

此帖出自51单片机论坛

最新回复

有仿真吗  详情 回复 发表于 2018-5-7 15:33
点赞 关注
 

回复
举报

6069

帖子

4

TA的资源

版主

沙发
 
本帖最后由 damiaa 于 2016-9-2 16:54 编辑

k<<=1;     //就是将发送的数据左移1位 低位补0  d=d<<1|d>>7; //是把最高为放到最低位,其余7位左移一位,循环左移。因为<< >> 优先级大于| 所以这样不加括号没错。

此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
能不能发个仿真图,或图片,我想学学。
此帖出自51单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
有仿真吗
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表