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

下载本文档

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

文档简介

1、单片机流水彩灯设计目录1、方案设计说明2(1)设计项目概述2(2)设计项目功能及操作介绍2(3)方案设计思路22、硬件设计说明3(1)电路图3(2)I/O 的分配 3(3)电路工作原理4(4)主要器件介绍43、软件设计说明5(1)软件设计概述51)设计思路 52)总体功能 63)程序流程图 7 ( 2)程序总体结构及程序的执行与工作过程 8 ( 3)重要程序段说明 8 ( 4)程序清单 94、制作调试说明13( 1)制作调试过程及结果 13( 2)所遇到的问题及解决方法 13145、总结1、方案设计说明(1)设计项目概述 本次设计的题目是单片机流水彩灯设计通过综合掌握单片机编 程的基本思想,以

2、及中断,定时程序的基本编写方法。利用单片机设 计并制作流水彩灯。该流水彩灯设置用一个 AT89S51 单片机来控制 12LED灯产生不同的发光效果。(2)设计项目功能及操作介绍其中两个按键 K1 和 K2,上电后, 12 个 LED 灯全亮;两个按 键一个用于控制“流水灯”的启动和停止,另一个用于选择“流水” 的花样。其中流水灯花样有三种: 1)单个 LED灯顺次点亮。 2)每两 个 LED 灯顺次点亮然后再顺次返回。 3 )从两端每三个 LED 灯顺向中 间次点亮。(3)方案设计思路 按照单片机系统扩展与系统配置状况,单片机应用系统可分为 最小系统、 最小功耗系统及典型系统等。 流水灯实际上

3、就是一个带有 12 个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、 复位、电源等电路和必要的软件组成的单个单片机。如果要让接在 P0.0 口的 LED亮起来,那么只要把 P0.0 口的电平变为低电平就可以 了;相反,如果要接在 P0.0 口的 LED熄灭,就要把 P0.0 口的电平变 为高电平;同理,接在其他接口上 LED灯的点亮和熄灭的方法也如此。因此,要实现流水灯功能, 我们只要将发光二极管 LED1LED12依次 点亮、熄灭, 12 只 LED 灯便会一亮一暗的做流水灯了。在此我们还 应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时 间很短, 我们在控制二极管亮灭

4、的时候应该延时一段时间, 否则我们 就看不到“流水”效果了。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)电路工作原理 该流水

5、灯实际上就是一个带有十二个发光二极管的单片机最小 应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软 件组成的单个单片机。从原理图中可以看出,如果要让接在 P0.0 口 的 LED1亮起来,那么只要把 P0.0 口的电平变为低电平就可以了; 相 反,如果要接在 P0.0 口的 LED1熄灭,就要把 P0.0 口的电平变为高 电平;同理,接在 P0.1P0.7 口与 P2.4 P2.7 的其他 11个 LED的 点亮和熄灭的方法同 LED1。因此,要实现流水灯功能,我们只要将 发光二极管 LED1LED12依次点亮、熄灭, 12 只 LED灯便会一亮一 暗形成“流水灯”。(4)主要器件

6、介绍AT89S51单片机是美国 ATMEL公司生产的低电压、高性能 CMOS8 位单片机,具有丰富的内部资源: 4kB闪存、 128BRAM、32根 I/O 口线、2 个 16位定时/计数器、 5个向量两级中断结构、 2 个全双工的 串行口,具有 4.25 5.50V 的电压工作范围和 024MHz工作频率, 使用 AT89S51单片机时无须外扩存储器。在 MCS-51芯片内部有一个高增益反相放大器, 用于构成振荡器。 反相放大器的输入端为引脚 XTAL1,输出端为引脚 XTAL2,在芯片的 外部通过这两个引脚跨接晶体振荡器和微调电容 C1、C2 形成反馈电 路,可构成稳定的自激振荡器,振荡频

7、率范围通常是 1.212MHz。晶 体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。使用晶体振荡器时, C1、C2取值 3010pF。 C1、C2的取值虽 然没有严格的要求,但电容的大小影响振荡电路的稳定性和快速性, 通常取值 2030pF。在这里我们取值 30 pF 在设计印制电路板时,晶 振和电容等应尽可能靠近芯片, 以减少分布电容, 保证振荡器振荡的 稳定性。3、软件设计说明(1)软件设计概述1)设计思路单片机的应用系统由硬件和软件组成, 在硬件原理图搭建完成上 电之后, 我们还不能看到流水灯循环点亮的现象, 我们还需要编写程 序控制单片机管脚电平的高低变化,来实现发光二极管

