技术文档

51单片机led程序 51单片机之LED灯

小编 2024-11-24 技术文档 23 0

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,三个脚,一个接电源+,一个接地,另一个是输出,可直接接单片机红外接收管灵敏度有...

猜你喜欢