微机原理课程设计报告电子秒表.docx
《微机原理课程设计报告电子秒表.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告电子秒表.docx(24页珍藏版)》请在冰豆网上搜索。
微机原理课程设计报告电子秒表
电子与控制工程学院
计算机原理与接口技术
课
程
设
计
姓名 高强强
学 号 3206100232
专 业 建筑设施智能技术
设计题目 可任意启动停止的电子秒表
指导老师 傅攀峰
1电子秒表课程设计要求·············································1
2关键字································································1
3摘要···································································1
4综合实验目的························································1
5引言···································································1
5.1.1使用各个芯片的作用及工作原理···································2
5、1.28253可编程外围芯片介绍··········································3
5、1.3锁存器74ls273·····················································4
5、1.4译码器74154························································7
5、1.5七段数码管显示······················································8
6程序流程图····························································10
7程序源程序····························································11
8程序及硬件调试图····················································15
9设计心得·······························································17
10参考文献····························································18
可任意启动/停止的电子秒表
一、电子秒表课程设计要求
6位LED数码显示,计时单位为1/100秒。
利用功能键进行启/停控制。
其功能为:
上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。
第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。
二、关键字
808682558253 控制字
三、摘要
用汇编语言设计数字秒表,用PROTUES仿真软件搭建的硬件电路上正确显示,并且具有开始停止清零功能。
用8086作为处理器,8253做定时功能产生0、01S的脉冲,8255具备锁存与并行输出功能,驱动7段数码管正确显示,并且具有足够高的精度。
。
四、综合实验目的:
通常,学习知识就是由浅入深、由此及彼,一点点的学习与积累的,而应用知识则就是综合运用所积累的知识来分析与解决实际问题、从知识的系统性来检验对各层次知识的掌握程度。
综合实验的目的就是让学生把理论学习与实验教学阶段所掌握的知识通过一个设计实例,经历一次理论与实践结合、软件与硬件结合的综合训练,也就是一次工程实践能力的检验。
这次综合实验大家应当把它作为毕业设计的预演。
锻炼通过各种媒体与途径主动获取知识的能力。
五、引言
使用8253的通道0工作在方式0计数,,并选用二进制技术,控制字36H,计数初值500,对1MHZ的CLK计数产生2000HZ的输出脉冲给1,2通道的CLK,通道一选用二进制计数即计数结束中断方式0,初值20产生非屏蔽中断0、01S非屏蔽中断送给8086的NMI产生中断的脉冲,8086开始计数即毫秒位计数并显示,并与10比较,等于给分秒位加一,毫秒位置清零,分秒位与6比较若相等清零秒各位加一,秒个位与10比较若等于清零秒十位加一,秒十位与6比较若等于清零分个位加1,分个位与10比较若等于清零分十位加一,分十位与6比较若等于全部清零。
1、使用各芯片的作用及工作原理
1)定时器/计数器8253
用系统8253定时器提供的1MHZ定时单位,设计秒表定时程序。
有关系统定时方法:
PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,
频率:
f=1MHz。
定时器0输出方波的频率:
2000Hz。
定时器1输出方波100HZ,输出方波周期Tout=1/100=1ms。
8253A每隔1ms引起一次中断,作为定时信号。
可用1ms作基本计时单位。
253的引脚图及硬件连接图如下图示:
ﻫ《8253引脚图》 硬件连接图
当A1A0分别为00011011时分别选中三个通道与控制字寄存器在8088系统中,8088的A1A0分别与8253的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连。
计数器(0~2)即三个计数器/定时器通道。
每个通道包括:
8位控制字寄存器、16位计数初值寄存器、减一计数器与输出锁存器。
作定时器用:
其CLK端上的输入脉冲应就是标准的、精确的;作计数器用:
对其CLK端上的脉冲计数,脉冲宽度可以不等。
采用减一计数器,为0时,从OUT端上输出一个脉冲定时时间 =时钟脉冲周期X预置的计数初值。
控制功能表
CS
RD
WR
A1A0
功 能
0
1
0
00
写计数器0
0
1
0
01
写计数器1
0
1
0
1 0
写计数器2
0
1
0
11
写控制字寄存器
0
0
1
00
读计数器0
0
0
1
01
读计数器1
0
0
1
1 0
读计数器2
0
0
1
1 1
无操作
1
X
X
XX
禁止使用
0
1
1
X X
无操作
每个通道:
CLK
计数脉冲或标准脉冲输入端
GATE
允许端,当GATE=1时允许计数
UT
计数值为0时输出一个脉冲
由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用与由任何一种微处理器组成的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器与单脉冲发生器等。
8253就是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。
每个通道都可以编程设定3种工作方式之一种;8253由以下几个部分组成:
(1)数据总线缓冲器(8位、三态、双向);
(2)读/写控制逻辑;CS:
片选信号,低电平有效;
RD:
读信号,低电平有效;
WR:
写信号,低电平有效
A1A0:
端口选择信号ﻫ (3)三个通道(0~ 2),由A0,A1控制选择;ﻫ (4)一个控制寄存器;
内部结构及引脚图:
2)用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出
8255可编程外围接口芯片就是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口就是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU与接口之间的数据传送总就是并行的,即可以同时传递8位、16位、32位等。
用+5V 单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255工作方式控制字与C口按位置位/复位控制字格式如图所示:
本课程设计8255控制字1000010001,即就是方式选择0控制A口输出控制C口高四位输入B组方式0输出C口低四位输入。
即B口数码管段输出控制,A口数码管的位控制。
C口低四位用于启动停止输入接口。
3)、 锁存器273
74LS273就是8位数据/地址锁存器,她就是一种带清除功能的8D触发器,下面介绍一下她的管脚图功能表等资料。
(1)、1脚就是复位CLR,低电平有效,当1脚就是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;
(2).当1脚为高电平时,11(CLK)脚就是锁存控制端,并且就是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.
74ls273管脚功能:
1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
4)、译码器74ls154
74ls154为4—16线制译码器其引脚图如下图所示
5)、7段数码管
数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式与动态式两类。
静态显示驱动
静态驱动也称直流驱动。
静态驱动就是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点就是编程简单,显示亮度高,缺点就是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动
数码管动态显示接口就是单片机中应用最为广泛的一种显示方式之一,动态驱动就是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
六、程序流程图
开始
0、01S计数
1S计数
1M计数
1H计数
BVD处理
产生溢出
清空
BCD码调整指令10进制显示
等于100
不等
等于59
ﻩ
不等
ﻩ等于59
不等
ﻩ
七、程序代码
DATAS SEGMENT
DW100DUP(?
)
ZXM DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH
ﻩHOU1 DB0
HOU2 ﻩDB 0
ﻩMIN1 ﻩDB0
MIN2 ﻩDB 0
SEC1 DB0
SEC2 ﻩDB 0
;ﻩbuf BYTE 0,1,2,3,4,5,6,7,8,9;显示缓冲区
;FLAG BYTE 0
;STATE BYTE 0
;ﻩKEYMARK BYTE0;此处输入数据段代码
DATASENDS
STACKSSEGMENT
DW100DUP(?
)
STACKSENDS
CODESSEGMENT
ASSUME CS:
CODES,DS:
DATAS,SS:
STACKS
START:
;;;;;;;;;;;;;;;;;;中断初始化
ﻩPUSHDS
PUSH BX
ﻩMOVAX,0000H
MOVDS,AX
MOVBX,0008H
MOV DX,OFFSETTIAOSHI
MOV[BX],DX
MOVBX,000AH
MOVDX,SEGTIAOSHI
MOV[BX],DX
POP BX
ﻩ POPDS
MOV AX,DATAS
MOVDS,AX
MOVAX,DATAS
MOVSS,AX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL,89H;8255A口与B口输出,C口输入
ﻩMOVDX,206H
OUTDX,ALﻩ
MOVAL,3FH
MOVDX,202H
ﻩOUT DX,AL
ﻩﻩ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVAL,00110110B ;初始化8253,CNT0;
MOV DX,0406H
OUT DX,AL
MOVAX,500
MOVDX,0400H
OUT DX,AL
MOV AL,AH
OUTDX,AL
ﻩﻩ
MOVAL,01010000B ; CNT1;
MOVDX,0406H
OUT DX,AL
MOV DX,0402H
MOVAL,20
OUT DX,AL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHUCHU:
ﻩLEA SI,ZXM
ﻩMOVBX,0000H
ﻩﻩMOVAL,11111110B
ﻩMOVDX,200H
ﻩOUT DX,AL
ﻩﻩMOVBL,SEC2ﻩ
ﻩﻩMOV AL,[SI+BX]
ﻩﻩMOVﻩDX,202H
OUTDX,AL
ﻩﻩMOVCX,200H
ﻩS1:
LOOPS1
ﻩﻩ
ﻩ
ﻩﻩMOV AL,11111101B
ﻩMOV DX,200H
OUT DX,AL
ﻩﻩMOV BL,SEC1
ﻩMOVAL,[SI+BX]
ﻩMOVDX,202H
ﻩOUTDX,AL
ﻩﻩMOVCX,200H
S2:
LOOP S2
ﻩMOVAL,11111011B
ﻩMOVDX,200H
OUTDX,AL
ﻩﻩMOVBL,MIN2
ﻩMOVAL,[SI+BX]
ﻩMOVﻩDX,202H
ﻩOUTDX,AL
ﻩMOVCX,200H
S3:
ﻩﻩLOOP S3
ﻩﻩ
ﻩ
ﻩﻩ
ﻩMOV AL,11110111B
ﻩﻩMOVDX,200H
ﻩﻩOUT DX,AL
ﻩﻩMOV BL,MIN1
MOVAL,[SI+BX]
ﻩMOVDX,202H
ﻩOUTDX,AL
ﻩMOVCX,200H
ﻩS4:
ﻩLOOP S4
ﻩﻩ
ﻩMOVAL,11101111B
ﻩMOV DX,200H
OUTDX,AL
ﻩﻩMOVBL,HOU2
MOV AL,[SI+BX]
ﻩMOVﻩDX,202H
ﻩﻩOUTDX,AL
ﻩﻩMOVCX,200H
ﻩS5:
ﻩLOOPS5
ﻩ
ﻩMOVAL,11011111B
ﻩMOVDX,200H
ﻩOUT DX,AL
ﻩMOVBL,HOU1
ﻩﻩMOV AL,[SI+BX]
ﻩMOVﻩDX,202H
OUTDX,AL
ﻩMOVCX,200H
S6:
LOOP S6ﻩ
JMPSHUCHU
PANDUAN:
ﻩINCSEC2
CMPSEC2,0AH
ﻩﻩ JNZSHUCHU
ﻩ
ﻩﻩMOV SEC2,0ﻩ
ﻩﻩINC SEC1
ﻩﻩ CMPSEC1,0AH
ﻩJNZﻩSHUCHU
ﻩﻩ
ﻩﻩﻩ MOV SEC1,0
ﻩﻩINCMIN2
ﻩCMPMIN2,0AHﻩ
ﻩJNZﻩSHUCHU
ﻩ
ﻩﻩMOVMIN2,0
INC MIN1
ﻩﻩCMPMIN1,06H
ﻩ JNZSHUCHU
ﻩ
ﻩMOVMIN1,0ﻩﻩ
INCHOU2
CMP HOU2,0AHﻩ
ﻩJNZSHUCHU
ﻩﻩ
MOVHOU2,0ﻩﻩ
ﻩ INC HOU1
ﻩCMP HOU1,06H
ﻩJNZﻩSHUCHU
ﻩﻩﻩ
ﻩﻩMOVHOU1,0
ﻩﻩ JMPﻩSHUCHUﻩ
TIAOSHIPROC
;;;;;;;;;;;;中断子程序
ﻩﻩMOV AL,01010000B ;初始化CNT1;
ﻩMOVDX,0406H
ﻩOUT DX,AL
ﻩﻩ MOVDX,0402H
ﻩ MOV AL,20
ﻩﻩOUTDX,ALﻩ
JMPPANDUAN
;;;;;;;;;;;;;;;;;;;;;;;
ﻩﻩRET
TIAOSHIENDP
DELAYPROC
ﻩPUSHCX
MOVCX,29h
W10MS:
ﻩLOOPW10MS
ﻩﻩPOPCX
RET
DELAY ENDP
CODESENDS
END START
八、程序及硬件系统调试情况
按下暂停键实现暂停功能
继续计数后按下清零键实现清零功能
程序演示图
总体连线图
九、设计心得
经过这次课程设计,我觉得我有了很大的收获,:
1、我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其就是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不就是很强。
而通过这次课程设计,使自己的研发能力有了很大堤提高。
2.我对于工科设计的严谨性,仔细性有了更深地体会。
我们本次设计的秒表仅仅就是工科设计中非常简单的一个,思想并不就是非常复杂,手头也有一定的资料,但就是我们在研发,调试过程中还就是出现了一些错误。
简单的一些程序好检查,但就是如果说就是以后要设计的一些大型程序,出现故障就不就是那么容易检查了。
这就要求我们在以后的工程设计当中要更为细致仔细。
3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。
原来有很多知识只就是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。
4、在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但就是将其转变城实际程序就会出现许多问题。
如何由脑子里的构想转变成实际的程序,这就是我以后需要提高的一点。
5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。
6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。
7、学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。
总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。
十、参考文献
[1] 顾晖等。
微机原理与接口技术-基于8086与Proteus仿真[M].电子工业出版社陈继红等、 微机原理及应用[M].高等教育出版社,2010
[2]戴梅萼等、微型计算机技术及应用[M].清华大学
[3]沈美明等、IBM-PC汇编语言程序设计 [M].清华大学出版社
[4]彭虎等、微机原理与接口技术(第2版)[M].电子工业出版社,2008
[5]冯博宁,吴宁主编.微型计算机原理与接口技术(第三版)、清华法学出版社。