手机版
您的当前位置: 诚达文秘网 > 范文大全 > 公文范文 > 可控流水灯设计(单片机课程设计报告)汇编语言

可控流水灯设计(单片机课程设计报告)汇编语言

来源:公文范文 时间:2023-03-08 08:10:02

单片机课程设计报告 题 目:
可控流水灯 摘要 单片机是一种集成电路芯片,采用超大规模技术,把具有数据处理能力的微处理器、随机存取数据存储器、只读程序存储器、输入输出电路、可能还包括定时计数器、串口通信口、显示驱动电路,脉宽调制电路、模拟多路转换器及A/D转换器等电路集成到一块芯片上,构成一个最小而完善的计算机系统。这些电路在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。对可控流水灯设计通过编写代码实现8个LED灯5种流水灯显示方式。在设计中主要采用80C51这款芯片作为控制主体,用发光二极管来作为显示灯,用按钮来切换流水灯的发光方式同时外接一个七段显示发光二极管来显示流水灯的发光模式。系统通过P2口外接8个发光二极管,P1口接3个按键,一个按键进行方式选择,数码管显示方式编号;
用两个键来控制流水灯流动的速度。数码管接在80C51的P0口上,而流水灯的放光二极管经过排阻接在P2口上。设计中辅以简单的设备和必要的电路,设计了一款流水灯,最终达到预期的目的。

关键词 单片机80C51 发光二极管 流水灯 目 次 1 引言 1 2 课题综述 1 2.1课题来源与意义 1 2.2面临的问题 1 3 系统设计 1 3.1总体设计 1 3.2模块设计 2 3.3硬件设计 5 4 代码编写 6 5 系统调试 7 6 系统运行结果与分析 7 结 论 9 致 谢 10 参 考 文 献 11 附录 12 1 引言 单片机控制系统能够取代以前利用复杂电子线路或者数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。现在的单片机的控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。

2 课题综述 2.1课题来源与意义 随着经济的发展、科技的突飞猛进,芯片业得到了迅速的发展,是单片机技术在各种民用和工业控制等领域得到更广泛的应用。单片机凭借其低成本、高性能的不可代替优势已经成为了微电脑 控制的主力军。学习单片机的有效方法是将理论与实践并重,因此通过对单片机可控流水灯的设计和研究,鼓励学生在熟悉基本原理的前提下,与实际应用相联系,提出自己的方案,来完善设计,使得他们更好的掌握单片机的应用。

2.2面临的问题 本次课程设计的要求是对8个LED灯设计5种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号;
用两个键来控制流水灯流动的速度。

所要解决的问题有流水灯显示方式的设计,LED灯的驱动问题,七段显示数码管的驱动问题以及系统对外界按钮的相应问题。下面将对各个问题展开论述。

3 系统设计 3.1总体设计 实现这个课题我们使用80C51作为控制主体,使用八个共阳极发光二极管作为LED显示流水灯,一个七段显示数码管来显示流水灯显示方式,外接三个按钮,其中用一个按键进行方式选择,并用一个数码管显示方式编号;
用两个键来控制流水灯流动的速度。,外接一个晶振来提供外接时钟脉冲,系统对外连接的串口用美信公司的MAX232芯片来完成。

模块图如下:
主体控 制模块 流水灯模块 时钟模块 显示模块 串口模块 按钮控制模块 图3-1 系统模块图 流程图如下:
开始启动 选择模式 结束 流水灯发光 数码管显示模式 图3-2系统流程图 3.2模块设计 3.2.1主体控制模块 芯片80C51是核心,P0、P1、P2、P3口均可以作为I/O口使用。数码管经过上拉电阻接在80C51的P0口上,P2口外接8个发光二极管,P1口接3个按键,一个按键进行方式选择,数码管显示方式编号;
用两个键来控制流水灯流动的速度。

