ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:262.66KB ,
资源ID:4171007      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4171007.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的流水灯设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的流水灯设计.docx

1、基于单片机的流水灯设计摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。我们周围有许多广告牌。通过单片机的控制,我们可以把城市的夜晚装饰的更漂亮。通过对单片机的系统学习,对一些广告灯的设计做了一些必要的改进。同时对自己的改进也做了真实的仿真。达到了预期的目的。但是在改进的过程里也发现了自己的很多的不足。这会在以后的学习生活里不断提高。逐步完善自己。关键字:广告灯,单片机,程序设计1

2、单片机技术概述11.1 基本概念11.2 MCS-51系列单片机简介22 系统的硬件设计32.1硬件组成32.2流水灯硬件原理图32.3开发软件32.4编程语言特点43系统软件设计及调试5 3.1设计思路53.2 软件编程53.3 位控法53.4 循环移位法63.5 查表法73.6 汇编语法要求、规则93.7小灯控制程序93.8 结语114参考文献125致谢131 单片机技术概述1.1基本概念单片机实际上是微型计算机的一种,自从它问世以来,人们对它不断地改进,以应用于现代化社会的各方各面。单片机体积小,价格低廉,开发较为容易,可根据需要制作成各种智能控制器以代替人工的操作,实现自动化。在我国,

3、由于ASIC(专用集成电路)的生产还跟不上,单片机的作用更加地重要,在智能仪器仪表、工业设备过程控制、家用电器中,都可以见到它的踪迹。单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。 单片微型计算机就是将CPU、RAM、ROM、时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。(

4、引脚图例如图1.1) 按用途可分为通用型和专用型两大类根据单片机能够一次处理的数据的宽度,单片机可分为1位机,4位机,8 位机,16位机,32位机。(内部逻辑如图1.2)图1.1 51系列单片机引脚图图1.2 51系列单片机内部逻辑图1.2 MCS-51系列单片机简介MCS是Intel公司生产的单片机的系列符号 。20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给了许多半导体芯片生产厂家,如AMTEL、PHILIPS、ANALOG DEVICES、DALLAS公司等。这些厂家生产与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相

5、同,采用CMOS工艺,因而常用80C51系列来称呼所有具有8051指令系统的单片机。不应该把它们直接称为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列符号。2 系统的硬件设计 2.1 硬件组成按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.255.50V的电压工作范围和024MHz工作频率,使用AT89C51单片

6、机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。2.2 流水灯硬件原理图图2.1 系统硬件原理图2.3开发软件Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。它可以结合proteus软件可以实现单机仿真。对于初学者的需求基本能得到满足。而对于所需电路图的绘制则需要专用的protel软件的支持。它也是个功能全面的软件。所以学好单片机首先要熟悉上面提到的几种软件。以便于理论与实践的真正结

7、合。用protel软件的主要注意的是对各图标代码的熟悉。一提高绘画速度。Keil C51软件主要是对程序的编写要准确。软件的使用要在学习理论知识的同时带着使用,在使用中不断的熟悉。如果在实验室则主要熟悉对Keil C51与硬件设备的连接和使用。为了正确仿真串口,在软件仿真调试时,在用户的Keil工程文件的属性中,还需要设置实际使用的晶振频率。这个参数非常重要,直接影响通信的波特率,可以按照实际使用的参数进行设置。2.4编程软件特点它最大的好处就是简单、方便,容易使用,不需要使用任何电路,也没有特殊的要求;甚至可以在硬件电路制作好之前就将串口部分的程序编写、调试完毕。3系统软件设计及调试3.1

8、设计思路从硬件原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。3.2 软件编程单片机的应用系统由硬件和软件组成,上述硬件原理图

9、搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。下面我们以最简单的流水灯控制功能即实现8个LED灯的循环点亮,来介绍实现流水灯控制的几种软件编程方法。3.3位控法这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。程序如下:ORG0000H ;单片机上电后从0000H地址执行AJMP START ;跳转到主程序存放地址处ORG 0030H ;

