当前位置:首页 > LED点阵心形流水灯礼品设计
点阵依次显示 葛静宝宝生日心形流水灯一个接一个亮起
点阵流动显示生日快 100806040200第一季度第三季度心形流水灯一个间隔一个亮起 东部西部北部心形流水灯全亮然后全灭 返回开始 4 部分程序源代码 点阵单片机程序
/**********************************************************************/ #include
#define uchar unsigned char #define uint unsigned int
uchar N=7; // N 表示有多少个汉字, 如要加多个字,只需改动N的值即可
7
sbit DS=P1^0; //74HC595串行数据 sbit STcp=P1^1; //74HC595并行输出时钟 sbit SHcp=P1^2; //74HC595串行时钟 sbit CS=P1^3; //74HC154输出有效信号
//=============P2口作为74HC154的选择控制数据输入================= //=============P2口整体控制A0--A4,所以无需单独控制每个信号=========== //sbit A0=P3^0; //sbit A1=P3^1; //sbit A2=P3^2; //sbit A3=P3^3;
//===========================字模表============================== //================取模方法:阴码,逆向,逐行======================== //============================================================== uchar code Hanzi[]= { /*
0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,
0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40,//*\我\
0x00,0x1F,0xFC,0x09,0x48,0x08,0x90,0x04,0xFC,0x7F,0x44,0x40,0x42,0x00,0xFC,0x3F,
0x20,0x00,0xE0,0x0F,0x30,0x04,0xD0,0x02,0x08,0x03,0xC6,0x0C,0x31,0x70,0x0C,0x20,//*\爱\
0x90,0x00,0x90,0x01,0x88,0x20,0xC8,0x7F,0x44,0x20,0x2C,0x12,0x16,0x02,0x45,0x0A,
0xC4,0x12,0x44,0x12,0x24,0x22,0x24,0x62,0x14,0x22,0x84,0x02,0x04,0x01,0x00,0x00,//*\你\*/
0x60,0x02,0x1C,0x0A,0x10,0x12,0x10,0x12,0x10,0x02,0xFF,0x7F,0x10,0x02,0x10,0x12,
0x70,0x14,0x1C,0x0C,0x13,0x04,0x10,0x0A,0x90,0x49,0x10,0x50,0x14,0x60,0x08,0x40,/*\我\
/* (16 X 16 , 宋体 )*/
0x00,0x1F,0xFC,0x09,0x48,0x08,0x90,0x04,0xFC,0x7F,0x44,0x40,0x42,0x00,0xFC,0x3F,
0x20,0x00,0xE0,0x0F,0x30,0x04,0xD0,0x02,0x08,0x03,0xC6,0x0C,0x31,0x70,0x0C,0x20,/*\爱\
/* (16 X 16 , 宋体 )*/
0x90,0x00,0x90,0x01,0x88,0x20,0xC8,0x7F,0x44,0x20,0x2C,0x12,0x16,0x02,0x45,0x0A,
0xC4,0x12,0x44,0x12,0x24,0x22,0x24,0x62,0x14,0x22,0x84,0x02,0x04,0x01,0x00,0x00,/*\你\
/* (16 X 16 , 宋体 )*/
8
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x08,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,0x00,0x00, };
//====================延时程序========================== void delay(uint N) {
uchar i; uint j;
for(j=0;j
//=====================逐行测试============================== //=================目的:查看有无坏点======================== void display_test(uchar N) {
uchar i,j;
for(j=0;j<100;j++) { DS=0; //整行显示 for(i=0;i<16;i++) { SHcp=0; SHcp=1; } STcp=0; STcp=1; P3=N; CS=0; delay(10); //本程序太长,省去部分,需要完整程序请 CS=1; //联系QQ154401855(或154401856)下载 } }
//++++++++++++++++++++++++++++++静态显示+++++++++++++++++++++++++++++++ //====================++++++++++显示程序=============================== // N表示传递过来的第几个文字,一个文字占32个字节,所以M为32的倍数
//===================================================================== void display_state(uchar M) {
uchar i,j,n,cont=0;
9
uchar temp;
for(n=0;n<50;n++) //重复显示50次,以便能清楚显示 { for(i=0;i<16;i=i+2) { temp=~Hanzi[M+i+16]; //取一字模数据存放于temp,高8位 //进行8次转换,使8位并行数据转换为串行数据 for(j=0;j<8;j++) { if(temp&0x80) //并行数据转为串行数据,高位在前 DS=1; else DS=0; SHcp=0; SHcp=1; //SHcp上升沿锁存一位数据 temp=temp<<1; //左移一位,进行下一次转换 } temp=~Hanzi[M+i]; //取一字模数据存放于temp,低8位 //进行8次转换,使8位并行数据转换为串行数据 for(j=0;j<8;j++) { if(temp&0x80) //并行数据转为串行数据,高位在前 DS=1; else DS=0; SHcp=0; SHcp=1; //SHcp上升沿锁存一位数据 temp=temp<<1; //左移一位,进行下一次转换 } STcp=0; STcp=1; //STcp上升沿使8位数据并行输入 P3=cont; //cont计数器作为74HC154的选择信号,由P2口输出 CS=0; //74HC154 使能,开启显示 delay(2); //延时一下,以便有足够的点亮时间 CS=1; //关显示,不关显示会出现花屏现象 cont++; //cont计数器加一 } for(i=1;i<16;i=i+2) { temp=~Hanzi[M+i+16]; for(j=0;j<8;j++) { if(temp&0x80)
10
共分享92篇相关文档