1、在8*8点阵上显示一个字符
2、在8*8点阵上显示一个字符--程序编写和仿真
3、在8*8点阵上循环显示0-9--程序编写和仿真
显示“B”参考程序:
#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
#define ROW P1 //定义P1口为行数据
#define COL P0 //定义P0口为列数据
uchar code led[]={0xff,0xe1,0xdd,0xdd,0xe1,0xdd,0xdd,0xe1}; //B
uchar i;
/*-------------------------
函数名称:delay_ms
形 参:uint n:延时时间的长度
功 能:软件延时,延时的单位时间在1ms左右
返 回 值:无
-------------------------*/
void delay_ms(uint n)
{
uint i;
uchar j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);
}
/*-------------主函数----------*/
void main()
{
uchar w;
while(1)
{
w=0x01; //行变量w指向第一行 ,//行数据送P1口
for(i=0;i<8;i++)
{
ROW=~w; //行数据送P1口
COL=~led[i]; //列数据送P0口
delay_ms(100);
w<<=1; //行变量左移一位指向下一行
}
}
}
循环显示“0-9”参考程序:
//程序:ex5_3.c
//功能:在8×8LED点阵上循环显示数字0~9
#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
#define ROW P1
#define COL P0
uchar code led[]={0x18,0x24,0x24,0x24,0x24,0x24,0x18,0x00, //0
0x18,0x1c,0x18,0x18,0x18,0x18,0x3e,0x00, //1
0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e,0x00, //2
0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e,0x00, //3
0x30,0x38,0x34,0x32,0x3e,0x30,0x30,0x00, //4
0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e,0x00, //5
0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c,0x00, //6
0x3e,0x30,0x18,0x18,0x0c,0x0c,0x0c,0x00, //7
0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c,0x00, //8
0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c,0x00,}; //9
/*-------------------------
函数名称:delay_ms
形 参:uint n:延时时间的长度
功 能:软件延时,延时的单位时间在1ms左右
返 回 值:无
-------------------------*/
void delay_ms(uint n)
{
uint i;
uchar j;
for(i=0;i<n;i++)
for(j=0;j<120;j++);
}
/*-------------主函数----------*/
void main()
{
uchar w;
uint i,j,k,m; //k表示循环显示字符个数;
//m表示每个字符循环扫描次数,即每个字符显示时间
while(1)
{
for(k=0;k<10;k++) //字符个数控制变量
{
for(m=0;m<10;m++) //每个字符扫描显示20次,控制每个字符显示时间
{
w=0x01; //行变量w指向第一行
j=k*8; //指向数组led的第k个字符第一个显示码下标
for(i=0;i<8;i++)
{
ROW=w; //行数据送P1口
COL=led[j]; //列数据送P0口
delay_ms(10);
w<<=1; //行变量左移指向下一行
j++; //指向数组中下一个显示码
}
}
}
}
}

