单片机led闪烁代码_点亮LED和打印“Hello World!”(三)

书接前文,小伙伴们都准备好了吗?[微笑]一颗LED,1颗200-1K左右的电阻。

硬件连接参考下图,电源Vcc连接LED的正极,LED的负极连接电阻,电阻连接单片机的IO口。LED的正负极,一般由引脚区别,长的为+,短一点的为-。(也可观察内部,头部较小的为+,大的为-)。这样当单片机的引脚为低电平时,LED就会被点亮,这里的电阻是限流电阻,保证LED长时间点亮也不会损坏。

LED的电流和电压是指数关系,当电压达到LED PN结的开启电压后,电流会急剧上升,所以限流电阻是必须的。这里电流是从电源正极流入单片机的,叫灌电流,可以想象电流是从外部灌入单片机内部的。如果是单片机输出电流到外部器件叫拉电流,单片机拉动外部一个负载。由于制造原因,单片机的灌电流能力要远远大于拉电流能力。虽然这样,也不要总使电流流入单片机,一般单片机的灌电流能力是有限的,大概几十mA。所以我们一般用三极管来进行放大,这样单片机输入和输出的电流会大大减小。

小问题,那么怎么使LED闪烁呢?[what]

e3458613cc0c3ff43014016bef907ffb.png

LED与单片机IO口的连接

好了,下面我们聊一下软件。上次我们编译和下载了一个空的程序到了单片机,什么现象都看不到。现在我们外接一个LED到一个IO口,我们来点亮它,然后让它闪烁起来。

第一个程序见左上,几个知识点出现了。

  1. sbit这是51单片机的关键字,你可以发现它变黑体变粗了。 它的作用是定义一个单片机IO口。P3^2,是指P3口的第2个引脚。有的写为P3.2,这个完全取决于你的单片机寄存器的.h文件的规定。这里stc15w4k.h中一个IO引脚引用是使用^. 那么LED=0,就是P3^2为低电平,LED=1,P3^2为高电平。保证你的P3^2接好硬件的线路和LED构成回路。
  2. 我们见到了第一个函数,它的作用是所有单片机的IO口,既可以输入也可以输出。因为单片的IO可以设置不同的状态,如开漏,高阻,推挽输出。有些IO口默认状态是高阻的,所以我们先初始化为最通用的输入输出都可以的准双向口。
  3. 在主函数main中,我们加入了Port_Init();LED=0;这2条语句在while(1)的死循环之前,一般我们把初始化的语句放在死循环之前,叫初始化语句,就是在不停循环之前要做好的工作。

我们然后编译这个程序,0错0警告,把hex的文件下载到单片机中。看看现象。你发现LED灯被点亮了。[微笑]

8f85615f3bc4b9337ebca6ee8edb0c12.png

KEIL编译

我们怎么让LED闪烁起来呢?聪明的小伙伴已经想到了,让LED=0,延时一会,再LED=1,延时一会。对了,是这个思路。[赞]

看图片右边的程序,第二个函数出现了。 一个简单的延时,具体延时了多少时间,不知道,但可以测试出来,所以不是精准的延时。

编译这个程序,下载到单片机,观察现象。你发现LED开始闪烁起来了,亮一下灭一下。[耶]

f86690b30c75fa20751ddfb39d87e884.png

LED闪烁起来了

问题来了,语句还能简化吗?如果再一个系统中这样让LED闪烁有什么问题吗?[思考]

好了,小伙伴们,你们的LED闪烁起来了吗?[机智]下一节我们来回答留下的2个问题。有知道的小伙伴可以在评论中留言。谢谢![来看我]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值