实习报告-流水灯.doc

上传人:w****2 文档编号:6529332 上传时间:2020-02-28 格式:DOC 页数:15 大小:81KB
返回 下载 相关 举报
实习报告-流水灯.doc_第1页
第1页 / 共15页
实习报告-流水灯.doc_第2页
第2页 / 共15页
实习报告-流水灯.doc_第3页
第3页 / 共15页
点击查看更多>>
资源描述
单片机流水彩灯设计目录1、方案设计说明2 (1)设计项目概述2(2)设计项目功能及操作介绍2(3)方案设计思路22、硬件设计说明3(1)电路图3(2)I/O的分配 3(3)电路工作原理4 (4)主要器件介绍43、软件设计说明5 (1)软件设计概述5 1)设计思路5 2)总体功能6 3)程序流程图7 (2)程序总体结构及程序的执行与工作过程 8 (3)重要程序段说明 8 (4)程序清单 94、制作调试说明13 (1)制作调试过程及结果 13 (2)所遇到的问题及解决方法 135、总结141、方案设计说明(1)设计项目概述本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编程的基本思想,以及中断,定时程序的基本编写方法。利用单片机设计并制作流水彩灯。该流水彩灯设置用一个AT89S51单片机来控制12LED灯产生不同的发光效果。(2)设计项目功能及操作介绍其中两个按键 K1 和 K2,上电后,12 个 LED 灯全亮;两个按键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水”的花样。其中流水灯花样有三种:1)单个LED灯顺次点亮。2)每两个LED灯顺次点亮然后再顺次返回。3)从两端每三个LED灯顺向中间次点亮。(3)方案设计思路按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。流水灯实际上就是一个带有12个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P0.0口的LED亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED熄灭,就要把P0.0口的电平变为高电平;同理,接在其他接口上LED灯的点亮和熄灭的方法也如此。因此,要实现流水灯功能,我们只要将发光二极管LED1LED12依次点亮、熄灭,12只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。2、硬件设计说明(1)电路图(2)I/O的分配单片机40引脚接+5V的电源,12、13引脚接开关K1、K2,20引脚接地。使用510 电阻和发光二极管组成12条支路,分别对应连接单片机的8个P0口、4个P2口共12个。采用共阳极接法40段接上 5V 的外加电压,通过单片机的P0、P2口控制输出高电平还是低电平。当电压为低电平的时候。二极管发光。该电路由2个30PF 的电容和一个晶震组成的,其中晶振接在18和19引脚,这个作用是为单片机提供一个正常的工作时钟频率。(3)电路工作原理该流水灯实际上就是一个带有十二个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。从原理图中可以看出,如果要让接在P0.0口的LED1亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.1P0.7口与P2.4P2.7的其他11个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED12依次点亮、熄灭,12只LED灯便会一亮一暗形成“流水灯”。 (4)主要器件介绍AT89S51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89S51单片机时无须外扩存储器。在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是1.212MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。使用晶体振荡器时,C1、C2取值3010pF。 C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值2030pF。在这里我们取值30 pF在设计印制电路板时,晶振和电容等应尽可能靠近芯片,以减少分布电容,保证振荡器振荡的稳定性。3、软件设计说明(1)软件设计概述 1)设计思路单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中一个重要的组成部分,我们编程实现流水灯的方法是循环移位法,即:在程序一开始就给I/O口送一个数,这个数本身就是让这个I/O口先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至I/O口,这样就实现流水效果,另外由于AT89S51系列单片机的指令中只有对累加器中数据左移或右移的指令,所以我们应把需移动的数据先放到中,让其移动,然后将移动后的数据再转送到I/O口,这样也可以实现流水效果。如果要让接在p0与p2口的发光二极管实现流水的效果,则是用程序改变p0与p2口的电平,由于我采用的为共阳极的接线方式,因此低电平为亮,高电平熄灭。2)总体功能这次程序总的要实现四个功能,通电后12 个 LED 灯全亮;单个LED灯顺次点亮;每两个LED灯顺次点亮然后再顺次返回;从两端每三个LED灯顺次向中间点亮。程序的主要功能是p3.2口的按钮为控制启动与停止,p3.3口的按钮为切换三种“流水”的花样:会出现一个灯从上至下的循环亮灭,后又从下至上的循环亮灭回来;会出现两个灯从上至下的循环亮灭,后又从下至上的循环亮灭回来;在灯会产生上3个灯与最下面的三个灯亮到中间6个灯亮的情况;3)程序流程图 初始化 扫描是否有按键按下 全亮 未有键按下 有键 按下 STYLE1 未有键按下 扫描是否有按键按下 P3.2键按下 按下p3.3键 STYLE2 未有键按下 扫描是否有按键按下 P3.2键按下按下p3.3键 按下 p3.3键 STYLE3 扫描是否有按键按下 未有键按下 P3.2键按下(2)程序总体结构及程序的执行与工作过程 这个程序一共分为四个部分:第一个是对下面需要用到的累加器、寄存器的定义;第二个是编写p3.2接口按钮功能,第三个则是编写p3.3接口按钮功能,而其中有三个花样:第四个则是延时子程序。其工作过程如下流程: (3)重要程序段说明JUMP1:AJMPSTYLE1AJMPSTYLE2AJMPSTYLE3CLR: 是将其后面指定的位清为0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了DELAY延时子程序SETB:是将其后面指定的位置成1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END: 是程序结束的伪指令,意思是告诉编译器,程序到此结束。伪指令只告诉编译器此程序到此有何要求或条件,它不参与和影响程序的执行。 MOV P2, A RR A CALL DELAY JB ACC.4, LOOPBLS2 ;同样,当P2.4为0,即灯亮到P2.4处在上面源程序中ACALL DELAY指令的作用是调用DELAY延时子程序。一定要用该指令才能看到我们需要的流水效果。如果不用该指令,则由于12个LED发光与熄灭的时间都很短,我们肉眼无法看到LED的熄灭与点亮,凭我们肉眼看到的是LED1LED12都同时亮(半亮),而看不到“流水”效果的! (4)程序清单ORG0000HAJMPMAINORG0003H ;外部中断0入口地址外部中断0连接控制流水灯暂停开始MOV DPTR,#JUMP0 ;储存转移地址基址MOVA,R6 ;储存专一地址的变址,可根据 基址+变址来执行开始暂停子JMPA+DPTR ;跳转到 中断程序ORG0013H ;外部中断1入口地址MOV DPTR,#JUMP1MOVA,R7JMPA+DPTRORG0100HMAIN:MOVSP,#60HCLRAMOVR7,#00HMOVR6,#00H MOVP0,#00H ;设置12个灯全亮MOVP2,#00HSETBEX0SETBIT0SETBEX1 ;设置外部中断0跟1,开中断SETBIT1SETBEASJMP$ORG0200HJUMP0: ;外部中断0的中断响应程序SJMPSTART ;跳转到 控制 流水灯开始的程序SJMPSTOP ;跳转到 控制 流水灯停止的程序ORG0210H ;实际 开始程序 地址START:MOVR6,#2H LJMPSTYLE1 ;跳转到 样式1 开始流水STOP: ;流水灯停止程序MOVR6,#0HMOVP0,#00H ;12个灯全亮MOVP2,#00HCLREA ;关总中断JNBP3.2,$ ;等待 下一次按键JBP3.2,$SETBEA ;开总中断CALLDELAYMOVP0,#0H ;12个灯全亮MOVP2,#0HRETIORG0400H ;实际外部中断1 程序地址JUMP1:AJMPSTYLE1 ;跳到方式1执行AJMPSTYLE2AJMPSTYLE3;-;第一种花样ORG0500HSTYLE1:MOVR7,#2H ;R7储存 控制花样地址 通过基址+变址来控制花样MOVP0,#0FFH ;从12个灯全灭开始,一个一个亮MOVP2,#0FFHMOV A, #0FEH ;单个LEDLOOPAS1:MOV R0, #8LOOPALS1: MOV P0, A RL A CALL DELAY DJNZ R0, LOOPALS1 MOVP0,#0FFH ;P0口8个灯流水完毕 ;后4个灯(程序中为P2.4-P2.7,可修改)MOV A, #7FH ;单个LEDLOOPBS1:MOV R0, #4HLOOPBLS1: MOV P2, A RR A CALL DELAY DJNZ R0, LOOPBLS1 MOVR1,#3DJNZR1,STYLE1MOVP2,#0FFHRETI;-;第二种花样STYLE2:MOVR7,#4HMOVP0,#0FFH ;同样从12个灯熄灭 然后开始第二种花样MOVP2,#0FFHLOOPAS2:MOV A, #0FCH ;两个LEDLOOPALS2: MOV P0, A RL A CALL DELAY JB ACC.7, LOOPALS2 ;当P0.7为0,即亮到P0.7此处CALLDELAYMOVP0,#07FHMOVP2,#7FHCALLDELAYMOVP0,#0FFH;-MOV A, #3FH ;两个LEDLOOPBLS2: MOV P2, A RR A ;右移,打到流水目的 后面的RL跟RR同理 CALL DELAY JB ACC.4, LOOPBLS2 ;同样,当P2.4为0,即灯亮到P2.4处;-LOOPCRS2: MOV P2, A RL A CALL DELAY JB ACC.7,LOOPCRS2MOVP2,#3FHCALLDELAYMOVP2,#7FHMOVP0,#7FHCALLDELAYMOVP2,#0FFH;-MOVA,#3FHLOOPDRS2: MOV P0, A RR A CALL DELAY JB ACC.0,LOOPDRS2;-MOVR1,#03HDJNZR1,STYLE2 ;循环3次RETI;-;第三种花样STYLE3:MOVR7,#0HMOVP0,#0FFHMOVP2,#0FFHLOOPS3:MOVA,#0F8HMOVP0,AMOVA,#8FHMOVP2,ACALLDELAYMOVA,#7HMOVP0,AMOVA,#7FHMOVP2,ACALLDELAYMOVR1,#5HMOVP0,#0FFHMOVP2,#0FFHDJNZR1,LOOPS3RETI;-;延时子程序DELAY:MOV R4, #2L1: MOV R2, #250L2: MOV R3, #250L3: DJNZ R3, L3 DJNZ R2, L2 DJNZ R4, L1RETIEND4、制作调试说明 (1)制作调试过程及结果启动Keil单片机集成开发环境,建立新工程,将上面的源程序导入到工程中,设置好Keil工程的编译参数,编译得到HEX格式的目标文件,用 ISP编程器将HEX格式的目标文件烧写到AT89S51单片机中,接下来就是将烧写好的AT89S51从编程器上取下,放到我们焊接好的流水灯实验板上,通电,通过控制开关K1、K2我们就看到了LED1LED12不同的流水效果了。 (2)所遇到的问题及解决方法问题:1)只有P0.0端口的一个灯亮;2)所有的灯一个都不亮或者全亮;3)LED灯没有循环或跳转解决措施: 1)程序中循环跳转书写有误。 2)程序编写有误,看有没有初始值或者初始值设置错误。 3)延时程序太慢、程序中没有写入跳转。5、总结这次的任务分为两部分,一部分是硬件设计部分,另外一部分是软件编程部分。在设计硬件电路的同时也必须先考虑好程序的设计。因为程序是和电路挂钩的,不然的话就会出错。这次的程序我感觉还是有点难度。要实现中断,定时功能。这次的流水灯设计还要求了复位。同时还显示出流水彩灯的效果,不再是以前那种单一的效果。我查阅了书上的资料,在程序上出错了好几次,第一次测试的时候出错了,不过后来认真的检查了程序,不知道的地方又请教了老师,每一步都到位。最后终于找出了问题。编程需要认真的态度,有时候一个细小的错误都可能导致系统不能运行。最后我终于成功,对自己能再一次的战胜面前的困难有种高兴的感觉。从这次实习中我巩固了所学的知识对所学的知识也有了很好的运用,重要的是锻炼了自己。在今后的学习中我会继续努力,继续前进!当然在这里还要感谢彭浩老师对我的指导!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


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

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


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