|
发表于 2022-3-13 12:15:53
|
显示全部楼层
因为不知道你要实现什么效果,所以就把我写的代码发上来了
我写的代码:
#include "reg51.h"//如果是52,则第一列全亮
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SET=P3^4;
u8 ledLie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 ledHang[]={0x00,0x7e,0x81,0x81,0x81,0x81,0x7e,0x00};//显示数字0
void Hc595SendByte(u8 dat)
{
u8 a;
for(a=0;a<8;a++)
{
SET=dat>>7;
dat<<=1;
SRCLK=0;
_nop_();
SRCLK=1;
_nop_();
}
RCLK=0;
_nop_();
RCLK=1;
}
void delay(u8 i)
{
while(i--);
}
void main()
{
u8 a;
while(1)
{
for(a=0;a<8;a++)
{
P0=ledLie[a];
Hc595SendByte(ledHang[a]);
delay(100);//视觉暂留时间约为0.05至0.2秒
Hc595SendByte(0x00);//P0=0xff;阳极可以消影,阴极不行
}
}
}
|
|