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后...