单片机点阵怎么实现左移右移,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机点阵怎么实现左移右移,谢谢相关的知识,希望对你有一定的参考价值。

下面这个程序是点阵程序,依次显示6,7,8,9,我想让他们从左到右移动依次显示,想知道怎么改,或者提供思路,谢谢。
#include<reg51.h>
unsigned char code tab[8]=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,; //列选通控制,0有效
unsigned char tab1[4][8]=
0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00, //6
0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, //7
0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00, //8
0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00 //9

unsigned char tt=0;
unsigned char i,j; //i定义列,j定义行
/**************************扫描延时********************************/
void delay()

int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);

/***********************主函数*************************/
void main(void)

while(1)

for(i=0;i<8;i++)


P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j][i];
delay(); //扫描时间

tt++;
if(tt==20) //间隔2s变化字符

tt=0;
j++;
if(j==4)
j=0;


左移和右移其实就是显示时调用数组的起始地址在变化,你可以设置一个偏移地址根据偏移地址来实现左右移(左右移是相当于不断的刷新整个屏幕)。追问

能不能在上面的程序中帮我改写一下,谢谢,程序不长

参考技术A #include<reg51.h>
unsigned char code tab[8]=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,; //列选通控制,0有效
unsigned char tab1[4][8]=
0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00, //6
0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, //7
0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00, //8
0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00 //9

unsigned char tt=0;
unsigned char i,jk; //i定义列,j定义行,k定义移动变量
/**************************扫描延时********************************/
void delay()

int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);

/***********************主函数*************************/
void main(void)

while(1)

for(i=0;i<8;i++)


P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j+k][i];
delay(); //扫描时间

tt++;
if(tt==20) //间隔2s变化字符

k++;
if(k==4)

k=0;

tt=0;
j++;
if(j==4)
j=0;


本回答被提问者采纳

Java负整数的左移右移无符号右移

转自  Java负整数的左移、右移、无符号右移

 

Java负整数的左移、右移、无符号右移。正数的位移没有涉及到符号,而且正数的原码、反码、补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆。

 

Java的<<  >>   >>> 都是针对补码来进行的,因为Java只存储补码。

例如对整数-3进行<<  >> >>>运算做说明。

 

整数-3的二进制

原码为 10000000 00000000 00000000 00000011

反码为 11111111 11111111 11111111 11111100

补码为 11111111 11111111 11111111 11111101

Java存储的整数-3即为11111111 11111111 11111111 11111101,

 

1、

对-3左移3位     -3<<3

<<     >> 都是要关照符号位的,所以

11111111 11111111 11111111 11111101 左移3位后为

11111111 11111111 11111111 11101000 ,

原码为:10000000 00000000 00000000 00100111,转为整数即-24

 

2、

对-3右移3位     -3>>3 ,

就是对-3的补码11111111 11111111 11111111 11111101右移3位,结果为:

1 111 1111111 11111111 11111111 11111,由于是负数,高位需要补1(正数高位补0),而

1 111 1111111 11111111 11111111 11111

的原码为10000000 00000000 00000000 00000001,结果为-1,所以-3>>3的结果整数值为-1

 

 

3、

对-3进行无符号右移, -3>>>3,由于>>>是不顾符号的,高位全部补0,

11111111 11111111 11111111 11111101 无符号右移3位为

000 11111111 11111111 11111111 11111

由于无符号右移之后为正数,正数的补码和原码是一致的,所以 -3>>>3的值即为

000 11111111 11111111 11111111 11111

的值,变成整数输出为:0*2^31+0*2^30+0*2^29+1*2^28+1*2^27+.....+1*2^1+1*2^0=536870911

原文地址:https://www.cnblogs.com/sunjie-one/p/8818901.html

以上是关于单片机点阵怎么实现左移右移,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

jQuery实现左移右移

jQuery练习--[实现左移右移功能,实现列表动态新增,删除功能;实现表格隔行变色,选中时高亮显示.]

嵌入式C开发---用循环实现左移右移

51单片机按键控制流水灯

左移右移小结(转)

位运算符——左移右移