《基于单片机的PWM波形实现LED灯控制系统设计》11000字_第1页
《基于单片机的PWM波形实现LED灯控制系统设计》11000字_第2页
《基于单片机的PWM波形实现LED灯控制系统设计》11000字_第3页
《基于单片机的PWM波形实现LED灯控制系统设计》11000字_第4页
《基于单片机的PWM波形实现LED灯控制系统设计》11000字_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[19]。定时器如果工作在PWM模式下,计数值不断与捕获比较值和自动重装载值进行比较。例如在计数递增情况下,当cnt<ccr时输出低电平;当arr>cnt≥ccr时输出高电平;当cnt=aar时输出低电平同时计数值归零,重新开始计数。不断循环产生PWM波形,通过改变CCRx和AAR的值来控制波形的宽度和频率。PWM波形产生的示意图和实际波形图如图11、图12所示:图11PWM波形产生示意图图12PWM实际波形图需要注意的是电平是否有效,取决于选择的PWM模式。如表1所示表1PWM1和PWM2的区别模式计数方式说明PWM1递增递减CNT<CCR,通道CH为有效,否则为无效

CNT>CCR,通道CH为无效,否则为有效PWM2递增CNT<CCR,通道CH为无效,否则为有效

CNT>CCR,通道CH为有效,否则为无效递减PWM函数流程图如图13所示:图13PWM函数流程图3.1.3外部按键中断函数外部按键中断是当外部有按键按下时,CPU首先处理中断处理调用中断服务函数执行相应程序,完成以后回到断点继续执行原来的程序。本文使用了两个按键,分别与GPIOB12、GPIOB14相连接,与之对应的中断线就映射到了EXTI12和EXTI14上。当按下按键1时,中断线EXTI12响应调用中断函数执行模式二;当按下按键2时,中断线EXTI14响应调用中断函数执行模式三。外部中断函数需要进行中断优先级配置、外部中断配置、按键输入配置。(1)初始化GPIO口并开启复用时钟。(2)配置按键输入。(3)初始化中断。(4)NVIC初始化。选择中断分组、配置中断通道、响应优先级、抢占优先级,并使能。(5)编写中断服务函数。根据按键1或按键2哪个按下,选择闪烁模式。(6)清除中断标志位。中断流程图如图14所示:图14中断流程图3.1.4按键扫描函数按键输入配置步骤:(1)使能与按键相对应的GPIO时钟。(2)初始化GPIO口模式。指定对应IO口、设置上拉/下拉模式,初始化IO口。(3)扫描IO口电平。这里需要用到扫描函数。按键扫描函数有两种:支持连按方式和不支持连按方式。决定是否采用哪种扫描方式是由Mode来设置的,将其设定为零时模式为不支持连按,在按下按键时必须要释放,否则扫描按键时不会二次扫描也不会执行相应的子程序;把其设定为1时模式为支持连按,在按下按键没有松开时,扫描时会一直响应返回键值执行相应的子程序。扫描按键一般会经过以下几个过程:判断按键是否按下、按键去抖、扫描按键、确定按键位置并计算按键值,返回键值。具体扫描流程图如图15所示:图15按键扫描流程图3.1.5万年历显示函数如果想要实现显示万年历的功能,需要一个LCD显示屏和一个是时钟芯片。而TFT9341显示屏则需要ILI9341芯片驱动,芯片提供了两种接口方式可以选择,8位或16位的8080并行接口或者3/4线的SPI串行接口。本文采用四线的SPI模式,四线由片选引脚(CS)、时钟引脚(SCK)、数据命令选择引脚(DC)数据输入引脚(SDI)构成,连接电路如图16所示:图16SPI连接线路如果想要进行显示操作,一般需要画点、读点、填充和清屏等三步这里就不读介绍。这里主要介绍从DS1302时钟芯片读取正确的时间过程和程序配置,首先我们要把1302芯片与单片机连接的两根线(SCLK、CE)进行端口初始化(使能IO口、设置速度、输出输入模式),将双向IO口分别配置输出状态(推挽输出)和输入状态(浮空输入);然后对DS1302芯片进行读写操作,不论进行哪种操作都需要先将SCLK置零使其不具备写保护能力;最后将读取到的年、月、日、小时、分钟、秒等数据拆分传输到液晶显示屏上。具体过程如图17所示:图17DS1302读写流程图3.2软件开发工具KeiluVision5MDK版是ARM旗下德国Keil公司在2013年使用uVision5IDE开发环境下推出针对ARM控制器的一款软件。在软件中有多个厂家不同的芯片,是为满足嵌入式工程师的要求专门设计的集成开发工具,与KeilC51不同MDK5是扩展版,主要服务对象不再是8051这种简单的CPU而是ARM9、Cortex-M4/M3/M1等32位微控制器内核,是主流的ARM开发软件。其提供了ANSIC编译器、宏汇编、工程库管理、链接器、仿真器等五部分,为工程师如期完成任务提供了方便。此款软件并未发行国内版本,是由国内三家公司共同提供Keil的销售和售后技术支持。使用软件Keil5MDK时我们首先需要新建一个文件夹来保存工程,再点开软件新建工程,接着在弹出的窗口选择自己所使用的的芯片STM32F103C8然后点击“OK”就行,建好工程后添加工程项目在弹出的窗口编辑代码。我们还需要点击魔术棒进行项目管理和将添加对应的头文件加入到我们的工程当中,具体过程步骤过多这里不多介绍。在第一次使用时我们需要设置软件使其编译完成以后产生对应的.hex文件,否则无法将程序烧入到单片机当中。当我们完成程序的编写和编译通过以后,就要将程序下载到处理器里边,本文采用JLINK引出四根杜邦线与C8T6核心板上3.3V引脚、GND引脚、CLK引脚、SWDIO引脚等一一对应相连接,这样就可以把程序烧入到处理器内部,然后就可以进行调试。第4章制作与调试4.1电路板腐蚀与焊接在经过理论基础学习和硬件及软件设计以后,我们需要将其真正制作出来。制作步骤主要分为两部分:电路板腐蚀和电路板器件的焊接。4.1.1电路板腐蚀电路板腐蚀一般分为以下七个步骤:(1)使用软件AD16画出芯片原理图、电阻、LED、时钟芯片等器件,并放到合适的位置进行连线。(2)将电路原理图转换为PCB图,将主要元器件放在中间然后将LED灯放在器件的周围并使LED灯呈现出心形的形状然最后进行器件之间的走线,切记不要漏掉,否则会影响成品的成败。(3)使用打印机把PCB图打印出来,并将热转印纸裁剪。(4)转印电路板。首先根据热转印纸裁剪板子,在用砂纸将板子打磨,最后使用机器转印。(5)可能会存在转印不好的地方,使用马克笔涂一下。(6)腐蚀电路板。配置腐蚀液(40%的FeCl3和60%的温水),将PCB电路板放进腐蚀液中完成以后应立即取出防止腐蚀电路,然后用水冲洗、擦干,最后用砂纸擦拭干净。(7)为了保存时间长一点,一般使用松香液涂抹一下打磨好的PCB电路板。注意:腐蚀电路板会存在一定的危险性,在腐蚀过程中我们应该远离腐蚀液,因为腐蚀液挥发带有一定的毒性;避免接触到腐蚀液,当我们接触到腐蚀液后应该立即用水冲洗十五分钟,眼睛接触时应马上提起眼睑用水或生理盐水冲洗。4.2.2电路板器件焊接(1)在我们完成PCB电路板腐蚀以后,需要将电路元器件按照电路板连线时确定的位置摆放。注意有的器件需要区分正负极不能装反(电容引脚长度不同,长的引脚对应正极),摆放时应摆列整齐,同一器件不能两边高度不一。(2)准备焊接。准备好焊铁和焊锡及助焊剂(松香或焊膏),清理烙铁头保证烙铁可以正常吃锡。(3)加热焊接。将焊铁移动到焊点进行加热同时加入焊锡,几秒钟之后拿走焊锡和电焊铁。拿开焊铁时要保证元器件与焊锡已经牢固,避免造成焊的不结实或虚焊。(4)清理焊接点。焊接的时候可能会因为焊接时间过长造成焊接点焊锡太多,我们需要将焊铁头上边过多的焊锡清理掉(注意不要碰到皮肤或清理到PCB板上边),然后用焊铁将焊锡沾掉一些。(5)检查和修剪焊点。检查焊点是否美观、牢固,避免与其他的元器件连到一起,连焊会造成器件的损坏。同时把过长的元器件引脚剪掉使整体更加简洁整齐。在焊接过程中难以避免会发生焊错元器件,这时我们需要把器件拆掉。面对像电容电阻这类引脚数少的器件只需将焊点融化,然后用镊子夹掉元器件。但是面对多焊点器件时我们首先要用吸锡器把各个引脚的焊点清理干净以后才能使用镊子取出器件。注意:在不使用电烙铁时不要将电烙铁随意放在某个地方,需要将其放进烙铁架里边,因为烙铁温度太高会烧坏皮肤或损坏导线造成危险;烙铁旁不能放置易燃易爆物品以免发生火灾或爆炸。同时需及时关闭电源,以加长烙铁的使用时间。4.2系统调试在经过电路板腐蚀和元器件焊接过程以后,因为电子元器件的性能参数具有离散性,类型不同的电子器件组合在一块所呈现出的效果和运行状态可能会与预想的有所差异,所以我们就需要进行系统调试。调试一般会花费项目的很多时间,系统调试过程主要分为以下两个部分:硬件调试和软件调试。但在实际调试过程中硬件和软件一般都需要联合起来一块调试,在焊接一部分硬件电路后可以先进行软件调试这样可以避免重复拆卸,没有问题以后在进行另外一部电路的制作。4.2.1硬件调试在电路板腐蚀或焊接完成以后,我们不要立即插入主要器件,最好在给电路板提供电源之前根据电路原理图检查电路板线路连接是否正确和是否出现开路、错线等工艺性错误。在给电路板供电以后,使用万能表或类似的检查工具测试器件的各个引脚的电压是否符合数值和正负极要求,避免线路之间的短路烧坏电子器件。在检查元器件时首先核对器件的型号和规格是否符合,然后一个一个插入,分别通电这样容易检测出器件是否损坏,注意的是有些器件是有极性的,需要按照正确的方向放置和焊接。在全部电子器件焊接完毕后,为电路板供电,判断各个器件之间的逻辑关系,检查所呈现出的效果是否与自己的预想的相同。如果与实现的功能有所不同,我们就需要检查并分析硬件电路,判断是否更改电路。但是我们之前提过通过软件如果能实现功能就不要更改硬件,用时间来交换空间,因为硬件电路的增加不仅会提高制作成本还会增加电路的故障率。4.2.2软件调试系统软件分为多个程序模块,在软件调试过程中先将每个模块单独进行调试,再把模块组合起来进行总体调试。实现的功能可能较为复杂,我们可以从简单的入手一步一步的进行细化最后完成自己的需求。本文需要用多路PWM控制多个LED灯的明暗,我们就从简单的开始,首先使用一个定时器产生两路PWM使其能够控制两个LED灯的明灭,在调试符合要求以后对程序进行修改,就可以实现自己的需求。在此基础上,根据功能增加按键中断功能和万年历显示功能,具体过程就不多介绍。软件调试需要将程序烧入硬件系统中,这里需要注意在我们程序编写完毕之后进行编译,编译通过以后会生成一个.hex文件。有些同学第一次使用时可能并未进行设置编译以后没有生成文件,在软件界面上会有一个魔术棒,点击OutPut勾选CreateHEXFile,这样就可以将程序下载到硬件系统中。具体调试过程中我们可以使用模拟调试功能,在程序当中设置断点和单步执行,也可以跳过语句或直接运行到光标处,我们可以在监视窗口查看变量和寄存器的值。第5章总结与展望5.1总结为了实现呼吸灯和万年历的功能,有关它设计的所有内容已经全部介绍完毕。因为并未接触过STM32,本次设计一切从零开始,从简单的基础知识开始学习和查阅资料了解各个器件的功能,再进行方案的设计、程序的编写。本文主要介绍了国内外对此的研究和以后的发展趋势、前期所需要学习的理论知识、系统硬件和软件的设计、制作与调试。设计所呈现出来的功能完备、运行稳定,呼吸灯变换方式多样,万年历读取方便、显示直观。5.2展望在整个设计过程中,由于时间和自己能力的原因,本次系统设计还是比较简单只能实现基本的功能还存在很多的不足需要改进。例如:(1)灯变换的模式较少和变换样式简单,需要优化程序增加多样性。(2)液晶显示屏只能显示万年历,显示单一,可以加入一个温度感应模块或声音检测装置加以显示,增加趣味性。(3)灯的变换需要电路板按键控制才能改变,可以增加无线传输模块实现短距离控制。(4)可以实现使用手机APP控制,提高可玩性和可操作性。参考文献马永杰.单片机原理及应用[M].北京:清华大学出版社,2013:1-2.张毅刚,彭宇,赵光权.单片机原理及接口技术[M].北京:人民邮电出版社,2011:15-15.邙芸浩.51和STM32单片机区别[J].电子报,2019.09.29(007).廉佐政,王海珍.基于STM32的PWM输出实验[J].实验技术管理,2017,34(8)137-140程文龙,徐瑾,孙智勇.基于STM32呼吸灯的实现[J].电脑知识与技术,2018,14(07):198-199周志敏,纪爱华.白光LED驱动电路设计与应用实例[M].北京:人民邮电出版社,2009:3-7.刘木淸,周徳成,梅毅.LED与传统光源比较分析[J].照明工程学报,2006,17:4刘增基,周洋溢等.光纤通信[M].西安:西安电子科技大学出版社,2009:57-59薛士然.STM32F0满足不了设计要求?试试STM32G0![J].单片机与嵌入式系统应用,2019,19(01):90.王志鹏,周博昊,王素芹.LED可见光通信系统设计[J].中外企业家,2020(21):139.刘磊.基于STM32的电子万年历系统设计[J].科技资讯,2015,13(01):20.田德永.基于STM32定时器的PWM实验教学[J].电子技术与软件工程,2019(20):102-103.王

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论