毕业设计模板(PWM可调光控制系统)

上传人:沈*** 文档编号:170918280 上传时间:2022-11-23 格式:DOC 页数:23 大小:338KB
返回 下载 相关 举报
毕业设计模板(PWM可调光控制系统)_第1页
第1页 / 共23页
毕业设计模板(PWM可调光控制系统)_第2页
第2页 / 共23页
毕业设计模板(PWM可调光控制系统)_第3页
第3页 / 共23页
点击查看更多>>
资源描述
广州民航职业技术学院毕业论文基于单片机与PWM技术的可调灯光系统作者姓名学科专业指导教师所在学院论文提交日期分类号: 学校代号:学 号: 秘密 五年 广州民航职业技术学院毕业论文基于单片机与PWM技术的可调灯光系统作者姓名: 指导教师姓名、职称:申请学位级别: 学科专业名称:研究方向:论文提交日期: 年 月 日 论文答辩日期: 年 月 日学位授予单位: 学位授予日期: 年 月 日答辩委员会成员:主席: 委员: 广州民航职业技术学院学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:本人在校攻读学位期间论文工作的知识产权单位属广州民航职业技术学院。学校有权保存并向国家有关部门或机构送交论文的复印件和电子版,允许学位论文被查阅(除在保密期内的保密论文外);学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编学位论文。本人电子文档的内容和纸质论文的内容相一致。本学位论文属于:保密,在 年解密后适用本授权书。不保密。学位论文全文电子版提交后:同意在校园网上发布,供校内师生和与学校有共享协议的单位浏览。(请在以上相应方框内打“”)作者签名: 日期:指导教师签名: 日期:目录第一章 系统总体设计1第一节 概述1第二节 功能设计1第三节 功能实现2第二章 硬件电路分析4第三章 软件系统设计5第一节 程序流程图5第二节 程序源代码6第四章 系统调试13第一节 单元及系统测试13第二节 易用性测试及参数整定15毕业设计体会16参考文献17基于单片机与PWM技术的可调灯光系统第一章 系统总体设计第一节 概述PWM(Pulse Width Modulation),即脉冲宽度调制,简称脉宽调制,是一种对模拟信号电平进行数字编码的方法。PWM技术通过使用较高的调制频率,对方波的占空比实行调制,从而实现对一个模拟信号的电平进行编码。其最大的优点是从处理器到被控对象之间的所有信号都是数字形式的,无需再进行数模转换过程,而且对噪声的抗干扰能力也大大增强。因此PWM在通讯等信号传输行业得到广泛应用。本毕业设计作品是一个基于单片机与PWM技术的可调灯光系统。即通过单片机以PWM方法控制实现LED无级调光,同时具有良好的交互设计方便用户设定亮度级别,硬件部分基于学院单片机实验平台。第二节 功能设计本系统在实验平台上利用6个按钮实现亮度输入及开关灯功能,4个数码管用于亮度级别显示和开关灯提示,通过单片机I/O口输出调制脉冲控制LED亮度。各器件在实验箱上的布局及其功能如下图所示:图 1 系统布局及其功能操作时,用户通过“开/关”按钮开关LED,不论灯处于亮灭时都可以用其它的调节按钮调节亮度值,按放“亮度+(亮度-)”按钮可以加1级(减1级)亮度,长按则会重复加(减)亮度。当前亮度级别及开关灯情况将显示在数码管组,亮度值有三位,以十进制数显示,从“001”到“999”共999级亮度,开关灯标志位以“P”表示开灯(意为Processing),“H”表示关灯(意为Halting)。例如,数码管显示“P520”即当前亮度设定520级,开灯,若显示“H886”即当前亮度设定886级,关灯。 图 2 数码管显示方式示例按放“低亮”、“中亮”或“高亮”可设定为预设的亮度,“低亮”为250级,“中亮”为500级,“高亮”为“750”级。在三个预设亮度的跳转下,再配合“亮度+/-”按钮的延迟重复功能,用户可以很方便地设定所要的亮度。在功能上我以下面三个标准来设计:1、 提供足够多的PWM亮度级别,并使系统有足够的调节精度;2、 按钮功能应使用户感到方便易用;3、 数码管应能以易于理解的方式向用户反馈所需的信息。当前功能基本能体现设计标准。第三节 功能实现PWM输出利用I/O口直接输出到LED,由于LED功率不大,AT89S51单片机端口的负载能力满足要求,可以直接驱动。而PWM脉波的产生使用定时器中断控制,使两个定时期T0、T1均工作于方式1,T0中断产生PWM基波,T1中断控制占空比,简要分析定时器与PWM脉波时序如下:图 3 PWM输出的简单时序分析分析可知,T0中断T0重载定时常数,复位输出,并使T1也重载常数,启动T1T1中断时,置位输出,停止T1T0中断,如此循环。使用中断方式能获得准确的定时周期以保证PWM的调制精度,T0作为PWM基波,为避免闪烁,应达到较高频率,本系统取500Hz。T1要有效地控制占空比,其定时周期应比T0小,通过调节T1的定时周期就能调节PWM输出脉波的占空比,从而改变亮度等级,其对应关系如图3所示:图 4 定时常数、占空比、亮度等级的对应关系按钮输入采用查询方式实现,并对按键进行防抖动处理,对“亮度+/-”按钮加入延时重复功能。延时重复功能通过对一延时变量在按下按钮时进行减计数,在减至触发值前按钮弹起则视为短按,执行相关代码1次,当减至触发值后仍保持按下,则快速执行代码,起到重复按下的效果。图 5 延时重复功能原理数码管输出的亮度级数需要经过一系列的编码转换,按钮控制亮度调节变量,调节变量变换成相应的BCD码放入数码管输出缓冲区,调节变量也变换成相应的T1定时常数以备加载。数码管采用74LS164锁存驱动,单片机通过串行口输出显示码到4片74LS164,显示码通过查表算法实现。第二章 硬件电路分析本系统基于学院单片机实验平台实现,无需专门作硬件设计,在此分析系统涉及的实验箱模块的电路原理图,以便了解编程细节。图 6 单片机PWM调光系统原理图各元件规格如下:单片机型号为AT89S51,晶振6MHz;输入按钮K1K6分别接至P2.0P2.5,按下时输入低电平;4数码管使用共阴接法;端口P1.2接受控LED。第三章 软件系统设计第一节 程序流程图主程序流程图如下:开始初始化键扫描有无键按下?T1定时值计算程序显示BCD码计算程序显示程序亮度值加1K1?亮度值减1K2?低亮250级K3?中亮500级K4?高亮750级K5?开/关灯K6?YesNoYesYesYesYesYesNoNoNoNoNoYesNo图 7 主程序流程图程序初始化时设定定时器工作方式,赋定时初值,并对一系列配置变量进行初始化;按键扫描程序实现对亮度调节变量及开关灯变量的修改,其中,亮度调节变量将通过定时值计算程序计算出T1的定时值,通过显示BCD码计算程序计算出显示缓冲区的显示码。显示程序将显示缓冲区的内容输出到数码管显示。按键检测采用扫描方式,并有防抖动和延时重复功能。定时期T0、T1工作于方式1,以中断方式输出PWM脉波。定时期中断服务程序流程图:重载T0定时值T0中断服务子程序关灯?设定T1定时值启动T1关灯返回返回关闭T1开灯NoYesT1中断服务子程序图 8 定时器中断服务程序流程图通过T0中断产生PWM基波,T1中断调节占空比,从而实现PWM。第二节 程序源代码DIRLOP EQU38H;显示字节数T2H EQU59H;T1高8位定时值存储器T2D EQU5AH;T1低8位定时值存储器LAMP EQUP1.2;电灯控制位NUMCHEQU40H;亮度调节变量,高位NUMCLEQU41H;亮度调节变量,低位TEMPC1EQU42H;临时变量,用于BCD转换子程序TEMPC2EQU43H;临时变量,用于BCD转换子程序TEMPC3EQU44H;临时变量,用于BCD转换子程序SWITCH0EQU45H;电灯开关KEYDEQU46H;按键重复延时变量NOTEBEQU3CH;数码管电灯开关标志DIGI000EQU3DH;数码管百位BCDDIGI00EQU3EH;数码管十位BCDDIGI0EQU3FH;数码管个位BCDORG 0000HAJMP STARTORG 000BHLJMP TIME1 ;T0中断程序(产生PWM基频)ORG 001BHLJMP TIME2 ;T1中断程序(控制脉冲宽度)ORG 0030HSTART:SETBLAMP ;程序初始化 MOV A,#0MOVSWITCH0,A MOV TMOD,#11H ;设定两定时器为16位定时器 MOV IE,#B ;开启两定时器的中断请求 MOV TH0,#0FCH ;设定PWM基频(500Hz) MOV TL0,#18H MOV T2H,#0FEH MOV T2D,#89HMOVNOTEB,#10H;数码管千位开灯显P关灯显H SETB TR0 ;启动计数器T0MAIN: ACALL KEY ;调用键扫描子程序 ACALL CHANGET;时间常数计算子程序ACALLNUM2BCD;BCD码转换子程序ACALL DISP;数码管显示子程序 ACALL DLYK ;调动20ms延时程序 NOP NOP SJMP MAIN KEY: MOV P2,#0FFH ;向P2口写1,准备读取数据 NOP NOPKEY1: JNB P2.0,K1 ;按键扫描 JNB P2.1,K2 JNB P2.2,K3 JNB P2.3,K4JNB P2.4,K5JNBP2.5,K6MOVKEYD,#15;按键延时重复变量初始化 BACK: RETK1:ACALLDLYK ;按键去抖动JBP2.0,BACKJ1:ACALLKEY_SW;调用延时重复子程序ACALLCHECKMAX;调用最大值限制子程序MOVA,NUMCLADDA,#1;调节值加1MOVNUMCL,AJCHPLUS;进位处理SJMPBACKHPLUS:;处理进位INCNUMCHSJMPBACKK2:ACALLDLYKJBP2.1,BACKJ2:ACALLKEY_SWACALLCHECKMINMOVA,NUMCLCLRCYSUBBA,#1;调节值减1MOVNUMCL,AJCHMINUS;借位处理SJMPBACKHMINUS: ;处理借位DECNUMCHSJMPBACKK3: ACALL DLYK JB P2.2,BACKJ3: JNB P2.2,J3 MOV NUMCH,#00H;亮度预设,低亮250级 MOV NUMCL,#0FAH SJMP BACKK4: ACALL DLYK JB P2.3,BACKJ4: JNB P2.3,J4 MOV NUMCH,#01H;亮度预设,中亮500级 MOV NUMCL,#0F4H SJMP BACKK5: ACALL DLYK JB P2.4,BACKJ5: JNB P2.4,J5 MOV NUMCH,#02H;亮度预设,高亮750级 MOV NUMCL,#0EEH SJMP BACKK6:ACALLDLYKJBP2.5,BACKJ6:JNBP2.5,J6MOVA,SWITCH0CPLA;电灯亮灭控制MOVSWITCH0,ACJNEA,#0,NEXT_J6MOVNOTEB,#10H;电灯亮数码管显示SJMPBACKNEXT_J6:MOVNOTEB,#11H;电灯灭数码管显示SJMPBACKCHECKMAX:;最大调节值限制子程序MOVA,NUMCHCJNEA,#03H,OUT1;最大调节值为3E7H=999MOVA,NUMCLCJNEA,#0E7H,OUT1DECNUMCLOUT1:RETCHECKMIN:;最小调节值限制子程序MOVA,NUMCHCJNEA,#0,OUT2MOVA,NUMCL;最小调节值为1CJNEA,#1,OUT2INCNUMCLOUT2:RETKEY_SW:MOVA,KEYD;延时重复子程序CJNEA,#0,KEYSW_NTRETKEYSW_NT:ACALLDLYKDJNZKEYD,KEYSW_NTRETCHANGET:;将调节值转换为定时常数MOVA,NUMCHCPLAMOVT2H,AMOVA,NUMCLCPLAMOVT2D,ARETDLYK:MOV R4,#4AH ;20ms定时子程序DLYK1:MOV R5,#62HDLYK2:DJNZ R5,DLYK2 DJNZ R4,DLYK1RET TIME1: MOV TH0,#0FCH ;定时中断0 MOV TL0,#18H PUSHACC PUSH PSWMOVA,SWITCH0CJNEA,#0,OUT_T1;开关变量判断CLR LAMP ;开灯 MOV TH1,T2H ;输入T2定时值控制脉冲宽度 MOV TL1,T2D SETB TR1 ;启动定时器1OUT_T1:POP PSW POP ACC RETITIME2: SETB LAMP ;关掉电灯 CLR TR1 ;关闭定时器1 RETINUM2BCD:;将调节值转换为对应的BCD码BCDL:MOVA,NUMCL;低位处理MOVB,#100DIVABMOVDIGI000,AMOVB,#100MULABMOVTEMPC1,AMOVA,NUMCLCLRCYSUBBA,TEMPC1MOVTEMPC2,AMOVB,#10DIVABMOVDIGI00,AMOVB,#10MULABMOVTEMPC1,AMOVA,TEMPC2CLRCYSUBBA,TEMPC1MOVDIGI0,AMOVA,DIGI00SWAPAADDA,DIGI0MOVTEMPC1,ABCDH0:MOVA,NUMCH;高位处理CJNEA,#0,BCDH1RETBCDH1:CJNEA,#1,BCDH2MOVTEMPC3,#56HACALLBCDHMOVA,DIGI000ADDA,#2MOVDIGI000,ARETBCDH2:CJNEA,#2,BCDH3MOVTEMPC3,#12HACALLBCDHMOVA,DIGI000ADDA,#5MOVDIGI000,ARETBCDH3:MOVTEMPC3,#68HACALLBCDHMOVA,DIGI000ADDA,#7MOVDIGI000,ARETBCDH:MOVA,TEMPC1ADDA,TEMPC3DAAMOVTEMPC1,AMOVA,#0ADDCA,DIGI000MOVDIGI000,AMOVA,TEMPC1ANLA,#0F0HSWAPAMOVDIGI00,AMOVA,TEMPC1ANLA,#0FHMOVDIGI0,ARETDISP: MOV DIRLOP,#4 ;串行显示程序(4位数码管) MOV R0,#3CH ;3CH到3FH是显示缓冲区DL0: MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR ;查得相应的七段代码 MOV SBUF,A ;串行发送DL1: JNB TI,DL1 CLR TI INC R0 DJNZ DIRLOP,DL0 RET;共阴七段数码管代码表TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H DB 0BEH,0E0H,0FEH,0E6H,0EEH,03EH,9CH DB 7AH,9EH,8EH,0CEH,06EHEND第四章 系统调试第一节 单元及系统测试为确保程序按预期结果运行,对系统进行一系列功能测试,同时为减少相互影响,便于找出问题所在,先进行某个功能的测试。按钮是为系统提供输入条件的模块,按钮必须保证稳定可靠地工作,单元测试先测试按钮功能,再利用按钮输入来做子程序测试。表格 1 按钮功能测试测试对象测试方法预期结果实测结果结果分析亮度+按放1次亮度+1亮度+1按钮防抖及延时重复功能正常按钮老化令按放操作时有不灵敏数码管显示正常亮度在调节幅度大时变化明显快速重复按放亮度慢速重复递增亮度慢速重复递增长按亮度快速重复递增亮度快速重复递增亮度-按放1次亮度-1亮度-1快速重复按放亮度慢速重复递减亮度慢速重复递减长按亮度快速重复递减亮度快速重复递减低亮按放弹起时作用亮度设250弹起时作用亮度设250按钮防抖功能正常偶有不灵敏操作现象数码管显示正常亮度变化明显长按弹起时作用亮度设250弹起时作用亮度设250中亮按放弹起时作用亮度设500弹起时作用亮度设500长按弹起时作用亮度设500弹起时作用亮度设500高亮按放弹起时作用亮度设750弹起时作用亮度设750长按弹起时作用亮度设750弹起时作用亮度设750开/关灯按放弹起时作用开关灯切换弹起时作用开关灯切换按钮防抖功能正常时有不灵敏操作现象数码管显示正常LED灯受控开关长按弹起时作用开关灯切换弹起时作用开关灯切换从测试结果来看,按钮实现了设计的功能,通过按钮可以有效操作调光系统。按钮的防抖设计避免了开关抖动,但由于部分按钮在实验室频繁按放已出现老化,这影响了部分按钮的灵敏度。完成按钮测试后,利用特定输入控制进行子程序测试,测试下列5个关键的子程序/代码段:表格 2 子程序/代码段功能测试测试对象测试过程结果及其分析亮度+代码段(含进位处理,最大值限定子程序)I.亮度值=511(对应内部变量1FFH),按亮度+, 测试进位,亮度值可能是:=512(正确进位,=200H),=256(进位出错,=100H)II.亮度值=999(对应内部变量3E7H),按亮度+, 测试最值限定,亮度值可能是:=999(有效限定最大值,=3E7H),=其它(限定出错)经反复修改调试后I.亮度值=512II.亮度值=999实现设计的代码功能亮度-代码段(含借位处理,最小值限定子程序)I.亮度值=256(对应内部变量100H),按亮度-, 测试借位,亮度值可能是:=255(正确进位,=0FFH),=511(进位出错,=1FFH)II.亮度值=001(对应内部变量1H),按亮度-, 测试最值限定,亮度值可能是:=001(有效限定最小值,=1H),=其它(限定出错)经反复修改调试后I.亮度值=255II.亮度值=001实现设计的代码功能二进制到BCD码转换子程序观察亮度值全范围是否为十进制数;在Keil软件中用调试工具观察转换是否正确。经反复修改调试后实现设计的代码功能开关灯标志显示功能代码段按开/关灯时,观察开/关灯标志是否正确显示:开灯是显示“P”,关灯时显示“H”;在Keil软件中用调试工具观察相关变量作用:开关标志(45H),开关显示标志(3CH)。实现设计的代码功能定时值计算子程序观察亮度调节时的LED明暗变化在Keil软件中用调试工具观察转换是否正确。实现设计的代码功能完成子程序/代码段测试后,进行系统测试,测试方法是反复改变控制输入,观察各独立功能是否正常。测试在特定亮度值(涉及进位借位的,或极值)增减,观察亮度变化和显示是否正常,同时进行开关灯控制,反复调试以验证系统可靠性。特定的亮度值如下表:表格 3 系统测试特定的亮度值调节变量进借位256、512、768BCD转换进借位100、200、256、300、400、500、512、600、700、768、800、900极值001、999经过反复修改调试,系统最终完全通过上述测试,证明系统的功能设计已经全部实现,并能可靠使用。第二节 易用性测试及参数整定工业设计应充分考虑人机交互,即控制方式的选择应该符合人的使用习惯,同时让机器的信息反馈易于理解。本调光系统基于学院单片机实验平台,无法更改硬件,但在功能布局及操作细节和显示反馈上可以优化设计改进用户体验。本调光系统的按键功能定义如下:图 9 控制按钮功能定义在调光设置上,用户希望能以简单快捷的操作设定到所需的亮度值,使用三个亮度预设即可立即设为常用的高亮、中亮或低亮,在此基础上,最多只需调节125250个亮度即可设定所需度值,配合亮度+/-的延时重复功能,既能以点按精确增减,又能以长按快速调节,按钮的布局也充分考虑用户的逻辑习惯。通过开/关按钮开关LED灯时,数码管上的开/关灯标志位会在亮灯“P”,灭灯“H”之间切换,让用户清晰易辩。易用性测试通过测试用户使用调光系统的操作复杂性,以此来分析改进系统功能的易用性。表格 4 用户易用性测试用户行为最佳操作步骤复杂性耗时当前亮度264设定亮度354长按亮度+,加至340多时,换点按亮度+加至3541次长按515次点按712秒当前亮度352设定亮度732按高亮设750,长按亮度-至740左右时,点按亮度-至7321次长按515次点按613秒当前亮度001设定亮度999按高亮设750,长按亮度+至9991次长按1次点按1214秒由测试分析可知,用户只需使用12个按钮即较快设定到所需的参数。反复调试修改后,系统功能的易用性是优化设计的。反复调试的目的是发现并修补软件错误并优化软件性能,其中部分参数的整定就是调试的重要内容,这些参数及其最终修正值如下:表格 5 参数整定变量整定值延时子程序参数R4=4AH ,R5=62H延时重复变量KEYD=15预设低亮250预设中亮500预设高亮750毕业设计体会此次毕业设计综合运用了单片机课程所学知识设计单片机简单系统的软硬件,尽管PWM调光系统只做软件设计,但要做好软件设计就必须充分了解硬件细节,这在汇编编程调试中更深有体会。虽然是简单系统的设计,但我也了解到了开发流程,系统的功能规划、逐步整合完善功能的开发方法。犹其是编程调试的技巧,采用结构化,单元化的代码结构,可以简单修改来配置相应功能,这样对于调试某个子程序或代码段而言是十分方便的,高质量的代码也确实需要反复调试修改来改进得到。汇编编程应当格式规范,因为读代码很多时候比写代码还难,犹其在程序多重嵌套和跳转的情况下,规范书写包括运用缩进,变量起有意义的别名,也注意标号的命名。而且汇编指令的作用细节也是需要掌握的,如本次系统编程时对INC指令的了解不足(INC不影响CY位),曾困扰一时。备有资料以便查阅能有效提高工作效率,一些不常用的规格标准往往需要查找相关资料才知道。对于软件,其帮助文档是优秀的参考资料,毕业设计期间常用Keil软件的调试功能,各调试工具的用法在其帮助文档有详细的说明。仿真调试是个很有用的调试手段,虽不能做实时分析,但可以很方便地自建环境独立测试一段代码,单步运行及设置断点、查看内存数据等工具对于了解运行细节,犹其是检测出错时很有帮助。毕业设计是一次难得的动手锻炼机会,设计课题也有很高的自由度,做系统开发的过程很享受,因为“设计”是一种自我实现,而且在开发过程中我有充分考虑用户对系统的需求,力求使功能设计符合易用原则,给用户带来较好的使用体验,这也是当今工业设计的潮流。参考文献1 吴宁. 80X86/Pentium 微型计算机原理及应用M. 北京:电子工业出版社,2004:1-249.2 蔡美琴. MCS-51系列单片机系统及其应用M.北京:高等教育出版社,2003:1-169.3 肖金球.单片机原理与接口技术M. 北京: 清华大学出版社, 2004:1-323
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!