51单片机实现流水灯
以下是本篇文章正文内容,下面案例可供参考
一、点亮第一个LED灯
#include
#define uint unsigned int //简化定义
#define uchar unsigned char//同上
sbit D1=P2^1;
void main(){
D1=0;
}
代码中D1代表着位定义,相当于将LED灯对应管脚的位置起一个名字。单片机初始状态管脚默认为高电平,即对应值为1。所以如果想要点亮LED灯,只需要让他的管脚电平为低即可。
二、流水灯
1.总线型控制
设计一个流水灯,如果使用位操作,需要一个个去定义。这无疑是十分繁琐的。所以这里我们采用总线型操作。
总线型这种总线制方法可以统一控制十位数相同的管脚。
例如如果想要控制P1.0-p1.7的电平情况,具体编程方法是根据所需要的结果,标出每个管脚对应的01值,从前到后排列,然后转化为十六进制,直接令P1=0x+对应十六进制数。这样只用一行代码实现多个管脚控制。
#include
void main()
P1=0x80;//对应十进制数字10000001,对应P1的首个管脚与最后一个管脚高电平。
}
2.延时函数
代码如下(示例):
void delay(uint i){
while(i--);
}//此函数可以用来控制特定时长的延时,具体时间由单片机晶振频率决定。
3._ crol _函数使用
_crol_函数功能:将 c 进行b位左位移,并将值以unsigned char类型返回;
#include //_crol_函数在intrins.h函数库中。
unsigned int temp;
temp=0xfe;
P1=temp;
temp=_crol_(temp,1);//第一个变量用来控制位,第二个用来控制每次移动的位数。
4. 实现流水灯
#include
#include
#define uint unsigned int
#define uchar unsigned char
void delay(uint i);
void main(){
uint temp=0xfe;
while(1){
P2=temp;
temp=_crol_(temp,1);
delay(10000);
}
}
void delay(uint i){
while(i--);
}
最后实现单片机流水灯操作。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6036文章
44555浏览量
635056 -
led灯
+关注
关注
22文章
1592浏览量
107980 -
51单片机
+关注
关注
274文章
5702浏览量
123578 -
流水灯
+关注
关注
21文章
432浏览量
59706
发布评论请先 登录
相关推荐
51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析
首先,介绍下原理。下图为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可
使用51单片机实现流水灯的程序和Proteus仿真
本文档的主要内容详细介绍的是使用51单片机实现流水灯的程序和Proteus仿真电路图和工程文件合集免费下载。
发表于 11-04 08:00
•6次下载
评论