入门单片机,当然是先成为点灯大师啦~
不讲废话,开卷!
首先,先介绍一下所需的软件和硬件。
软件:Keil uVision5(这是程序编写软件)
stc-isp(这是一个烧录软件)
ps:没下载着两个软件的先去看看上一篇文章吧
硬件:普中单片机开发板
USB数据线(用于供电和编程)
准备好软件和硬件就开始跟着下面的步骤开始学习啦!
ONE:LED灯的工作原理
LED灯的工作原理其实很简单,当在LED的两个电极之间施加正向电压时,P型半导体中的空穴和N型半导体中的电子会被吸引到P-N结附近,在P-N结处,电子和空穴相遇并复合,即电子从较高的能量级跃迁到较低的能量级,释放出多余的能量,这个能量以光子的形式释放出来,这就是我们看到的光。在STC89C52RC单片机上,我们可以通过控制I/O端口的电平来实现这一点。
(如果理解不了的就暂时理解成LED正极接正负极接地,就能发光)
根据普中科技单片机开发版原理图:
我们可以看到 LED灯D1到D2分别对应着引脚P2.0到P2.7。且在以上图片我们看到LED正极是被连接到一起的共阳极,而负极是被分别连接到P2.0~P2.3、P2.4 ~ P2.7的,所以我们要点亮某一个LED应该要让其有一个正向电压,故需让对应的端口置低电平(在编程中即让对应的端口置0)。相反,若LED的连接方式为共阴极,则需让对应的端口置高电平(在编程中即让对应的端口置1)。
TWO:编程点亮LED灯
首先新建工程,点击左上角的Project,选择新建工程。
点击完会跳出的界面如下图,选择我们要保存工程的文件夹。
在保存工程的文件夹中选择再次新建文件夹用于保存当前项目。
在项目文件夹打开后,需要选择我们使用的芯片型号,在图2.4中找到Atmel,点击旁边的+号,下滑找到AT89C52,点击OK。
完成以上项目后,我们需为项目添加新的文件,右键Source Group 1文件夹,点击Add New ltem to Group 'Source Group 1'...添加新的文件。
选择C File配置.c文件,为.c文件命名.
前期工作完成后,如图2.7编写代码,点击编译,下方显示代码0报错0警告,你就可以开始编写LED代码啦。
在STC89C52RC单片机上,我们可以通过两种方式控制LED:
1.直接控制:让指定的LED对应的端口引脚处于低电平。
2.总体控制:让指定的端口满足特定的二进制电平状态,例如P2端口(1111 1110)即0xF4(十六进制)的电平状态。
上图的这段代码的作用是让P2端口的某些位为低电平,从而点亮对应的LED 灯。
由于 while(1);的存在,程序运行后会保持P2 端口的状态不变,使LED 灯的亮灭状态不会发生变化。
在烧录之前要先点击这个魔术棒,然后将Creade HEX File打勾
点击OK,然后点击编译,就可以前往STC烧录程序到单片机啦~
打开stc软件跟着下图操作
单片机信号可以用手电筒照一下芯片确定一下(因为有一些芯片型号是STC89C52RC系列)
如上图流程上传代码到你的STC89C52RC单片机,按下复位键,你将看到LED灯亮起,这标志着你成功控制单片机点亮了LED!效果如下。
THREE:让LED动起来
1.LED闪烁
这段代码通过设置P2.0端口的电平来控制LED的亮灭,其中延时函数delay用于创建可见的闪烁效果。Delay500ms的函数,其目的是在STC系列单片机上产生大约500毫秒的延时。
LED灯的闪烁是电子项目中常见的功能,它可以通过简单的编程实现。在STC89C52RC单片机上,我们可以通过控制I/O端口的电平来实现LED的闪烁。我们在此定义了一个while循环接受外部传入的整型变量, 在每循环一次便将变量减1直到传入的值变成0便跳出该循环再继续执行其他代码,这便实现了基础的延时执行。效果如下。
2.LED流水灯
流水灯效果是指多个LED按照一定的顺序依次点亮,形成动态的效果这需要我们控制多个GP10引脚,可以通过修改延时时间来调整流水灯的速度,或者增加更多的控制逻辑来实现不同的流水模式,如反向流水或双向流动效果。流水灯可以用于电子显示、装饰、指示灯等场景,展示单片机控制多个输出的能力。以下是一个实现流水灯效果的代码:
效果如下:
通过循环移位和延时,LED 会依次点亮,从第一个LED(连接到 P2.0)开始,逐个到第八个LED(连接到 P2.7),形成一种从左到右的流水灯效果。
总结
在技术的世界里,每一步的探索都是对未知的挑战,每一次的成功都是对自我的超越。今天,我们通过单片机点亮LED的教程,不仅学习了一项技能,更是点燃了对电子世界的热爱。让我们一起回顾这次旅程,并激励自己继续在技术的道路上不断前行。
这篇文章之所以只放图片不直接放代码的原因是想初学者通过敲代码去接触电子世界,而不是理解后就cvcv。多实践才能成长哦~
LL工作室第二篇文章,感谢大家的支持!
若文章有出现纰漏还请大佬指正(因为我也还是小菜鸡,嘻嘻~多多包涵呀)