行业新闻
Group news
江苏宏丰木业有限公司    您的位置: 首页  >  行业新闻  >  正文

如何更高效地实现51单片机流水灯?

2019年11月01日 文章来源:网络整理 热度:189℃ 作者:刘英

首先,介绍下原理。下图为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

???????

如何更高效地实现51单片机流水灯?

如何更高效地实现51单片机流水灯?

??????? 实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。??????

??????? 听起来是不是很简单啊!那么下面我们来看下实现流水灯功能的三种常用方法!

第一种,总线方法实现流水灯。

??????? 这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。C程序如下:

#include???

#define?uchar?unsigned?char??

#define?uint??unsigned?int??

code?unsigned?char?tmpled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};?//定义八只LED灯,依次点亮八只LED灯??

?//N毫秒的延时函数??

delay_ms(uint ms)?? ??? {?? ?uint i,j;??? for(i=ms;i>0;i--)??????? for(j=114;j>0;j--);?? ?return 0; ?}void main(void){unchar i;while (1){for(i=0;i0;i--)??????? for(j=114;j>0;j--);?? ?return 0; ?}

void main(){uchar a,i;while(1){a=0xfe; //点亮第一位LED灯for(i=0;i

上一篇:如何配置vSAN 6.2中的RAID 5或RAID 6擦除编码技术研究


下一篇:浅谈vSAN架构的分布式RAID技术

友情链接
Links
鸿运国际官网_鸿运国际备用网址