您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页可编程节日彩灯

可编程节日彩灯

来源:尚车旅游网
中国矿业大学徐海学院计算机系

《硬件课程设计》报告

设计题目:可编程节日彩灯 学号:****** 姓名:** 学号:******姓名: ** 指导教师:** 成绩:

2018年12月

一、设计任务及要求

彩灯是日常生活中的一种装饰用品,尤其在节日期间,增加了几日气氛。它蕴含着丰富的文化底蕴,被广泛地应用于各种商城。变换无穷的彩灯样式,给城市增添了活力,吸引着人们的注意力,深受人们的喜爱。在日常生活中,人们将彩灯摆放着各种图案,增添美感。应用系统的小型化,快速化,大量花,重轻量的方向发展。科学技术更加贴近人们的生活,向着满足人们的需求方向发展。 彩灯的闪烁有各种方式,如全亮去灭,交替闪烁,循环闪烁等,最常见的还是交替闪烁。

通过软件编程的方式来实现彩灯的闪烁,可编程接口芯片8255A以及可编程并行I/O接口芯片,实现彩灯的循环闪烁。在这个过程中,设计了彩灯的多种循环闪烁,再每种方式中,用户可以控制彩灯的闪烁方式,并且用户可以任意选择,使彩灯以设计的哪一种循环方式进行闪烁。以达到要求。 二、需求分析

同样一会亮一会灭的彩灯简单点路设计的彩灯已经不能满足人们的需求。所以节日的彩灯的控制就显得尤为重要。通过对节日彩灯的控制,使其显示出绚丽的图案,增添节日的气息。面向场合主要是酒店,庙会,节日等场合。 三、人员与分工

**负责问题范围为“问题的提出”,“需求分析”,“电路组成”。 **负责的范围为“流程图”及软件编程,还有各部功能。

四、总体设计方案

4.1设备器材

<1)PC微机一台

用于对程序的编译程序测试等,同时需要对实验设备进行控制,提供程序的运行平台,并且手机和释放硬件信号,实现程序功能。 <2)微机原理实验箱一台

这个设备能提供8255,I/O接口芯片和LED灯等。并且能个、通过接受PC机传来的信息,显示出相关的功能。以支持LED规则显示的实现。 <3)导线若干条

用于电路和芯片之间的连接。 4.28255芯片简介

GND 1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 18 23 19 22 20 21 RESET Vcc

8255的管脚图

8255的数据端口A,B,C:

8255是一种可编程并行I/O接口芯片,它可以用于多种电路,如软盘接口电路、控制接口电路以及A/D和D/A接口电路等。下面我们来了解一下8255的内部结构,以便更好的利用它。 8255由数据端口A、B、C,A组和B组控制逻辑,数据总线缓冲器和读/写控制逻辑组成。A口包含一个8位的数据锁存器/缓冲器,一个8位的数据输入锁存器,因此它作输入输出时数据均能锁存。B口包含一个8位的数据输出锁存器/缓冲器,一个 8位的数据输入缓冲器。C口包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入锁存功能。 A组和B组控制逻辑用来接收送来的命令字,然后分别决定A组和B组的工作方式,或对C口的每一位执行置位/复位操作。 数据总线缓冲器是一个双向的8位缓冲器,用作8255A和系统总线之间的接口。通过这个缓冲器与之相连的8位数据总线D7~D0,接收CPU送来的数据或命令字。 读/写控制逻辑电路用来管理所有的内部或外部数据信息、控制字或状态字的传送过程,它接收从CPU的地址总线和控制总线来的信号,并产生对A组和B组控制逻辑进行操作的控制信号。 当8255A用在8位数据总线的微处理器系统中时,端口选择信号输入端AA分别与地址总线的AA相连即可;而在16位数据总线的系统中,通常将地址总线的AA连到8255A的AA端;若它的数据总线D7~D0连在CPU数据总线的低8位上,则要用偶端口地址来寻址8255A;而当D7~D0接在数据总线的高8位上时,要用奇地址口。 8255的两类控制字

8255有两类控制字。一类控制字用于定义个端口的工作方式,称为方式选择控制字;另一类控制字用于对C口的任一位进行置位或复位操作,称为置位控制字。对8255A进行编程时,这两种控制字都被写入控制字寄存器中。但方式选择控制字的D7位总是1,而置为复位控制字的D7位总是0.8255A正是利用这一位来区分这两个写入同一端口的不同控制字的,D7位也称为这两个控制字的标志位。 其中方式选择控制字有3种基本的工作方式,即方式0—基本输入输出方式,方式1—选通输入输出方式,方式2—双向总线I/O方式。通过用输出指令对8255A的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作。其中,端口A可工作于3种方式中的任一种;端口B只能工作于方式0和方式1,而不能工作于方式2;端口C常被分成两个4位的端口,除了用作输入工作端口外,还能用来配合A口和B口工作,位这两个端口的输入输出操作提供联络信号。 端口C的数位常用作控制或答应信号,通过对8255A的控制口写入置位/复位控制字,可使端口C的任意一个引脚的输出单独置1或置0,或者为答应式数据传

送发出中断请求信后。在基于控制的应用中,经常希在其中一位撒谎功能产生一个… TTL电平的控制信号,利用端口C的这个特点,只需要用简单的程序就能形成这样的信号,从而简化了编程。 4.3电路原理图 +5 +5 PA7

PA6 … PA0 PC7 … PC5 8255 … PC0

pc0——pc7接L0——L7 pa0——pa7接k0——k7 8255cs接IO设备的Y1 Y1 4.4 实物连接 I/O设备 4.5实验原理说明

