基于ARM的嵌入式循环彩灯课程设计.doc

上传人:啊飒飒 文档编号:10538635 上传时间:2021-05-22 格式:DOC 页数:14 大小:477.50KB
返回 下载 相关 举报
基于ARM的嵌入式循环彩灯课程设计.doc_第1页
第1页 / 共14页
基于ARM的嵌入式循环彩灯课程设计.doc_第2页
第2页 / 共14页
基于ARM的嵌入式循环彩灯课程设计.doc_第3页
第3页 / 共14页
基于ARM的嵌入式循环彩灯课程设计.doc_第4页
第4页 / 共14页
基于ARM的嵌入式循环彩灯课程设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《基于ARM的嵌入式循环彩灯课程设计.doc》由会员分享,可在线阅读,更多相关《基于ARM的嵌入式循环彩灯课程设计.doc(14页珍藏版)》请在三一文库上搜索。

1、14黎 明 职 业 大 学 09 嵌 入 式 软件工程 项 目 设 计项目名称:循环彩灯课程设计姓 名: 王官辉学 号: 0905150104指导老师: 骆旭坤2011年6月目录1.项目背景22项目框架23.技术分解23.1程序流程图53.2单片机说明53.3问题分析与解决方案54.完成情况展现25.项目总结36.收获、体会和建议56.1单片机模拟系统56.2系统连线57. 参考资料68.程序71项目背景现代生活中,彩灯越来越成为人们的装饰品,它不仅能美化环境,渲染气氛,还可用于娱乐场所和电子玩具中,现以该课题为例进行分析与设计。循环彩灯是我们日常生活经常见到也是必不可少的,随着城市社会经济的

2、发展,城市道路边和楼房上都有这种循环彩灯。本文根据城市城市夜景越来越美,设计出循环彩灯闪烁系统。巩固和加深课堂所学知识;熟悉各种指令的应用及条件;学习掌握一般的软硬件的设计方法和查阅、运用资料的能力。本课程是利用单片机最小系统设计交通灯,单片机最小系统包括:复位电路、外部晶振、低位地址锁存等。该课程应该据有的功能是:具有循环彩灯显示功能。2. 项目框架开始定义8255各个端口地址8255初始化装入控制字al=10hal=20hal=00hal=02hal=01hal=03h彩灯左循环彩灯右循环彩灯递增循环彩灯交替闪烁停止系统延时子程序结束系统启动,屏蔽高四位,继续检测按键值3. 技术分解(系统

3、原理)在设计中利用软件程序延时的方法来控制循环彩灯亮灭的时间。考虑延时时间较长所以先用DELAY来实现延时。利用2口的八个发光二极管作为循环彩灯的输出端口。3.1程序流程图: 开始P1口延时灯亮延时灯亮灯灭3.2 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可为您提供许多较复杂系统控制应用场合。AT89C51有40

4、个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。主要功能特性: 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉

5、电模式 软件设置睡眠和唤醒功能图2.AT89C51芯片3.3 问题分析与解决方案3.3.1. unknow 1-byte opcode at B900:7056! 61 SPICEerror-too many iterations without convergence在仿真过程中,出现以上两行的错误,太多的迭代没有收敛性,和某个汇编语言在编码过程中的地址不正确:说明程序代码过于分散,没有模块化,之后再将程序能够模块化的地方尽量改善,达到更加简洁易读易运行的目的由于程序中定义了 dz db 01h,03h,07h,0fh,1fh,3fh,7fh,0ffh,00h,0ffh,00h,0ffh 在