10、设置主程序开始地址START:MOV SP,#60H ;设置堆栈起始地址为60H CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED1熄灭CLR P1.1 ;P1.1输出低电平,使LED2点亮ACALL DELAY;调用延时子程序SETB P1.1 ;P1.1输出高电平,使LED2熄灭CLR P1.2 ;P1.2输出低电平,使LED3点亮ACALL DELAY;调用延时子程序SETB P1.2 ;P1.2输出高电平,使LED3熄灭CLR P1.3 ;P1.3输出低电平,使LED4点亮ACALL DE

11、LAY;调用延时子程序SETB P1.3 ;P1.3输出高电平,使LED4熄灭CLR P1.4 ;P1.4输出低电平,使LED5点亮ACALL DELAY;调用延时子程序SETB P1.4 ;P1.4输出高电平,使LED5熄灭CLR P1.5 ;P1.5输出低电平,使LED6点亮ACALL DELAY ;调用延时子程序SETB P1.5 ;P1.5输出高电平,使LED6熄灭CLR P1.6 ;P1.6输出低电平,使LED7点亮ACALL DELAY ;调用延时子程序 SETB P1.6 ;P1.6输出高电平,使LED7熄灭CLR P1.7 ;P1.7输出低电平,使LED8点亮ACALL DEL

12、AY ;调用延时子程序SETB P1.7 ;P1.7输出高电平,使LED8熄灭ACALL DELAY;调用延时子程序AJMP START ;8个LED流了一遍后返回到标号START处再循环DELAY: ;延时子程序 MOV R0,#255 ;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序结束3.4循环移位法在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这

13、个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。具体编程如下所示,程序结构确实简单了很多。ORG0000H ;单片机上电后从0000H地址执行AJMP START ;跳转到主程序存放地址处ORG 0030H ;设置主程序开始地址START:MOV SP,#60H ;设置堆栈起始地址为60H MOV A,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV

14、 P1,A ;将ACC的数据送P1口MOV R0,#7 ;将数据再移动7次就完成一个8位流水过程LOOP:RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC移动过的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP ;没有移动够7次继续移动 AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果DELAY: ;延时子程序MOV R0,#255 ;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序结束3.5查表法上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的

15、“从左到右”流方式。运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVC A,A+DPTR”把数据取到累加器A中,然后再送到P1口进行显示。具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。ORG 0000H ;单片机上电后从0000H地址执行AJMP START;跳转到主程序存放地址处ORG 0030H ;设置主程序开始地址START:MOV SP,#60H ;设置堆栈起始地址

16、为60HMOV DPTR,# TAB ;流水花样表首地址送DPTRLOOP: CLR A ;累加器清零MOVC A,A+DPTR ;取数据表中的值CJNE A,#0FFH,SHOW ;检查流水结束标志AJMP START ;所有花样流完,则从头开始重复流SHOW:MOV P1,A ;将数据送到P1口ACALL DELAY ;调用延时子程序INC DPTR ;取数据表指针指向下一数据AJMP LOOP ;继续查表取数据DELAY: MOV R0,#255 ;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回TAB: ;下面是流水花样数据表,用户可据

17、要求任意编写 DB 11111110B ;二进制表示的流水花样数据,从低到高左移 DB 11111101B DB 11111011B DB 11110111B DB11101111B DB11011111B DB10111111B DB01111111B DB01111111B ;二进制表示的流水花样数据,从高到低右移 DB10111111B DB11011111B DB11101111B DB11110111B DB11111011B DB11111101B DB11111110B DB 10000001B DB0FEH,0FDH,0FBH,0F7H ;十六进制表示的流水花样数据 DB0EF

18、H,0DFH,0BFH,7FH DB7FH,0BFH,0DFH,0EFH DB0F7H,0FBH,0FDH,0FEH DB 0FFH ;流水花样结束标志0FFHEND ;程序结束3.6 汇编语法要求、规则这里需要说明的是,按汇编语法要求,所编制的程序(下称源程序)之格式和书写要求必须依下列原则: 1、源程序必须为纯文本格式文件,如用Windows“附件”中的“记事本”编写的文本文件编辑;2、源程序的扩展名应是 *.ASM; 3、一行只能写一条语句,以回车作为本句的结束,每一语句行长度应少于80个字符(即40个汉字)。4、每行的格式应为:标号: 命令 参数 ;注释 。即一行由四部份组成,各部份的

