跑马灯设计1.docx
《跑马灯设计1.docx》由会员分享,可在线阅读,更多相关《跑马灯设计1.docx(20页珍藏版)》请在冰点文库上搜索。
跑马灯设计1
一、题义分析与解决
1.题义与需求分析
用STARES598PCI单板开发机和接口设计跑马灯控制器,应用软件控制并行接口电路,使练级在该接口上的8个发光二极管和8个控制开关,按控制开关定义的功能形式闪烁:
①依次左移与右移闪烁;
②隔一左移闪烁;
③隔二左移和右移闪烁;
④左右相向移动闪烁。
2.解决问题的方法与思路
1)硬件部分
实验设备包括StarPCI9052、DMA$32BITRAM板卡一套、StarES-PCI模块一块、STARES598PCI实验仪一套、PC机一台
使用到STARES598PCI实验仪的模块包括:
A3区:
CPU总线、片选区
B4区:
8255电路
G6区:
发光管、按键、开关
ADC0809模/数转换器用于将采集的模拟信号转换成数字信号,CPU通过8255同0809相连接,由电位器将一路模拟量送入0809,并由8255采用查询工作方式控制0809工作。
CPU通过8255向报警系统(扬声器、发光二极管)发送控制信号。
2)软件部分(汇编语言编写程序)
①首先要对8255进行初始化设计,设置8255的工作方式并确定8255的端口地址。
②编写启动0809的程序进行模/数转换,并将结果送入(有效)。
③将与比较量相比较,大于限定最大值,则发生报警;小于限定最小值,也发生报警。
二、硬件设计
1.选择芯片8255A
1)8255A在本设计中的作用
8255A将输入端的输入信号传送到8255A中,通过分析再通过输出端把输出信号传送到LED中。
2)8255A的功能分析
图2-18255A的内部框图
8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。
三个端口都可以作为输入端口或输出端口。
A口有三种工作方式:
即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
8255A的工作只有当片选CS效时才能进行。
而控制逻辑端口实现对其他端口的控制。
8255A的操作功能表
A1A0
操作
数据传送方式
00100
读A口
A口数据→数据总线
00101
读B口
B口数据→数据总线
00110
读C口
C口数据→数据总线
01000
写A口
数据总线数据→A口
01001
写B口
数据总线数据→B口
01010
写C口
数据总线数据→C口
01011
写控制口
数据总线数据→控制口
表2-18255A的操作功能表
8255A有三种工作方式,用户可以通过编程来设置。
3)8255A的技术参数
①与外设相连的
PA7~PA0:
A口数据信号线。
PB7~PB0:
B口数据信号线。
PC7~PC0:
C口数据信号线。
②与CPU相连的
RESET:
复位信号。
当此信号来时,所有寄存器都被清除。
同时三个数据端口被自动置为输入端口。
D7~D0:
它们是8255A的数据线和系统总线相连。
CS:
片选信号。
在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。
只有当其有效时,读信号写才对8255A进行读写。
RD:
读信号。
当此信号有效时,CPU可从8255A中读取数据。
WR:
写信号。
当此信号有效时,CPU可向8255A中写入数据。
A1、A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定:
A1、A0为00时,选中A端口;
A1、A0为01时,选中B端口;
A1、A0为10时,选中C端口;
A1、A0为11时,选中控制口。
③参数说明:
输入最低电压:
min=-0.5V,max=0.8V
输入最高电压:
2.0V
输出最低电压:
0.45V
输出最高电压:
2.4V
8255A的方式控制字
D7D6D5D4D3D2D1D0
1
0
0
0
1
0
0
1
1:
工作方式A口方式0输出B口方式0输出
C口高4位输入C口低4位输入
图2-28255A的方式控制字表
方式0的工作特点:
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
通道的功能为:
两个8位通道:
通道A和B。
两个四位通道:
通道C高4位和低四位,任何一个通道可以作输入/输出,输入是不锁存的,输出是锁存的,在方式0时各个通道的输入/输出可有16种不同的组合。
D7D6D5D4D3D2D1D0
0
X
X
X
写入位编码
写入内容
写入位编码0写入0
D0-D7000-1111写入1
图2-38255A的置位/控制字表
2.选择芯片开关
1)开关在本设计中的作用
本次设计需要用到八位开关预置界限值,而只要考虑4种控制方式,只需要4个开关,开关打到一端为0,开关打到另一端为1。
2)开关的功能分析
显示输入数值.
3)开关的技术参数
编码
数字
编码
数字
0000
0
1000
8
0001
1
1001
9
0010
2
1010
A
0011
3
1011
B
0100
4
1100
C
0101
5
1101
D
0110
6
1110
E
0111
7
1111
F
表2-2开关编码表
3.选择芯片LED
1)LED在本设计中的作用
显示输入电压值,和最大最小限压值.
2)LED的功能分析
LED显示电路较为简单,成本也较低,在功能单一的仪器仪表与机电设备中应用较广。
但当设备显示的点或位较多时,就需要采用一定的驱动电路与相应的驱动方式。
利用专用接口芯片如8255作为计算机芯片的端口扩展,并通过软件编程加外部驱动实现。
图2-5LED内部框图
数字
DP
g
f
e
d
c
b
a
二进制编码(字形)
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
0
1
1
03H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
A
0
1
1
1
0
1
1
1
77H
B
0
1
1
1
1
1
0
0
7CH
C
0
0
1
1
1
0
0
1
69H
D
0
1
0
1
1
1
1
0
5EH
E
0
1
1
1
1
0
0
1
79H
F
0
1
1
1
0
0
0
1
71H
表2-3共阴极七段LED显示段码
(1)静态:
数码管显示过程持续得到信号,与数码管接口的I/O口线为专用。
特点是无闪烁,元器件多,占I/O线多,无须扫描,节省CPU时间,编程简单。
(2)动态:
数码管显示过程轮流得到信号,与各数码管接口的I/O口线为共用。
特点是有闪烁,元器件少,占I/O线少,必须扫描,花费CPU时间,编程复杂(有多个LED时尤为突出)。
3)芯片LED的技术参数
Pcw
If
Vr
Ir
If
^p
对应型号
散射颜色
BT235-2
70
25
5
≥1.5
≤2.5
200
SEL-10
红色
BT1441529
100
40
5
≥0.5
≤2.5
565
绿色
BT1341529
100
40
5
≥0.5
≤2.5
585
蓝色
表2-4芯片LED的技术参数
消耗功率PM=150mW
最大工作电流IFM=100mA
正常工作电流IF=40mA
正向压降VF≤1.8V
燃亮电压为5v
共阴极LED的PM=300mW,IFM=200mA,IF=60mA,VF≤1.8V,VR≥5V,发红光。
4.硬件总逻辑图及其说明
首先根据要求分析程序要求4个输入开关和8个LED显示灯,我把8255初始化使得PA口连接LED为输出,PC连接开关为输入,PB为方式0不做处理,初始化的开关选择0为打开1为闭合,而且选择开关的1、2、3、4来控制,这样方便程序比较的要求。
每个开关对应的是LED显示的一种情况,其中一个开关打开其他开关就需要闭合。
三、控制程序设计
1.控制程序设计思路说明
初始化8255芯片,定为89,然后定PC1为1、PC2为1、PC3为1、PC4为1,熄灭说有灯是为了使开关置1时为闭合状态,当要进入子程序控制时,把硬件的开关打开,在方式0状态时比较当比较为0时跳入某个子程序.
2.控制程序流程图
总程序框图
子程序一子程序二
子程序三子程序四
3.控制程序
.
.MODELTINY
PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;厂商ID号
Device_IDEQU8376;设备ID号
.STACK100
.DATA
IO_Bit8_BaseAddressDW?
msg0DB'BIOS不支持访问PCI$'
msg1DB'找不到StarPCI9052板卡$'
msg2DB'读8位I/O空间基地址时出错$'
PA_ADDDW00F0H;8255PA口偏移量
PB_ADDDW00F1H;8255PB口偏移量
PC_ADDDW00F2H;8255PC口偏移量
COM_ADDDW00F3H;8255控制口偏移(CS1:
0F0H--0FFH)
LED_Data1DB01111111B
DB10111111B
DB11011111B
DB11101111B
DB11110111B
DB11111011B
DB11111101B
DB11111110B
DB11111101B
DB11111011B
DB11110111B
DB11101111B
DB11011111B
DB10111111B
DB01111111B
DB00000000B
LED_Data2DB01111111B
DB11011111B
DB11110111B
DB11111101B
DB00000000B
LED_Data3DB11111110B
DB11110111B
DB10111111B
DB00000000B
DB01111111B
DB11101111B
DB11111101B
DB00000000B
LED_Data4DB01111110B
DB10111101B
DB11011011B
DB11100111B
DB00000000B
.CODE
START:
MOVAX,@DATA
MOVDS,AX
NOP
CALLInitPCI
CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址
CALLINIT_8255
MOVDX,PA_ADD;灯全熄灭
MOVAL,0ffH
OUTDX,AL
NEXT:
MOVDX,PC_ADD
INAL,DX
CMPAL,0
JZMODEM_1
CMPAL,1
JZMODEM_2
CMPAL,2
JZMODEM_3
CMPAL,3
JZMODEM_4
MODEM_1:
CALLMODE1
JMPNEXT
MODEM_2:
CALLMODE2
JMPNEXT
MODEM_3:
CALLMODE3
JMPNEXT
MODEM_4:
CALLMODE4
JMPNEXT
;-------------------------------------
INIT_8255PROCNEAR
MOVDX,COM_ADD
MOVAL,89h;A口方式0,输出,C口输入
OUTDX,AL
RET
INIT_8255ENDP
DLTIMEPROCNEAR
PUSHAX
PUSHDX
MOVDX,1;延时1s
MOVAH,0FFH;星研公司提供的软中断
INT21H
POPDX
POPAX
RET
DLTIMEENDP
MODE1PROCNEAR
MOVDX,PA_ADD
MOVBX,offsetLED_Data1
movah,0
callsub_mode
movah,2
callsub_mode
CALLDLS
movah,4
callsub_mode
CALLDLS
movah,6
callsub_mode
movah,8
callsub_mode
movah,10
callsub_mode
movah,12
callsub_mode
movah,14
callsub_mode
RET
MODE1ENDP
MODE2PROCNEAR
MOVDX,PA_ADD
MOVBX,offsetLED_Data2
movah,0
callsub_mode
movah,2
callsub_mode
CALLDLS
MOVAL,4
XLAT
OUTDX,AL;0
CALLDLS
RET
MODE2ENDP
MODE3PROCNEAR
MOVDX,PA_ADD
MOVBX,offsetLED_Data3
movah,0
callsub_mode
movah,2
callsub_mode
CALLDLS
movah,4
callsub_mode
CALLDLS
movah,6
callsub_mode
RET
MODE3ENDP
MODE4PROCNEAR
MOVDX,PA_ADD
MOVBX,offsetLED_Data4
MOVAL,0
XLAT
OUTDX,AL;0
CALLDLS
MOVAL,1
XLAT
OUTDX,AL;0
CALLDLS
MOVAL,2
XLAT
OUTDX,AL;0
CALLDLS
MOVAL,3
XLAT
OUTDX,AL;0
CALLDLS
RET
MODE4ENDP
sub_modeprocnear;入口参数为ah
MOVAL,ah
XLAT
OUTDX,AL
CALLDLS
incah
MOVAL,ah
XLAT
OUTDX,AL
CALLDLS
ret
endp
DL500msPROCNEAR
PUSHAX
PUSHDX
MOVDX,500;延时500ms
MOVAH,0FFH;星研公司提供的软中断
INT21H
POPDX
POPAX
RET
DL500msENDP
DLSPROCNEAR
PUSHCX
MOVCX,2
DLS1:
CALLDL500ms
LOOPDLS1
POPCX
RET
ENDP
InitPCIPROCNEAR
MOVAH,00H
MOVAL,03H
INT10H;清屏
MOVAH,0B1H
MOVAL,01H
INT1AH
CMPAH,0
JZInitPCI2
LEADX,msg0
InitPCI1:
MOVAH,09H
INT21H
JMPExit
InitPCI2:
MOVAH,0B1H
MOVAL,02H
MOVCX,Device_ID
MOVDX,Vendor_ID
MOVSI,0
INT1AH
JNCInitPCI3;是否存在StarPCI9052板卡