6、在最初的调试的时候variable里面elements的值总是显示1,然而此处共有12个值,si共需要在此取11个偏移地址,所以改成11后,程序调试运行正常;3.3.2.延时子程序模块的编写方法多种,之前为了测试单一的彩灯循环左移是否能够成功,采用nop延时,由CPU晶振频率计算,12M的晶振频率,执行一个nop需要时间1us,8086的晶振频率是5MHz,所以执行一个nop需要的时间是12/5us若要实现短暂而精确的延时可以用nop,然而此处流水灯的延时仅仅用空指令nop并不具有很好的移植性和修改性,程序代码也显得冗余;一般一定功能的程序段设计成一个子程序,MASM宏汇编程序用“过程”(Pr

7、ocedure)来构造子程序。如此段延时子程序:delay proc push cx push bx mov cx,0fh ;修改此处的值,可以改变延时时间 d1:mov bx,0fh d2:dec bx jnz d2 pop bx pop cx ret end endp 在写此系统程序中,我采用的是分支结构编写延时程序,后查的一般分支程序为计算机根据某种判断,利用条件转移指令,改变程序执行顺序所用;然而一般具有公用性,重复性,和相对独立性的某段程序应设计成子程序,这种结构会给程序设计和调试带来许多方便,在满足汇编语言一定的规范性条件下,应将延时模块改成如上程序所示;3.3.3. 内存空间分配

8、,汇编语言的重要特点之一是能够直接利用机器指 或者伪指令为数据或者代码程序分配内存空间,86系列(如8086微处理器)的存储器结构是分段的,有代码段,数据段,堆栈段或附加段,在程序设计时要充分考虑分段结构,要执行的程序段应设在当前段(活动段)中;分配内存空间:直接在proteus里面将8086CPU的internal memory size设置成一个足够用的空间大小,如0x1000,默认的空间大小是0x00000,如不改则仿真不成功。程序在运行时所需要的工作单元应尽可能的设在CPU寄存器中,这样存取速度快,而且操作方便;在此系统源程序中都采用8086CPU的全部通用寄存器:累加器AX,基数寄存

9、器BX,基数寄存器CX,数据寄存器DX;和堆栈指针寄存器SI;3.3.4 在所有的程序模块逐步成功之后,期待着整体衔接能够成功,可是出现了一个现象:每次仿真只能实现一种花型,在仿真过程中按键根本无作用,也就是程序一直在某个彩灯子程序中运行,无法去读select处C端口的按键值,必须在仿真stop后,切换按键值,在按仿真play后才能改变花型;后来发现原来是在每个彩灯子程序中,由于利用了loop循环去实现彩灯的左移与右移,使得程序跳不到下一条语句jmp select,一直以为有了jmp select,似乎就可以去读取了按键值,后查loop的资料,loop的两步操作:1、cx=cx-1;2、判断c

10、x的值,决定跳转还是向下执行;原来自己在子程序开始忘记了mov cx,08h;即彩灯实现完一次花型变换就去读取按键的值,如果此时按键的值改变,就跳转到相应的程序段去执行,否则继续执行当前的彩灯花型;3.3.5.某个想法:在调试过程中,由于led灯一端都接地,按下启动键,并没有什么现象,总让人产生错觉是不是程序出现问题,仿真不出来;未来便于启动按键按下有现象,可将led灯的另一端接高电平,但是想来想去,如果是在现实中,不可能用彩灯突然全部亮来说明系统启动,故可以在连接启动键导线中用一个led灯是否亮了来检测系统的启动成功,此时所有的按键的另一端也要求接高电平了;3.3.6整体调试过程中,SW0:

11、启动/暂停能够控制仿真过程中的状态,SW1:停止系统,需要用到系统功能调用,返回当前操作系统;4. 完成情况展现4.1单片机模拟系统单片机模拟系统单片机系统需要实验板一块,电容3个,电阻1个,HW-DIP4一个,若干,导线若干,小led灯8个,AT80C51芯片一片等单片机系统包括单片机、晶振电路、复位电路。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号.为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。4.2系统连线(1)把“单片机系统”区域中的P1.0P1.2端口用排线连接到交区域中HW-DIP4的

12、端口上。(2) 把“单片机系统”的地与电源与电源的地与电源相连接。把led的vcc与电源相连。 图显示模块原理图PCB图5.项目总结通过本次课程设计较系统地掌握有关单片机控制的设计思想和设计方法,主要对AT89C51的结构、功能、内部资源等了解并对其进行测试和加以应用的知识得到学习。由于是在我们只有一个星期的课程设计,这个设计的一些内容是在网上找的,自己做了一些的改动,在上网找资料的同时也学到了许多东西,找到了很多学习单片机的网站,里面的内容都比较适合我们初学者去学,有些网站还专门介绍这种单片机的类型、用法、功能等等。其实我们平时不懂就应该自己去学习去弄明白,通过这个课程设计,使我发现,原来小

