8X8LED点阵数字显示程序解析与实现
本示例通过proteus进行仿真,展示8X8LED点阵屏如何循环显示数字0至9。刷新显示的过程由定时器中断控制,实现流畅的数字切换效果
在主程序中,首先将P3端口设置为0x80,以确保后续操作的顺利进行。设置TMOD为0x00以选择T0方式0进行定时,通过计算TH0和TL0的值为2ms定时。最后,IE寄存器设置为0x82以启用T0中断,启动T0定时器后进入无限循环等待中断事件。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code shizi[][8]=
{
0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00,//0
0x08,0x0C,0x08,0x08,0x08,0x08,0x1C,0x00,//1
0x1C,0x10,0x08,0x04,0x1C,0x00,0x00,0x00,//2
0x20,0x20,0x3C,0x20,0x20,0x3C,0x00,0x3C,//3
0x12,0x12,0x12,0x7E,0x10,0x10,0x10,0x00,//4
0x04,0x04,0x3C,0x20,0x20,0x24,0x3C,0x1C,//5
0x04,0x04,0x04,0x3C,0x24,0x24,0x3C,0x04,//6
0x1E,0x10,0x10,0x10,0x10,0x10,0x00,0x00,//7
0x22,0x22,0x3E,0x22,0x22,0x3E,0x00,0x3E,//8
0x22,0x22,0x3E,0x20,0x20,0x20,0x30,0x3E //9
};
uint i=0,t=0,b=0;
//主程序
void main()
{
P3=0x80;
b=0;
TMOD=0X00;
TH0=(8192-2000)/32;
TL0=(8192-2000)%32;
TR0=1;//定时器T0的运行控制位,置1为开始运行
IE=0X82;//EA: 总中断允许位//ET0:定时器T0允许位
while(1);
}
void zheping_xiaoshi() interrupt 1
{
TH0=(8192-2000)/32;
TL0=(8192-2000)%32;
P3=_crol_(P3,1);
P2=shizi[b][i];
if(++i==8)i=0;//扫描每一个字
if(++t==500)
{
t=0x00;
if(++b==10) b=0;//切换数字
}
}
通过网盘分享的文件:8X8LED点阵数字显示程序
链接: https://pan.baidu.com/s/13Dx8XOakQIIZwOBdW-TfBg 提取码: wdip








最新发布