单片机项目设计
题 目 基于单片机的花样流水灯
姓 名 王志远 学 号 201103320275 所在系 电子电气工程学院 专业年级 P11电气自动化五班
指导教师 李霞
二〇一二 年 十二 月 二十八 日
淄博职业学院单片机项目设计
摘要
本文是基于51单片机的花样流水灯的项目设计,在项目程序设计中运用了单片机AT89C51芯片,在程序检测与试验中实现了计数 清零(CLR) 暂停(LJMP) 延时(DELAY)进而实现 流水灯循环点亮 ,控制8个发光二极管的流水亮灭。最后通过实验体现单片机在现实生活中的作用。
2
淄博职业学院单片机项目设计
目录
摘要 ................................................. 2 目录 ................................................. 3 一.引言 ............................................. 4 二、设计目的 ......................................... 5 三、设计要求 ......................................... 5 四.硬件组成 .......................................... 5 五.软件编程 .......................................... 7
5·1流程框图 ................................... 7 5·2 花样流水灯主程序 .......................... 8 六、总结与体会 ...................................... 10 七、参考文献 ........................................ 11
3
淄博职业学院单片机项目设计
一.引言
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。随着电子技术和微机计算机的迅速发展,单片机的档次不断提高,其应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到了广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文笔者用AT89C51单片机自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发更快地成为单片机领域的优秀人才。
4
淄博职业学院单片机项目设计
二、设计目的
1、掌握花样流水的硬件连接方法。
2、利用单片机的P1口作IO口,学会利用P1口作为输入和输出口。 3、掌握花样流水灯的原理及其流程图、 4、掌握单片机的查表原理
5、掌握MOV DPTR,MOVCA,@A+DPTR的运用
6、学会用单片机汇编语言编写程序,熟悉掌握常用指令的功能运用。 7、掌握利用Protel 99 SE绘制电路原理图及PCB图。
三、设计要求
(1)、 利用MOVC A,@A+DPTR的指令,控制8个发光二极管的流水亮灭 (2)、利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
*在用表格进行程序设计的时候,要用以下的指令来完成 (1).利
用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
四.硬件组成
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。
5
淄博职业学院单片机项目设计
图1 流水灯硬件原理图
从原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反, 如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,因为人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
6
淄博职业学院单片机项目设计
五.软件编程
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还
不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎样来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来实现流水灯控制的软件编程方法。
5·1流程框图
开始
灯左移依次点亮 N 灯左移亮2次? N 灯右移依次点亮 灯右移亮2次 闪烁两次 N 灯闪烁2次
返回重新循环 7
淄博职业学院单片机项目设计
5·2 花样流水灯主程序
运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVC A,@A+DPTR”把数据取到累加器A中,然后再送到P1口进行显示。具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。 ORG 0000H LJMP START
ORG 0100H START:
MOV DPTR,#TABLE ;取DPTR的地址,即表格的起始地址 LOOP:
CLR A ;对A清零 MOVC A,@A+DPTR ;查表
CJNE A,#01H,LOOP1 ;判断是否到了表格的结尾处,当A等于01时程序往下执行,否则跳到 LOOP1
LJMP START ;跳到程序的开头循环执行 LOOP1:
MOV P1,A ;把取得的表格数据送到P1 LCALL DELAY ;延时
INC DPTR ;DPTR加一,即把DPTR指向下一个表格单元 LJMP LOOP
DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2
8
淄博职业学院单片机项目设计
DJNZ R5,D1 RET
;以下为流水灯的花样表格,每个数据对应一个时刻下的LED的状态
;TABLE的数据最后会被编译器安排到单片机的FLASH程序存储区里,CPU运行时只能读取,不能修改。 TABLE:
DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H, 0FFH,00H, 0FFH DB 01H END
当上述程序之一编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到AT89C51单片机中,最后连接好电路通电,我们就看到LED1~LED8的“流水”效果了。本文所给程序实现的功能比较简单,旨在抛砖引玉,也可以自己在此基础上扩展更复杂的流水灯控制,比如键盘控制流水花样、控制流水灯显示数字或图案等等。
9
淄博职业学院单片机项目设计
六、总结与体会
本设计成品是以单片机AT89C51芯片为核心部件,实现了单一灯左移2次,右移2次,闪烁2次(延时0.2秒)的功能。此次设计在软件、编写程序方面花费时间太多我们上网找资料,上图书馆,尽可能多的了解流水灯控制的相关知识。通过这次对流水灯的设计,使我熟练掌握了Keil C51集成开发环境的使用方法,了解并掌握到单片机芯片的烧写方法与步骤,进一步加深了对单片机常用指令的理解与运用。能够较熟练的运用Protel 99 SE绘制电路原理图及PCB图,对PCB板的一般制作过程有了一定的了解。在实训过程中,使我得到了一次用专业知识、专业技能分析和解决问题、全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。这次单片机课程设计,使我全面系统的了解了单片机的设计原理及设计步骤.了解微机系统的基本组成及开发设计过程中需要注意的问题.熟悉微机系统调试的全过程,学会处理调试过程中出现的问题,不仅让我加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
这个设计过程中,我们通过在原有的计数器系统进行了改进,使之增添了暂停、计数、清零等的三个控制功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。同时在老师的悉心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,单片机领域对我今后进一步学习计算机方面的知识有极大的帮助。使我们认识到课程的重要性,同时也感受到理论与实践之间的差距,使我们对单片机系统的应用有了更加深刻的认识。
10
淄博职业学院单片机项目设计
七、参考文献
[1]徐煜明,韩雁.单片机原理及接口技术[M].北京:电子工业出版社,2005.1
[2]万光毅,严义,邢春香.单片机实验与实践教程[M].北京:北京航空航天大学出版
11
因篇幅问题不能全部显示,请点此查看更多更全内容