单片机AT89C51可控流水灯课程设计报告(汇编语言).docx_第1页
单片机AT89C51可控流水灯课程设计报告(汇编语言).docx_第2页
单片机AT89C51可控流水灯课程设计报告(汇编语言).docx_第3页
单片机AT89C51可控流水灯课程设计报告(汇编语言).docx_第4页
单片机AT89C51可控流水灯课程设计报告(汇编语言).docx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

目录目录1第一章 课题的意义及应用2第二章 系统的总体设计32.1 设计方法32.2 数码管显示方案32.3 键盘输入方案4第三章 硬件电路设计43.1电路原理43.2单片机最小系统53.3系统工作流程5第四章 程序设计64.1系统总体结构框图64.2 系统流程图6第五章 调试75.1正常现象75.2出现的故障7第六章 心得体会9参考文献9附录110程序:10附录219仿真电路图:19实验箱接线图:19流程图:20第一章 课题的意义及应用当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算机作为一种快速通用的计算工具方便了用户的使用。计算机可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算机软件和开发过程中的环节和步骤,并从实践经验出发对计算机设计做了详细的分析和研究。单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片微型计算机是微型计算机称单片机,特别适用于控制领域,故又称为微控制器。单片机的应用日益广泛,如应用在仪器仪表,家用电器和专卖装备的智能化以及过程控制等方面,单片机在人们的日常生活和工作中正扮演着越来越重要的角色。本系统就是充分利用了AT89C51芯片的I/O引脚。系统以采用MCS-51系列单片机为中心器件来设计LED流水灯系统,实现8个LED流水灯的各种显示方式,并实现循环的速度可调,暂停及复位功能。通过本次课题设计,应用单片机原理及接口技术等所学相关知识及查阅资料,完成可控流水灯设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。第二章 系统的总体设计2.1 设计方法本课题使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,只要将发光二极管LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此还应注意一点,由于人眼的视觉暂留效应以单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果了。2.2 数码管显示方案通常数码管显示有两种方式:动态显示和静态显示。静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。但占用I/O口线多,每一个LED都要占用一个I/O口硬件开销大,电路复杂。需要几个LED就必须占用几个并行I/O口,比较适用于LED数量较少的场合。当然当LED数量较多的时候可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较复杂。LED动态显示硬件连接简单,但动态显示扫描方式需要占用CPU较多的时间,在单片机没有太多实时测试任务的情况下可以采用。本系统需要采用4位LED数码管来显示流水灯闪烁方式的序号,故本系统选择动态显示方案。2.3 键盘输入方案单片机的键盘结构可以采用独立式按键和矩阵式键盘两种。独立式按键指直接用I/O口线构成单个按键电路,可在系统中键较少时使用。在按键比较多的时候可采用矩阵式键盘。本系统要设置6个按键,其中1个键用来开启和关闭整个流水灯系统并控制流水灯的闪烁方式,还有一个键也是控制流水灯的闪烁方式,另外2个键控制流水灯闪烁速度,还有一个按键用来控制流水灯的暂停和继续。最后一个按键用来控制流水灯的复位,故采用独立式按键。第三章 硬件电路设计3.1电路原理本硬件的核心是MCS-51单片机,我们选用AT89C51。因无需扩展外部RAM。系统采用4位共阳极数码管,用来显示各种闪烁方式的序号。系统采用6个按键控制,其中1个键用来开启和关闭整个流水灯系统并控制流水灯的闪烁方式,还有一个键也是控制流水灯的闪烁方式,另外2个键控制流水灯闪烁速度,还有一个按键控制流水灯的暂停和继续。最后一个按键控制流水灯的复位。系统在P1.0到P1.8上接了8个发光二极管,在按一下启动键时,P1.0的二极管亮,此时从P1.0到P1.8的二极管依次闪烁:1.若此时按按键1,2,流水灯将2个2个,隔1个亮1个,从中间向两边并从两边向中间或4个4个依次闪烁。2.若此时按按键3,4,流水灯的闪烁频率将改变。3.若此时按按键5,将暂停流水灯效果,再按一次又可继续之前的效果。4.若此时按按键6,将复位流水灯(跳到第一种方式)。3.2单片机最小系统P1.0 40P1.79 RST 31EA18XTAL P2.71920 P2.020 P2.0+5V 10UF 10K C1 C2图313.3系统工作流程按设计要求,规划了可控流水灯的工作流程如下:1.按下启动按钮(按键1),流水灯依次闪烁,数码管将显示1为第一种闪烁方式。若在此时按下按键3,4灯光将改变频率显示(共有3种速度可供调节)。并且若此时按按键5,将暂停彩灯效果,再按一次又可继续之前的效果。2.按下按键1流水灯将2个2个闪烁,此时数码管将显示2表示为第2种闪烁方式,若在此时按下按键3,4灯光将改变频率显示(共有3种速度可供调节)。并且若此时按按键5,将暂停彩灯效果,再按一次又可继续之前的效果。3.再按下功能键1流水灯将隔1个亮1个,此时数码管将显示3表示为第3种闪烁方式,再按下功能键3,4灯光将改变频率显示(共有3种速度可供调节)。并且若此时按按键5,将暂停彩灯效果,再按一次又可继续之前的效果。4.再次按下按键1流水灯将从中间向两边并从两边向中间闪烁,此时数码管将显示4表示为第4种闪烁方式,再按下功能键3,4灯光将改变频率显示(共有3种速度可供调节)。并且若此时按功能键5,将暂停彩灯效果,再按一次又可继续之前的效果。5.再按下按键1流水灯将4个4个闪烁,此时数码管将显示5表示为第4种闪烁方式,再按下按键3,4灯光将改变频率显示(共有3种速度可供调节)。并且若此时按按键5,将暂停彩灯效果,再按一次又可继续之前的效果。6. 再按下停止按钮系统将停止运行。7. 按按键2改变流水灯闪烁方式数码管将显示的数字依次减少。8. 按按键6将复位流水灯(跳到第一种方式)。第四章 程序设计4.1系统总体结构框图系统的结构框图如图41所示。四位一体数码管 时钟复位 电路单片机AT89C51 LED按键图414.2 系统流程图整个系统的总体程序,电路通电后,若按一下按键1,为第一种方式;若再按一下按键1,此时为第二种方式;再按一下为第三种方式;若按下按键2,此时为第二种方式;若再按一下按键2,此时为第一种方式;再按一下按键2,此时为第五种方式。每种方式各有它的流水灯花样。(程序及流程图请看附录)第五章 调试5.1正常现象按下按键1,灯开始闪烁。开始运行,这是第一种方式,然后在第一种方式中又有四种闪烁方式,这时候就要用到按键1和2了,按下按键1,2切换方式。按一下,切换一种方式,再按一下切换另一种方式。按下按键1,2灯开始闪烁,切换五种方式。按下按键3,4灯光改变频率显示。按下按键5彩灯效果暂停,再按一次又继续之前的效果。最后,就是关闭,按下按键1。5.2出现的故障在调试当中,出现了按下按键5,不能暂停彩灯效果,通过认真修改程序后,按下按键5,暂停彩灯效果,再按一次又继续之前的效果。图51在用实验箱进行实验时,不能实现流水灯效果。认真思考及检查线路后,发现是烧接程序时步骤出错。然后重新按照步骤:擦除芯片打开文件写Flash校验Flash操作,最后实现了可控流水灯功能。图52图53第六章 心得体会本次课程设计的题目是可控流水灯的设计,我针对这个题目的任务要求从课本上,上网等渠道获取相关信息及参考资料。之后对电路原理图和程序不断地修改,最终达到要求的效果。但由于水平和时间有限,程序和设计中还有许多不足之处。我会在以后的学习中不断努力。通过此次设计使我对应用系统设计思路有了一定的掌握,对硬件和软件的实践有了一定的了解。系统采用4位共阳极数码管来显示数字,采用6个按键,用来调整流水灯的闪烁方式,闪烁频率,暂停及复位。将所学的知识得到了一定的贯通,进一步掌握了独立设计的本领,深入领会单片机应用系统的软、硬件调试方法和系统研制开发过程。感谢老师及同学的帮助,这次课程设计收获颇多。参考文献1胡健单片机原理及接口技术,机械工业出版社。2百度文库。附录1程序:ORG0000HAJMP STARTORG 000BHAJMP T_0 ;20ms延时中断ORG 001BHAJMP T_1 ;100ms延时中断 ;_ _ 伪定义 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _YANS_ENBIT01H ;延时使能标志,1有效 ORG 0030H;_ _ 初始化 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _START: MOV P2, #01H ;打开四位一体数码管COM1端 MOV SP, #60H ;设置堆栈指针在(60H)MOV R1, #0 ;R1 存放按键1,2(选择工作方式)MOV R2, #1 ;R2 存放按键3,4(变换延时时间)MOV R3, #0 ;R3 延时辅助MOV R4, #0 ;R4 流水灯1查表辅助 MOV R5, #0 ;R5 流水灯2查表辅助MOV R6, #0 ;R6 流水灯3查表辅助MOV R7, #0 ;R7 流水灯4查表辅助MOV R0, #0 ;R0 流水灯5查表辅助MOV 30H, #2 ;30H 存放延时数据2x100ms即200ms ;中断初始化 MOV IE, #10001010B;T_0、T_1延时中断使能 MOV IP, #00000000B;无中断优先MOV TMOD,#00010001B;T_0、T_1延时中断 工作方式一MOV TH0, #0D8H MOV TL0, #0F0H ;D8F0 = 55536 (20000us即20ms)MOV TH1, #3CH MOV TL1, #0B0H ;3CB0 = 15536 (100000us即100ms) MOV TCON,#01010000B;启动T_0、T_1延时 ;_ _ 主程序 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ MAIN: CJNE R1, #1, L1 ;流水灯1LCALL LOOP L1: CJNE R1, #2, L2 ;流水灯2LCALL LOOP1 L2:CJNE R1, #3,L3 ;流水灯3 LCALL LOOP2 L3:CJNE R1, #4, L4 ;流水灯4 LCALL LOOP3 L4: CJNE R1, #5, L5 ;流水灯5 LCALL LOOP4 L5:CJNE R1, #6, L6 ;关闭 MOV P1, #0FFH MOV P0, #0FFH LCALL START L6: LJMP MAIN ;_ _ 流水灯1 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LOOP: JNB YANS_EN,$ ;延时CLR YANS_EN ;关闭延时使能标志 MOV DPTR,#TAB1 MOV A,R4MOVC A,A+DPTR MOV P1,A MOV P0, #0F9H ;数码管显示1 INC R4 CJNE R4, #16, BY1 MOV R4, #0 BY1: RET ;_ _ 流水灯2 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LOOP1: JNB YANS_EN, $ ;延时 CLR YANS_EN ;关闭延时使能标志 MOV DPTR,#TAB2 MOV A, R5 MOVC A, A+DPTR MOV P1, A MOV P0, #0A4H ;数码管显示2INC R5 CJNE R5, #8,BY2 MOV R5, #0 BY2: RET ;_ _ 流水灯3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LOOP2: JNB YANS_EN, $;延时 CLR YANS_EN ;关闭延时使能标志MOV DPTR,#TAB3 MOV A, R6 MOVC A, A+DPTR MOV P1, A MOV P0, #0B0H ;数码管显示3INC R6 CJNE R6, #16, BY3MOV R6, #0 BY3:RET ;_ _ 流水灯4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LOOP3: JNB YANS_EN, $;延时 CLR YANS_EN ;关闭延时使能标志MOV DPTR,#TAB4MOV A, R7 MOVC A, A+DPTR MOV P1, A MOV P0, #99H ;数码管显示4INC R7 CJNE R7, #10, BY4MOV R7, #0 BY4:RET ;_ _ 流水灯5 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ LOOP4: JNB YANS_EN, $;延时 CLR YANS_EN ;关闭延时使能标志MOV DPTR,#TAB5MOV A, R0 MOVC A, A+DPTR MOV P1, A MOV P0, #92H ;数码管显示5INC R0 CJNE R0, #40,BY5MOV R0, #0 BY5:RET ;_ _ 中断T_0(20ms延时执行识别按键) _ _ _ _ _ _ _ _ _ _ _ T_0: CLR ET0PUSH PSW PUSH ACC MOV TH0, #0D8H MOV TL0, #0F0H ;D8F0 = 55536 (20000us即20ms) LCALL SBAJ ;识别按键 POP ACC POP PSWSETB ET0 RETI;_ _ 中断T_1(100ms延时)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ T_1:CLR ET1 PUSH PSW PUSH ACC MOV TH1, #3CH MOV TL1, #0B0H ;3CB0 = 15536 (100000us即100ms) INC R3 MOV A,R3CJNE A,30H,YS MOV R3, #0SETB YANS_EN ;启动延时使能 YS: POP ACC POP PSW SETB ET1RETI ;_ _ 按键识别 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ SBAJ: ;按键1,2(选择工作方式) JB P3.0, L7JNB P3.0, $ INC R1 L7:JB P3.1, L8JNB P3.1, $ DEC R1CJNER1,#0,L7MOVR1,#5L8: ;按键3,4(变换延时时间) JB P3.2, L9JNB P3.2, $ INC R2 LCALL YSGX;调用延时数据更新L9:JB P3.3, L10JNB P3.3, $ INC R2 LCALL YSGX1;调用延时数据更新L10: ;按键5(暂停继续) JB P3.4, L11JNB P3.4, $ CPLTR1L11:;按键6(复位)JB P3.5, L12JNB P3.5, $ MOVR1,#1L12:RET;_ _ 延时数据更新 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ YSGX: CJNE R2, #1, BS1 MOV 30H, #10 ;10x100ms即1s MOV R3, #0 SJMP BS3 BS1: CJNE R2, #2, BS2MOV 30H, #5 ;5x100ms即500msMOV R3, #0 SJMP BS3 BS2:CJNE R2, #3, BS3 MOV R2, #0 MOV 30H, #2 ;2x100ms即200ms MOV R3, #0 BS3: RET YSGX1: CJNE R2, #1, BS11 MOV 30H, #2 ;2x100ms即200ms MOV R3, #0 SJMP BS33 BS11: CJNE R2, #2, BS22MOV 30H, #5 ;5x100ms即500msMOV R3, #0 SJMP BS33 BS22:CJNE R2, #3, BS3

温馨提示

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

评论

0/150

提交评论