图3-3主体控制模块图 3.2.2按键控制模块 按键控制模块采用独立式按键接口设计。独立式按键是每一个按键占用一根I/O端线。特点:各个按键相互独立,电路配置灵活;
按键数量较多时,I/O端线耗费较多,电路复杂;
软件结构简单。

按键去抖动问题:键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。

软件去抖动:检测到按键按下后,执行延时子程序后再确认是否确实按下,消除抖动影响。

图3-4按钮控制模块图 3.2.3时钟模块 时钟电路用于产生单片机工作时所需的时钟信号,在芯片的外部通过18脚、19脚接晶体振荡器和微调电容,形成反馈电路,构成一个稳定的自激振荡器。电路中的C1、C2取30Pf左右,二晶体振荡器的频率范围通常是1.2-12MHZ,晶体振荡器的频率越高,振荡频率越高。

图3-5时钟模块图 3.2.4 显示模块 显示模块主体是八段显示数码管。共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。

图3-4显示模块图 3.2.5流水灯模块 发光二极管就是LED,是一种由磷化镓等半导体材料制成的、能直接将电能转换成光能的发光显示器件。当其内部有一定电流通过时,就是发光。发光二极管具有功耗低、体积小、可靠性高、寿命长和相应快等优点。

流水灯模块采用8个LED发光二极管,通过代码的编写,实现五种流水移动,其中电阻的作用是保护二极管,向它提供较小的电流,防止二极管因为电流过大而烧毁。

设计中,发光二极管是共阳极接法的,我们只需要将其初值不断的左移就会看到LED轮流的被点亮,也就实现了流水灯的功能。几种模式对应的初值为:#0FEH ,#0FCH,#0F8H,#0FAH,,#0F5H。

图3-5流水灯模块图 3.2.6 串口模块 MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

图3-6串口模块图 3.3硬件设计 图3-7硬件连接图 4 代码编写 方式1:一个灯亮左移 FS1: MOV A,#0d7H SETB P1.3 MOV P0,A ;数码管显示数字“1“ CLR P1.3 MOV R2,#08H MOV A,#0FEH LOOP1: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP1 LCALL WAIT 流水灯流水功能:发光二极管是共阳极接法的,将其初值不断的左移就会看到LED轮流的被点亮,也就实现了流水灯的功能。1-5种模式对应的初值为:#0FEH ,#0FCH,#0F8H,#0FAH,,#0F5H。

数码管方式显示:
MOV A,#0d7H SETB P1.3 MOV P0,A ;数码管显示数字“1“ CLR P1.3 其中,方式1中数码管显示数字“1“,在方式2-5中段码分别为:#04CH,#045H,#87H,#25H,数码管分别显示‘2’、‘3’、‘4’、‘5’。

调用的延时程序DELAY DELAY: MOV R7,#0FFH ;1S DELAY1:MOV R6,#0FFH DELAY0: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R6,DELAY0 DJNZ R7,DELAY1 RET 调用的WAIT程序,用来判断是否第一个键被按下,如果按下,则开始进行流水灯的流水功能。

WAIT: FDG: MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LET;判断S1是否按下 JMP FDG LET: LCALL DE MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LEFT ;判断S1是否按下 JMP FDG LEFT: MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LEFT ;判断S1是否按下 RET 5 系统调试 通过对编写好的代码用keil进行编译后,因为编写的时候中英文输入的切换,导致空格是全角符号,编译有错误。在语句‘MOV A,#0FEH’中,没有加0编译后也出错。在将程序烧入单片机中时,一直不能成功,后来在老师的帮助下,更换了芯片,终于成功了。烧入程序运行后,数码管不能正常显示,因为段码值不能对应,最终修改#0d7H,#04CH,#045H,#87H,#25H后才能正常显示1 、2 、3 、4 、5。

