实习报告流水灯_第1页
实习报告流水灯_第2页
实习报告流水灯_第3页
实习报告流水灯_第4页
实习报告流水灯_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

本文档如对你有帮助,请帮忙下载支持!单片机流水彩灯设计目录1、方案设计说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2(1)设计项目概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2(2)设计项目功能及操作介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2(3)方案设计思路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯22、硬件设计说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3(1)电路图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3(2)I/O的分配⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3(3)电路工作原理⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4(4)主要器件介绍⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43、软件设计说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5(1)软件设计概述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯51)设计思路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯52)总体功能⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯63)程序流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯72)程序总体结构及程序的执行与工作过程⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯83)重要程序段说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯84)程序清单⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯94、制作调试说明⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯131)制作调试过程及结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯132)所遇到的问题及解决方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯135、总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯141、方案设计说明(1)设计项目概述本文档如对你有帮助,请帮忙下载支持!本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编程的基本思想,以及中断,定时程序的基本编写方法。利用单片机设计并制作流水彩灯。该流水彩灯设置用一个 AT89S51单片机来控制12LED灯产生不同的发光效果。(2)设计项目功能及操作介绍其中两个按键K1和K2,上电后,12个LED灯全亮;两个按键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水”的花样。其中流水灯花样有三种: 1)单个LED灯顺次点亮。2)每两个LED灯顺次点亮然后再顺次返回。3)从两端每三个LED灯顺向中间次点亮。3)方案设计思路按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。 流水灯实际上就是一个带有个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P0.0口的LED亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED熄灭,就要把P0.0口的电平变为高电平;同理,接在其他接口上 LED灯的点亮和熄灭的方法也如此。因此,要实现流水灯功能,我们只要将发光二极管 LED1~LED12依次点亮、熄灭,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.1~P0.7口与P2.4~P2.7的其他11个LED的本文档如对你有帮助,请帮忙下载支持!点亮和熄灭的方法同 LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED12依次点亮、熄灭,12只LED灯便会一亮一暗形成“流水灯”。(4)主要器件介绍AT89S51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89S51单片机时无须外扩存储器。在MCS-51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容 C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率范围通常是 1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。使用晶体振荡器时,C1、C2取值30±10pF。C1、C2的取值虽然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性,通常取值20~30pF。在这里我们取值 30pF在设计印制电路板时,晶振和电容等应尽可能靠近芯片, 以减少分布电容,保证振荡器振荡的稳定性。3、软件设计说明本文档如对你有帮助,请帮忙下载支持!(1)软件设计概述1)设计思路单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中一个重要的组成部分,我们编程实现流水灯的方法是循环移位法,即:在程序一开始就给I/O口送一个数,这个数本身就是让这个I/O口先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至I/O口,这样就实现流水效果,另外由于AT89S51系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,所以我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到I/O口,这样也可以实现流水效果。如果要让接在p0与p2口的发光二极管实现流水的效果,则是用程序改变p0与p2口的电平,由于我采用的为共阳极的接线方式,因此低电平为亮,高电平熄灭。2)总体功能这次程序总的要实现四个功能,通电后 12个LED灯全亮;单个LED灯顺次点亮;每两个LED灯顺次点亮然后再顺次返回;从两端每三个LED灯顺次向中间点亮。程序的主要功能是p3.2口的按钮为控制启动与停止,p3.3口的本文档如对你有帮助,请帮忙下载支持!按钮为切换三种“流水”的花样 : 会出现一个灯从上至下的循环亮灭,后又从下至上的循环亮灭回来;亮灭,后又从下至上的循环亮灭回来;面的三个灯亮到中间6个灯亮的情况;3)程序流程图

会出现两个灯从上至下的循环在灯会产生上3个灯与最下初始化未有键按下扫描是否全亮有键按下有按键按下STYLE1未有键按下扫描是否 P3.2键按下有按键按下按下p3.3键STYLE2未有键按下扫描是否有按键按下P3.2键按下按下p3.3键 按下 p3.3键STYLE3未有键按下扫描是否P3.2键按下有按键按下本文档如对你有帮助,请帮忙下载支持!(2)程序总体结构及程序的执行与工作过程这个程序一共分为四个部分:第一个是对下面需要用到的累加器、寄存器的定义;第二个是编写 p3.2接口按钮功能,第三个则是编写p3.3接口按钮功能,而其中有三个花样:第四个则是延时子程序。其工作过程如下流程:(3)重要程序段说明JUMP1:AJMP STYLE1AJMP STYLE2AJMP STYLE3CLR:是将其后面指定的位清为 0,程序中使对应端口输出低电平ACALL:是子程序调用指令,程序中调用了 DELAY延时子程序SETB:是将其后面指定的位置成 1,程序中使对应端口输出高电平AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行END:是程序结束的伪指令,意思是告诉编译器,程序到此结束。伪指令只告诉编译器此程序到此有何要求或条件, 它不参与和影响程序的执行。MOV

