51单片机学习笔记(一):LED

发布时间:2023-01-06  

第一次接触51单片机,就直接按照附赠的学习手册自己学一学,做个笔记。


一、点亮LED

LED即发光二极管,具有单向导电性,通过一定电流时就能发光。单片机开发板上的LED采用共阳接法,即所有LED阳极管脚接电源VCC,阴极管脚通过470欧限流电阻接到P2口上。使LED发光的方法是让对应阴极管脚变成低电平,熄灭则为高电平。


用51单片机控制LED的方法就是让单片机设定管脚在P2口上输出低电平。


在main.c内先包含51单片机头文件,使用sbit关键字定义P2.0管脚叫做LED1,再让LED1=0,最后进入while死循环。

#include "reg52.h"sbit LED1=P2^0;void main(){
  LED1=0;
  while(1);}

设定P2.0管脚为低电平即可让连接在P2.0的LED发光。

二、延时函数

如果要让LED闪烁则需要编写程序使其延时开启关闭,手册里给了一个延时函数。

void delay_10us(u16 ten_us)
{
  while(ten_us--);
}

用while循环强行拖时间,执行一次指令大约10微秒。参数类型u16是为了方便使用而重定义的,更方便判断数据范围。

typedef unsigned int u16;
typedef unsigned char u8;

令ten_10us=50000可以延时大约450毫秒。使用延时函数可以让LED在肉眼辨识范围内变化。


三、Keil C51的移位库函数

开发板上有8个LED灯,分别对应8个比特,可以用一个8位字节来控制。流水灯则是8个比特不断变化,流水效果在字节的数据如下:

01111111→10111111→11011111→11101111→11110111→11111011→11111101→11111110

用移位操作和循环语句可以实现不断循环。


但是Keil C51软件有对应移位库函数,包含头文件intrins.h,左移函数是_crol_(),右移函数是_cror_()。函数有两个参数,分别是被移位的变量和移位个数。返回值是移位结果。C语言的移位操作会使最高位消失,最低位用0或1填充,但是移位库函数的功能相当于队列内循环移动,最高位会被移到最低位,所以移位库函数比C语言移位操作方便。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>