本实验是通过向逻辑电平开关传送16进制位的数据来控制LED灯的亮或者灭的。通过循环来使LED灯不停的改变状态,产生不同的效果。 五、软件功能说明

在我们这次实验中,通过可编程序,利用LED显示来实现模拟彩灯各种亮法

N al=10h N Y Portc4 1.使LED灯从左往右依此亮灯再从右往左亮灯 断电 2.使LED灯两边到中间,中间到两边循环闪烁 3.使LED灯两边到中间,中间到两边中间两个灯闪三下 4.使LED灯全亮和全灭交替闪烁 结束六、主要模块流程图

开始 主流程图

七、问题与解决方案

1.分析问题

问题一:如何用开关控制彩灯的亮或者灭。 问题二:彩灯的闪烁时间如何控制。 问题三:如何改变彩灯闪烁的方式。 2.解决问题

解决问题一:通过定义一个数据来对应其关闭状态。 解决问题二:通过定义一个周期来控制其闪烁的时间。 解决问题三:通过传入不同的数据来控制闪烁方式。

八、总结

通过这次课程设计,我们对整个设计的原理都有了比较深刻的理论。在这个设计的

部分内容中,我们队8255的工作原理有了比以前更深刻的认识,通过利用各方面的资源,也学到了很多书本之外的知识。 这次的硬件课程设计,总共花了3个星期的时间,我们2人一组,编程对我们来说是个难点,总是出错,但最终在同学的帮助喜爱,程序总算没有出错误,现在设计基本上算成功了,这个节日彩灯设计出来,还有点小激动,在这3个星期里,虽然碰到了各种困难,但最终还是克服了,而且收获也很大,不仅巩固了课堂上掌握的不太牢知识,而且培养了我们团队的精神,锻炼了思考的能力,以及面对困难不退缩的勇气,为我们的以后的和生活打下了良好的基础。 这次实验最大的就是对汇编的语言的了解,提到了汇编语言编程的能力,并对硬件的芯片有了进一步的认识。

参考文献:

【1】微型计算机原理与接口技术 中国科学技术大学出版社 吴秀清 编著 【2】可编程逻辑器件的原理与应用 复旦大学出版社 陈山 编著 【3】微机原理与接口技术实验教程 大连理工大学出版社 秦晓梅

附录: data segment

ioport io8255c io8255b io8255a 亮灯 到两边 equ 00h equ ioport+28ah equ ioport+28bh equ ioport+288h

portc1 db 80h,40h,20h,10h,08h,04h,02h,01h。,01h,02h,04h,08h,10h,20h,40h,80h。从左往右依此

db 00h,00h,00h,00h,00h,00h,00h 。的状态数据 db 0ffh 。结束标志

portc2 db 80h,01h,40h,02h,20h,04h,10h,08h,08h,10h,04h,20h,02h,40h,01h,80h。两边到中间中间 db 00h,00h,00h,00h,00h,00h,00h 。的状态数据

db 0ffh 。结束标志

portc3 db 81h,42h,24h,18h,18h,24h,42h,81h,00h,18h,00h.18h,00h,18h,00h,18h。两边到中间中间到两边中间两个灯闪三下

db 00h,00h,00h,00h,00h,00h,00h 。的状态数据 db 0ffh 。结束标志

。全亮和全灭交替闪烁

portc4 db 0ffh,00h data ends code segment

db 01h。 状态标志

assume cs:code,ds:data start:

mov ax,data

mov ds,ax mov dx,io8255b mov al,90h out dx,al

inputa : mov dx,io8255a in al,dx

cmp al,00h jz inputa jz re_on1 cmp al,40h cmp al,20h cmp al,10h

cmp al,80h

jz re_on2 jz re_on3 jz re_on4

re_on1: mov dx,io8255c 。设置8255为C口输出 mov bx,0 on1: de1: de0:

mov al,portc1[bx] cmp al,0ffh jz re_on1

out dx,al 。点亮相应的灯 inc bx

mov cx ,1000 。参数赋初值 mov di,1000 。di赋初值1000 dec di 。减1计数 jnz de0 。di不为0 loop de1 push dx mov ah,06h mov dl,0ffh pop dx jz on1

re_on2: mov dx,io8255c 。设置8255为C口输出 mov bx,0 on2: de2: de3:

mov al,portc2[bx] cmp al,0ffh jz re_on2

out dx,al。点亮相应的灯 inc bx

mov cx,1000 。频率参数 mov di,1000 。di赋初值1000 dec di 。减1计数 jnz de3 。di不为0 loop de2 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz on2

re_on3: mov dx,io8255c 。设置8255为C口输出 mov bx,0 on3:

mov al,portc3[bx]

de4: de5:

cmp al,0ffh jz re_on3

out dx,al 。点亮相应的灯 inc bx

mov cx,9000 。有,长延时 mov di,1000 。di赋初值1000 dec di 。减1计数 jnz de5 。di不为0 loop de4 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz on3

。没有,转到on

re_on4: mov dx,io8255c 。设置8255为C口输出 mov bx,0 on4: de7: de6: exit:

mov ah,4ch 。返回 int 21h

mov al,portc4[bx]。ff,00 cmp al,01h jz re_on4

out dx,al 。点亮相应的灯 inc bx

mov cx,9000 。有,长延时 mov di,1000 。di赋初值1000 dec di 。减1计数 jnz de6 。di不为0 loop de7 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz on4

code ends

end start

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务