使用74LS245驱动8×8LED点阵屏显示数字

使用8×8LED点阵屏显示数字。

  点阵取模使用软件PCtoLCD2002取模软件,使用74LS245驱动点阵。

取模方式:阴码、列行式、顺位、C51格式。

在这里插入图片描述

取模软件的设置:

在这里插入图片描述

电路原理图:

在这里插入图片描述

代码:

/*	名称:8X8LED点阵显示数字
	说明:8X8LED点阵屏循环显示数字0~9,刷新过程由定时器中断完成。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code Table_of_Digits[]=
{
	0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,		//0  
	0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,		//1
	0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,	//2
	0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,	//3
  0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,		//4
	0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,		//5
	0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00,		//6
	0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,		//7
	0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,	//8
	0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00		//9
};
uchar i=0,t=0,Num_Index;
//主程序
void main()
{
	P3=0x80;				
	Num_Index=0;			//从0开始显示
	TMOD=0x00;				//T0方式0
	TH0=(8192-2000)/32;		//2ms定时
	TL0=(8192-2000)%32;
	IE=0x82;
	TR0=1;					//启动T0
	while(1);
}
//T0中断函数
void LED_Screen_Display() interrupt 1
{
	TH0=(8192-2000)/32;		//恢复初值
	TL0=(8192-2000)%32;
	P0=0xff;				//输出位码和段码
	P0=~Table_of_Digits[Num_Index*8+i];
	P3=_crol_(P3,1);
	++i;
	if(i==8) 
	{
		i=0;			//每屏一个数字由8个字节构成
	}
	++t;
	if(t==250)			//每个数字刷新显示一段时间
	{
		t=0;
		++Num_Index;
		if(Num_Index==10) 
		{
			Num_Index=0;	//显示下一个数字
		}
	}
}

效果截图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45488643/article/details/105945155
今日推荐