一、8点阵:循环显示数字0~9
#include "reg51.h"
void delay(unsigned int i);
void main()
{
unsigned char code led[10][8]={{0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x18},//0
{0x00,0x18,0x1c,0x18,0x18,0x18,0x18,0x18}, //1
{0x00,0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e}, //2
{0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e}, //3
{0x00,0x30,0x38,0x34,0x32,0x3e,0x30,0x30}, //4
{0x00,0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e}, //5
{0x00,0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c}, //6
{0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x0c}, //7
{0x00,0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c}, //8
{0x00,0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c}};//9
unsigned char w;
unsigned int j,k,m;
while(1)
{
for(k=0;k<10;k++) //0~9
{
for(m=0;m<200;m++){
w=0x01;
for(j=0;j<8;j++){
P1=w;
P0=~led[k][j];
delay(100);
w<<=1;
}
}
}
}
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
二、8点阵:显示数字0
#include "reg51.h"
void delay(unsigned int i);
void main()
{
unsigned char code led[]={0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x18};
//"0"的字型显示码
unsigned char w;
unsigned int i;
while(1)
{
w=0x01; //行初值为0x01
for(i=0;i<8;i++)
{
P1=w; //行数据送P1口
P0=~led[i]; //列数据送P0口
delay(100);
w<<=1; //行变量左移指向下一行
}
}
}
void delay(unsigned int i)
{
unsigned int k;
for(k=0;k<i;k++);
}
三、16点阵
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dischar[]={
0xF7,0xDF,0xF9,0xCF,0xFB,0xBF,0xC0,0x07,
0xDE,0xF7,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,
0xC0,0x07,0xDE,0xF7,0xFE,0xFF,0x00,0x01,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
0xFF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBB,
0xE0,0x01,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,
0xE0,0x0F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,
0xDF,0xEF,0xDF,0xEF,0xBF,0xEF,0x7F,0xEF,
0xEF,0xFF,0xEF,0x07,0xEF,0x77,0x01,0x77,
0xEF,0x77,0xEF,0x77,0xC7,0x77,0xCB,0x77
,0xAB,0x77,0xAF,0x77,0x6E,0xF7,0xEE,0xF5,
0xED,0xF5,0xED,0xF5,0xEB,0xF9,0xEF,0xFF,
};
sbit A1 =P2^0;
sbit B1 =P2^1;
sbit C1 =P2^2;
sbit D1 =P2^3;
sbit EN1=P2^4;
sbit LS595_SHC=P1^0;
sbit LS595_STC=P1^1;
sbit LS595_DS =P1^2;
void Delay_Nms(uint n)
{
uint i,j;
for(i=0;i<n;i++)
for(j=0;j<20;j++)
;
}
void SendOneByte(uchar content)
{
uchar i;
for(i=0;i<8;i++)
{
LS595_DS=(bit)(content & 0x80);
LS595_SHC=0;
content<<=1;
LS595_SHC=1;
}
}
void main(void)
{
uchar i;
uchar j;
uchar k;
uchar ycode;
EN1=1;
while(1)
{ for(j=0;j<3;j++)
{
for(k=0;k<50;k++)
{
for(i=0;i<16;i++)
{
LS595_STC=0;
SendOneByte(dischar[i*2+j*32]);
SendOneByte(dischar[i*2+j*32+1]);
LS595_STC=1;
P2=i|0XF0;
EN1=0;
Delay_Nms(4);
EN1=1;
}
}
}
}
}
四、点阵
#include<reg51.h>
#include<intrins.h>
void delay(unsigned int i)
{
unsigned int j;
for(j=0;j<i;j++);
}
void main()
{
unsigned char m=0xFE,k;
unsigned char ledmatrix[]={36,102,255,255,255,126,60,24};
while(1)
{
for(k=0;k<8;k++)
{
P2=m;
P1=0xFF;
delay(100);
m=_crol_(m,1);
}
}
}
仿真
链接:https://pan.baidu.com/s/1VZf1vfGFXAgWXgk8R3Mrlg
提取码:2222