51单片机之LED灯
实验要求
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单片机实例讲解,彩灯键盘显示程序
彩灯键盘显示控制要求:用10个数字键控制选择彩灯的10种变化,并用数码管显示器显示按键号。
10种变化彩灯如下:
●花样一:一盏灯从右至左点亮,即从LED1开始向LED8方向流水移动点亮。
●花样二:一盏灯从左至右点亮,即从LED8开始向LED1方向流水移动点亮。
●花样三:要求一盏灯从左至右逐个点亮不灭,即从LED8开始向LED1方向逐个点亮不熄灭,直到全部点亮。
●花样四:让全亮的灯从右至左逐个熄灭,即从LED1开始向LED8方向,彩灯逐个熄灭。
●花样五:两盏灯从右至左点亮,即LED1+LED2→LED3+LED4→LED5+LED6→LED7+LED8。
●花样六:两盏灯从左至右点亮,即LED8+LED7→LED6+LED5→LED4+LED3→LED2+LED1。
●花样七:一盏灯从左至右先按单数流水点亮,后按双数流水点亮,即LED1→LED3→LED5→LED7→LED2→LED4→LED6→LED8。
●花样八:一盏灯从右至左先按双数流水点亮,后按单数流水点亮,即LED8→LED6→LED4→LED2→LED7→LED5→LED3→LED1。
●花样九:8只发光从左至右依次点亮一只,即LED1亮→LED1+LED2亮→LED1+ LED2+LED3亮→LED1+LED2+LED3+LED4亮→LED1+LED2+LED3+LED4+LED5亮→LED1+LED2+LED3+LED4+LED5+LED6亮→LED1+LED2+LED3+LED4+LED5+ LED6+LED7亮→LED1+LED2+LED3+LED4+LED5+LED6+LED7+LED8亮。
●花样十:8只发光二极管从右至左依次点亮一只,即LED8亮→LED8+LED7亮→LED8+LED7+LED6亮→LED8+LED7+LED6+LED5亮→LED8+LED7+LED6+LED5+ LED4亮→LED8+LED7+LED6+LED5+LED4+LED3亮→LED8+LED7+LED6+LED5+ LED4+LED3+LED2亮→LED8+LED7+LED6+LED5+LED4+LED3+LED2+LED1亮。
(1)彩灯键盘显示硬件电路(见图46)。
图46 彩灯键盘显示接线原理图
(2)彩灯键盘显示硬件电路元器件(见表19)。
表19 彩灯键盘显示硬件电路元器件表
(3)彩灯键盘显示程序流程图(见图47)。
图47 彩灯键盘显示程序流程图
(4)彩灯键盘显示程序。
相关问答
用汇编语言编写 51单片机程序 让 LED 灯亮0.5秒,灭2秒无限循环?ORG0000HMOVSP,#60HE:CLRP1.0;P1.0LED亮ACALLDEL_1S;0.5秒SETBP1.0;P1.0LED灭ACALLDEL_2S;2....
用 51单片机 +74HC595控制 LED , 程序 怎样实现整体渐变?(595不接OE脚)?如果你是静态显示,那么灰度是没戏了。如果是动态显示,那就先点亮一个LED,再将595的数据刷新,令所有的LED灭掉,然后亮第二个LED,再将595的数据刷新,令所有...
用 51单片机 一个IO口驱动3mmLED灯?1你没讲清楚具体的连线方式:是IO口的高电平驱动灯亮,此时二极管加限流电阻接地;还是IO的低电平驱动灯亮,此时二极管加限流电阻接+5v。2学习51,数字电...
51单片机 为什么会采用灌电流的方式来驱动 LED 灯?用PNP管,单片机过一个电阻接到基极,控制LED~51的话,灌电流有20mA,可以带的动一个LED,LED正极过一个电阻接电源,负极接端口……但是STC的手册上写了整个单...
51单片机 一键控制一个 LED ,每按一下按钮 LED 闪烁一种频率,共闪...case0:led=1;readkey();break;//熄灭case1:delay();readkey();//慢速闪烁case2:delay();readkey(...
51单片机 中#includesbitled=P0^0, led 1=P0^1,led2=P0^2;主要...[最佳回答]变量可以这样写,位定义好像是不行的.
51单片机 接138译码器再接 LED 灯,问还需要接电阻吗?(接多大电...[最佳回答]红色LED500欧;蓝色、白色、绿色LED330欧.应该是74HC138三线转8线译码器吧,驱动电流很小,但点亮小功率超高亮LED应该没问题.红色LED500欧;蓝色、...
自制的 51单片机 学习板继电器、蜂鸣器有反应 但数码管、 LED 都...1:你的程序是否正确?2:LED方向是否正确?3:确认数码管是否正确,有共阴共阳之分.线路是否正确?4:用万用表测试脚位电平是否正常.5:检查单片机是否有部分...
AT89C 51单片机 的P1口控制8盏 LED 流水灯?#include"reg51.h"//包含头文件#defineucharunsignedcharvoiddelay02s(void)//延时0.2s子程序...
在做一个旋转 led 灯,红外接收管应该跟 51单片机 怎样接啊?红外接收管灵敏度有限,要加放大和滤波电路,所以一般用一体化接收头,如TL1838,三个脚,一个接电源+,一个接地,另一个是输出,可直接接单片机红外接收管灵敏度有...