19、顺序不能搞错,依实际要求可以缺省其中的一部份或几部份,甚至全部省去,即空白行。需要使用标号时标号后面必须有“:”(冒号),而命令语句和参数之间必须用空格分开,如果命令有多个参数,则参数与参数之间必须用“,”(逗号)分开,需要注释时注释前必须用“;”(分号),“;”后面的语句可以写任何字符,包括汉字用于解释前面的汇编语句,它将不参与汇编,不生成代码。由于汇编程序对我们还不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于今后源程序的阅读和维护。 标号是标志程序中某一行的符号名,编译后标号的数值就是标号所在行代码的地址。在宏汇编ASM51中标号的长度不受限制,但标号中不能包含:或其它的一

20、些特殊符号,也不能用汉字,可以用数字作标号,但必须用字母开头。当标号作参数用(如标号作转移地址),在命令后面出现时,必须舍去:(如上面程序中的 AJMP START中的START是不能再有:)。每行只能有一个标号,一个标号只能用在一处,如果有两行用了同一个标号,则汇编时就会出错。由于标号的长度没有限制,可以用有意义的英文或汉语拼音来说明行,使源程序读起来更方便。在源程序中的字母不区分大小写,也就是说 start 和 START 是一样的,请不要用大小写方式去区分不同的标号。3.7小灯控制程序ORG 0 START: MOV DPTR,#TAB LOOP : CLR A MOVC A,A+DPT

21、R CJNE A,#0FFH,SHOW AJMP START SHOW: MOV P1,A ACALL DELAY INC DPTR AJMP LOOP DELAY:MOV R5,#2 D0:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 DJNZ R5,D0 RET TAB: DB 11111110B,11111101B,11111011B,11110111B,11101111B DB 11011111B,10111111B,01111111B,01111111B,10111111B DB 11011111B,11101111B,111

22、10111B,11111011B,11111101B DB 11111110B,10000001B,01000010B,00100100B,00011000B DB 11000000B,01100000B,00110000B,00011000B,00001100B DB 00000110B,00000011B,10101010B,01010101B,10010101B DB 01101010B,10100101B,01010101B,10001010B,01101000B DB 10110101B,01000010B,10000000B,01000000B,00100000B DB 00010

23、000B,00001000B,00000100B,00000010B,00000001B DB 00000000B,00000001B,00000010B,00000100B,00001000B DB 00010000B,00100000B,01000000B,10000000B,11011101B DB 11101011B,11101101B,11101011B,11011011B,10111111B DB 01111011B,10111011B,11011111B,11101011B,10110101B DB 11011011B,01101101B,11110000B,00001111B,

24、01110000B DB 00001110B,00110000B,00010000B,00001000B,00001000B DB 00001000B,01111110B,10000001B,01111110B,10000001B DB 0FFH END 接下来,我们将上述程序编译,并烧写到实验芯片中,放到实验板上可以看到程序的流水效果是一样的,但源程序看起来更加简洁,直观。其实8051单片机有111条指令,有的指令常用,有的指令不常用,只要遵守语法规则,你可以用这些指令“组合”成你想象到的任何程序。当然,有时一条指令可以替代很多条指令,这样会使程序简洁,程序代码减少,在编写较大程序时可以让程

25、序存储器放得下你需要的代码。3.8结语当上述程序之一编写好以后,我们需要使用编译软件对其编译,得到单片机所能识别的二进制代码,然后再用编程器将二进制代码烧写到AT89C51单片机中,最后连接好电路通电,我们就看到LED1LED8的“流水”效果了。参考文献1徐煜明,韩雁.单片机原理及接口技术M.北京:电子工业出版社,2005.12万光毅,严义,邢春香.单片机实验与实践教程M.北京:北京航空航天大学出版社,2006.43 侯玉宝.基于Proteus的51系列单片机设计与仿真M.北京:电子工业出版社,2004.14 杨欣,王玉凤,刘湘黔.51单片机应用从零开始M.北京:清华大学出版社,2006.55 戴佳.51单片机应用系统开发典型实例M.北京:中国电力出版社,2003.3致 谢通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。在这个过程里得到了老师和同学的帮助,感谢曹克澄老师的细心教授,使得自己的学习能顺利进行。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1