#include<reg51h>
#include<intrinsh>
void delay(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
main()
{
unsigned char led1=0xfe,led2=0x7f;
while(1)
{
P0=_crol_(led1);
P1=_cror_(led2);
delay(100);
}
}这种LED屏显示汉字,虽然所显示的汉字静止的,但显示时却是动态扫描的。而要移动显示,看你是怎么汉字取模的。按行取模可以向上移动,按列取模才可以向左移动。以按列取模为例,每个字的字模表中第1,2字节送LED屏第一列显示,依次显其余15列。假如显示05秒(时间可以调),再取字模的第3,4字节,还送LED屏第一列显示,依此显示其余14列,再显示第2个字的第一列。就这样,不断取下一组点阵数据。效果就是汉字向左移动了。汇编忘记了
c的话 dat<<1
不是每秒循环左移,1代表左移1位,超出部分忽略
--------------
常用的场合:
u8 a;
for( u8 i=0,j=0x01; i<8; i++,j<<=1 )
{
if( a&j )
{
//a的第i位为1
}
}
-----------------
运算的时候也常用到 左移一位 只要不超出范围 相当于×2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)