产品概述

单片机闪烁实验 电子仿真:51单片机实现LED灯闪烁

小编 2024-10-09 产品概述 23 0

电子仿真: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 购买

一个不需要专业知识和单片机就可以轮流交替闪烁的跑马灯设计

接触过单片机的朋友都会对流水灯有了解,那时我们是用单片机来制作的,但是你如果单纯做个流水灯,选择使用单片机来做的话未免有些资源的浪费,今天就教给大家一个不用单片机就可以交替闪烁的跑马灯。

单片机流水灯(图片来源于网络,若侵权请联系删除)

单片机流水灯(图片来源于网络,若侵权请联系删除)

怎么制作的呢?来看一下原理图

流水灯原理图

由这个原理图可以看出我们使用的元件有电阻、电容、LED灯、三极管就这些常用的元件就可以了。

至于能够闪烁的原理呢也不难理解,三极管在电路中充当开关的作用,通上电后最左边的LED由于三极管最先被导通,从而最先被点亮,集电极串联一个电容连接到下一个三极管,当电容充电后把后一个三极管导通,导致后一个LED灯点亮,而由于后一个三极管导通又会引起前一个三极管截止,造成前一个LED熄灭,以次类推循环,这样就形成了这三类LED灯轮流被点亮,通过改变电容的大小还可以改变跑马灯闪烁的时间。

讲完原理后就准备下材料吧,来看下图片

制作材料

找到材料之后接下来就是按照原理图把应该连接的部分进行电气连接,大家在焊接的时候,最好把这些元件焊接到洞洞板上或者说在面包板上进行连接也行,如果单纯进行连接的话,会很乱,故障也难排查,而且容易失败,这几天给大家介绍几个小制作基本上都用到了洞洞板,也把我仅有的几个洞洞板给消耗完了,如果不用洞洞板直接焊接是很乱的,看下焊接图你就知道了

制作图

是不是看起来非常乱,确实是这样,再来看一张以前打印的PCB

PCB跑马灯

打成PCB板的看起来是不是好多了,把它设计成心形就更好看了。

可能有人不理解了为什么原理图中的跑马灯的制作是三个LED灯,而到变成那么多了,其实不管LED灯再多原理都是一样的,那个原理图可以说是单位电路,我们需要多加LED无外乎在原先有LED的地方再多并联几个LED,这样就能做成上图中的心形。

这种制作方法,简单,材料好找又不需要单片机基础,可以说只要你想做就能做出来,还不赶快制作一个。

注:流水灯和跑马灯是指一种东西,所以文章中没有区分,不同的人有不同的叫法!

相关问答

下面肿么实现的 单片机闪烁 -ZOL问答

首先,这个程序不会让LED闪烁;如果闪烁,需要加循环语句,如下:假如P2口接LED阴极,阳极通过上拉电阻接Vcc的话;voidmain()//程序开始{while(1)//作用:让下面....

为什么 单片机 程序烧录后LED会 闪烁 ?

答题:LED会闪烁是因为单片机程序烧录后出现了问题。LED闪烁可能是由于程序中存在逻辑错误或者电路连接问题所导致的。逻辑错误可能导致程序运行不正常,从而引...

求一个51 单片机 的程序:一个按键控制led灯 闪烁 ,就是按一下灯闪,再按灯就灭了?

LEDBITP1.0KEYBITP1.1ORG0000HLJMPMAINORG0030HMAIN:CLR00HMAIN1:JBKEY,LOOPJNBKEY,$CPL00H...

单片机 初学者问题汇编语言编制一个循环 闪烁 的?

;八个LED接在P1,低电平发光。ORG0000HMOVA,#7FH;A=01111111,有一个低电平LOP1:MOVR2,#10LOP2:MOVP1,A;输出一个低...

51 单片机 控制led交替 闪烁 原理?

LED灯交替闪烁的原理就是用51单片机的一个引脚同时驱动两只LED,并在这个引脚上输出0.5赫兹以上的方波,就可以让发光管产生交替闪烁效果。具体电路如下:两只...

51 单片机 一个LED灯 闪烁 电路图原理-ZOL问答

3条回答:【推荐答案】图上是用R1、C3构成的复位电路,文字说明有点问题。。文字说明中的R2对应图上的R1,文中的C1对应图上的C3,文字说明没什么问题,主要是和图不是...

单片机 里面一个 闪烁 的LED电路程序不懂,求指教。for(i=0;i<120;i++);这个里面的1?

具体时间要看汇编语言知道,那个for函数,只是让cpu空运行几个周期以达到延迟效果,精确的时间从c语言是看不出来的,如果要精准时间的话要用定时器做具体时间要...

画出一个仿真图,让p2口接8个LED发光二极管,并书写一道程序,让LED灯做亮灭 闪烁 每一秒 闪烁 一次?

首先搞清LED管是高电平导通还是低电平导通。如果是低电平导通,P2赋0x00时,发光管全亮,0xff时,全灭。具体程序:#defineuintunsignedint#defineuch...

如何用 单片机 一个按钮开关控制3个灯3种效果。流水。 闪烁 。还有一直亮。用keil编程?

一步步调试,先把按键去掉。不是没有报错,就会按照你的步骤来实现。这个感觉像是宋老师的开发板。如果不会调试,那么可以用他们提供的代码来对比。一步步调试,...

51 单片机 ,一个按键怎么控制两个灯轮流闪动,看详细说明?

先设置一个位变量,表征现在是启动还是停止。再设置一个位变量,表征应该是LED1亮还是LED2亮。然后在检测到按键的同时,启动定时器,取反第一个变量,计时五秒...

猜你喜欢