游客
主题
回帖0
积分47
阅读权限1
注册时间2012-7-31
最后登录1970-1-1
在线时间 小时
|
回复 58# 356053261
楼主,听不懂呢,麻烦你先帮我看看我的16*16显示汉字上移的程序,显示闪烁厉害,而且显示的汉字是反的。。。
# include <reg52.h>
# define uint unsigned int
# define uchar unsigned char
sbit Data=P0^0;//数据输入口
sbit CLK=P0^1; //时钟信号
sbit STB=P0^2; //锁存端
sbit G=P0^3;
uchar code table[]={
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x00,0x80,0x7F,0xFF,0x7F,0xFF,
0xBF,0xFE,0xBF,0xFE,0xDF,0xFD,0xDF,0xFD,0xEF,0xFB,0xF7,0xF7,0xFB,0xEF,0xFC,0x9F,/*"大",2*/
0xBB,0xEF,0x77,0xEF,0x77,0xF7,0xFF,0xFB,0x01,0x80,0xFD,0xBF,0xFE,0xDF,0x07,0xF8,
0xFF,0xFD,0x7F,0xFE,0x00,0x80,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x5F,0xFF,0xBF,0xFF,/*"学",3*/
};
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
//===写一个字节数据===//
void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
dat=dat>>1;//右移一位使最低位进入移位寄存器CY中
Data=CY;
CLK=0;
CLK=1; //上升沿数据寄存器数据移位
}
}
void main()
{
uint num,move,speed;
G=0;
//speed=0;
//move=0;
while(1)
{
if(++speed>8)
{
speed=0;
move++;
if(move>32)
{
move=0;
}
}
for(num=0;num<16;num++)
{
write_byte(table[2*num+move*2]);
write_byte(table[2*num+1+move*2]);
P1=num;
STB=1;
STB=0;
delay(2);
}
}
}
while里面的程序,不是很懂,尤其红色的,麻烦楼主啦。。谢谢。。。 |
|