B站江科大C51单片机

从零开始学C51单片机,以下是学习单片机的笔记,如果你感兴趣并且也想学习的话,那我们一起开始吧!不懂的可以留言!我会及时回复!

1.点亮一个LED

点亮LED可以两种方法:

①P2 = 0xFE  (1111 1110) ,由上图LED模块可知LED正极接入VCC,这是只需要最低位置零,电路就通了,此时D1亮。例如:P2 = 0x00,此时全亮;P2 = 0xFF,此时全灭。

②P2_0 = 0 的意思与 P2 = 0xFE  (1111 1110)相同。例:P2_1 = 0,此时D2亮。

2.LED闪烁

会控制LED亮灭后,接下来只需要加一个简单的延时代码,就可实现LED闪烁了!

这是自动生成延时代码的界面,看过江科大51教学的应该都不陌生了。简单的修改延时代码,可以自己放入参数设置自己需要的时间。

3.LED流水灯

一个简单的写法就是

P2 = 0xFE;  // 1111 1110

Delay1ms(500);

P2 = 0xFD;// 1111 1101

Delay1ms(500); 依次类推写到第8个LED。

接下来我介绍一个简洁代码的写法,有C基础的应该好理解。

int i = 8,while(i--),因为有八个LED,循环八次,while循环体外,i = 8,为了使循环继续,如果没有末尾i= 8这行代码,流水灯直流一次。

P2 = ~(1<<j),  ~这个符号的意思是取反,例如:~0xFF (1111 1111) 的结果是 0x00 (0000 0000),

  <<这个符号的意思是按位左移,1<<1,也就是 0000 0001 左移 1位,结果是 0000 0010。

循环体执行第一次时,j=0,P2 =~(1<<0) ,1左移了0,此时对(0000 0001) 取反结果为(1111 1110),此时第一颗灯亮,延时500ms后,j++,循环体内执行第二次,此时j = 1;也就是上面1<<1位,再取反结果为(1111 1101),此时第二颗亮。依次下去、、、

4.独立按键控制LED亮灭

只需要if语句判断按键状态​​​​​​​即可实现。不做过多讲解,以及后面的只放出代码,不懂得评论大家一起讨论讨论。

5.独立按键控制LED状态

6.独立按键控制LED显示二进制

7.独立按键控制LED位移

这一个我并没有照抄江科大写法,我这个有点BUG没能解决,如果有懂的大佬可以指点一下谢谢。

以上就是点灯的所有程序,写这篇文章也是为了给自己做个笔记,顺便分享一下自己的想法。谢谢支持。大家一起加油!!!

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值