8、的一亮一灭。软件编程是单片机应用系统中一个重要的组成部分, 我们编程实现流 水灯的方法是循环移位法,即:在程序一开始就给 I/O 口送一个数, 这个数本身就是让这个 I/O 口先低,其他位为高,然后延时一段时间, 再让这个数据向高位移动,然后再输出至 I/O 口,这样就实现流水效 果,另外由于 AT89S51系列单片机的指令中只有对累加器中数 据左移或右移的指令,所以我们应把需移动的数据先放到中, 让其移动,然后将移动后的数据再转送到 I/O 口,这样也可以 实现流水效果。如果要让接在 p0与 p2口的发光二极管实现流水的效 果,则是用程序改变 p0与 p2口的电平,由于我采用的为共阳极的接

9、线方式,因此低电平为亮,高电平熄灭。2)总体功能这次程序总的要实现四个功能,通电后 12 个 LED 灯全亮;单 个 LED灯顺次点亮; 每两个 LED灯顺次点亮然后再顺次返回; 从两端 每三个 LED灯顺次向中间点亮。程序的主要功能是 p3.2 口的按钮为控制启动与停止, p3.3 口的 按钮为切换三种“流水”的花样 : 会出现一个灯从上至下的循环亮 灭,后又从下至上的循环亮灭回来; 会出现两个灯从上至下的循环 亮灭,后又从下至上的循环亮灭回来; 在灯会产生上 3 个灯与最下 面的三个灯亮到中间 6 个灯亮的情况;3)程序流程图2)程序总体结构及程序的执行与工作过程这个程序一共分为四个部分:

10、第一个是对下面需要用到的累加 器、寄存器的定义;第二个是编写 p3.2 接口按钮功能,第三个则是编写 p3.3 接口按钮功能,而其中有三个花样:第四个则是延时子程序。其工作过程如下流程:(3)重要程序段说明JUMP1:AJMP STYLE1AJMP STYLE2程序中使对应端口输出低电平AJMP STYLE3CLR: 是将其后面指定的位清为 0,ACALL:是子程序调用指令,程序中调用了 DELAY延时子程序 SETB:是将其后面指定的位置成 1,程序中使对应端口输出高电平 AJMP:是无条件跳转指令,意思是:跳转到指定的标号处继续运行 END: 是程序结束的伪指令,意思是告诉编译器,程序到此

11、结束。伪指令只告诉编译器此程序到此有何要求或条件, 它不参与和影响程序 的执行MOVP2, ARRACALLDELAYJBACC.4, LOOPBLS2;同样,当 P2.4 为 0,即灯亮到 P2.4 处在上面源程序中 ACALL DELAY指令的作用是调用 DELAY延时子程 序。一定要用该指令才能看到我们需要的 流水 效果。如果不用该指 令,则由于 12个 LED发光与熄灭的时间都很短,我们肉眼无法看到 LED的熄灭与点亮,凭我们肉眼看到的是 LED1LED12都同时亮(半 亮),而看不到“流水”效果的!4)程序清单ORG0000HAJMPMAINORG0003H; 外部中断 0 入口地址

12、外部中断0 连接控制流水灯暂停开始MOVDPTR,#JUMP0;储存转移地址基址MOVA,R6;储存专一地址的变址,可根据基址 +变址来执行开始暂停子JMP A+DPTR; 跳转到 中断程序ORG0013H;外部中断 1 入口地址MOV DPTR,#JUMP1MOV A,R7JMP A+DPTRORG 0100HMAIN:MOV SP,#60HCLR AMOV R7,#00HMOV R6,#00HMOVP0,#00H;设置 12 个灯全亮MOVP2,#00HSETBEX0SETBIT0SETBEX1; 设置外部中断 0 跟 1,开中断SETBIT1SETBEASJMP$ORG0200HJUMP

13、0:;外部中断 0 的中断响应程序SJMPSTART;跳转到 控制 流水灯开始的程序SJMPSTOP;跳转到 控制 流水灯停止的程序ORG0210H; 实际 开始程序 地址START:MOVR6,#2HLJMPSTYLE1;跳转到 样式 1 开始流水STOP:;流水灯停止程序MOVR6,#0HMOVP0,#00H;12 个灯全亮MOVP2,#00HCLR EA;关总中断JNB P3.2,$;等待 下一次按键JB P3.2,$SETBEA;开总中断CALLDELAYMOVP0,#0H;12 个灯全亮MOVP2,#0HRETIORG0400H;实际外部中断 1 程序地址JUMP1:AJMPSTYL

