基于单片机的可控流水灯控制

  • 格式:doc
  • 大小:133.00 KB
  • 文档页数:15

单片机原理课程设计题目:基于单片机的可控流水灯设计学院:物理与机电工程学院姓名:赵勇敢学号:2 0 1 0 2 1 0 3 6 2 指导老师:向根祥摘要单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。

这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。

对可控流水灯设计通过编写代码实现8个LED灯4种流水灯显示方式。

在设计中主要采用89C51这款芯片作为控制主体,用发光二极管来作为显示灯,用按钮来切换流水灯的发光方式同时外接一个七段显示发光二极管来显示流水灯的发光模式。

系统通过P1口外接8个发光二极管,P3口接4个按键,一个按键进行方式选择,数码管显示方式编号;用两个键来控制流水灯流动的速度。

数码管接在89C51的P3口上,而流水灯的放光二极管接在P1口上。

设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。

关键词单片机89C51发光二极管流水灯目录1 引言 (1)2课题综述 (1)2.1 课题的来源 (1)2.2课题的意义 (1)2.3预期的目标 (1)2.4面对的问题 (1)2.5课题的技术 (2)3系统分析 (2)3.1涉及的基础知识 (2)3.289C51单片机引脚图及引脚功能介绍 (2)3.3 解决问题的基本思路 (3)3.4总体方案 (3)4系统设计 (4)4.1硬件设计 (4)4.2 软件设计 (4)4.3元件清单 (5)4.4硬件原理图 (5)4.5设计主要功能 (5)5程序编写 (6)6在线调试 (8)结论 (9)致谢.............................................................................................................. 错误!未定义书签。

参考文献.............................................................................................................. 错误!未定义书签。

1.引言单片机课程设计主要是为了让我们增进对89C51单片机电路的感性认识,加深对理论方面的理解。

了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。

另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。

2课题综述2.1课题的来源当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。

而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。

而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。

2.2课题的意义这次单片机课程设计是为了通过对流水灯控制的设计加强学生团队配合的能力和创造力;综合运用专业及基础知识,解决实际工程技术问题的能力。

能够让学生深入真是的体会到所学的理论知识和实践相结合的过程。

找出自身的不足并加以改正。

2.3预期的目标对8个LED灯设计5种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号;用两个键来控制流水灯流动的速度。

2.4面对的问题这次课程设计是通过89C51位单片机实现。

但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。

而更为严峻的就是设计的最后还要将软硬件相结合。

首先我们需要通过proteaus将设计的实物的电路图画出来,再根据电路图连接实物电路。

2.5课题的技术LED灯的显示方式、模式切换按钮的控制、亮灯速度的按键控制等技术。

3系统分析3.1涉及的基础知识电路焊接:制造电子产品的重要手段。

89C51单片机指令系统:规定89C51单片机内操作的语句或命令。

LED数码管的显示:向数码的显示送数,控制系统的显示部分。

3.289C51单片机引脚图及引脚功能介绍本次实习的目的在于加深89C51单片机的理解,首先来简单认识一下,它的引脚如图3-1所示:图3.1 89C51的引脚图单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

1.电源:(1)VCC:芯片电源,接+5V;(2)VSS:接地端;2.时钟:XTAL1、XTAL2 :晶体振荡电路反相输入端和输出端。

3.控制线:控制线共有4根,(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲ALE功能:用来锁存P0口送出的低8位地址PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

(2)PSEN:外ROM读选通信号。

(3)RST/VPD:复位/备用电源。

RST(Reset)功能:复位信号输入端。

VPD功能:在Vcc掉电情况下,接备用电源。

(4)EA/Vpp:内外ROM选择/片内EPROM编程电源。

EA功能:内外ROM选择端。

Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

4.I/O分配线89C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

3.3解决问题的基本思路因为选定用循环移位法来实现亮灯程序的,所以在一种设计好一种亮灯方式的前提下编程实现一个循环结构体,分别来实现五种不同的亮灯方式。

另外再编一个实现延时控制的调用程序,来提供亮灯速度的控制。

3.4总体方案在做本次课程设计之前将小组内人员分为两小组:一组分负责硬件设计,另一组负责软件编程。

硬件小组负责实物的连接和焊接,并进行硬件测试;软件小组负责实现流水灯的各部分程序设计,并进行软件的仿真测试。

最后将完成的软硬件相结合,从而达到实现课程设计的效果。

系统流程图:4 系统设计4.1硬件设计按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。

89C51单片机是本次课程设计运用的主要原件。

流水灯控制设计是用一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

4.2软件设计单片机的应用系统由硬件和软件组成,在硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。

软件编程是单片机应用系统中的一个重要的组成部分,也是本次课程设计的重点和难点。

我们编程实现流水灯的方法是循环移位法,下面我们就来简述一下循环移位法的工作原理。

循环移位法是采用循环程序结构进行编程。

我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果了。

另外,由于89C51系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样也可以实现“流水”效果。

4.3 元件清单4.4硬件原理图图4-1硬件原理图4.5设计主要功能打开电路开关,按下第一个模式控制键,8个LED数码管会从右向左一个接着一个亮灯,LED显示器会显示数字“1”来表示当前的亮灯方式是模式1。

在8个LED数码管全部亮后再次按下第一个模式控制键,8个LED数码管会从又向左2个一组的一次亮灯,同时LED显示器会显示数字“2”来表示当前的亮灯方式是模式2。

以此类推,一共有5种显示模式。

而第2、3个按键分别控制亮灯速度的快慢。

5程序编写ORG 0000HJMP STARTORG 0003HJMP X0_INTORG 000BHJMP T0_INTORG 0013HJMP X1_INTSTART:MOV TMOD, #51H ;/*01010001 T1计数,T0定时*/MOV TH0, #3CH ;50ms@12MHzMOV TL0, #0B0HMOV TH1, #0MOV TL1, #0SETB TR0SETB TR1SETB IT0SETB IT1MOV IE, #10000111BMOV R7, #20MOV 30H, #20MOV 31H, #0MOV 32H, #0MOV P2, #06H ;显示1SJMP $T0_INT: ;50ms执行一次MOV TL0, #0B0H ;重新写入初始值MOV TH0, #3CH ;50ms@12MHzJIA:JB P3.4, JIANJNB P3.4, $DEC 30H ;加速MOV A, 30HJNZ XXX ;不能让它为0INC 30HXXX:JIAN:JB P3.5, XIANSHIJNB P3.5, $INC 30HMOV A, 30HSUBB A, #80JC CCCMOV 30H, #80CCC:XIANSHI:DJNZ R7, T0_ENDMOV R7, 30HINC 32HANL 32H, #7MOV A, 31HANL A, #3RL ARL ARL AADD A, 32HMOV DPTR, #HUA_YMOVC A, @A+DPTRCPL AMOV P1, AT0_END:RETIX0_INT: ;设置花型 CALL DL10MSJB P3.2, X0_ENDINC 31HANL 31H, #3MOV A, 31HMOV DPTR, #TABMOVC A, @A + DPTRMOV P2, AX0_END:RETITAB:DB 06H, 5BH, 4FH, 66H X1_INT: ;启动/停止 CALL DL10MSJB P3.3, X0_ENDCPL TR0X1_END:RETIHUA_Y:DB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01DB 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80DB 0x81,0x42,0x24,0x18,0x81,0x42,0x24,0x18DB 0x18,0x24,0x42,0x81,0x18,0x24,0x42,0x81DL10MS:MOV R5, #10MOV R6, #249DJNZ R6, $DJNZ R5, $ - 2RETEND6 在线调试本程序运行过程中没有错误。