资源简介

16x16 LED点阵 驱动 74hc164 74hc595 动态显示 亲测能用 放心下载

资源截图

代码片段和文件信息


/*16*16点阵屏的显示*/

#include 
#include 

#define DATAOUT P2 //指定P2口做为输出
sbit DATA=DATAOUT^0; //行数据输出位
sbit SCLH=DATAOUT^1; //行扫描时钟位
sbit SCLT=DATAOUT^2; //行数据锁存位
sbit AB=DATAOUT^3; //列数据输出位
sbit SCK=DATAOUT^4; //列扫描时钟位


unsigned char lhj[32];//32字节RAM做为16*16点阵屏显示缓存
void display();//做为点阵扫描函数,将显示缓存的数据输出到点阵屏
void displayS(unsigned int timer);//指定时间扫描显示
void displaymove(unsigned char *lpunsigned char cunsigned char timer);//显示汉字内容的移动效果,LP指向要显示第一个字的首地址,C表示显示字的个数,
//timer是移动的速度
void displaymovetb(unsigned char dinunsigned char *lpunsigned char timer);
//上下移动内容,din:1为向下,0为向上,lp指向要移入的内容,timer为移动速度
void delay(unsigned int a);//延时子函数



code unsigned char jin[32]={//汉字“星“的点阵数据。汉字点阵数据,可用汉字库点阵生成软件获得
0x000x000x1F0xF00x100x100x1F0xF00x100x100x1F0xF00x010x000x110x00
0x1F0xF80x210x000x410x000x1F0xF00x010x000x010x000x7F0xFC0x000x00
};
code unsigned char chuang[32]={//轨
0x200x800x200x800x200x800xFC0x800x430xF00x500x900x900x900xFC0x90
0x100x900x100x900x1C0x900xF00x920x510x120x110x120x120x0E0x140x00
};
code unsigned char dian[32]={//宇
0x020x000x010x000x7F0xFE0x400x020x800x040x3F0xF80x010x000x010x00
0x010x000xFF0xFE0x010x000x010x000x010x000x010x000x050x000x020x00
};
code unsigned char zi[32]={//宙
0x020x000x010x000x7F0xFE0x400x020x810x040x010x000x3F0xF80x210x08
0x210x080x210x080x3F0xF80x210x080x210x080x210x080x3F0xF80x200x08
};
code unsigned char LY[32]={//图案数据
0x000x000x000x000x800x200xE00x300x700x380x3C0x3C0x1E0x3E0x0F0xBF
0x070xFF0x0F0xBF0x1E0x3E0x3C0x3C0x700x380xE00x300x800x200x000x00
};
/*************************************************************************
  函数名:main()
    功能:
入口变量:
出口变量:
*************************************************************************/
void main(void)  //主入口函数
{
unsigned char i=0j=0;

for(i=0;i<32;i++)
lhj[i]=LY[i];//将图案数据复制到显示缓存
while(1)
{
displayS(2); //显示图案约2秒
displaymovetb(0jin10); //将“精“字以10的速度移动
displaymovetb(0chuang10); //将“创“字以10的速度移动
displaymovetb(0dian10); //将“电“字以10的速度移动
displaymovetb(0zi10); //将“子“字以10的速度移动
displaymovetb(0010); //以10的速度向上清空
displayS(1); //等待1秒
displaymovetb(1LY10); //将“图案“以10的速度向下移动
displaymove(jin47);//将从“精“开始的四个汉字从右向左移动
displayS(1); //等持约1秒
displaymovetb(1010); //将点阵上显示的内容向下以10的速度移出,补上0,即清空显示屏
displayS(1); //等待1秒

}
}
/*************************************************************************
  函数名:display()
    功能:显示驱动芯片操作
入口变量:无
出口变量:无
*************************************************************************/
void display()//显示
{
unsigned char iiajtmp; //定义变量
DATAOUT=0XFF; //置位高电平做准备
AB=0; //将列数据位清0,准备移位
for(i=0;i<16;i++)
{ //循环输出16行数据
SCK=0; //为列移位做准备
SCLT=0; //为行锁存做准备
for(ia=2;ia>0;)
{ //每行16个点,循环位移

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-10-15 19:50  16_16点阵b\
     文件       11168  2012-10-25 19:40  16_16点阵b\LED8.OBJ
     文件        8840  2012-10-25 19:40  16_16点阵b\LED8.c
     文件        8907  2012-10-25 19:40  16_16点阵b\lhj
     文件        1658  2012-10-23 19:14  16_16点阵b\lhj.Uv2.bak
     文件        2896  2012-10-25 19:40  16_16点阵b\lhj.hex
     文件          47  2012-10-25 19:40  16_16点阵b\lhj.lnp
     文件        1166  2012-10-23 19:14  16_16点阵b\lhj.opt.bak
     文件        1777  2012-10-25 19:40  16_16点阵b\lhj.plg
     文件       73654  2012-10-25 20:11  16_16点阵b\lhj.uvopt
     文件       13193  2012-10-25 18:44  16_16点阵b\lhj.uvproj
     文件        1287  2009-05-28 18:57  16_16点阵b\lhj_Opt.Bak
     文件        1988  2009-05-28 18:57  16_16点阵b\lhj_Uv2.Bak
     文件       73647  2012-10-25 19:40  16_16点阵b\lhj_uvopt.bak

评论

共有 条评论