Proteus8软件_Proteus软件

proteus中led灯在哪

admin52771年前 proteus相关1240

Proteus LED灯的说明——解决仿真中LED灯无法呈现呼吸灯效果的问题

  • 前言
  • 问题
    • 问题1,LED灯不亮或只会闪烁
      • 伪解决方法(同时进阶问题2)

    • 问题2,LED灯只会常亮
      • 绕过该问题核心的其他解决方法

  • 问题解决方法的探索过程
    • 最简单的LED模型
    • LED的设置界面
    • 解决方法
    • 最终成效

  • 关于批量修改元件参数的教程
  • 总结

前言

这段时间,在用Proteus做一个项目,用到了PWM调制。想用PWM做一个呼吸灯,LED灯要么是常亮,要么是不亮,弄得我头疼。上网查询甚久,都没找到合适的解决方法(有一个是使用外置电路+PWM调制让LED呈现呼吸灯的效果,后面会放这个电路图)。我想就仅仅使用LED灯+PWM调制呈现,但是一直很难找到解决方法。但仔细想想,不对啊,Proteus这么出名的仿真软件,怎么可能连这个小功能都做不到?一定是哪里出了问题,后面我开始自己捣鼓。终于,功夫不负苦心人,我在尝试了十几次后,终于找到了解决方法。在贴上解决方法之前,我先把问题和其他人的解决方法放上来。

问题

问题1,LED灯不亮或只会闪烁

在加入了PWM脉冲源后,当频率较低时,LED灯只会闪烁,当频率变高后,不管你脉冲宽度为多少,LED灯干脆不亮了。如下面这两张动图。
频率300HZ,脉冲宽度50%
频率15kHZ,脉冲宽度100%

伪解决方法(同时进阶问题2)

那是因为LED的元件设置为数字模式,没有设置为模拟模式,所以把这个设置成模拟模式即可。
选择Analog即可

问题2,LED灯只会常亮

设置成模拟模式后,当你脉冲宽度设置得稍微高了一些,LED灯就只会常亮了。而当你将脉冲宽度调到1%时,才能看到它的由暗到亮,由亮到暗的闪烁,但是没过多久,就又常亮了。正常来说,一般不会出现亮暗闪烁的,只会让LED变得很暗。但总体而言,还是有进步的,至少让LED有了亮暗的变化。如下图。

频率1kHZ,脉冲宽度50%
频率1kHZ,脉冲宽度1%
至此,有人选择了放弃,或绕过该问题的核心,转而寻求另一种解决方法。

绕过该问题核心的其他解决方法

这个解决方法是我在网上找到的,即使用外部电路来配合PWM实现呼吸灯效果,里面使用了PNP、NPN、电容等元器件,虽复杂,但也可行。但是对于想要让多个LED实现呼吸灯效果的人来说,算是非常非常非常复杂的。

/* 特别注意,因为在我这个的仿真中,PWM信号源就1个频率,因此无法实现呼吸灯效果,只能让LED在一个亮度等级上稳定。而他们的仿真是连接了单片机的PWM程序,相当于接了一个正弦信号源。如下图所示。*/
PWM模式,频率1kHZ,脉冲宽度50%,这里PWM只有一个频率,只能固定一个亮度级别
正弦波模式,频率20HZ,可以做出呼吸灯效果

问题解决方法的探索过程

最简单的LED模型

从上面我们就可以看出,Proteus都可以让LED有亮暗变化了,怎么可能会在LED的呼吸灯效果上出BUG?首先让我们看看最简单的LED模型。给LED正极接一个逻辑信号源,负极接地,一个最简单的LED模型就出来了。
最简单的LED模型
我们可以看到,当为高电平时,LED迅速被点亮,但是当切回低电平时,LED大概要过个两三秒的样子才会完全熄灭。不难看出,LED点亮只需很短的时间,但是熄灭却需要很久,问题就是出在这里。当PWM信号源频率过高时,会导致LED没时间熄灭。再者,即使脉冲宽度为1%,也有足够的时间点亮LED。因此,我们需要找到这个问题的核心。

