51单片机控制12个led灯,分别接8个灯P0口,4个灯P1的前4个口,程序怎么写能实现从P0口到

51单片机控制12个led灯,分别接8个灯P0口,4个灯P1的前4个口,程序怎么写能实现从P0口到P1口的流水灯?

第1个回答  推荐于2016-05-14
汇编语言还是 c 语言?
给你一个 c 的编程:
#include <reg51.h>
unsigned char code Tab_Led[]={
0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7f,0xff,0xef,0xff,0xdf,0xff,
0xbf,0xff,0x7f,0xff,0xff,0xfe,0xff,0xfd,0xff,0xfb,0xfff,0xf7};
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<125;i++);
}
void main()
{
unsigned char i;
while(1)
for(i=0;i<6;i++)
{
P0=Tab_Led[2*i];
P1=Tab_Led[2*i+1];
}
}
欢迎访问我的空间 !!追问

我的意思是从P0口的第一个I/O口开始亮,每隔1s就亮起下一个,当亮到P0.7时候,就接着亮到P1.0……到了P1.3后,又回到P0.0如此循环,C语言,我搞了好久了都不会

追答

这个程序就是 实现了你说的功能,间隔时间 是 0.2 秒
汇编语言还是 c 语言?
给你一个 c 的编程:
#include
unsigned char code Tab_Led[]={
0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7f,0xff,0xef,0xff,0xdf,0xff,
0xbf,0xff,0x7f,0xff,0xff,0xfe,0xff,0xfd,0xff,0xfb,0xfff,0xf7};
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<125;i++);
}
void main()
{
unsigned char i;
while(1)
for(i=0;i<6;i++)
{
P0=Tab_Led[2*i];
P1=Tab_Led[2*i+1];
delayms(200);
delayms(200);
delayms(200);
delayms(200);
delayms(200);
delayms(200);
}
}
欢迎访问我的空间 !!

这样就可以了 ,间隔 1 秒。

追问

谢谢老师!

本回答被提问者和网友采纳
相似回答