6 系统运行结果与分析 通过USB线接通提供电源后,数码管和led灯能正常显示,按下第一个键,数码管显示1,led灯以一个灯亮的形式开始左移,当显示完毕后,再次按下第一个键,数码管显示2,led灯以两个灯亮的形式开始左移。类似的,能够显示5种方式。但是,由于程序的不完善,使得另外控制速度的键没能很好的实现功能,已经在显示方式的时候,如在第一种当时进行中的时候,按下第一个键想要进行第二种方式的时候,不能起到作用,需要等到第一种方式显示完毕后,再按下键才能有效,所以还需要改进代码来完善我们的程序。

结 论 通过这次的课程设计,让我学习到了很多知识以及认识到了很多问题。同时我意识到了一个很重要的问题,那就是课程设计之前的准备工作也是很重要的,包括提前预习设计的题目,上网和去图书馆查阅资料。我清楚的知道了,资料也是那么重要,否则在一个新颖的题目面前,你将无从下手。通过准备工作,这样可以保正在设计的时候,有了充足的准备,使得自己不会在真正要开始课程设计的时候,对着题目发呆,没有什么进展。因此,我觉得这个也是对待学习的一种好的态度,以后在学习中,也要一直以这种好的态度对待。

除此之外,让我发现这次的可控流水灯设计,对于我以前的学习如数码管显示、led灯等的知识,不仅是一次很好的运用,而且让我再次花心思去复习了以前学习的知识点,运用之初相互结合知识点,使得知识点可以联系起来,对我的学习有了很大的好处。

在程序设计的过程中,也遇到了好多的问题,刚开始在代码调试的时候,一直会存在错误,也有过很失望的时候,在通过老师的帮助后,经过很多次的修改以后,终于把程序代码改好。但是在代码烧入芯片中,以及数码管的显示等问题上面,我们还是花费了好多时间,但是还是没有头绪。最终还是在老师的帮助下,以及帮我们把代码进行了修改,才得以完成了可控流水灯基本功能。

总的来说,这次设计获益胜多。因为本次课程设计是一个团队的合作,所以,不仅使得我们团结合作,学习到了知识,还让我们更加的学会沟通。不仅培养了实践能力,还培养了设计思维,同时也锻炼了动手实际操作能力,在摸索该如何设计电路使之实现所需功能的过程中,锻炼了运用所学知识的灵活性,加深了对知识的理解及提高了解决问题的能力。在体会到设计电路的艰辛的同时,更能体会到成功喜悦和快乐。

在这次的设计中,我学习了很多,也享受到了其中的乐趣。从这次课程设计中我了解到流水灯的设计还是很好玩的,以前在路上夜景中的流水灯看上去很复杂,现在自己编程以后,知道了原理,相信在器件的允许下,我们也是可以完成那种效果的。

致 谢 对于这次的课程设计,首先最要感谢就是我们的淮阴工学院和计算机工程工程学院了,正是他提供了这次实践的机会,让我们都有了锻炼的机会,有了进一步学习和巩固所学过的知识点,我觉得这是一次难得的机会,我相信其他学校或者是其他专业的同学都不一定能有这个机会的。

当然还要感谢的就是担任我们单片机课程设计的老师金鹰 戴峻峰 王福德 张粤老师,他们每天会来我们课程设计的教室,指导我们设计,对于我们在课程设计中遇到的问题,他们总是会很认真的帮助我们解答疑难,老师会在我不懂的时候放弃自己手头上的工作,在旁边指导提醒,一遍又一遍,直到我弄懂为止,真的十分感谢!而且更加令我感动的是,在编写程序的时候会碰到很多问题,老师们都细心帮我们解答纠正,他们并不是直接的说明错误的所在而是间接的引导,让我们自己找出错误,让我们在设计中,可以很好地进行,也让我们感受到老师的用心以及认真。我们在通过老师的帮助后,经过很多次的修改以后,终于把程序代码改好。但是在代码烧入芯片中,以及数码管的显示等问题上面,我们还是花费了好多时间,但是还是没有头绪。最终还是在老师的帮助下,以及帮我们把代码进行了修改,才得以完成了可控流水灯基本功能。我觉得我们真的应该要好好的感谢老师,他们为了我们,付出了很多的时间和精力,而且他都是比较耐心的指导,从来没有见他不耐烦过,真的对于他们的行动很感动。

