注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言. 2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\ 所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。
上传时间: 2013-10-23
上传用户:mqien
multisim10.0仿真软件破解版下载:【软件介绍】 Multisim本是加拿大图像交互技术公司(Interactive Image Technoligics简称IIT公司)推出的以Windows为基础的仿真工具,被美国NI公司收购后,更名为NI Multisim ,而V10.0是其(即NI,National Instruments)最新推出的Multisim最新版本。 目前美国NI公司的EWB的包含有电路仿真设计的模块Multisim、PCB设计软件Ultiboard、布线引擎Ultiroute及通信电路分析与设计模块Commsim 4个部分,能完成从电路的仿真设计到电路版图生成的全过程。Multisim、Ultiboard、Ultiroute及Commsim 4个部分相互独立,可以分别使用。Multisim、Ultiboard、Ultiroute及Commsim 4个部分有增强专业版(Power Professional)、专业版(Professional)、个人版(Personal)、教育版(Education)、学生版(Student)和演示版(Demo)等多个版本,各版本的功能和价格有着明显的差异。 NI Multisim 10用软件的方法虚拟电子与电工元器件,虚拟电子与电工仪器和仪表,实现了“软件即元器件”、“软件即仪器”。NI Multisim 10是一个原理电路设计、电路功能测试的虚拟仿真软件。 NI Multisim 10的元器件库提供数千种电路元器件供实验选用,同时也可以新建或扩充已有的元器件库,而且建库所需的元器件参数可以从生产厂商的产品使用手册中查到,因此也很方便的在工程设计中使用。 NI Multisim 10的虚拟测试仪器仪表种类齐全,有一般实验用的通用仪器,如万用表、函数信号发生器、双踪示波器、直流电源;而且还有一般实验室少有或没有的仪器,如波特图仪、字信号发生器、逻辑分析仪、逻辑转换器、失真仪、频谱分析仪和网络分析仪等。 NI Multisim 10具有较为详细的电路分析功能,可以完成电路的瞬态分析和稳态分析、 时域和频域分析、器件的线性和非线性分析、电路的噪声分析和失真分析、离散傅里叶分析、电路零极点分析、交直流灵敏度分析等电路分析方法,以帮助设计人员分析电路的性能。 NI Multisim 10可以设计、测试和演示各种电子电路,包括电工学、模拟电路、数字电路、射频电路及微控制器和接口电路等。可以对被仿真的电路中的元器件设置各种故障,如开路、短路和不同程度的漏电等,从而观察不同故障情况下的电路工作状况。在进行仿真的同时,软件还可以存储测试点的所有数据,列出被仿真电路的所有元器件清单,以及存储测试仪器的工作状态、显示波形和具体数据等。 NI Multisim 10有丰富的Help功能,其Help系统不仅包括软件本身的操作指南,更要的是包含有元器件的功能解说,Help中这种元器件功能解说有利于使用EWB进行CAI教学。另外,NI Multisim10还提供了与国内外流行的印刷电路板设计自动化软件Protel及电路仿真软件PSpice之间的文件接口,也能通过Windows的剪贴板把电路图送往文字处理系统中进行编辑排版。支持VHDL和Verilog HDL语言的电路仿真与设计。 利用NI Multisim 10可以实现计算机仿真设计与虚拟实验,与传统的电子电路设计与实验方法相比,具有如下特点:设计与实验可以同步进行,可以边设计边实验,修改调试方便;设计和实验用的元器件及测试仪器仪表齐全,可以完成各种类型的电路设计与实验;可方便地对电路参数进行测试和分析;可直接打印输出实验数据、测试参数、曲线和电路原理图;实验中不消耗实际的元器件,实验所需元器件的种类和数量不受限制,实验成本低,实验速度快,效率高;设计和实验成功的电路可以直接在产品中使用。 NI Multisim 10易学易用,便于电子信息、通信工程、自动化、电气控制类专业学生自学、便于开展综合性的设计和实验,有利于培养综合分析能力、开发和创新的能力。 multisim10.0激活码及破解序列号
上传时间: 2015-01-03
上传用户:daoyue
b/s模式的集新闻发布、管理与一体的新闻发布系统,可以发布多个图片的新闻,并且可以很好的排版页面显示的格式;每一篇新闻都可以有自己的关键字来描述,说明该新闻的主要内容,并且可以关联该新闻内容相似的新闻,新闻还可以无限分类 前台是不需要认证的,是供网站的访问者访问的,主要完成了以下功能: 1. 新闻浏览 2. 新闻查询 3. 相关新闻自动链接 4. 新闻评论 5. 新闻主页 6. 新闻访问次数统计 7. 新闻分类列表 后台主要是方便管理员和新闻发布员管理和发布新闻的,主要有以下功能: 1. 新闻主要版面的定义,修改,删除 2. 新闻次要版面的定义,修改,删除 3. 新闻的发布,修改,删除,审核状态的更改 4. 新闻系统的用户的管理 5. 新闻系统用户的密码修改 6. 新闻日志记录 7. 新闻数据统计 8. 系统邮件功能 9. 系统使用说明 系统管理:admin/login.jsp 用户名:administrator 用户密码:123456
上传时间: 2014-01-01
上传用户:wangchong
一个功能强劲的新闻发布系统,有完善的前后台,后台编辑新闻完全不需懂网页制作,通过标签控制,就能排版出各种版面新闻,支持一个新闻页面无限上传图片,灵活自由。而且该系统是基于jsp+javabean动态生成html新闻页面,所有新闻页面不需通过数据库而直接读取html新闻页,所以负载能力远超一般的纯数据库新闻系统,速度当然也是最快的。现在各大型网站都采用这种形式的新闻系统。
标签: 新闻发布系统
上传时间: 2015-02-27
上传用户:zhaoq123
这个源代码可以实现基本的文本编辑功能,包括字体设置(大小、粗斜体、下划线、类型和颜色)、文本对齐方式设置、文本编辑、文档排版等功能。本程序具有微软Office的界面风格,有菜单栏、工具栏、状态栏和右键菜单等
上传时间: 2015-03-30
上传用户:dreamboy36
libsvm升级到2.8版本,针对新的代码稍做修改,重新排版,修正了原版中部分错误
上传时间: 2015-04-08
上传用户:kbnswdifs
该系统是根据学校人事管理工作的实际需要而设计开发的,内容详细且全面,功能完善且操作简便,具有很强的查询、搜索、统计及打印功能,适用于各级各类学校,它对学校实施人事档案电脑化管理,提高工作效率和质量,具有积极的意义。安装简单,用户注册后,只需要进行简单的设置,便使它成为适用于用户学校的“人事信息管理系统”。其主要特征:1、提供多种查询方式及浏览方式:如按姓名、编号或按身份证号查询;单个记录和全体记录浏览。2、能根据当前日期自动计算教职工的年龄、工龄、教龄。3、可设置十多个条件进行搜索,并可设置年龄段、工龄段、教龄段来搜索教职工记录。4、可方便地统计出各类职称、各类学历、各类户口、男女职工、已婚未婚以及正编、代课、聘用、临时 的教职工人数;5、可设置各种格式打印报表,如:教职工一览表、个人档案表、自定义打印、输出到电子表格文件*.xls进行排版打印等。6、提供“数据备份”、“导入备份数据”、“导入注册信息”等功能,保证了数据的安全性,消除了用户担心因系统故障而需要重新注册的忧虑。
上传时间: 2014-01-19
上传用户:dongqiangqiang
强大的后台文章编辑器的功能,可方便地用拖动的方式进行图文混排、图片远程上传、上传图片显示效果处理等操作,以及"从word中粘贴"功能,能全部清除word排版格式多余代码,自由编辑(HTML)栏目模版,可设置多个模版,可自由增删修改栏目以及设置此栏目模版 比v1.23版本增加了: 1、增加了对数据库的备份、恢复和压缩。 2、增加对二级栏目的相互转移新闻。 3、增加了网站友情链接的管理和调用的功能。 4、修复了框架调用新闻时不能显示分页,以及某些调用新闻错误的BUG。 5、修复了后台评论管理不能搜索的问题。 6、修复了JS调用不能显示时间的问题(t=1) 用户名密码是admin
上传时间: 2015-05-02
上传用户:chfanjiang
这本书覆盖面相当广,涉及到几个较复杂的领域——计算机图形,信号处理,排版和颜色管理,集中讲解了 Java 2D API,并包含了很多能编译运行的例子程序。
标签:
上传时间: 2015-05-04
上传用户:skfreeman
应用Ehlib导出显示数据的源代码,一直以来delphi配合Ehlib是非常好的数据库编程排档,但是DBGRID输出到EXCEL等格式却是十分麻烦的事情。此代码应用EHLIB自身功能可直接输出各类排版格式。应用十分简单。
上传时间: 2015-06-17
上传用户:ANRAN