基于Proteus的8×8LED点阵实验

1,8×8LED点阵简介

一个数码管是8个 LED 组成,同理,一个8×8的点阵就是由64个 LED 小灯组成。以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。
实物图如下:
基于Proteus的8×8LED点阵实验_第1张图片

2点阵接法分类

点阵的接法有共阴和共阳两种
(共阳指的是对每一行LED来讲是共阳)共阴则相反。
如下图所示:基于Proteus的8×8LED点阵实验_第2张图片

3点阵显示方法

显示的方法有两种:
1、逐行扫描方式。以本实验为例:P2口输出行码决定哪一行能亮(相当于位码),P3口输出列码(行数据)决定行上哪些LED亮(相当于段码),能亮的行从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。
2、逐列扫描方式,与逐行扫描调换,即P3口输出位码,P2口输出段码,扫描完8行显示出一帧图像。

4点阵按键显示数字0~9(代码)

#include	//定义头文件
#define  uchar unsigned char ;   //宏定义
#define  uint unsigned int;

sbit key0=P1^0;	  //设置按键

uchar  num=0 ,flag=0;//全局变量
uchar  code tab[]={
     0x00,0x7E ,0xFF,0xC3,0xC3,0xFF,0x7E,0x00, //0
					0x00,0x00,0x43,0xFF,0xFF,0x03,0x00,0x00, //1
					0x00,0x63,0xC7,0xCF,0xDB,0xF3,0x63,0x00, //2
					0x00,0x42,0xDB,0xDB,0xDB,0xFF,0x66,0x00, //3
					0x00,0x3E,0x46,0xFF,0xFF,0x06,0x06,0x00, //4
					0x00,0xF6,0xF7,0xD3,0xD3,0xDF,0xDE,0x00, //5
					0x00,0x7E,0xFF,0xDB,0xDB,0xDF,0x4E,0x00, //6
					0x00,0xC0,0xC0,0xC7,0xFF,0xF8,0xC0,0x00, //7
					0x00,0xFF,0xFF,0xDB,0xDB,0xFF,0xFF,0x00, //8
					0x00,0x72,0xFB,0xDB,0xDB,0xFF,0x7E,0x00, //9
					};	// 列,段选

uchar  row[]={
     0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//行,位选

void key()	  //按键子函数
{
     
	if(flag==0&&key0==0)	//设置标志位flag初值为0,
	{
     
	flag=1;	  //当按键按下,就令标志位为1
	}

	if(flag==1&&key0==1)	//按键弹起
	{
     
	num++;		
	flag=0;	  //恢复标志位为0;
	}
	if(num==10)	  //使10个数字逐个显示完后,num从新开始
	{
     
	num=0;
	}
}

void TEMP()		 //逐个显示数字
{
     
	int i=0;
	for(i=8*num;i<8*(num+1);i++) //i=0,8,16...
	{
     
	P2=~row[i-8*num];
	P3=tab[i];
	}
}

void main()		 //主函数
{
     	
	while(1)
	{
     
	    TEMP();		  
		key();
	  }	
}

Proteus仿真电路图

基于Proteus的8×8LED点阵实验_第3张图片
附件:0~9点阵数值
基于Proteus的8×8LED点阵实验_第4张图片

你可能感兴趣的:(单片机)