P2,ARR ACALL

DELAYJB

ACC.4,LOOPBLS2

;同样,当

P2.4

为0,即灯亮到

P2.4

处在上面源程序中

"ACALL

DELAY"指令的作用是调用

DELAY延时子程序。一定要用该指令才能看到我们需要的 "流水"效果。如果不用该指令,则由于12个LED发光与熄灭的时间都很短,我们肉眼无法看到本文档如对你有帮助,请帮忙下载支持!LED的熄灭与点亮,凭我们肉眼看到的是 LED1~LED12都同时亮(半亮),而看不到“流水”效果的!(4)程序清单ORG0000HAJMPMAINORG0003H;外部中断0入口地址外部中断0连接控制流水灯暂停开始MOVDPTR,#JUMP0;储存转移地址基址MOVA,R6;储存专一地址的变址,可根据基址+变址来执行开始暂停子JMP@A+DPTR;跳转到中断程序ORG0013H;外部中断1入口地址MOVDPTR,#JUMP1MOVA,R7JMP@A+DPTRORG0100HMAIN:MOVSP,#60HCLRAMOVR7,#00HMOVR6,#00HMOVP0,#00H;设置12个灯全亮MOVP2,#00HSETBEX0SETBIT0SETBEX1;设置外部中断0跟1,开中断SETBIT1SETBEASJMP$ORG0200HJUMP0:;外部中断0的中断响应程序SJMPSTART;跳转到控制流水灯开始的程序SJMPSTOP;跳转到控制流水灯停止的程序ORG0210H;实际开始程序地址START:MOVR6,#2HLJMPSTYLE1;跳转到样式1开始流水STOP:;流水灯停止程序MOVR6,#0H本文档如对你有帮助,请帮忙下载支持!MOVP0,#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,#0FFHMOVA,#0FEH;单个LEDLOOPAS1:MOVR0,#8LOOPALS1:MOVP0,ARLACALLDELAYDJNZR0,LOOPALS1MOVP0,#0FFH;P0口8个灯流水完毕;后4个灯~~~~(程序中为P2.4--P2.7,可修改)MOVA,#7FH;单个LEDLOOPBS1:MOVR0,#4HLOOPBLS1:MOVP2,AACALLDELAYDJNZ R0,LOOPBLS1本文档如对你有帮助,请帮忙下载支持!MOVR1,#3DJNZR1,STYLE1MOVP2,#0FFHRETI;----------------------------------------;第二种花样STYLE2:MOVR7,#4HMOVP0,#0FFH;同样从12个灯熄灭然后开始第二种花样MOVP2,#0FFHLOOPAS2:MOVA,#0FCH;两个LEDLOOPALS2:MOVP0,ARLACALLDELAYJBACC.7,LOOPALS2;当P0.7为0,即亮到P0.7此处CALLDELAYMOVP0,#07FHMOVP2,#7FHCALLDELAYMOVP0,#0FFH;--------------------MOVA,#3FH;两个LEDLOOPBLS2:MOVP2,ARRA;右移,打到流水目的后面的RL跟RR同理CALLDELAYJBACC.4,LOOPBLS2;同样,当P2.4为0,即灯亮到P2.4处;--------------------LOOPCRS2:MOVP2,ARLACALLDELAYJBACC.7,LOOPCRS2MOVP2,#3FHCALLDELAYMOVP2,#7FHMOVP0,#7FHCALLDELAY本文档如对你有帮助,请帮忙下载支持!MOV P2,#0FFH;--------------------MOV A,#3FHACALLDELAYJB ACC.0,LOOPDRS2;--------------------MOV R1,#03HDJNZ R1,STYLE2RETI;----------------------------------------

;循环

3次;第三种花样STYLE3:MOV R7,#0HMOV P0,#0FFHMOV P2,#0FFHLOOPS3:MOV A,#0F8HMOV P0,AMOV A,#8FHMOV P2,ACALL DELAYMOV A,#7HMOV P0,AMOV A,#7FHMOV P2,ACALL DELAYMOV R1,#5HMOV P0,#0FFHMOV P2,#0FFHDJNZ R1,LOOPS3RETI;----------------------------------------;延时子程序DELAY:MOVR4,#2L1:MOVR2,#250本文档如对你有帮助,请帮忙下载支持!L2:MOVR3,#250L3:DJNZR3,L3DJNZR2,L2DJNZR4,L1RETIEND4、制作调试说明(1)制作调试过程及结果启动Keil 单片机集成开发环境,建立新工程,将上面的源程序导入到工程中,设置好

温馨提示

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

评论

0/150

提交评论