13、小的一片单片机有这么强大的功能,能应用于各种领域。都是觉得很神奇,人类都的聪明啊。我应该在自己以后的学习中,不仅要有刻苦努力,要有钻研精神,还要有创新,对自己感兴趣的一定要用心去学。6.收获、体会和建议课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到确定,从理论到实践,在将近一个月的日子里

14、,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的软硬件搭配的大课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说PCB的布板不是很美观,对单片机汇编语言掌握得不好,对于程序的

15、整体结构没有很好的布置好通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师和同学的辛勤指导下,终于还是迎刃而解。同时,在老师的身上我们都学得到很多实用的知识,在次我们表示感谢!同时,对给过我们帮助的所有同学和老师再次表示忠心的感谢!7.参考文献1谢维成 杨加国编著 单片机原理与应用及C51程序设计 北京:清华大学出版社,2006.82余锡存 曹国华编著.单片机微机原理及接口技术.西安:西安电子科技出版社,2000.12143 李光飞 编著 单片机课程设计实例指导单片机课程设计实例指导 北京:北京航空航天大学出版社; 第1版

16、(2004年1月1日)4高等学校教材计算机科学与技术单片机课程设计指导 杨居义清华大学出版社 (2009-09出版)8.程序1 data segmentMY8255_A equ 90h ;8255的A端口地址MY8255_B equ 92h ;8255的B端口地址MY8255_C equ 94h ;8255的C端口地址MY8255_MODE equ 96h ;8255控制寄存器地址 MODE_A db 10001001b ;控制字 89h; A端口输出工作方式0,端口C输入 dz db 01h,03h,07h,0fh,1fh,3fh,7fh,0ffh,00h,0ffh,00h,0ffh dat

17、a ends code segmentassume cs:code,ds:data start: mov dx,MY8255_MODE mov al,MODE_A out dx,al ;控制字 初始化 ;-select: mov dx, MY8255_C in al,dx ;读取C端口地址 goexit: test al,10h jz exit ;结果是0,CF=1,跳转到exit去执行 set: test al,20h jz select ;若是结果是0,则继续检测按键 ; * ;四种花型的判断 and al,0fh ;屏蔽al的高四位 cmp al,00h jz cont1 ;花型1 循环

18、左移 cmp al,01h jz cont2 ;花型2 循环右移 cmp al,02h jz cont3 ;花型3 依次递增后闪烁 cmp al,03h jz cont4 ;花型4 交替闪烁 jmp select ;- exit: mov ah,4ch int 21h ;4ch系统功能调用,返回操作系统 ;-cont1: mov cx,08h mov dx,MY8255_A mov al,01h k1: out dx,al ;写A端口 call delay rol al,1 loop k1 jmp select ;- cont2: mov cx,08h mov dx,MY8255_A mov

19、al,80h k2: out dx,al call delay ror al,1 loop k2 jmp select ;- cont3: mov dx,MY8255_A mov bl,0bh lea si,dz diz: mov al,si ;向左递增子程序 out dx,al call delay inc si ;加1存在si里面 dec bl jnz diz ;bl!=0则继续跳到diz执行 jmp select ;-cont4: mov dx,MY8255_A mov al,55h out dx,al call delay mov al,0aah ; xor al,0ffh out d

20、x,al call delay jmp select ;- ;delay proc ;定义延时子程序 ; push cx; push bx; mov cx,0fh ; d1: mov bx,0fh; d2: dec bx; jnz d2; pop bx; pop cx; ret; end endp ;-delay: 延时子程序 pushf push bx push cx ;保护现场 mov bx, 0e0hlp2: mov cx ,176hlp1: pushf ;标志入栈 popf ;标志出栈 loop lp1 dec bx jnz lp2 pop cx pop bx popf ret code ends end start 14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1