求51单片机驱动32盏LED流水灯(单向流水,全部亮时闪烁两次,双向流水,全部亮时闪烁两次)的C程序!谢谢

求51单片机驱动32盏LED流水灯(单向流水,全部亮时闪烁两次,双向流水,全部亮时闪烁两次)的C程序!谢谢,第1张

这个比较简单吧

uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}

void delay();//自己仿耐写吧 延迟一秒

void led_blink()//~~~~~~~~~~~~

void single_stream()//单向流水函数声明

void double_stream()//~~~~~~~~

void led_blink() //全部亮时闪烁两次

{

uchar i

if(P3^7==0)

{ i=2

while(i--)

{

P0=0x00//低电平点亮

P1=0x00

P2=0x00

P3=0x00

delay()

P0=0xff//熄灭

P1=0xff

P2=0xff

P3=0xff

delay()

}

}

}

void single_stream()//单向流水灯

{

uchar i//自己定义一下 unsigned char

for(i=0i<8i++)

{

P0=table[i]//逐个点亮led0-7 第零组

delay()

}

for(i=0i<8i++)

{

P1=table[i]//第一组

delay()

}

for(i=0i<8i++)

{

P2=table[i]//第备启春二组

delay()

}

for(i=0i<8i++)

{

P3=table[i]//第三组

delay()

}

}

void double_stream()//这个你也自己写吧

{

}

void main()//main 函数就调用下 前面的就可以了。。

{

while(1)

{

single_stream()

led_blink()

double_stream()

led_blink()

}

}// 大概就是这样。。我没测试旁族

/***32灯流水团派——火柴天堂作品-20130520***/

/***52单片机,12MHz晶振,P0-P3

接32颗LED,低电平驱动***/

#include"REG52.h"//包含52头文件

#define

TRUE

1//定义布尔塌烂贺量'1':真

#define

FALSE

0//定义布尔量'0':假

#define

uchar

unsigned

char//定义

无符号字符型数据历配

简称

#define

uint

unsigned

int//定义

无符号整型数据

简称

#define

th0

0xb1

#define

tl0

0xe0//20ms

at

12MHz

Fosc

in

Model

1

#define

LED_Port1

P0

#define

LED_Port2

P1

#define

LED_Port3

P2

#define

LED_Port4

P3

#define

LED_AllOff

LED_Port1=LED_Port2=LED_Port3=LED_Port4=0xff

#define

LED_AllOn

LED_Port1=LED_Port2=LED_Port3=LED_Port4=0

#define

LED_Status

43//1步全亮+32步单亮+10步闪烁

#define

LED_Marquee

32

bit

T20msFlag=0

void

Timer0()

interrupt

1

{

TL0=tl0

TH0=th0

T20msFlag=TRUE

}

void

TimerInit()

{

TMOD=0x01

TH0=th0

TL0=tl0

TR0=1

ET0=1

EA=1

}

void

LED_Out()

{

static

uchar

led_status=0

if(T20msFlag)

{

T20msFlag=FALSE

led_status=++led_status%LED_Status

}

if(led_status

&&

led_status<=LED_Marquee)

{

LED_AllOn

switch((led_status-1)>>3)

{

case

0:LED_Port1=1<<((led_status-1)%8)break

case

1:LED_Port2=1<<((led_status-1)%8)break

case

2:LED_Port3=1<<((led_status-1)%8)break

case

3:LED_Port4=1<<((led_status-1)%8)break

default:led_status=0break

}

}

else

{

if(!led_status

&&

led_status%2)

LED_AllOn

else

LED_AllOff

}

}

void

main()

{

TimerInit()

while(1)

{

LED_Out()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12568807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存