这是一款51单片机16×16点阵源程序及仿真,可以实现滚动效果,程序及仿真文件压缩后放在51黑附件,需要一可以自己下载
1、仿真使用PROTEUS7.8以上版本打开。 2、程序需要Keil 4打开。
程序: - /*******************************/
- //功能: 用16*16点阵实现左移显示内容
- //使用74154 作为行选信号
- //使用74HC595作为列信号
- /*******************************/
- #include <reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define ROW P2
- /******位定义*******/
- sbit ST_CP = P3^2; //74HC_595的上升沿使其数据锁存
- sbit MR = P3^3; //74HC_595的复位端口
- uchar code disp[] = //需显示的字模表
- {
- 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,
-
- 0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30, //欢
- 0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
-
- 0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41, //迎
- 0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,
-
- 0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,0x40,0x00,0x20,0x08,0x18,0x04,0x0F,0x43, //你
- 0x08,0x80,0xC8,0x7F,0x08,0x00,0x08,0x01,0x28,0x06,0x18,0x0C,0x00,0x00,0x00,0x00,
-
- 0x10,0x40,0x10,0x20,0x10,0x1E,0xFF,0x01,0x10,0x20,0x10,0x40,0xF8,0x3F,0x10,0x00, //加
- 0x00,0x00,0xF8,0x7F,0x08,0x20,0x08,0x20,0x08,0x20,0xFC,0x7F,0x08,0x00,0x00,0x00,
-
- 0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x0C,0x01,0x03,0xE2,0x00,0x1C,0x00, //入
- 0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0xC0,0x00,0x40,0x00,0x00,
-
-
- 0x00,0x10,0x00,0x10,0xF8,0x17,0x49,0x12,0x4A,0x12,0x4C,0x12,0x48,0x12,0xF8,0xFF, //单
- 0x48,0x12,0x4C,0x12,0x4A,0x12,0x49,0x12,0xFC,0x13,0x08,0x18,0x00,0x10,0x00,0x00,
-
- 0x00,0x80,0x00,0x40,0xFE,0x3F,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01, //片
- 0x3F,0x01,0x20,0xFF,0x20,0x00,0x20,0x00,0x20,0x00,0x30,0x00,0x20,0x00,0x00,0x00,
-
- 0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0xFF,0x90,0x80,0x10,0x41,0x00,0x20,0xFC,0x1F, //片
- 0x04,0x00,0x04,0x00,0x04,0x00,0xFE,0x3F,0x04,0x40,0x00,0x40,0x00,0x70,0x00,0x00,
-
- 0x10,0x02,0x10,0x01,0x91,0x00,0xD6,0xFF,0x30,0x01,0x98,0x82,0x00,0x40,0x08,0x20, //初
- 0x08,0x18,0xF8,0x07,0x08,0x40,0x08,0x80,0x08,0x40,0xFC,0x3F,0x08,0x00,0x00,0x00,
-
- 0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E, //学
- 0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x06,0x30,0x04,0x00,0x00,
-
- 0x00,0x80,0x00,0x40,0x00,0x20,0x00,0x10,0x00,0x0C,0x01,0x03,0xE2,0x00,0x1C,0x00, //入
- 0xE0,0x00,0x00,0x03,0x00,0x0C,0x00,0x30,0x00,0x40,0x00,0xC0,0x00,0x40,0x00,0x00,
-
- 0x00,0x00,0xFC,0xFF,0x01,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x02,0x00,0x02,0x00, //门
- 0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x80,0xFF,0x7F,0x02,0x00,0x00,0x00,
-
- 0x00,0x00,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0x38,0x38,0x08,0x38,0x08,0x2C,0x08,0x2C, //QQ
- 0x08,0x2C,0x08,0x38,0x08,0x70,0x18,0x70,0xF0,0xDF,0xE0,0x4F,0xC0,0x07,0x00,0x00,
- 0x00,0x00,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0x38,0x38,0x08,0x38,0x08,0x2C,0x08,0x2C,
- 0x08,0x2C,0x08,0x38,0x08,0x70,0x18,0x70,0xF0,0xDF,0xE0,0x4F,0xC0,0x07,0x00,0x00,
-
- 0x10,0x04,0x92,0x02,0xFE,0xFD,0x92,0x44,0x92,0x44,0x92,0x44,0xFF,0xFE,0x12,0x04,//群
- 0x89,0x08,0x8A,0x08,0x8C,0x08,0xF8,0xFF,0x8C,0x08,0xCA,0x0C,0x89,0x08,0x00,0x00,
-
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F, // 104412917
- 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0x01,0xE0,0x0F,0xF0,0x1F,0xF0,0x1F,0x18,0x30,0x08,0x20,0x08,0x20,
- 0x08,0x20,0x08,0x20,0x18,0x30,0xF8,0x1F,0xF0,0x1F,0xE0,0x0F,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x80,0x05,0x80,0x04,0x40,0x24,0x20,0x24,
- 0x30,0x24,0xF0,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x80,0x05,0x80,0x04,0x40,0x24,0x20,0x24,
- 0x30,0x24,0xF0,0x3F,0xF8,0x3F,0xF8,0x3F,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F,
- 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x60,0x30,0x70,0x30,0x78,0x38,0x08,0x3C,0x08,0x34,0x08,0x36,
- 0x08,0x32,0x08,0x33,0x88,0x31,0xF8,0x31,0xF0,0x30,0x60,0x38,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xC0,0x00,0xF0,0x11,0xF0,0x3B,0x18,0x3B,0x08,0x32,0x08,0x22,0x08,0x22,
- 0x08,0x22,0x08,0x32,0x08,0x39,0xF8,0x1F,0xF0,0x0F,0xE0,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xF8,0x3F,
- 0xF8,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x18,0x00,0x08,0x00,0x08,0x3C,0x08,0x3E,
- 0x08,0x3F,0x88,0x01,0xC8,0x00,0x68,0x00,0x18,0x00,0x18,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 delay1ms( unsigned char t)
- {
- unsigned char i,j;
- for( ; t; t--)
- for(i=4; i>0; i--)
- for(j=123; j>0; j--);
- }
- void main()
- {
- uint base = 0; //在disp[]地址中移动,从0 到 rows - 15,每次加2,实现移动效果 用int类型 计数较多
- uchar tmp = 0; //临时变量,用于每个字显示的次数
- uint cols = sizeof(disp); //" 欢迎你来到桂林电子科技大学"共13个字符块,+两个清屏
- uchar row = 0; //行选线
- SCON = 0x00; //串口工作模式0;移位寄存器方式 ,P3.1送移位脉冲,P3.0连接串行数据线
-
- while(1)
- {
- for(base=0;base<=cols-32;base=base+2) //-32目的是用于显示最后一个字符后没有乱码出现
- {
- for(tmp=0;tmp<2;tmp++) //每个字块显示5次
- {
- for(row=0;row<16;row++)
- {
-
- MR = 0; //清理行输出,将移位寄存器的数据清0
- MR = 1;
- ST_CP = 0; //上升沿,将数据锁存
- ST_CP = 1;
- SBUF=disp[base+row*2];
- while(TI==0); //等待发送完毕,串口发送完毕后,TI==1;所以使其TI=1,停止中端
- TI = 0;
- SBUF=disp[base+row*2+1];
- while(TI==0); //等待发送完毕,串口发送完毕后,TI==1;所以使其TI=1,停止中端
- TI = 0;
- ST_CP = 0; //上升沿,将数据锁存
- ST_CP = 1;
- ROW = row; //行控制,使其点亮
-
- delay1ms(3); //3ms延时
- }
- }
- }
-
- }
- }
-
复制代码
|