LED的设置界面

设置界面

从上面我们可以看出,LED设置界面有模型选择、正向电压、满载电流等。但注意,最下面还有一个“高阶属性”。
高阶属性

点开下拉菜单,可以看到高阶属性里有关断电阻、串联电阻(即内阻)、击穿电压、点亮最小时间。

关断电阻,我属实没弄明白,貌似和IGBT的关断电阻的作用差不多。

//更新一下
在网上查了很多关于“off resistance”的意思,有“关态电阻”、“关断电阻”、“断开电阻”、“关门电阻”、“截止电阻”等意思。我找到了一个类似的解释,放在下面,仅供参考。
网上的资料,仅供参考

串联电阻,就是LED自带的电阻阻值。
击穿电压,就是LED到多大电压就会被破坏,在仿真里就是表现为不工作。但是在Proteus里,有一个“优秀”传统,就是在一些情况下,即使你停止了仿真,LED也是照样亮。所以估计和这个差不多,当你的电压超过击穿电压时,LED灯也在亮。
点亮最小时间,即LED通电后到最亮的时间(默认设置为10ms)。所以依照之前说的,点亮只要10ms,而熄灭要2~3秒,假如按这个去弄PWM占空比…想都不敢想…

解决方法

所以解决方法大家也都猜到了,降低熄灭的时间,提高点亮的时间。(难道大家就没发现在数字模式和模拟模式下,点亮的时间都一样么?)按道理在模拟模式下应该有一个由暗到亮的过程,但是因为官方把点亮时间设定得过于短暂,因此就像瞬间点亮一样(估计是为了满足大部分人的需求吧)。
所以我们就直接去调“点亮最小时间”?错!!!因为这只是治标不治本,到后面你只会发现LED灯只是多了一个由暗到亮的过程,但是,到最亮后依旧常亮!!

因此我们真正要调整的应该是“串联电阻”!可以看到,官方为了增加点亮速度,不但调小了点亮时间,还把这个内阻调到3欧。而3欧的内阻才是真正的罪魁祸首。

//更新一下,如果调了内阻还没有亮暗的效果,可以调整点亮最小时间,将其调整至30m即可。
串联电阻
从网上搜索一下就可以知道,一般实物的LED灯珠,其内阻大概在200欧~300欧左右。
LED内阻1
LED内阻2
因此我们可以随便取个中间值,填入250欧即可。(内阻的大小会影响LED点亮的时间和熄灭的时间,建议根据正向电压和满载电流计算找到合适的阻值)
设置为250欧

最终成效

点亮时间和熄灭时间几乎一样
可以看到,现在点亮的时间和熄灭的时间几乎一样。
这里只需要再配合一下PWM程序就可以轻松实现呼吸灯效果了
再回过头来看之前那个由外部电路构成的呼吸灯模块,是不是觉得很麻烦。只需要修改那小小的内阻,就可以轻轻松松实现那个由许多元器件构成的呼吸灯电路。

关于批量修改元件参数的教程

可能有的人现在就要去修改了,但是一个一个点开属性表改很麻烦,我在这里分享一个批量修改元件参数的教程。
教程链接如下 ↓:
proteus如何批量修改元件参数值

总结

写了将近2000个字。也许有人会说,“妈的,不就是调整一下内阻的事情,非得扯这么多,真啰嗦”。但是我想说的是,我主要是将解决问题的思路记下来,分享给大家,过程是更为重要的,顺便也分享一些LED参数的说明。

最后再吐槽一下,
“真没想到小小的LED也有这么多东西o(╥﹏╥)o”

最近想学习下C51单片机,懒得折腾硬件了,就用proteus软件学习下,把过程记录下,希望能够帮助到想学习C51的人吧。

一、软件安装

1)proteus 8.13安装,请看这里:https://www.aliyundrive.com/s/9DRfHAQfo5G 提取码: 1d9b ,英文环境好,不用担心中文兼容性。

