技术文档

单片机仿真led 51单片机PWM控制LED的亮度仿真程序图谱 (附仿真文件+源代码)

小编 2025-09-14 技术文档 23 0

51单片机PWM控制LED的亮度仿真程序图谱 (附仿真文件+源代码)

51单片机PWM控制LED的亮度仿真程序图谱

因为项目比较简单,我就没有做实物,只是用了仿真来实现,大家最重要的是要弄懂原理。

原理:单片机输出PWM斩波,控制LED的亮度并在图谱上面显示出来

仿真开启

参考代码:

#include "reg51.h"

unsigned int cd,dd;

unsigned char cc,ee;

sbit LED=P2^0;

void led_int() interrupt 1 using 0

{

TH0=0xf1;

TL0=0xf1;

TR0=1;

dd++;

if(dd==11)

{

if((cc==0x50)&&(ee==0)){cd=0;}

if((cc==0)&&(ee==0x50)){cd=1;}

if(cd){cc++;ee--;}

else {cc--;ee++;}

dd=0;

}

}

void delay(unsigned int i)

{

unsigned int j;

while(i--)

{

for(j=0;j<0x20;j++);

}

}

void main()

{

cc=0;

ee=0x50;

TMOD=0x01;

TH0=0xf0;

TL0=0xf0 ;

EA=1;

ET0=1;

TR0=1;

while(1)

{

LED=0;

delay(ee);

LED=1;

delay(cc);

}

}

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,

如果需要 程序完整源代码和 设计文件,请在下方留言或者私信我,看到后会第一时间回复。

谢谢!

感谢你的阅读,希望您有所收获,喜欢请点赞评论加关注!

电子仿真: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://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 普中科技 51单片机开发板 51单片机学习板 AVR ARM STM32 实验板 ¥121 购买

相关问答

单片机 的外部中断 仿真 实验。在 单片机 P1口上接有8只 LED 。在外部中断0输入引脚(P3.2)接一只按钮开关K1?

中断处理函数感觉有些问题,for循环之前使用P1=0x0f;然后将for内的P1=0x0f;改为P1=~P1;同时for循环中应该需要调用延时函数Delay(10);这里的值看你自...

单片机 c语言编程点亮 led 灯?

用c啊,我想想:1、和硬件有点儿关系,这个你清楚么?2、假设led连接到p1口吧。第一个灯接到p1.0。阴极接io,阳极接5v。#includebitsecflag;unsignedchar...

51 单片机LED 灯点亮的c语言编程方法?

/*程序详细功能介绍:*利用取表的方法,使端口P0做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。*在用表格进行程序设计的时候,要用以下的.../*...

51 单片机 怎样控制 LED 的光亮度?

pwm,用定时器T1溢出做pwm周期,在每次T1开始计数时触发输出,软件边增1计数边检查溢出标志。如果软件计数满则清输出,否则直到溢出清输出、清软件计数满值。改变...

单片机 是如何点亮 led 九个灯的?

单片机通过控制IO口的高低电平来点亮LED灯。首先,将LED的阳极连接到IO口,将LED的阴极连接到地。然后,将IO口设置为输出模式,并将对应的IO口输出高电平或低电...

如何让 单片机 灯亮?

让单片机控制LED灯亮的实现方法很多,下面是其中一种基于AVR单片机和汇编语言的控制方法:1.准备材料:ATmega32单片机(或其他型号的AVR单片机)、一个...

单片机 如何控制一个 LED 灯闪烁频率不断加快?

暂时想到两种解决方案:1.最简方案——利用延时函数:进入主函数后,初始化LED,设置一个延时初始值,然后进入while循环,里边只做四件事,打开LED,利用键盘返回...

单片机led led -red有什么区别?

led是所有的发光二级管,在proteus中不一定能实现发光功能,就是一个符号。led-red是红色发光二极管,在proteus中能够发出红色的光,所以,如果是proteus仿真的...

51 单片机 c语言编程 led 灯1,3,5,7和2,4,6,8交替闪烁?

假设你的8个LED是通过低电平来点亮,即LED负极连接P口,正极连接电源:1.当1,3,5,7亮时,我们的P2口状态以二进制表示应该是10101010,也就是0xAA,程序应该写成...

关于 单片机 通过开关三极管驱动 LED ?

现在的单片机IO口灌电流都是在100mA左右,其实你可以直接接;如果没有速度要求的话,用最简单8050NPN三极管就可以了,三极管的接法是IO口串联一个基极电阻Rb后...

猜你喜欢