p2=0x01
//起始行高电平
for(i=0i<8i++)
//循环点亮8行,循环送8次数据
{
p1=tab[i]
delay(100)
//每行点亮时送上相应的显示数据(即tab[i]里的数据)
p2=p2<<1|p2>>7
//
点亮下一行
其实点阵显示就是:(针对16*16点阵显示一个汉字)
静止的显示就是扫第一行时送汉字的第一行,扫第二行时送汉字的第二行...扫第16行时送汉字的第16行,这叫第一帧扫完。如果想让字动那么扫第二帧时,行扫描第一行时,送汉字的第二行数据,行扫描第二行时,送汉字的第三行数据...就这样错开一行,再下一帧时再错开一行,直至错开16次一个完整的字就上移至上面了。
总的说来就是一帧一帧的显示,每帧显示汉字的一个画面,重叠在一起就看见字在动了。
#include<reg52.h>//单片机头文件void delay1ms(unsigned int ms)//延时ms函数声明(可根据实际情况更改)
unsigned char code led0[]={}//字码表,你自己把你要显示的字码放进去就可以了
void main()
{
unsigned char w,i
while(1)
{
//显示0
w=0x01 //行变量为第一行
for(i=0i<8i++)
{
P1=w //行数据送P1口
P0=led0[i]
delayms(1) //列数据送P0口
w<<=1 //向下移动一行
}
}
}
void delay1ms(unsigned int ms)
{
unsigned int i,j
for(i=0i<msi++)
for(j=0j<110j++)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)