当然,我不会忘记我的那些同学,在我遇到疑难的时候,他们也总是会很乐意的帮助我,为我解答难题,而且还会主动地借资料给我,我很庆幸有这些好的同学,也在此要好好感谢他们。

还有就是我要感谢那些我们所在实践的地点的工作人员,是他们为我们提供了那么好的环境,在这么舒服的环境之中做程序就是一种享受。

最后必须感谢的就是给我提供过帮助的参考文献的作者了,他们所编的书籍让我受益匪浅。真的很感谢他们所有人的帮助。

参 考 文 献 1 康华光.电子技术基础数字部分(第五版).高等教育出版社,2006 2 严天峰.单片机应用系统设计与仿真调试.北京:北京航空航天大学出版社,2005 3 李广弟,朱秀月,冷祖祁.单片机基础(第三版).北京:北京航空航天大学出版社,2007 4 胡汉才.单片机原理及系统设计. 北京:清华大学出版社,2002 5 南建辉,熊鸣,王军茹.MCS-51单片机原理及应用实例. 北京:清华大学出版社,2004 附录 ORG 0000H START: MOV A,P1 ; 读入P1口状态 ANL A,#10H ; 屏蔽无效位 MOV P0,#0FFH CLR P1.3 LCALL WAIT FS1: MOV A,#0d7H SETB P1.3 MOV P0,A ;数码管显示数字“1” CLR P1.3 MOV R2,#08H MOV A,#0FEH LOOP1: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP1 LCALL WAIT FS2: MOV A,#04CH SETB P1.3 MOV P0,A ;数码管显示数字“2” CLR P1.3 MOV R2,#8H MOV A,#0FCH LOOP2: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP2 LCALL WAIT FS3: MOV A,#045H SETB P1.3 MOV P0,A ;数码管显示数字“3” CLR P1.3 MOV R2,#8H MOV A,#0F8H LOOP3: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP3 LCALL WAIT FS4: MOV A,#87H SETB P1.3 MOV P0,A ;数码管显示数字“4” CLR P1.3 MOV R2,#8H MOV A,#0FAH LOOP4: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP4 LCALL WAIT FS5: MOV A,#25H SETB P1.3 MOV P0,A ;数码管显示数字“5” CLR P1.3 MOV R2,#8H MOV A,#0F5H LOOP5: MOV P2,A LCALL DELAY RL A DJNZ R2,LOOP5 LJMP START DELAY: ;MOV A,P1 ;读入P1口状态 ; ANL A,#60H ;CJNE A,#20H,DELAY2 ;S2是否按下 MOV R7,#0FFH ;1S DELAY1:MOV R6,#0FFH DELAY0: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R6,DELAY0 DJNZ R7,DELAY1 RET WAIT: FDG: MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LET;判断S1是否按下 JMP FDG LET: LCALL DE MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LEFT ;判断S1是否按下 JMP FDG LEFT: MOV A,P1 ;读入P1口状态 ANL A,#10H CJNE A,#10H,LEFT ;判断S1是否按下 RET DELAY2:CJNE A,#40H,ERR ;断S3是否按下 MOV R7,#0FFH ;时1S DELAY3:MOV R6,#0FFH DELAY4: NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DJNZ R6,DELAY4 DJNZ R7,DELAY3 RET DE: MOV R7,#28H LP6: MOV R6,#064H DJNZ R6,$ DJNZ R7,LP6 RET ERR: END 指导教师评语

诚达文秘网 https://www.rk1k.cn Copyright © 2019-2024 . 诚达文秘网 版权所有

Powered by 诚达文秘网 © All Rights Reserved. 备案号:浙ICP备19042126号-1

Top