2)安装keil,请看这里:迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项_无痕幽雨的博客-CSDN博客,说明如果仅仅是开发C51,ARM和迪文屏幕开发环境不需要搭建。

二、目录构建

我一般喜欢把和这个项目有关的资料放一个文件夹里面,创建LED文件夹(路径不要有中文),然后再里面创建4个文件夹:hardware、simulation、software、手册资料。

hardware:放置PCB工程文件,制版使用,如AD9工程。

simulation:放置仿真工程文件,如proteus工程。

software:放置软件工程文件,如:keil工程文件。

手册资料:放置本工程用到的硬件资料手册等。

三、创建proteus工程

1)file->new project,路径不要有中文。

 

2)选择器件,单击左方的P按钮,出现器件选择界面:

 3)选择C51单片机,在搜索栏数据89C51,这你选择AT89C51RD2

 双击,左侧的器件栏就会出现选中器件名称:

 4)搜索LED,选择蓝色

6)选择电阻,1K:

 

7)选择电源和地

8)连接电路图

双击灯,修改电流为2mA,不然IO口驱动不了。

整体电路:

直接点击运行,灯就会亮:

 四、创建keil工程

创建工程过程忽略,不知道的小伙伴请自行百度,要实现的功能就是灯亮1S,然后灭1S,实现闪烁。

1)写一个1ms的延时函数,这用示波器查看下,是不是1ms

代码:

  1. //LED
  2. sbit tLed1 = P2^7;
  3. static void delay_ms(uint16_t hwTimer)
  4. {
  5. uint16_t i = 0,j=0;
  6. for(i=0;i
  7. #if (11059200 == HSE_VALUE)
  8. j = 110;
  9. #elif (12000000 == HSE_VALUE)
  10. j = 109;
  11. #endif
  12. while(j--);
  13. }
  14. }
  15. int main(void)
  16. {
  17. //初始化
  18. DIS_INT();
  19. {
  20. //锁存输出
  21. }
  22. EN_INT();
  23. while(1){
  24. tLed1 = 0;
  25. delay_ms(1);
  26. tLed1 = 1;
  27. delay_ms(1);
  28. }
  29. }

 把生产的HEX文件拷贝到仿真文件夹,然后双击单片机,选择HEX文件,这里晶振选择的12M:

 运行:

从示波器看,是1MS。 

修改代码:

  1. int main(void)
  2. {
  3. //初始化
  4. DIS_INT();
  5. {
  6. //锁存输出
  7. }
  8. EN_INT();
  9. while(1){
  10. tLed1 = 0;
  11. delay_ms(1000);
  12. tLed1 = 1;
  13. delay_ms(1000);
  14. }
  15. }

生成HEX,然后选择HEX文件,运行,即可实现1S亮,1S灭的效果。

目录

  • 一、流水灯仿真图
  • 二、程序编写
  • 三、仿真结果
  • 四、小结

一、流水灯仿真图

1、打开Proteus软件,然后点击左上角蓝色标志“isis”;

在这里插入图片描述

2、然后在左侧工具栏中点击“P”键选择元器件,在关键字中输入98c51,然后在“结果”栏中点击第一个,并点击确认。

在这里插入图片描述
在仿真界面上单击,就会把元器件放在界面上。

在这里插入图片描述
然后在最左侧工具栏中找到“总线模式”,在单片机的右侧画一条总线。

在这里插入图片描述
然后在总线和单片机之间用线依次连接(本次只用到单片机的P0口);
注意:在连接总线的时候要注意总线的每条线要一一对应。

在这里插入图片描述
然后在总线右侧接入不同颜色的LED灯,并接入保护电阻和电源。
总的仿真图如下:

在这里插入图片描述

二、程序编写

通过上篇文章安装的Keli软件进行程序的编写,把编译好的程序生成HEX文件下载到单片机中。

1、打开Keli软件,点击“Project”中的“New μVision Project”;

在这里插入图片描述
然后命名为“LED流水灯”,点击“保存”;

在这里插入图片描述
然后在“Data base”中选择“AT89C51”,点击“OK”;

在这里插入图片描述

