⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16-16.c

📁 几年搜的LED显示屏程序大全20多个实例带仿真.rar
💻 C
字号:
//proteus仿真论坛:http://proteus.5d6d.com
#include <AT89X52.H>
#include <intrins.h>				//要用到 _nop_()
#define uint unsigned int
#define uchar unsigned char

sbit E1 	=P3^4;		//74HC154(18)-E1 为0开列(col)输出  显示允许控制信号端口
sbit ST_CP	=P3^2;		//74HC595(12)-ST_CP 上升沿--移位寄存器的数据进入数据存储寄存器 输出锁存器的时钟信号端口
sbit MR 	=P3^3; 		//74HC595(10)-MR 为0将移位寄存器的数据清0


uchar code bmp[32*6]={	//字模表
										  
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,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,
0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"单",2*/

0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,
0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",3*/

0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,
0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00,/*"机",4*/

0x40,0x00,0x20,0x00,0x10,0x00,0xEC,0x7F,0x07,0x40,0x0A,0x20,0x08,0x18,0x08,0x06,
0xF9,0x01,0x8A,0x10,0x8E,0x20,0x88,0x40,0x88,0x20,0xCC,0x1F,0x88,0x00,0x00,0x00,/*"仿",5*/

0x00,0x10,0x04,0x90,0x04,0x90,0x04,0x50,0xF4,0x5F,0x54,0x35,0x5C,0x15,0x57,0x15,
0x54,0x15,0x54,0x35,0x54,0x55,0xF4,0x5F,0x04,0x90,0x06,0x90,0x04,0x10,0x00,0x00,/*"真",6*/
};

void delayXms(uchar ms);

void main()
{
	uchar base=0;				//在bmp地址中移动,从0 到 rows - 15,每次加2,实现移动效果
//	uchar cur=0;				//显示base位置以后的一个字符宽度,16列,每列16bit
	uchar tmp=0;				//临时变量
	uchar rows=sizeof(bmp);		//" ",单,片,机,仿,真共6个字符块,每个16*16,共rows=96列
	uchar col=0;				//列选线
	SCON = 0x00;				//串口工作模式0;移位寄存器方式

	MR=1;
	while(1)
	{
		 for(base=0;base<=rows;base=base+2)
		 {
		 	for(tmp=0;tmp<5;tmp++) //每个字块显示5次
			{
				for(col=0;col<16;col++)
				{
					E1=0;			   	//开154移位 列
					MR=0;				//清理行输出,将移位寄存器的数据清0
					MR=1;
					ST_CP=0;			//上升沿
					ST_CP=1;				
					SBUF=bmp[base+col*2];
					while(TI==0);		//等待发送完毕
					T1 = 0;

					SBUF=bmp[base+col*2+1];
					while(TI==0);		//等待发送完毕
					T1 = 0;

					
					P1=col;				//列控制
					ST_CP=0;			//上升沿
					ST_CP=1;

					
					delayXms(2);		//显示2ms
				}
			}
		 }
	}
}
void delayXms(uchar ms)       		// 延时毫秒@12M,ms最大值255   
{   
    uchar i;   
    while(ms--)   
        for(i = 0; i < 124; i++);   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -