数字式钟
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的课设说明书
微机原理及应用
课程设计说明书
设计题目:数字式钟表的设计
学 院 自动化与信息工程学院
专 业 电气工程及其自动化
班 级 电气111
姓 名 王盟光
学 号 3110421002
指导教师 李好文 副教授
同组同学 欧阳可 姚晓迪 李勇超
张玺 朱茂举 周元立
2013 年 秋 季 学期
起止时间:2013 年12月21日至2013年12月30日
课程设计任务:数字式钟表的设计 一、设计目的
通过数字频率计的设计,使同学们进一步掌握:
(1) 汇编语言程序的设计和调试;
(2) 信号频率的数字测量方法;
(3) 定时计数器8253的基本工作原理和应用;
(4) 微机基本应用系统的设计方法;
二、设计内容
利用微机原理实验装置,设计并实现一个信号频率测试系统,要求频率测量
范围不小于5Hz~50kHz,测量误差不大于1Hz,并将测得的频率显示在LED数码显
示器上。
三、设计要求
(1) 针对实验装置已有条件,设计频率测量原理线路;
(2) 编制相应的测试软件,实现频率测量;
(3) 实际上机调试,完成综合试验;
(4) 编写设计说明书(含原理图,程序及说明,实验方法,过程及结果)。
评分:
学习态度(占10,) 基础知识掌握情况(占10,) 课设完成情况(占30,) 课设创新(占10,) 答辩(占10,) 设计报告(占20,) 考勤(占10,) 总评成绩: 指导教师:
目 录
一、系统功能要求分析…………………………………………………1
二、
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计及其说明…………………………………………………1
三、原理线路设计………………………………………………………2
1( 原理线路
2( 工作原理说明
3( 操作时序分析
4( 特点说明
四、程序设计……………………………………………………………5
1( 程序结构及流程
2( 程序算法分析
3( 关键程序段说明
4( 源程序
清单
安全隐患排查清单下载最新工程量清单计量规则下载程序清单下载家私清单下载送货清单下载
五、系统调试及结论…………………………………………………18
1( 调试方法
2( 重点问题及解决方法
3( 运行结果及结论
六、设计体会…………………………………………………………19 参考文献………………………………………………………………20
一(系统要求功能分析
本设计利用试验箱提供的8086,8253,8259及8279芯片,利用8位数
码管显示完成对时间的显示,显示格式为HH:MM:SS,利用试验箱提供的矩阵键盘,实现对时间的调整设定以及其他附加功能。
二.方案设计及其说明
首先利用8253计数/定时器作为中断发生信号,利用8253计数器0与计数器1级联,采用方式0,在一秒计数结束后在OUT1口产生中断信号。然后利用8259可编程中断控制器,将8253 OUT1口输出的信号接到8259的时钟中断信号IR0口,让其产生中断,在中断子程序中,对设计的变量s,m,h进行相应处理,在一秒钟一次的中断,s,m,h便可实现时钟的时分秒形式变化。然后利用8279可编程设置型键盘/显示器作为数码管与键盘的输入输出控制器,将s,m,h信号相应的有8位数码管显示出来,最终显示格式为HH-MM-SS。调时环节中,利用矩阵键盘产生的信号有8279送cpu判断,完成相应的处理,先进入调时状态,然后有键盘给出的不同信号所代表的不同数值完成对相应位的时间调整。
三(原理电路设计
1.原理线路
abcdefgdp76543210
VCCVCC2MHzB0CLKB1B2CSB3B4A0B5B6WRB7RD
D0D1D2C0D3C1*VCCD4C2VCCD5C3D6C4D7C5A0C6GNDA1C7INTRINTR8279GNDINTACS1CS2CS3CS4WRCS5RDD0D1M/IOD2D3D4D5VCCVCCD6D7VCCVCCWR81MHzRDD0710D0D1OUT0611INTAD1D2GATE0VCC59A0D2D3CLK08088系统4D3D4GND3CSD4D52D5D61INTD6D713D7OUT114INTAGATE115CLK121CS22RD23IR0WR168259GNDOUT217GATE218CLK2GND19A020A1
8253GND
2.工作原理说明
(1)定时计数 8253:
VCC
VCC
81MHzD0710D1OUT0611D2GATE0VCC59D3CLK04D43D5DB(CPU)2D61D713IR0(8259)OUT114GATE115CLK1CS2(0E000H)21CSRD22RDWR23WR
16OUT217GATE218CLK2A019A0A120A1
8253
8253是可编程定时/计数器,有三个独立的十六位计数器。本设计采用计数器0与计数器1级联,初值均送1000,则定时时间=1000*1000*(1/1000000)=1s,然后采用方式0(计数结束产生中断),将OUT1输出的中断信号送给8259 IR0口,让其向CPU申请中断。 (2)中断管理部分 8259:
VCCWRWRVCC
RDDB(CPU)RDD0D1A0A0D2D3CS1(0F000H)CSD4D5INTAINTD6D7INTAINTA
OUT1(82530IR0
8259GND
GND
8259A是可编程中断控制器,本设计中8259A用于产生中断信号,向CPU申请中断,然后去修改秒,时,分的变化。本设计中只需要IR0产生中断,其他位屏蔽,中断
矢量写入ICW4,其地址为20H。
(3)键盘显示控制 8279:
abcdefgdp76543210
VCCVCCVCC2MHzB0CLKB1B2CS5(0BF00H)CSB3B4A0A0B5B6B7
D0D1D2C0D3C1DB(CPU)D4C2D5C3D6C4D7C5C6C7GND8279
8279是一种通用的可编程的键盘、显示接口器件,本次采用矩阵键盘扫描,然后用8位数码管显示,本设计键盘扫描程序和显示程序已设置为库函数程序,键值存于AL中。实验中只需将E5区和G5区A,B,C,D对应相连即可。
3.操作时序分析
上电后时间自动复位为23-58-00,需要调时,按下A1,时间复位,按下A2,时加一,按下A3,分加一
4.特点说明
本设计特点在于调时时,可以使相应位一步到位跳到要跳的时间,相比其他相应位加减调时更加快速,但是却增加了按键数量。
四(程序设计
1.程序结构及流程
开始
(1)主程序
8253,8259初始化
写中断矢量
请显示缓冲区
清时、分、秒及中断计数单元
开中断
显示
结束
(2)中断服务子程序
开始
保护现场
AX,BX压入堆栈
Counters++
Counters++==60, 否
是
Counterm++
Counters清零
否 Counterm++==60?
,
是
Counterh++ Counterm清零
否 Counterh++==24?
是
Counterh清零
显示
恢复现场 AX,DX出栈
返回 (3)调时 开始
K1,K2,K3按
下,
消除抖动
否
K1按下,
是 否
K2按下, 复位
是 否
K3按下, 分++
是
时++
结束
2.程序算法分析
本设计利用中断子程序中实现时间进制显示,中断次数作为基本单位秒,到60秒
清零使分加一,分到60清零,时加一,时到24清零,如此循环,便可实现始终显示。若
有调时键按下,则进入调时程序,K1复位,K2时加一,K3分加一。
3.关键程序段说明
TimeToBuffer 将时分秒十六进制转化成十进制BCD的可显示形式
Display_LED 数码管显示程序
Timer0Int: 中断服务程序
Init8253 8253初始化
Init8259 8259初始化
WriIntver 写中断矢量
4.源程序清单
.MODEL TINY
EXTRN Display8:NEAR, GetKeyA:NEAR, GetKeyB:NEAR
IO8259_0 EQU 0F000H
IO8259_1 EQU 0F001H
COM_ADDR EQU 0E003H T0_ADDR EQU 0E000H T1_ADDR EQU 0E001H
.STACK 200
.DATA
counters1 DB 0
counters DB 0
counterm DB 0
counterh DB 0
buffer DB 8 DUP(0)
buffer1 DB 8 DUP(0)
bNeedDisplay DB 0
number DB 0
lash DB 0 bF
.CODE
START: MOV AX,@DATA
MOV DS,AX
MOV ES,AX
NOP
mov counters ,0
mov counterm,59
mov counterh,23
MOV bNeedDisplay,1
CALL Init8253
CALL Init8259
CALL WriIntver
STI
start1: CALL GetKeyA
JNB start2
CMP AL,0FH
JNZ start2
CALL SetTime
start2: CMP bNeedDisplay,0
JZ start1
CALL Display_LED
MOV bNeedDisplay,0 start3: JMP start1
SetTime PROC NEAR
LEA SI,buffer1
CALL TimeToBuffer
MOV number,0 Key: CMP bFlash,0
JZ Key2
LEA SI,buffer1
LEA DI,buffer
MOV CX,8
REP MOVSB
CMP counters1,0
JNZ FLASH
MOV BL,number
NOT BL
AND BX,07H
LEA SI,buffer
MOV BYTE PTR [SI+BX],10H
FLASH: LEA SI,buffer
CALL Display8
MOV bFlash,0
Key2: CALL GetKeyA
JNB Key
CMP AL,0EH
JNZ Key1
JMP Exit
Key1: CMP AL,0FH
JZ SetTime8
SetTime1: CMP AL,10
JNB Key
CMP number,0
JNZ SetTime2
CMP AL,3
JNB Key
MOV buffer1 + 7,AL
JMP SetTime7
SetTime2: CMP number,1
JNZ SetTime3
CMP buffer1 + 7,1
JZ SetTime2_1
CMP AL,4
JNB Key
SetTime2_1: MOV buffer1 + 6,AL
INC number
JMP SetTime7
SetTime3: CMP number,3
JNZ SetTime4
CMP AL,6
JNB Key
MOV buffer1 + 4,AL
JMP SetTime7
SetTime4: CMP number,4
JNZ SetTime5
MOV buffer1 + 3,AL
INC number
JMP SetTime7
SetTime5: CMP number,6
JNZ SetTime6
CMP AL,6
JB SetTime5_1
JMP Key
SetTime5_1: MOV buffer1 + 1,AL
JMP SetTime7
SetTime6: MOV buffer1,AL
SetTime7: INC number
CMP number,8
JNB SetTime8
MOV bFlash,1
JMP Key
SetTime8: MOV AL,buffer1 + 1
MOV BL,10
MUL BL
ADD AL,buffer1
MOV counters,AL
MOV AL,buffer1 + 4
MUL BL
ADD AL,buffer1 + 3
MOV counterm,AL
MOV AL,buffer1 + 7
MUL BL
ADD AL,buffer1 + 6
MOV counterh,AL
JMP Exit
Exit: RET
SetTime ENDP
;hour min sec转化成可显示格式
TimeToBuffer PROC NEAR
MOV AL,counters
XOR AH,AH
MOV BL,10
DIV BL
MOV [SI],AH
MOV [SI + 1],AL
MOV BYTE PTR [SI + 2],11H
MOV AL,counterm
XOR AH,AH
DIV BL
MOV [SI + 3],AH b
MOV [SI + 4],AL
MOV BYTE PTR [SI + 5],11H
MOV AL,counterh
XOR AH,AH
DIV BL
MOV [SI + 6],AH
MOV [SI + 7],AL
RET
TimeToBuffer ENDP
;显示时分秒
Display_LED PROC NEAR
LEA SI,buffer
CALL TimeToBuffer
LEA SI,buffer
CALL Display8
RET
Display_LED ENDP
;0.5s产生一次中断
Timer0Int: PUSH AX
PUSH DX
MOV bFlash,1
INC counters1
CMP counters1,2
JNZ Timer0Int1
MOV bNeedDisplay,1
MOV counters1,0
INC counters
CMP counters,60
JNZ Timer0Int1
MOV counters,0
INC counterm
CMP counterm,60
JNZ Timer0Int1
MOV counterm,0
INC counterh
CMP counterh,24
JNZ Timer0Int1
MOV counterh,0
Timer0Int1: MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
POP DX
POP AX
IRET
Init8253 PROC NEAR
MOV DX,COM_ADDR
MOV AL,00110101B
OUT DX,AL
MOV DX,T0_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
MOV DX,COM_ADDR
MOV AL,77H
OUT DX,AL
MOV DX,T1_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
Init8253 ENDP
Init8259 PROC NEAR
MOV DX,IO8259_0
MOV AL,13H
OUT DX,AL
MOV DX,IO8259_1
MOV AL,08H
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0FEH
OUT DX,AL
RET
Init8259 ENDP
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,Timer0Int
STOSW
MOV AX,CS
STOSW
POP ES
RET
WriIntver ENDP
END START
五、系统调试及结论
1. 调试方法
分模块调试。先让8253产生1HZ方波,用逻辑灯测试至成功。然后用
拨码开关输出中断信号送入入中断控制器8259,看中断能否产生,记录中
断次数送数码管显示,能显示,则中断申请运行正常,且数码管显示正常,
然后将8253输出的1HZ脉冲信号代替拨码开关信号送入8259,看中断次
数统计是否正常,至正常后,除按键外,硬件调试完成。然后修改中断服
务子程序,调整中断次数为时,分,秒数据,送数码管显示,至此时钟显
示调试完成。然后加入按键控制,由键值判断依次做时分秒的调整,至达
到自己想要的结果。
2. 重点问题及解决方法
(1)程序中使用短跳转JB,JNB跳转距离过大至产生错误,可将其做以下修改即可,加长跳转CMP
JB LL
*****
改为JB LL1
JMP LL2
LL1:JMP LL
LL2:******
(2)时间显示为十六进制形式
中断次数计数显示为十六进制,须将其用DAA做BCD调整,分离开高地
位,然后送数码管显示。
3. 运行结果及结论
结果:时间显示正常且可以实现调时功能,显示格式HH:MM:SS。
结论:该程序可以实现时间的显示和调整,实验成功。
六、设计体会
两周的课程设计结束了,在这次微机原理课程设计中,我不仅对自己所学的相关知识有了进一步巩固,同时,也提高了自己的动手实践能力,还有团队合作能力。
在本次课程设计中,我们组七个人分工合作,各自发挥自己的特长,一起查阅资料,探讨问题。虽然开始,我们对汇编语言的应用可以说是一窍不通,但是经过大家的共同努力,互相学习,我们开始对汇编语言慢慢熟悉起来。我开始体会到汇编语言,这种最接近机器语言的语言的独特好处。相比以往了解的C语言,汇编语言对硬件的操作性更强,从而在以后的学习中,我便可以互相借鉴,取长补短。而我们几个人合作完成这个设计,更让我们学会了团结合作,共同进步,这在我以后的生活中将是一笔不可小觑的财富。
这次课程设计也是对我们实践能力的一种强化。我们平时在课本上学到的知识,很难让我们主动去加以实践,而这样的课程设计便是对我们训练,接近实战的训练,这对我们以后走上工作岗位打下了良好的基础,我们正是需要这种实践去锻炼自己。
同时,我也非常感谢我们的指导老师李好文老师,他上课时总是对我们悉心指导,特别是老师为我们讲解时总是从最基础的说,帮我们调程序时一坐就是一两个小时也不说累,在这里我深深的感谢老师,谢谢您的教导。我们这次的成功,很大一部分都应该归功于您的细心指导。
总之,这次课程设计让我多方面都有所提高,这对于我以后走向社会裨益良多。我很感谢学校给我们提供这样的机会,对于以后的学习中,我也会把握住这种机会,使自己更上一层路。
参考文献 [1] 微机接口实验系统使用
手册
华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载
[2] 微机接口实验系统实验指导书
[3] 微机原理及应用课程设计指导书 [4] 微型计算机原理及应用(张彦斌主编)