实训目的:
1、编写程序通过控制51单片机引脚,在8*8LED点阵上显示循环依次显示0-9几个数字
实训步骤:
(一)LED点阵的应用
电路连接如下:
主要器件:AT89C51、RES、RESPACK-8,MATRIX-8X8-GREEN
程序代码如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define unit unsigned int
{
0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x38,
0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x38,
0x00,0x38,0x44,0x04,0x08,0x10,0x20,0x7c,
0x00,0x38,0x44,0x04,0x38,0x04,0x44,0x38,
0x00,0x08,0x18,0x28,0x48,0x7c,0x08,0x08,
0x00,0x7c,0x40,0x40,0x38,0x04,0x44,0x38,
0x00,0x38,0x44,0x40,0x78,0x44,0x44,0x38,
0x00,0x7c,0x04,0x04,0x08,0x10,0x10,0x10,
0x00,0x38,0x44,0x44,0x38,0x44,0x44,0x38,
0x00,0x38,0x44,0x44,0x3c,0x04,0x44,0x38,
};
uchar i=0,t=0,h=0,num_index=0,k;
void main()
{
P3=0x80;
num_index=0;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
IE=0x82;
while(1);
}
void led_screen_display() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
P3=_crol_(P3,1);
k=(num_index*8+i+h)%80;
P0=~table_of_digits[k];
i++;
i=i%8;
t++;
if(t%31==0) h=++h%8;
if(t==248)
{
t=0x00;
if(++num_index==10) num_index=0;
}
}