然后会弹出对话框,点击“是”;

在这里插入图片描述
在左上角点击“File ”中选择“New”,建立新文件,会出现‘Text1;

在这里插入图片描述
然后把以下代码复制到文本中;

//51单片机编程常用的头文件

#include

#include

//延迟函数

void delay_ms(int a)

{

int i,j;

for(i=0;i

{

for(j=0;j<1000;j++) _nop_();

}

}

void main(void)

{

while(1)

{

P0=0xfe;

delay_ms(50);

P0=0xfd;

delay_ms(50);

P0=0xfb;

delay_ms(50);

P0=0xf7;

delay_ms(50);

P0=0xef;

delay_ms(50);

P0=0xdf;

delay_ms(50);

P0=0xbf;

delay_ms(50);

P0=0x7f;

delay_ms(50);

}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

因为要把程序下载到单片机中需要生成HEX文件,下面就先修改一下设置;
在Keil uVision的“Project”中点击Options for Target进入一个新的界面,首先点击Output,然后勾选Create Hex File,最后点击OK。

在这里插入图片描述
然后点击保存并命名为“LED流水灯.c”(需要有.c)

在这里插入图片描述
然后点击编译。结果显示没有错误,但是有两个警告,也显示了生成了HEX文件。

在这里插入图片描述
至此,编译生成的HEX文件就准备好了。

三、仿真结果

在Proteus中仿真图中双击单片机,在显示的界面中在“Program File”中选择刚刚生成的HEX 文件,点击确定。
在这里插入图片描述
然后点击左下角的仿真开关,结果如图:
在这里插入图片描述
至此,LED流水灯的仿真就结束了。

四、小结

1、本次内容在完成整个仿真实验的同时,还熟练的练习了Proteus软件仿真图的设计和Keli中程序的编译、HEX文件生成。
2、本篇内容没有很详细的介绍仿真图的连接原理,只是按照原理图进行了连接。流水灯的程序也没有进行原理解释,本次作业的重点是输入Proteus软件和Keil软件的操作和联系。
3、本次实验作业的内容主要是参考以下同学的博客才完成的,感谢。
https://blog.csdn.net/qq_43279579/article/details/108908566

返回列表

上一篇: c语言数组的使用方法(c语言数组的使用方法有哪些)

下一篇: 编程软件mastercam怎么下载(编程软件mastercam下载要钱吗)

相关文章

proteus中led灯在哪

proteus中led灯在哪

本文目录一览: 1、proteus仿真led灯不亮,求大神解答 2、proteus中LED灯在哪个库里 3、怎么在proteus中找不到LED-YELLOW 4、proteus中有没有三基色led灯? 5、proteus 8 professional怎么将八个led灯亮起来 6、如何在protues中点亮led灯 proteus仿真led灯不亮,求大神解答 1)先这样搭建电路,观看效果,务必弄出正确的效果来;2)代码中你直接给while(1) { P1=0;},这样LED应该会全部亮,否则就是总线连接不正确proteus中LED灯在哪个库里 方法如下:1、打开Proteus并创建一个新文件。2、搜索组件。3、将程序集放置在工作区中。4、电源和接地符号。5、最终结果如下图所示。注意事项:Proteus实现了从概念到产品的完整设计,从原理图布局、代码调试、单片机与外围电路协同仿真、一键开关到PCB设计。它是世界上唯一一个集成电路仿真软件、PCB设计软件和虚拟模型仿真软件的设计平台。怎么在proteus中找不到LED-YELLOW LED,optoelectronics...

proteus中led灯在哪

       大家好!今天让小编来大家介绍下关于proteus中led灯在哪的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。 文章目录列表: 1、如何在protues中点亮led灯 2、怎么在proteus中找不到LED-YELLOW 3、proteus按键和小灯怎么同时连接 4、proteus中LED灯在哪个库里 一、如何在protues中点亮led灯 protues中点亮灯的方法:放置5v电源,放置红色LED灯,放置330欧电阻。然后将它们串联起来。注意正负极别反接。点击仿真开始。这样,LED灯在protues中会被点亮。 二、怎么在proteus中找不到LED-YELLOW LED,optoelectronics,LED,GREEN的顺序进行。led灯驱动器主要分为三种参数类型,分别为阻容降压,恒压驱动和恒流驱动,属于一种固体光源,稳压电路随着负载电压的变化而变化,当稳压电路中的各项参数确定以后,负载阻值越大,输出电压也就越高。LED将其PN结的热量传导到LED封装的散热金属小块上。由于LED产生...