14、E1;跳到方式 1 执行AJMPSTYLE2AJMPSTYLE3;第一种花样ORG0500HSTYLE1:MOVR7,#2H;R7 储存 控制花样地址 通过基址 +变址来控制花样MOVP0,#0FFH;从 12 个灯全灭开始,一个一个亮MOVP2,#0FFHMOVA, #0FEH;单个 LEDLOOPAS1:MOVR0, #8LOOPALS1:MOV P0, ARL ACALL DELAYDJNZ R0, LOOPALS1MOV P0,#0FFH ;P0 口 8 个灯流水完毕;后 4个灯 (程序中为 P2.4-P2.7,可修改 )MOVA, #7FH;单个 LEDLOOPBS1:MOV R0,

15、 #4HLOOPBLS1:MOV P2, ARR ACALL DELAYDJNZ R0, LOOPBLS1MOV R1,#3DJNZ R1,STYLE1MOV P2,#0FFHRETI;第二种花样STYLE2:MOV R7,#4HMOV P0,#0FFH ;同样从 12 个灯熄灭 然后开始第二种花样MOV P2,#0FFHLOOPAS2:MOV A, #0FCH;两个 LEDLOOPALS2:MOV P0, ARL ACALL DELAYJB ACC.7, LOOPALS2;当 P0.7为 0,即亮到 P0.7 此处CALL DELAYMOV P0,#07FHMOV P2,#7FHCALL D

16、ELAYMOV P0,#0FFHMOVA, #3FH;两个 LEDLOOPBLS2:MOVP2, A;右移,打到流水目的后面的 RL 跟 RR 同理RR ACALL DELAY;同样,当 P2.4为 0,即灯亮到 P2.4 处JB ACC.4, LOOPBLS2LOOPCRS2:MOV P2, ARL A CALL DELAYJB ACC.7,LOOPCRS2MOV P2,#3FH CALL DELAYMOV P2,#7FHMOV P0,#7FH CALL DELAYMOV P2,#0FFHMOV A,#3FHLOOPDRS2:MOV P0, ARR ACALL DELAYJB ACC.0,L

17、OOPDRS2MOVDJNZRETIR1,#03HR1,STYLE2;循环 3 次;第三种花样STYLE3:MOVMOVMOVLOOPS3:MOVMOVMOVMOVCALLMOVMOVR7,#0HP0,#0FFHP2,#0FFHA,#0F8HP0,AA,#8FHP2,ADELAYA,#7HP0,AMOVA,#7FHMOVP2,ACALLDELAYMOVR1,#5HMOVP0,#0FFHMOVP2,#0FFHDJNZR1,LOOPS3RETI;延时子程序DELAY:MOV R4, #2L1:MOV R2, #250L2:MOV R3, #250L3:DJNZ R3, L3DJNZ R2, L2D

18、JNZ R4, L1RETIEND4、制作调试说明(1)制作调试过程及结果启动 Keil 单片机集成开发环境,建立新工程,将上面的源程序 导入到工程中,设置好 Keil 工程的编译参数,编译得到 HEX格式的 目标文件,用 ISP 编程器将 HEX格式的目标文件烧写到 AT89S51单 片机中, 接下来就是将烧写好的 AT89S51从编程器上取下, 放到我们 焊接好的流水灯实验板上,通电,通过控制开关 K1、K2 我们就看到 了 LED1LED12不同的 流水效果了。(2)所遇到的问题及解决方法问题: 1)只有 P0.0 端口的一个灯亮; 2)所有的灯一个都不亮或者 全亮; 3)LED 灯没有循环或跳转 解决措施: 1 )程序中循环跳转书写有误。 2)程序编写有误,看有 没有初始值或者初始值设置错误。 3)延时程序太慢、 程序中没有写入跳转。5、总结这次的任务分为两部分, 一部分是硬件设计部分, 另外一部分是 软件编程部分。在设计硬件电路的同时也必须先考虑好程序的设计。 因为程序是和电路挂钩的, 不然的话就会出错。 这次的程序我感觉还 是

温馨提示

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

评论

0/150

提交评论