单片机驱动点阵16*16综合C程序-包含各种效果
,0x50,0x14,0x7C,0x7F,0x50,0x55,0x90,0x55,0x10,0x57,0xFE,
0x61,0x04,0x41,0x7E,0x41,0x44,0x7F,0x44,0x41,0x44,0x41,0x44,0x7F,0x7C,0x41,0x44,
0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x10,
0x1F,0xF8,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x50,0x10,0x20,
0x00,0x00,0x00,0x10,0x3F,0xF8,0x04,0x10,0x04,0x14,0xFF,0xFE,0x04,0x10,0x04,0x10,
0x3F,0xF0,0x04,0x10,0x04,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/************************************************************/
/*************************右覆盖数组************************/
/************************************************************/
uchar code table2[]={
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00
};
/************************************************************/
/*************************左覆盖数组************************/
/************************************************************/
uchar code table3[]={
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,
0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00
};
/*****************************************/
/*****************延时子程序*************/
/***************************************/
void delay(uchar z)
{
uchar x,y;
for(x=2;x>0;x--)
for(y=z;y>0;y--);
}
/*****************************************/
/**************74HC595送数子程序********/
/***************************************/
void song(uchar z)//带参数函数
{
uchar num,hang;//定义变量
hang=z;//将形参给变量
for(num=0;num<8;num++)//移动8次将数据发送完毕
{
if(hang&0x01==1)//将高7位屏蔽掉,保留最低位判断
DATA=1;//为1就将74HC595数据端置1
else
DATA=0;//否则给0
CLK=0;//上升沿送走数据
CLK=1;//高电平形成上升沿
hang>>=1;//将数移走一位
}
}
/************************************************************/
/************************************************************/
/**************************间断显示***************************/
/************************************************************/
/************************************************************/
void jian()
{
while(word<128)//要显示多少字?
{
for(move=150;move>0;move--)//字间断显示的速度
{
ji=word;
for(line=0;line<16;line++)
{
song(~table[ji*2+1]);//先右半屏
song(~table[ji*2]);//再左半屏
ji++;//下一行
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;//打开列
delay(17);
}
}
word=ji;
}
}
/************************************************************/
/************************************************************/
/**************************上移显示***************************/
/************************************************************/
/************************************************************/
void shang()
{
while(word<128)
{
for(move=20;move>0;move--)
{
ji=word;//将变量存起来
for(line=0;line<16;line++)
{
song(~table[ji*2+1]);
song(~table[ji*2]);
ji++;
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;
delay(5);
}
}
word+=1;//数组数增加一行,形成上移
}
}
/************************************************************/
/************************************************************/
/**************************下移显示***************************/
/************************************************************/
/************************************************************/
void xia()
{
while(word>1)
{
for(move=20;move>0;move--)
{
ji=word;//给倒数第2个字位置地址码给ji变量
for(line=0;line<16;line++)
{
song(~table1[ji*2+1]);//发右半屏数 注意这是数组1的代码
song(~table1[ji*2]);//发左半屏数
ji++;
CLKR=1;//在74HC595处锁存起来
CLKR=0;
CLKR=1;
LINE=line;
delay(5);
}
}
word-=1;//数组数减1一行,形成下移
}
}
/*****************************************
单片机驱动点阵16*1 相关文章:
- 51单片机驱动点阵16*16上移C程序(11-29)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)