proteus中led灯在哪的简单介绍

proteus中led灯在哪的简单介绍

本文目录一览: 1、如何在protues中点亮led灯 2、proteus8led灯怎么加大电压 3、proteus中有没有三基色led灯? 4、proteus中LED灯在哪个库里 5、proteus按键和小灯怎么同时连接 如何在protues中点亮led灯 protues中点亮灯的方法:放置5v电源,放置红色LED灯,放置330欧电阻。然后将它们串联起来。注意正负极别反接。点击仿真开始。这样,LED灯在protues中会被点亮。proteus8led灯怎么加大电压 1、首先在电脑打开proteus8led灯怎么加大电压软件。2、其次进入软件界面后,点击Terminal Mode工具图标。3、然后在右侧出现的选项中选择“POWER”,放置在软件编辑区中。4、最后双击电源图标,在出来的界面中将string设置为加大电压即可。proteus中有没有三基色led灯? 有啊,而且仿真时是真的会亮的,就是红绿蓝三种基色的LED。见下图,LED的名称就在元件的下面。这就是仿真的效果。向左转|向右转proteus中LED灯在哪个库里 proteus中LED灯在optoelectro...

proteus中led灯在哪

Proteus中LED灯在哪?解析 在学习Proteus软件时,许多人都会遇到一个问题,就是无法找到LED灯在哪里。实际上,在Proteus软件中,LED灯是可以找到的。下面,我们来详细了解一下。 第一部分:找到LED灯 首先,打开Proteus软件,选择“Libraries”中的“Miscellaneous Devices”。 接着,在“Miscellaneous Devices”中,可以找到“LED”组件。将其拖放到画布中即可。 第二部分:连接LED灯 要让LED灯发光,需要将其连接到电路当中。在Proteus软件中,连接LED灯非常简单。 首先,选择“Pick From Libraries”中的电源或者电池,并将其拖放到画布中。接着,将LED灯与电源或电池连接即可。 第三部分:使用LED灯 在完成LED灯的连接之后,我们可以开始使用它了。 点击电源或电池,选择它的属性,即可通过调整电压和电流等参数来控制LED灯的亮度。 总之,在Proteus软件中,LED灯是非常容易找到的。通过简单的连接和调整属性等操作,可以让LED灯发出不同的光芒,应用于各种电路设计。...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

玻璃钢生产厂家甘南玻璃钢雕塑定制河池玻璃钢泡沫雕塑价格广州玻璃钢人物雕塑定制桐乡定制玻璃钢花盆玻璃钢雕塑网红产品玻璃钢传统人物雕塑订做苏州玻璃钢雕塑加工厂玻璃钢花盆用哪个好雕塑玻璃钢人物像玻璃钢花盆雕塑哪家好材质上海室内商场美陈多少钱福建玻璃钢花盆厂桐乡玻璃钢花盆制作山东常见商场美陈市场价兰州景区玻璃钢雕塑设计玉溪市玻璃钢雕塑供应南京多彩玻璃钢雕塑销售厂家爱丽丝梦游仙境商场美陈定制玻璃钢花盆厂生产厂家宁德玻璃钢雕塑哪家好玻璃钢雕塑哪家正规绵阳商场美陈道具沈阳公园玻璃钢雕塑罗定玻璃钢雕塑厂家东莞人像雕塑玻璃钢滁州设计玻璃钢雕塑费用浙江户外商场美陈奉贤区拉丝玻璃钢雕塑厂家供应农耕文化玻璃钢人物雕塑厂家定制玻璃钢的人物雕塑价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化