多位LED显示系统的设计,利用8255 8253 8086.doc
HEFEI UNIVERSITY
微机原理与接口技术课程设计
系 别 自 动 化 题 目 多位LED显示系统的设计 班 级
学 号
姓 名
完 成 时 间 2011年12月29日
1
多位LED显示系统的设计
摘要:《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计,我们要熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
关键字:时间显示,计数器,定时器
一、设计目的
1)了解LED显示器的结构及工作原理。
2)掌握多位LED显示器的接口技术及动态显示原理。
二、设计原理与内容
1.设计内容
在实验台的六位LED显示器上显示分和秒,每秒钟变化一次。
2. 设计要求
编写程序,使六位LED显示器显示时钟的分值和秒值
2
三、总体设计
根据设计要求,初步思路如下:
1)计时单元由定时/计数器8253的通道0来实现。定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。8253定时时间到了之后产生中断信号,8253在中断服务程序中实现分、秒的累加。
2)时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。
四、电路图
电路图
3
效果图
首先由8086把8255和8253初始化,然后8253输出方波,通过PC7传到8086,由8086控制LED显示初值,等到8253到下一个时钟周期的时候再通过PC7,由8086控制时间加一,如此循环。在初始设定的时间下由秒个位开始变化,到十向秒十位加一,等到秒十位变为六十时向分为加一,以此类推到分位,完成数字中的变化。
4
五程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图
具体程序代码如下:
P85A_ADD EQU 01000000B ; [8255]端口A地址 P85B_ADD EQU 01000010B ; [8255]端口B地址 P85C_ADD EQU 01000100B ; [8255]端口C地址 COM85_ADD EQU 01000110B ; [8255]控制字端口 P83A_ADD EQU 01001000B ; [8253]计时器0地址 P83B_ADD EQU 01001010B ; [8253]计时器1地址 P83C_ADD EQU 01001100B ; [8253]计时器2地址 COM83_ADD EQU 01001110B ; [8253]控制字端口
5
DATA SEGMENT
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
X DW ?
Y DW ?
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,COM85_ADD
MOV AL,10001001B ; A方式0输出、B方式0输出、C输入
OUT DX,AL ;向8255写控制字
NEXT: MOV X,50 ;记录按键次数
MOV Y,23
LEA SI,LED
MOV DX,COM83_ADD
MOV AL,00110001B ;定时器0方式1
OUT DX,AL ;向8253写控制字
REPEAT0: MOV AL,00H ;计数初值为1000
MOV DX,P83A_ADD ;计数器0的端口地址
OUT DX,AL
MOV AL,10H ;计数初值为1
MOV DX,P83A_ADD ;计数器0的端口地址
OUT DX,AL
REPEAT1: CALL CONVER ;显示子程序
MOV DX,P85C_ADD
IN AL,DX ;将PC中的值输入到AL PC的值取决于PC7
CMP AL,0FEH
JZ NEXT
TEST AL,80H ;判断计数是否结束 TEST 相与但不改变相应的值
JNZ REPEAT1
REPEAT2: CALL CONVER
MOV DX,P85C_ADD
IN AL,DX
CMP AL,7EH
JZ NEXT
6
TEST AL,80H
JZ REPEAT2
CALL TIME_JIA
JMP REPEAT0 ;重新初始化定时器,为下一次按键准备
;24小时时间加
;入口Zh、Ymin、Xs
TIME_JIA PROC
INC X ;计数结束,按键次数加1
CMP X,60
JNZ NEXT1
MOV X,0
INC Y
NEXT1: CMP Y,60
JNZ NEXT2
MOV Y,0
NEXT2: CALL CONVER ;显示子程序
RET
TIME_JIA ENDP
;数码管扫描
;入口Xh、Ymin、Zs
CONVER PROC ;入栈保护
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH BP
PUSHF
LEA SI,LED
MOV AX,Z
MOV CL,10
DIV CL ;按键次数除以10,商是次数的十位,存在AL中,余数是次数的各位,存在AH中
MOV BX,AX ;AH:BH AL:BL
MOV AL,20H
MOV DX,P85B_ADD
OUT DX, AL ;向8255端口C的PB置1,使显示管1工作
MOV BP,BX
AND BP,0FFH ;清除余数,保留商
MOV AL,[SI+BP] ;使显示管显示相应的值
MOV DX,P85A_ADD
7
OUT DX,AL ;将商的值显示 通过PA
CALL DELY
MOV AL,10H ;向8255端口C的PB置1,使显示管2工作
MOV DX,P85B_ADD
OUT DX,AL
XCHG BH,BL ;交换商和余数
MOV BP,BX
AND BP,0FFH ;清除商,保留余数
MOV AL,[SI+BP]
MOV DX,P85A_ADD
OUT DX,AL ;将余数的值显示 通过PA
CALL DELY
MOV AX,Y
MOV CL,10
DIV CL ;按键次数除以10,商是次数的十位,存在AL中,余数是次数的各位,存在AH中
MOV BX,AX ;AH:BH AL:BL
MOV AL,08H ;向8255端口C的PB置1,使显示管3工作
MOV DX,P85B_ADD
OUT DX, AL
MOV BP,BX
AND BP,0FFH ;清除余数,保留商
MOV AL,[SI+BP] ; 使显示管显示相应的值
MOV DX,P85A_ADD
OUT DX,AL ;将商的值显示通过PA
CALL DELY
MOV AL,04H ;向8255端口C的PB置1,使显示管4工作
MOV DX,P85B_ADD
OUT DX,AL
XCHG BH,BL ;交换商和余数
MOV BP,BX
AND BP,0FFH ;清除商,保留余数
MOV AL,[SI+BP]
MOV DX,P85A_ADD
OUT DX,AL ;将余数的值显示通过PA
CALL DELY
8
POPF ;出栈恢复
POP BP
POP SI
POP DX
POP CX
POP BX
POP AX
RET
CONVER ENDP
DELY PROC
PUSH CX
MOV CX,500
L: LOOP L
POP CX
RET
DELY ENDP
CODE ENDS
ED START 六、心得:
两个星期的课程设计结束了,在这段时间里,我们做这个课题,遇到了很多困难,也是在做之前 没有想到的,才知道现实和理论的差距,不做一次的确不知道自己的不足之处,不过我们从最初的无从下手,到分析设计,到编程调试,一步步走来,知识一点一滴的积累,最终完成了这份另自己满意的作品。在这次的设计中,让我更熟悉了,8086 8255 8253是如何工作,功能,工作方式,控制字及是怎样把它们联系起来组成一个完整的电路。
不过作品虽然是做出来了,难免还有很多不足的地方,在以后的学习中还要不断的完善,补充不足之处。
七、参考文献:
1、王让定、朱莹、叶富乐等编著《微机原理与接口技术》第二版,清华大学出
版社出版,2007.11
2、?周荷琴,《微机原理与接口技术》,中国科技大学,2004.12第3版
9