51单片机之LED灯
实验要求
众所众知,软件编程的第一个小程序就是打印“hello world”,同样硬件的编程也有他的第一个小程序,那就是LED灯的点亮,如果不做一个这样的小实验,学再多理论也是纸上谈兵。下面我们来实现LED灯闪烁的实验。
物料清单
电容
12M晶振
点阵开关
电阻
LED灯
AT89C52单片机(和51效果一样)
原理图
为了更形象的讲解LED灯闪烁的实验,笔者特意画了LED闪烁的原理图,他们的作用如下:
18脚和19脚接的是12M晶振系统,它是系统时序的由来;
9脚所接的是复位系统,当我们按下按键之后,系统会从程序最开始的代码开始运行;
P0.0接了一个电阻和一个LED灯,为什么接这个电阻呢?如果不加电阻,电流过大可能会烧坏LED灯,所以LED灯使用的时候一般都加限流电阻。
复位电路和晶振电路是单片机的固定外围电路,数据手册上已经给出,不需要我们花心思研究。
程序
我们要做的是让单片机控制LED灯以一秒的频率闪烁,这就避免不了写程序,看看现在的硬件产品吧,哪一个硬件产品里面没有集成电路,又有哪一个没有代码的“参与”。所以不要说硬件工程师就只做硬件,写单片机代码也是硬件工程师分内的事。下面把完整代码分享给大家。
#include <reg51.h>
void delay(void)
void main()
{
while(1)
{
P0=0x01;
delay();
P0=0x01;
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
}
delay()函数是由单片机小精灵生成的,如果我们自己计算的话太麻烦了。
实验现象
视频加载中...
最后
我们实验的当中只用到了一个LED灯,所以直接用单片机驱动也可以,但是单片机的总的驱动电流就很小,如果LED灯多了的话,51单片机是驱动不了的,这时候就需要外加电源和开关管来驱动LED。
电子仿真:51单片机实现LED灯闪烁
昨天看到一篇关于今日头条CEO张一鸣的访谈,其中谈到他的大学专业,张总最开始也是学电子的,但由于不能广泛的接触电子产品,更不能进行开创性实验,因而最终转学软件。喜欢电子小伙伴的确实面临着一个这样的困境,不能很好的把自己想法以实物的方式展现出来。除了购买电子元器件之外,不知道你们都是怎么解决这个问题的?
电子仿真软件:Proteus
笔者认为对于没有条件的小伙伴,最好的办法是用电子仿真软件来模拟实验。需要软件的小伙伴可以私信笔者“Proteus”来获取 ,里面不仅有官方正版的软件、安装教程、汉化补丁、还有关于此软件的详细使用教程,如下图所示。至于Proteus到底是一个可以干什么的软件,现在不做解释,请往下看实验现象。
物料清单
笔者所选的是一个最基础、简单的单片机例子,需要的电子元器件自然不多,总共6种,清单如下
单片机89C51一个
电容3个
电阻两个
12M晶振一个
黄色LED灯一个
原理图
电路原理图如下,除了LED灯之外,其余的组成了单片机的最小系统,分别为晶振电路和复位电路,这个不需要我们去深究,因为它是单片机官方提前设计好的。LED灯的阳极接电源,当我们单片机P1.0输出高电平的时候,因为LED之间没有压差,所以此时LED灯是熄灭的;只有当P1.0输出低电平的时候,LED灯才可以被点亮。
程序
#include <reg52.h> //头文件
//Author:爱上半导体
//Date:2018年4月2日
#define uchar unsigned char //宏定义
#define uint unsigned int //宏定义
sbit LED = P1^0; //把P1.0赋值给LED
void main()
{
while(1)
{
LED = ~LED; //LED取反
DelayMS(150); //延时
}
}
程序烧录
程序是用Keil编写的,完成之后需要生成hex格式的文件,然后打开Proteus,双击单片机,之后出现如下界面,然后点击Program File后面的文件夹,选择我们刚才生成的hex文件,至此大功告成。
实验现象
实验现象如下视频所示,LED灯以3.3Hz的频率闪烁。
视频加载中...
源文件
为了让小伙伴们更好的学到电子知识,关于此次实验的电路图仿真源文件和程序源文件,笔者已经给大家打包,需要的私信“LED”便可获取。
如果不想用软件仿真,也可以购买51单片机开发板,这时候可能又要说我加广告了,笔者通过比较全网的单片机,最后选出了一款“普众科技”的51单片机开发板,在同等价位上,这款开发板的外设最多,之所以如此廉价,并不是它的质量不行,而是因为他家的单片机出货量最大,只有这样才能压缩成本,把价格压下去!有兴趣需要的小伙伴可以考虑一下。
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 普中科技 51单片机开发板 51单片机学习板 AVR ARM STM32 实验板 ¥121 购买相关问答
51单片机 如何接 LED ?89C51或89C52单片机P0P1P3P4四组共32个IO口都可以驱动LED灯。这种单片机的高电平驱动能力很弱,通常IO输出低电平驱动LED,LED的另一端接限流电阻然后再接电源正...
51单片机 一个 LED 灯闪烁电路图原理-ZOL问答图上是用R1、C3构成的复位电路,文字说明有点问题。。文字说明中的R2对应图上的R1,文中的C1对应图上的C3,文字说明没什么问题,主要是和图不是很对应文中的R2就...
51单片机led 灯加载什么电平?51单片机引脚加载高低电平都可以驱动LED发光管,取决于引脚如何连接LED:如果LED的阳极接电源正极,阴极接单片机引脚,输出低电平可以点亮LED;如果单片机引脚接...
51单片机 如何点亮一个 LED 灯?1.确定LED灯的点亮电压;2.确定51单片机的数字输出电压,如果与LED灯电压一致,则可直接驱动;不一致则需要通过电路转换;3.给51单片机配置最基本的供电电路,...
51单片机LED 灯点亮的c语言编程方法?/*程序详细功能介绍:*利用取表的方法,使端口P0做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。*在用表格进行程序设计的时候,要用以下的.../*...
我想做个16*16的 LED 点阵,用 51单片机 控制,请问是否要外加电压...[最佳回答]单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定.单片机的串口与列驱动器相连,用来显示数据.P1口...
51单片机 做时钟电路,怎么将输出的bcd码转化为 LED 显示?51单片机做的时钟通过驱动程序即可将输出的BCD码显示在数码管上数码管显示是单片机入门必经之路,相信学过单片机的朋友都知道怎么驱动数码管显示数字。LED显示...
51单片机 如何同时点亮2个 led ?51单片机(也称为8051单片机)可以通过IO口控制LED的点亮和熄灭。要同时点亮两个LED,您可以按照以下步骤操作:1.连接LED:将两个LED连接到单片机的两个IO口上...
51单片机 控制16个 led 流水灯的程序?泻药不加译码器或者锁存器的话,可以用12个引脚+4个三极管(当然还有必要的电阻)实现,如果你的单片机有大电流io口的话,4个三极管也可以省了,12个引脚可以...
为什么 51单片机 在点亮 led 等的时候将0xfd赋给P0,对应的灯就亮了,难道将这个地址赋值给P0就会变成低电平?P0端口默认为高电平,接上LED等元器件的时候,负极接P0端口的引脚,把5伏电源接上(接电阻限流),把0xfd赋值给P0,把电位拉低,灯就亮了。其他的P1、P2、P3端口默...