硬件课程设计 可编程节日彩灯.docx
《硬件课程设计 可编程节日彩灯.docx》由会员分享,可在线阅读,更多相关《硬件课程设计 可编程节日彩灯.docx(29页珍藏版)》请在冰豆网上搜索。
硬件课程设计可编程节日彩灯
计算机科学与技术学院
硬
件
课
程
设
计
报
告
设计题目:
可编程节日彩灯系统
摘要
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
可编程并行芯片8255A是一种可编程的输入输出芯片,利用它对电平的高低来控制脉冲的到达,利用8253的定时功能和8279对彩灯各种形式的控制,从而控制彩灯使其发出绚丽夺目的色彩和产生各种式样的彩灯。
查阅相关资料,用简单的输入输出端口等硬件,结合实际彩灯的亮与灭的控制来进行设计。
利用键盘上的灯来实现彩灯的各种形式的变换,使彩灯变换的样式更多,克服了节日彩灯变换样式单调的缺点,使节日彩灯朝着变换多种多样的方式发展。
内容:
利用微机原理试验箱的8279、8253、8255、和6组LED灯,模拟霓虹灯的显示效果,实现彩灯定时多样式变换。
彩灯样式实现举例:
1、实现全灭
2、654321
3、改变顺序的上下“口”
4、交叉显示的上下“口”
5、三条横线
6、实现纵向图案显示
7、全8显示
8、实现脉冲波形
9、六个小数点
10、循环以上过程
关键词:
可编程节日彩灯;循环;8253定时;8255控制脉冲到达;8279实现对彩灯各种形式的控制
1、实现全灭
2、654321
3、改变顺序的上下“口”
4、交叉显示的上下“口”
5、三条横线
6、实现纵向图案显示
7、全8显示
8、实现脉冲波形
9、六个小数点
10、循环以上过程
1、设计任务与要求
1.1引言
在现代生活中,彩灯作为一种景观,安装在建筑物的适当地方。
一是作为装饰增添节日气氛,二是有一种广告宣传的作用:
用在舞台上增强晚会灯光效果。
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
数码管是一种半导体发光器件,其基本单元是发光二极管。
通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
由于它的价格便宜、使用简单,在电器特别是家电领域应用极为广泛,空调、热水器、冰箱等等。
绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
可编程节日彩灯打破常规彩灯闪烁固定变化的现状,可根据人们不同的意愿进行编程设计出想要的变换的色彩效果。
可编程并行芯片8255A是一种可编程的输入输出芯片,利用它对电平的高低来控制脉冲的到达,利用8253的定时功能和8279对彩灯各种形式的控制,从而控制彩灯使其发出绚丽夺目的色彩和产生各种式样的彩灯。
查阅相关资料,用简单的输入输出端口等硬件,结合实际彩灯的亮灭控制过程进行设计。
利用键盘上的灯实现灯的各种形式的变换,使彩灯变换的样式更多,克服了节日彩灯变换样式单调的缺点,使节日彩灯朝着变换多种多样的方式发展。
内容:
利用微机原理试验箱的8279、8253、8255、和6组LED灯,模拟霓虹灯的显示效果,实现彩灯定时多样式变换。
1.2设计目的
通过课程设计使我们更进一步掌握微机原理与应用课程的有关知识,提高用汇编语言编程的能力,加深对汇编语言的理解。
通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也会提高我们通过动手进行硬件设计及程序设计从而提高解决实际问题的能力。
通过实验的深入,进一步加强对微机接口与原理的实验箱的了解,充分了解其内部结构,尤其加深对8279、8253、8255芯片的原理与连线的了解。
1.3设计内容
在本实验中我们将用到可编程外围接口芯片8255、可编程键盘显示器接口芯片8279可编程定时器/计数器8253和74LS138简单接口芯片实现数码管的亮灭。
我们将设计出多种闪烁图案,以实现简单的数字及其他图案的显示。
该系统显示直观,工作稳定,操作简单,与商用LED显示具有类似的显示原理,具备较强的实用价值。
彩灯样式实现举例:
1、654321
2、交叉显示的上下“口”
3、改变顺序的上下“口”
4、全8显示
5、实现全灭
6、三条横线
7、六个小数点
8、实现脉冲波形
9、实现纵向图案显示
10、循环以上过程
1.4设备器材
(1)PC微机一台
用于对程序的编译测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。
(2)微机原理实验箱一台
此设备能提供8253、8255、8259和数码管等必要芯片。
并且能通过接受PC机传来的信息,显示出相应的功能。
以支持LED规则显示的实现。
(3)导线若干条
用于电路和芯片之间的连接。
2总体方案与说明
2.1设计思想
8253器件:
8253具有计数和定时的功能。
通过8253器件实现定时脉冲,即每隔1秒钟赋予一个脉冲,用作定时装置。
8255器件:
8255用作辅助装置。
8255器件的A端口用于接收8253器件的定时脉冲,当每接收到一次脉冲时,彩灯变换一次图案。
8279器件:
8279用作控制彩灯的变化,使彩灯形成各种图案。
如,全8显示、脉冲波形显示、数字显示、全暗等各种图形显示。
2.2实验原理介绍
数码管的段选码由OUTA口和OUTB口输出,经74LS244驱动后送给共阴极LED。
数码管的位扫描信号经74LS138译码、75451驱动后提供给LED的公共极。
RL0~RL7提供了键盘列扫描接口,KA0~KA3提供键盘的行扫描接口。
2.2.1LED是共阴极的,其七段LED的段选码为
字符
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
段选码
3fh
06h
5bh
4fh
66h
6dh
7dh
07h
7fh
6fh
77h
7ch
39h
5eh
79h
71h
2.2.2LED显示的方法为动态显示
3硬件框图与说明
3.18279可编程键盘/显示接口芯片介绍
8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能。
8279内部有键盘FIFO/传感器、双重功能的64BRAM,键盘控制部分可控制8*8=64个按键或控制8*8阵列方式的传感器。
该芯片能自动消除键抖动并具有双键锁定保护功能。
本次实验我们将利用8279的以上功能设计点阵广告屏。
首先介绍一下8279芯片:
DB0~DB7:
8位数据总线与系统数据总线相连,用CPU和8279间的数据/命令传送。
CS:
片选信号:
当CS=0时,8279被选中。
WR:
WR=0.控制8279写操作。
A0:
数据选择输入线:
当A=0,CPU读出为数据;
当A=1,CPU写入数据为命令字,读出数据为状态字。
BD:
消隐输出线,BD=0有效,在切换显示数据或使用消隐命令时,该信号将显示器熄灭。
CLK:
外部时钟信号输入线,8279通过内部定时器将该信号变为内部时钟,内部时钟频率的高低直接决定显示器的扫描时间,通常与编程设置为100Hz,此时,把每位显示数码管的选通的时间定为0.64ms,设定显示字符8位和16位时,显示扫描周期分为5.1ms和10.2ms.
OUTA0~OUTA3:
A组显示数据输出线。
OUTB0~OUTB3:
B组显示数据输出线。
两组数据输出线可独立使用,也可合并使用,合并使用时OUTA3为最高位,OUTB0为最低位。
SL0~SL3:
扫描输出线,有2种工作方式,即译码和编码输出,方式选择可通过编程设定。
RL0~RL7:
输入线,它们是键盘矩阵或传感器矩阵的列或行信号输入线。
3.28253可编程定时/计数器介绍
8253可编程定时/计数器有3个独立的十六位计数器,计数器的计数频率范围为0~2MHz。
它所有的计数方式和操作方式都通过编程控制。
DB0~DB7:
数据线
A0,A1:
地址线,用于选择3个计数器中的一个及选择控制字寄存器。
RD,WR:
读写控制信号
CS:
片选端
CLK0~2:
计数器0,1,2的时钟输入端
GATE0~2:
计数器0,1,2的门控制脉冲输入端,由外部设备送入门控制脉冲。
OUT0~2:
计数器0,1,2的输出端,由它接至外部设备以控制其启动。
8253具体的控制字格式如下:
3.38255可编程并行接口芯片介绍
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'
A0,A1:
地址选择控制线,用来选择8255的PA口,PB口,PC口和控制寄存器.
4电路原理图与说明
4.1实验原理图
4.2实验步骤
4.2.1实验连线
具体连线说明如下:
8279CS----210H-217H。
将8279的片选与译码电路相应的插孔相连。
8253CS----200H-207H。
GATE0,GATE1----+5V;
CLK0----2M;
OUT0----CLK1;
OUT1----PA0.
8255CS----208H-20FH。
4.2.2编写调试程序,全速运行,观察实验结果
5软件主要模块流程图
5.1软件设计思路
本程序由主程序和控制芯片输出程序组成。
主程序主要负责系统初始化,控制芯片输出程序主要负责数码管的亮灭。
8253开始定时后,每一秒控制相应的数码管的亮灭。
主程序初始化:
主程序负责系统的初始化,系统初始化包括8253的初始化、8255的初始化和8279的初始化。
8253定时的时间是一秒。
5.2程序流程图
否
6、程序说明与程序清单
Z8279EQU212H
D8279EQU210H
LEDMODEQU00;左边输入,八位显示外部译码八位显示
LEDFEQEQU38H;扫描频率
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,Z8279;8279初始化
MOVAL,LEDMOD
OUTDX,AL
MOVAL,LEDFEQ
OUTDX,AL
MOVAL,00110111B
MOVDX,203H
OUTDX,AL
MOVAL,00H
MOVDX,200H
OUTDX,AL
MOVAL,10H
OUTDX,AL
MOVAL,01110101B
MOVDX,203H
OUTDX,AL
MOVAL,00H
MOVDX,201H
OUTDX,AL
MOVAL,20H
OUTDX,AL;8253初始化
MOVAL,10010000B
MOVDX,20BH
OUTDX,AL;8255初始化
MOVDX,208H
L1:
INAL,DX
TESTAL,01H
JNZL1
b1:
INAL,DX
TESTAL,01H
JZb1
WAVE:
MOVDX,D8279;实现脉冲波形
MOVAL,00000111b
OUTDX,AL
MOVAL,00001110b
OUTDX,AL
MOVAL,00000111b
OUTDX,AL
MOVAL,00001110b
OUTDX,AL
MOVAL,00000111b
OUTDX,AL
MOVAL,00001110b
OUTDX,AL
MOVAL,00000111b
OUTDX,AL
MOVAL,00001110b
OUTDX,AL
MOVDX,208H
DELAY1:
INAL,DX
TESTAL,01H
JNZDELAY1
DELAY2:
INAL,DX
TESTAL,01H
JZDELAY2
Eight:
MOVDX,D8279;实现全8显示
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVAL,01111111B
OUTDX,AL
MOVDX,208H
DELAY3:
INAL,DX
TESTAL,01H
JNZDELAY3
DELAY4:
INAL,DX
TESTAL,01H
JZDELAY4
Direction:
MOVDX,D8279;实现纵向图案显示
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
moval,00110110b
outdx,al
MOVDX,208H
DELAY5:
INAL,DX
TESTAL,01H
JNZDELAY5
DELAY6:
INAL,DX
TESTAL,01H
JZDELAY6
Broadwise:
MOVDX,D8279;实现3排横向图案显示
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
moval,01001001b
outdx,al
MOVDX,208H
DELAY7:
INAL,DX
TESTAL,01H
JNZDELAY7
DELAY8:
INAL,DX
TESTAL,01H
JZDELAY8
Drop:
MOVDX,D8279;实现小数点图形显示
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
moval,10000000b
outdx,al
MOVDX,208H
DELAY9:
INAL,DX
TESTAL,01H
JNZDELAY9
DELAY0:
INAL,DX
TESTAL,01H
JZDELAY0
Figure:
MOVDX,D8279;实现从6到1数字图形显示
moval,00000110b
outdx,al
moval,01011011b
outdx,al
moval,00000111b
outdx,al
moval,01111111b
outdx,al
moval,01001111b
outdx,al
moval,01100110b
outdx,al
moval,01101101b
outdx,al
moval,01111101b
outdx,al
MOVDX,208H
DELAY11:
INAL,DX
TESTAL,01H
JNZDELAY11
DELAY22:
INAL,DX
TESTAL,01H
JZDELAY22
Change1:
MOVDX,D8279;实现方形花样图案1显示
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
MOVDX,208H
DELAY33:
INAL,DX
TESTAL,01H
JNZDELAY33
DELAY44:
INAL,DX
TESTAL,01H
JZDELAY44
change2:
MOVDX,D8279;实现方形花样图案2显示
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
moval,01100011b
outdx,al
moval,01011100b
outdx,al
MOVDX,208H
DELAY55:
INAL,DX
TESTAL,01H
JNZDELAY55
DELAY66:
INAL,DX
TESTAL,01H
JZDELAY66
FREE:
NOP
MOVDX,Z8279
MOVAL,0C2H
OUTDX,AL;置空FIFO寄存器
NOTHING:
movdx,d8279;实现全灭
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
moval,00h
outdx,al
MOVDX,Z8279
MOVAL,0C2H
OUTDX,AL
MOVDX,208H
DELAY77:
INAL,DX
TESTAL,01H
JNEDELAY77
DELAY88:
INAL,DX
TESTAL,01H
JEDELAY88
jmpWAVE
CODEENDS
ENDSTART
7问题分析与解决方案
7.1实验设计前后面临的问题分析
7.1.1芯片的选择问题
实验中要用到哪些芯片,这些芯片要具体实现什么功能。
7.1.2芯片的连接和使用问题
7.1.3程序的编制和程序运行时出现的问题
在实验进行的最后,我们碰到最棘手的问题就是显示的延时问题。
循环跳跃的时间与顺序执行的时间不相等。
中间有三次明显的时间缩短。
7.2问题的解决方案
7.2.1对于问题一和问题二
我们通过上网查找大量的有关资料来解决。
尤其对于8279来说,我们从最初的完全不懂,到最后的熟练运用,其中经历漫长的探索与研究过程。
7.2.2对于问题三
我们对软件中每一段代码进行了仔细的排查,最终在程序的末尾发现了因为电平判断错误而导致了时间的缩短。
8结论与体会
8.1实验现象
8.1.1实现全灭的显示
8.1.2数字6-1显示
8.1.3上下口交替出现
8.1.4改变顺序的交叉口交替出现
8.1.5三条横线
8.1.6纵列显示
8.1.7全8显示
8.1.8实现脉冲波形
8.1.9实现圆点显示
8.1.10循环上述过程
8.2实验体会
通过这次课程设计,使我对硬件电路的工作原理有了进一步的学习,进一步的认识;在软件方面,在程序的设计,程序的调试方面都学到了很多东西,很有成就感。
在这次课程设计中我遇到了一些困难,但在老师的指导和同学的帮助,再加上自己查阅了些许资料的情况下都解决了。
虽然课程设计进行的不够顺利,但还是完成了任务,使自己的专业知识又得到了提升。
21世纪是计算机全面发展应用的时代,很多人不是在制造计算机而是在使用计算机,在使用计算机的人群中只有从事嵌入式系统应用的人才真正地进入到计算机系统内部软硬件体系中,才能真正领