基于彩灯控制器的课程设计报告1.doc
《基于彩灯控制器的课程设计报告1.doc》由会员分享,可在线阅读,更多相关《基于彩灯控制器的课程设计报告1.doc(19页珍藏版)》请在冰点文库上搜索。
![基于彩灯控制器的课程设计报告1.doc](https://file1.bingdoc.com/fileroot1/2023-5/3/ac4489ea-3f16-4523-b4dd-f754fc03a781/ac4489ea-3f16-4523-b4dd-f754fc03a7811.gif)
六路彩灯控制器设计
1、课设目的及功能实现
课设目的:
(1)巩固和加深微机原理所学知识;
(2)学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;
(3)通过在对循环彩灯效果的设计和制作,深入了解与掌握利用可编8255A进行开关量控制的原理与方法。
所实现的功能:
1)00000001左循环(1时亮,0时灭)
2)10000000右循环
3)按00000001,00000011,00000111-------------11111111规律递增,全亮后同时闪烁一次,循环不断。
4)按01010101,10101010(或红、绿彩灯)交替闪烁。
5)循环彩灯的循环速度可调;
6)启动/暂停,按SW0开关启动系统,按SW1开关停止系统工作。
7)花型变换,由开关SW2、SW3进行四种花型切换;
2、系统框图
多路彩灯控制器系统框图如下所示:
彩灯
8255并行接口芯片
8086
微处理器
图1系统框图
3、设计原理
在这次课程设计中主要用到了8255A可编程并行接口芯片可用程序来设置芯片的工作方式,通用性强,使用灵活,可为多种不同的CPU与外设之间提供并行输入/输出的通道。
3.18255A工作原理及内部结构
3.1.18255A内部结构
8255A的内部结构如图2所示,它由4部分组成:
(1)数据总线缓冲器
它是一个双向三态8位缓冲器,用作与系统总线连接是的缓冲部件.CPU与8255A之间所有的数据的发送与接收以及CPU向8255A发送的控制信息和8255A向CPU回送的状态信息都是通过它传送的
(2)三个8位端口PA、PB、PC
端口A(PA口):
有一个8位数据输入锁存器和一个8位数据输入锁存/缓冲器;
端口B(PB口):
有一个8位数据输入缓冲器和一个8位数据输入/输出,锁存/缓冲存储器器;
端口C(PC口):
有一个8位数据输入缓冲存储器器和一个8位数据输出锁存/缓冲器。
通常PA口与PB口用作输入/输出的数据端口,PC口用作控制和状态信息端口。
PC口可以分为两个四位的端口,每个端口包含一个四位锁存器,可分别同PA口和PB口配合使用,用作控制信号(输出)或作为状态信号(输入)。
PA7-PA0
PC7-PC4
PC3-PC0
D7-D0
/RD
/WR
A1
A0
/CS
RESET
A组控制
数据总线缓冲器
读/写控制逻辑
B组控制
A组
A口(8位)
A组
C口高4位
B组
C口低4位
B组
B口(8位)
PB7-PB0
图2内部结构图
(3)A组和B组控制电路
A组:
PA口和PC口的高四位(PC7~PC4);
B组:
PB口和PC口的低四位(PC3~PC0)。
这两组控制电路一方面接收CPU发来的控制字并决定8255A的工作方式;另一方面接收来自读写控制逻辑电路的读写命令,完成接口的读写操作。
(4)读/写控制逻辑
用来管理数据信息。
控制字和状态字的传送,它接收来自CPU的地址总线的A1,A0和控制总线的信号RD.WR.RESET等,并向8255A的A,B两组发送命令.由它控制把CPU发出的控制命令字或输出的数据送到相应的端口,或把外设的状态信息或输入的数据从相应的端口送到CPU.
3.1.28255A引脚功能
8255A芯片除电源和地引脚以外,其他引脚可分为两组,引脚如图3所示:
(1)8255A与外设连接引脚
8255A芯片与外设连接的有24条双向、三态数据引脚,分成三组,分别对应于A,B,C三个数据端口:
PA7-PA0,PB7-PB0,PC7-PC0.
140
239
338
437
536
635
734
833
932
1031
1130
1229
1328
1427
1526
1625
1724
1823
1922
2021
PA3
PA2
PA1
PA0
/RD
/CS
GND
A1
A0
PC7
PC6
PC5
PC4
PC0
PC1
PC2
PC3
PB0
PB1
PB2
PA4
PA5
PA6
PA7
/WR
RET
D0
D1
D2
D3
D4
D5
D6
D7
VCC
PB7
PB6
PB5
PB4
PB3
图3引脚图
(2)8255A与CPU连接引脚
D7——与CPU侧连接的八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0、A1——片内寄存器选择输入信号;
PA7~PA0——A口外设双向数据线;
PB7~PB0——B口外设双向数据线;
PC7~PC0——C口外设双向数据线;
RESET——复位输入信号
表18255A的控制信号和传送操作的对应关系
/CS
/RD
/WR
A1A0
执行的操作
0
0
1
00
读端口A
0
0
1
01
读端口B
0
0
1
10
读端口C
0
0
1
11
非法状态
0
1
0
00
写端口A
0
1
0
01
写端口B
0
1
0
10
写端口C
0
1
0
11
写控制字端口
1
未选通
3.28255A的工作方式控制字
8255A有两个控制字:
方式选择控制字和端口C置位/复位控制字。
这两个控制字公用一个地址,即控制端口地址,用控制字的D7位来区分这两个控制字,D7=1为方式选择控制字;D7=0为端口置位/复位控制字。
3.2.1方式选择控制字
如图4所示:
D7D6D5D4D3D2D1
下C口pc3-pc0
0输入1输
PB
0输1输出
上C口pc7-pc4
0输入1输出
PA
0输入1输出
A组工作方式
0方式00
1方式01
2方式10
特征位
图48255A方式选择控制字
3.2.2端口C置位/复位控制字
端口C置位/复位控制字的格式如下图所示:
D3-D1三位的编码与端口C的某一位相对应,D0决定置位或复位操作,最高位为0是端口C置位或复位控制字标志。
如图5所示
3.2.38255A工作方式
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源引脚图供电,能在以下三种工作方式下工作:
方式0—基本输入/输出方式
方式0下,每一个端口都作为基本输入或输出口,端口C的高4位和低4位以及端口A、端口B都可独立的设置为输入口或输出口。
4个端口的输入或输出可有16种组合。
0
D3
D2
D1
置位或复位选择
1:
置位0:
复位
D0
D3
D2
D1
位选择
0
0
0
PC0
0
0
1
PC1
0
1
0
PC2
0
1
1
PC3
1
0
0
PC4
1
0
1
PC5
1
1
0
PC6
1
1
1
PC7
图58255A端口C置位或复位控制字
8255A工作于方式0时,CPU可采用无条件读写方式与8255A交换数据,也可采用查询方式与8255A交换数据。
采用查询方式时,可利用端口C作为与外设的联络信号。
方式1—选通输入/输出方式:
适用于查询和中断方式。
方式2—双向选通输入/输出方式:
方式2为双向传输方式,8255A的方式2可使8255A与外设进行双向通信,既能发送数据,又能接受数据,可采用查询方式和中断方式进行传输。
3.38086的引脚信号
如图6所示:
140
239
338
437
536
635
734
833
932
1031
1130
1229
1328
1427
1526
1625
1724
1823
1922
2021
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND
VCC
AD15
A16/S3
A1/S4
A18/S5
A19/S6
/BHE/S7
MN//MX
/RD
HOLD
HLDA
/WR
M//IO
DT//R
/DEN
ALE
/INTR
/TEST
READY
RESET
图68086引脚图
8086具有两种不同工作方式,即最小模式和最大模式。
若把MN/引脚连至电源+5V,则为最小模式。
若把它接地,则处在最大模式。
3.3.1与工作模式无关的引脚功能
(1)AD15-AD0(双向,三态)
低16位地址或数据的复用引脚线,采用分时的多路转换方法来实现对地址线和数据线的复用。
在总线周期的T1状态,这些引线表示为低16位地址线,在总线周期的T2,T3,TW状态,这些引线用作数据总线。
可见对复用信号是用时间来加以划分的,它要求在T1状态先出现低16位的地址时,用地址锁存器加以锁存,这样在随后的T状态,即使这些线用作数据线,而低16位地址线的地址状态却被记录保存下来,并达到地址总线上。
在DMA方式下,这些引线被浮空,置为高阻状态。
(2)A19/S6-A16/S3
为地址或状态复用引脚线,在总线周期的T1状态,这些引线表示为最高4位地址线,在总线周期的其他T状态时,这些引线用作提供状态信息。
同样需要地址锁存器对T1状态出现的最高4位地址加以锁存。
状态信息S6总是为低电平。
S5反映当前允许中断标志的状态。
S4与S3一起指示当前哪一个段寄存器被使用。
其规定如下表所示:
表2S4、S3代码组合
S4
S3
当前正在使用的段寄存器名
0
0
ES
0
1
SS
1
0
CS或未用
1
1
DS
(3)/BEH/S7,(输出,三态)在T1周期时,它作为CPU访问存储器高位库德允许信号,低电平有效。
它与AD0结合在一起,决定访问存储器高位库和低位库。
在其他T状态时,作为一条状态信号线。
(4)/RD(输出,三态)
读信号,当其有效时,表示正在对存储器或I/O接口进行读操作,若IO//M为低电平,表示读取存储器的数据,若IO//M为高电平,表示读取I/O端口的数据。
DMA方式时,此线被浮置为高阻。
(5)READY(输入)
为准备就绪信号,是由选中的存储器或I/O端口送来的响应信号,当有效电平为高电平时,表示被访问的存储器或I/O端口已准备就绪,可完成一次数据传送。
CPU在读操作总线周期的T3状态开始处,采样READY信号,若发现为低电平,则在T1状态结束后,插入等待状态TW,然后在TW开始处,继续采样READY信号,直至变为有效(高电平),才进入T4状态,完成数据传送,以结束总线周期。
(6)/TEST(输入)
为检测信号,低电平有效。
本信号由等待指令WAIT来检查,/TEST信号和WAIT指令配合使用。
当CPU执行WAIT指令时,CPU处于等待状态,并且每隔5个T对该信号进行一次测试,一旦检测到/TEST号为低电平,则结束等待状态,继续执行WAIT指令下面的指令。
WAIT指令是使CPU与外部硬件同步的,/TEST相当与外部硬件的同步信号。
(7)INTR(输入)
可屏蔽中断请求信号,高电平有效。
CPU在执行每条指令的最后一个T状态时,去采样INTR信号,若发现为有效,而中断允许标志IF又为1时,则CUP在结束当前指令周期后响应中断请求,转去执行中断处理程序。
(8)NMI(输入)
非屏蔽中断请求信号,为一个边缘触发信号,不能由软件加以屏蔽。
只要在NMI线上,出现由低到高的变化信号,则CPU就会在结束当前指令后,转去执行非屏蔽中断处理程序。
(9)RESET(输入)
复位信号,高电平有效。
复位时该信号要求维持高电平,至少四个时钟周期,若是初次加电,则高电平信号至少要保持50微秒。
复位信号的到来将立即结束CPU的当前操作,内部寄存器恢复到初始状态。
当RESET信号从高电平回到低电平时,即复位后进入重新启动时,便执行从内存FFFF0H处开始的指令,通常在FFFF0H存放一条无条件转移指令,转移到系统程序的实际入口处。
这样只要系统被复位启动,就自动进入系统程序。
(10)CLK(输入)
时钟信号,它为CPU和总线控制电路提供基准时钟。
(11)电源和地
VCC为电源引线,单一的+5V电源。
引脚1和2时为两条GND线,要求均要接地。
(12)MN//MX(输入)
为最小/最大模式信号。
它决定8086的工作模式。
将此引线接电源+5V则8086工作于最小模式;若此引线接地则8086工作在最大模式。
3.3.2最小模式下的引脚功能
把MN//MX引脚连至电源,8086处于最小模式,此时引脚24-31的功能含义如下:
(1)/INTA(输出):
CPU向外输出的中断响应信号。
(2)ALE(输出):
地址锁存允许信号,高电平有效,将地址信息锁存到地址锁存器中。
(3)/DEN(输出三态):
数据允许信号。
(4)DT//R(输出三态):
数据发送/接收控制信号。
(5)/M/L(输出三态):
访问存储器或I/O端口的控制信号。
(6)/WR:
输出三态
(7)HOLD(输入)
(8)HLDA(输出)
(9)/SSO:
系统状态信号
4、硬件电路图
见附录2
5、程序设计
循环彩灯的设计思想就是通过读开关状态信息,执行程序。
首先检测开关sw0,启动程序。
然后检测sw2和sw3,sw2和sw3的状态为00则执行左循环子程序,sw2和sw3的状态为01则执行右循环子程序,sw2和sw3的状态为10则执行规律递增子程序,sw2和sw3的状态为11则执行交替闪烁子程序。
检测开关sw1,判断是否退出循环控制程序。
设计流程图如图7所示:
N
N
N
N
Y
Y
Y
Y
Y
N
开始
初始化
延时
结束
调用规律递增
调用交替闪烁
调用右循环
调用左循环
检测k2
Pa0pa1=00
检测k3
Pa0pa1=01
Pa0pa1=10
Pa0pa1=11
N
Y
图7程序流程图
程序如下:
Stacksegmentstack
Dw64dup(?
)
Stackends
Datasegment
Dzdb0h,1h,3h,7h,0fh,1fh,3fh,7fh,0ffh,0h,0ffh,0h
Jtdb55h,0aah
Dataends
Codesegment
Assumecs:
code,ds:
data,ss:
stack
Start:
Movax,data
Movds,ax
Mova1,0ach
Out63h,a1
Login:
Inal,62h
Testal,10h
Jelogin
Ex:
Inal,62h
Testal,20h
Jneexit
Inal,61h
Andal,0fh
Cmpal,00h
Jzloop1
Cmpal,01h
Jzloop2
Cmpal,02h
Jzloop3
Cmpal,03h
Jzloop4
Jmpex
Loop1:
Movcx,08h
Moval,01h
Zuoy:
Out60h,al
Calldelay
Rolal,1
Loopzuoy
Jmpex
Loop2:
Movcx,08h
Moval,80h
Youy:
Out60h,al
Calldelay
Roral,1
Loopyouy
Jmpex
Loop3:
Movbl,0bh
Leasi,dz
Diz:
Moval,[si]
Out60h,al
Calldelay
Incsi
Decbl
Jnzdiz
Jmpex
Loop4:
Movbl,02h
Leasi,jt
Jiaot:
Out60h,al
Calldelay
Incsi
Decbl
Jnzjiaot
Jmpex
Exit:
Movax,4c00h
Int21h
Delay:
Pushcx
Pushdx
Movcx,0fff0h
Movdx,0fff0h
Loop6:
Decdx
Jnzloop6
Popdx
Popcx
Ret
Codeends
Endstart
6、总结
7、参考文献
[1]徐晨.微机原理及应用.高等教育出版社.2004.
[2]杨居义.微机原理与接口技术项目教程.清华大学出版社.2010.
[3]杨斌.微机系统及其接口设计原理.西南交通大学出版社.2006.
[4]孙俊逸.EDA技术课程设计.华中科技大学出版社.2009.
[5]张金.电子设计与制作100例.电子工业出版社.2009.
[6]谭博学.集成电路及其应用.电子工业出版社.2008.
[7]李学海.标准80C51单片机基础教程原理篇.北京航空航天大学出版社.2006.
附录一
8086CPU--------------------------------------------1个;
8255-----------------------------------------------1个;
74LS138--------------------------------------------1个;
发光二极管-----------------------------------------6个;
电阻:
10kΩ---------------------------------------10个;
反相器---------------------------------------------6个;
开关--------------------------------------------4个
电源+5V
导线若干;
附录二
第-19-页共19页