#include<reg52.h>
#include<intrins.h>
#define led P0
typedef unsigned char u8;
typedef unsigned int u16;
sbit srclk=P3^6;
sbit rclk=P3^5;
sbit ser=P3^4;
u8 code ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
u8 code ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(u8 i)
{
while(i--);
}
void dz(u8 i)
{
u8 a;
srclk=0;
rclk=0;
for(a=0;a<8;a++)
{
ser=i>>7;
i<<=1;
srclk=1;
_nop_();
_nop_();
srclk=0;
}
rclk=1;
_nop_();
_nop_();
rclk=0;
}
void main()
{
u8 i;
while(1)
{
for(i=0;i<8;i++)
{
dz(ledduan[i]);
led=ledwei[i];
delay(100);
dz(0x00);
}
}
}
本文详细解析了一段使用51单片机控制LED的程序代码,通过具体的代码示例,介绍了如何利用srclk、rclk和ser信号控制LED的显示,实现了LED的动态显示效果。代码中包含了延时函数、数据发送函数和主循环,通过对这些函数的解释,读者可以了解到51单片机编程的基本技巧。

1410


被折叠的 条评论
为什么被折叠?



