c51单片机学习笔记-LED流水灯实验

目的:实现 LED 流水灯,只需循环让 D1-D8 指示灯逐个点亮。

方法:点亮 D1 且把 D2-D8 熄灭,延时一段时间后再点亮 D2 且把 D1、 D3-D8 熄灭,延时一段时间后再点亮 D3 且把 D1-D2、D4-D8 熄灭,如此循环。

编译软件:keil5

过程:

(1)点亮D1-D8对应端口为P20-P27,所以需要对P2X端口进行宏定义

#define LED_PORT    P2 //使用宏定义P2端口

(2)要使用复循环语句,需定义一个变量i,因为条件只需要循环8次,所以定义一个8字节的变量足够使用

u8 i=0;

(3)复循环中for语句:第一个为初始条件,第二个为循环条件,第三个为执行行为

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

(4)P27-P20,0(点亮)左移,11111110//对应十六进制=0xFE,P0.0输出0,其余输出1,让0依次左移

LED_PORT=0xfe<<i;

(5)延时代码编译

delay_10us(50000);

(6)整体代码

(7)编译未发现错误,得到hex.文件

 

(8)通过CH340驱动烧录hex.文件到单片机开发板 

(9) 通过排线连接P20-P27与D1-D8观察实验现象

c51单片机学习笔记-LED流水灯实验现象(错)

(10)发现实验结果与预期不符,LED灯虽然有延时的以此点亮但是亮后没有熄灭

i=0,fe=1111 1110

i=1,向左移一位1111 1100(自动补零)所以第二指针亮时,第一指针依然亮

(11)重新编写代码

  0000 0001

~ (0000 0010)取反为1111 1101

LED_PORT=~(0x01<<i);

 (12)重新编译代码未发现错误,得到hex.文件

(13) 重新通过CH340驱动烧录hex.文件到单片机开发板 

 (14) 通过排线连接P20-P27与D1-D8观察实验现象

 

c51单片机学习笔记-LED流水灯实验现象(对)

 

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GallyDowney

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值