【软件工程师学硬件】之 点亮LED(at89c51)

几乎所有的单片机开发教程的第一个程序都千篇一律的是点亮一个LED。软件工程师可能不太理解为什么要这么做。但是软件工程师很熟悉另一个情形,就是所有软件语言教程的第一个程序都是打印“Hello!World!”,呵呵,实际上,你就将这个“Hello!World!”看作是点亮LED。因为单片机的最小系统为了方便学习,并没有装上显示模块,所以并不是说不可以在屏幕上打印一个字符。对于一个硬件工程师来说,显示方式有很多,比如通过串口显示到PC上,也可以通过I2C显示到LCD上,也可以显示到数码管上,具体看每个人的习惯和项目的要求。
当然,点亮一个LED也可以直观地反映每一个引脚电平的变化,这对于初学者来说非常重要,如果首先就让初学者对照液晶显示屏看每个引脚的数据,实际上并不符合硬件的特点,硬件属于底层的系统,调试过程中更关注的是单片机目标引脚的电平变化规律是否和预期保持一致。所以,软件工程师可能需要暂时改掉那种print的习惯。更好的习惯是关注目标引脚的电平变化,这里可能是一个引脚,也可能是多个引脚,这里的变化是指按照程序的输出结果发生变化。
接下来,我们想想如何点亮一个LED,这里LED就是发光二极管(如果不了解发光二极管可以查看我的系列文章【认识硬件】),因为二极管正极接在单片机的引脚上,负极接地,如果要点亮LED,就必须在引脚上有高电平,然后才会有电流流经LED,这样LED才能发光。
弄清楚LED发光的道理,我们就明白程序应该怎么写了,很显然,将引脚置位,就是赋值为0,对,就这么简单。为什么置位0而不是1呢?因为at89c51低电平驱动能力要强一些。
另外要注意最小系统中的EA脚一定要接高电平。

下面是点亮LED的代码。
/* Main.c file generated by New Project wizard
*
* Created: 我们都是工程师
* Processor: 80C51
* Compiler: Keil for 8051
*/

#include <reg51.h>
#include <stdio.h>
sbit P10=P1^0; //定义P10

void main(void)

while(1) 
{
P10=0; //注意:是低电平点亮led
}
}
后续上面包板视频,请大家关注。多谢了!

猜你喜欢

转载自blog.csdn.net/wwwmagic/article/details/91791252