信息科学与技术学院微机原理与接口技术课程设计报告
题目名称:作息时间控制系统学生姓名:肖艳林
学号: 2010508082 专业年级:电子信息工程1班指导教师:刘恩博
时间: 2013年1月14号
设计内容
根据所学的可编程逻辑控制芯片,来设计作息时间控制系统。
该作息时间控制系统设计要求有一下三点;
1.能显示时间(时、分、秒),
2.并在规定的作息时间闹给出钟信号。
3.扩展功能:可以手动输入作息时间表。
设计思路
根据设计要求,初步思路如下;
1:计时单元由定时/计数器8253的通道0来实现。
定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数。
从而实现24小时制定时。
8253定时时间到了之后产生中断信号,8253在中断
服务程序中实现时、分、秒的累加。
2:时间显示采用实验平台上的 3个LED数码管分别显示时、分、秒。
采用动态扫描方式实现。
3:单脉冲产生单元来输入
系统硬件设计主要利用proteus仿真软件中的电路模块。
硬件电路主要由单脉冲产生单元,8253定时计数器,8255并行接口单元,LED显示电路,8086处理器,译码器等等。
系统的总体仿真电路如图所示。
仿真模块硬件设计:
1,cpu模块结构电路如图所示
2,数码管显示电路如图所示
,3,8253计时器和8255接口结构示意图如图所示
4脉冲电路结构图如图所示
程序流程图
1,主程序如图所示
2,Led数码管显示框图
3,计数器流程框图
仿真过程
1、由于初始给它设定了时间如“ 00,00,00”则开始只显示 00,00,00。
仿
真电路图如下图所示.
2、在初始设定的时间下由秒个位开始变化..到十向秒十位加一..等到秒十位变
为六十时向分为加一,以此类推到时位,完成数字中的变化。
此仿真电路图
如下图7所示。
汇编程序
DATA SEGMENT
COUNT DB 00
COUNT1 DB 59
COUNT2 DB 23
SHIWEI DB ?
GEWEI DB ?
SHIWEI1 DB ?
GEWEI1 DB ?
SHIWEI2 DB ?
GEWEI2 DB ?
TEMP DB 0
TEMP1 DB 0
TEMP2 DB 0
SEGTAB DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
IOA EQU 8000H
IOB EQU 8002H
IOC EQU 8004H
IOCON EQU 8006H
IOA1 EQU 9000H
IOB1 EQU 9008H
IOC1 EQU 9010H
IOCON1 EQU 9018H
JSQ0 EQU 0A000H
JSQ1 EQU 0A020H
JSQ2 EQU 0A040H
CON1 EQU 0A060H
IOA2 EQU 0C000H
IOB2 EQU 0C002H
IOC2 EQU 0C004H
IOCON2 EQU 0C006H
START:
MOV AX,DATA
MOV DS,AX
MOV AL,90H ;1001,0000 MOV DX,IOCON
OUT DX,AL
MOV DX,IOCON1
OUT DX,AL
MOV DX,IOCON2
OUT DX,AL
MOV AL,16H
MOV DX,CON1
OUT DX,AL
MOV AL,56H
OUT DX,AL
MOV AL,60
MOV DX,JSQ0
OUT DX,AL
MOV AL,60
MOV DX,JSQ1
OUT DX,AL
NOP
START1: NOP
NOP
MOV DX,IOA
IN AL,DX
AND AL,01H
CMP AL,TEMP
JZ START2
MOV TEMP,AL
ADD AL,COUNT
CMP COUNT,59
JZ MIAO
MOV COUNT,AL
JMP START2 MIAO:
MOV AL,00H
MOV COUNT,AL START2:
MOV DX,IOA1 IN AL,DX
AND AL,01H
CMP AL,TEMP1
JZ START3
MOV TEMP1,AL
ADD AL,COUNT1
CMP COUNT1,59
JZ FEN
MOV COUNT1,AL
JMP START3 FEN:
MOV AL,00H
MOV COUNT1,AL START3:
MOV DX,IOA2 IN AL,DX
AND AL,01H
CMP AL,TEMP2
JZ FENJIE
MOV TEMP2,AL
ADD AL,COUNT2
CMP COUNT2,23
JZ SHI
MOV COUNT2,AL
JMP FENJIE SHI:
MOV AL,00H
MOV COUNT2,AL FENJIE:
MOV AL,COUNT
MOV AH,0
MOV CL,10
DIV CL
MOV SHIWEI,AL
MOV GEWEI,AH FENJIE1:
MOV AL,COUNT1
MOV AH,0
MOV CL,10
DIV CL
MOV SHIWEI1,AL
MOV GEWEI1,AH FENJIE2:
MOV AL,COUNT2
MOV AH,0
MOV CL,10
DIV CL
MOV SHIWEI2,AL
MOV GEWEI2,AH DISP:
MOV AL,00000110B
MOV DX,IOC
OUT DX,AL
MOV DX,IOC1
OUT DX,AL
MOV DX,IOC2
OUT DX,AL
XOR AX,AX
MOV AL,SHIWEI
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB
OUT DX,AL
MOV AL,00000100B
MOV DX,IOC
OUT DX,AL
XOR AX,AX
MOV AL,SHIWEI1
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB1
OUT DX,AL
MOV AL,00000100B
MOV DX,IOC1
OUT DX,AL
XOR AX,AX
MOV AL,SHIWEI2
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB2
OUT DX,AL
MOV AL,00000100B
MOV DX,IOC2
OUT DX,AL
CALL YS
MOV AL,00000110B
MOV DX,IOC
OUT DX,AL
MOV DX,IOC1
OUT DX,AL
MOV DX,IOC2
OUT DX,AL
XOR AX,AX
MOV AL,GEWEI
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB
OUT DX,AL
MOV AL,00000010B
MOV DX,IOC
OUT DX,AL
XOR AX,AX
MOV AL,GEWEI1
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB1
OUT DX,AL
MOV AL,00000010B
MOV DX,IOC1
OUT DX,AL
XOR AX,AX
MOV AL,GEWEI2
MOV SI,AX
MOV AL,SEGTAB[SI]
MOV DX,IOB2
OUT DX,AL
MOV AL,00000010B
MOV DX,IOC2
OUT DX,AL
CALL YS
JMP START1
YS PROC NEAR
MOV CX,500
DELY:
NOP
LOOP DELY
RET
YS ENDP
CODE ENDS
END START
设计心得
首先,我非常荣幸我能选择这个课程设计。
因为在这个设计中所用到的芯片我都学过。
所以对于芯片的功能我都有一定的了解。
这对于我来说是非常重要的。
再经过一番的努力,最终就做出这个结果,虽然有很多值得完善和改进的地方,但是由于个我们的能力原因,只能实现一个时间显示功能,而闹铃功能则没有做出来,手动时间输入功能尚未实现。
但通过和同学之间的讨论和查找资料,我们也有很大的收获。
在这个过程中也遇到很多问题,在设计定时器的时候也遇到了一些问题,输出的时间频率和真正的时间频不等,简单地将计数器的计数初值增大,我们翻阅了相关的资料,解决方法是采用两个芯片串联的方式。
参考文献.
1、戴梅萼,史嘉权等编著《微型计算机技术及应用》第四版,清华大学出版社出
版.2008.2
2、《 IBM-PC汇编语言程序设计》第二版,清华大学出版社出版. 2001.。