毕业设计基于8086的秒表设计与实现课程设计.docx
- 文档编号:9564615
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:23
- 大小:227.88KB
毕业设计基于8086的秒表设计与实现课程设计.docx
《毕业设计基于8086的秒表设计与实现课程设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于8086的秒表设计与实现课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
毕业设计基于8086的秒表设计与实现课程设计
郑州科技学院
《微型计算机原理》课程设计
题目基于8086的秒表设计与实现
学生姓名程昭昭
专业班级计科一班
学号201115003
院(系)信息工程学院
指导教师王清珍
完成时间2013年12月18日
目录
199秒表设计背景及目的要求……………………………2
1.1设计目的………………………………………………3
1.2硬件选择………………………………………………4
2设计方案及基本原理……………………………………4
2.1LED显示原理……………………………………………4
2.2系统设计………………………………………………4
2.3硬件工作原理……………………………………………5
3设计流程……………………………………………………6
4调试结果………………………………………………9
5结果分析………………………………………………9
6结论与体会………………………………………………10
7参考文献………………………………………………11
附录1:
电路图………………………………………………11
附录2:
源程序………………………………………………12
199秒秒表设计背景及目的要求
1.1设计目的
随着芯片应用的日益广泛,在校学生加强对单片机的认识和动手能力,已经是非常重要的一项锻炼。
课程设计就是为加强实践机会、培养学生动手能力的一个重要环节,将理论知识与实际联系起来的一个关键机会。
本课程设计的基本要求是:
1.掌握LED数码管原理及使用方法
2.初步掌握8086芯片汇编语言一般编程技巧。
1.2硬件选择
装有Windows系统和μ’nSP™IDE仿真环境的PC机一台,μ’nSP™十六位单片机实验箱一个。
本设计用到的实验箱硬件模块为:
SPCE061A核心及周边电路模块(包含32个I/O口),LED数码管。
做此实验用51板也可以,因为51板也提供了相应的LED模组,因为实验室里面给我们提供了61板,所以我决定选用SPCE061A单片机实验箱。
本装置将实现0-99的计数,每一秒钟,计数器将加1,在数码管上显示当前计数值,并可用键盘按制计数的起始,以及归零。
具体要求如下:
1.开机时数码管显示00。
2.每一秒钟,计数器自动加1。
3.按键控制计数,分别控制开始计时、停止计时和归零,功能分配如下:
表1-1按键功能分配
按键
功能描述
KEY1
开始计时
KEY2
停止计时
KEY3
归零
2设计方案及基本原理
2.1LED显示原理
静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用很少的CPU时间。
动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。
这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。
基本的半导体数码管是由七个条状发光二极管芯片排列而成的,可实现0~9的显示。
LED数码管是由发光二级管显示字段组成的显示器,有8段和“米”字段之分,这种显示器有共阳级和共阴极两种。
所谓共阳方式是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。
所谓共阴方式是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的。
2.2系统设计
根据设计题目的要求分析,并考虑到题目的可扩展性,可将系统分成两大部分:
1.时间的产生和显示。
2.按键控制计数起始、归零。
根据系统的功能现选择61板作为单片机控制处理部分,利用一2位LED作为显示部分,而按键采用61板上自带的三个按键,如图2-1所示。
图2-1系统框图
2.3硬件工作原理
两位数的显示采用的是一个2位共阳极LED数码管(LG5621AH),连接方法是SPCE061A的IOB0-IOB6接LED焊接板的A-G,小数显示部分可以省略不要;IOB8-IOB9分别接LED的位选COM1、COM2,电路原理图如图2-4。
LED与SPCE061A的引脚连接如表2-1。
采用凌阳大学计划的LED键盘模组和61板搭配可以很容易的完成这个课程设计的题目。
它的连结图如图所示,IOB的低八位控制数码管显示段位,高八位控制点亮哪一个数码管。
表2-1LED引脚连接表
SPCE061A
LED模块
SPCE061A
LED模块
IOB8
A
IOB0
COM1
IOB9
B
IOB1
COM2
IOB10
C
IOB11
D
IOB12
E
IOB13
F
IOB14
G
。
图2-2LED键盘模组和61板连接图
3设计流程
根据设计要求的功能,程序主要分为三部分,即:
(1)计时显示部分;
(2)秒计时部分;
(3)按键控制部分。
(4)程序主流程主要完成键盘扫描、计时处理、键值分支控制的任务,流程图如图所示:
图3-1主程序流程图
显示部分是在IRQ4的1KHz中断中控制显示的,采用动态扫描的方式,1KHz的时基中断每1ms进一次中断,在中断中对2ms计数器i进行累加,当i从0累加到2时,则刚好为2ms,此时更新一个位的LED显示,并对i进行清零;当下一次累计到2ms时,则会再更新显示下一位LED数码管,当更新到最后一位时,返回重第一位开始更新;依此循环更新显示,而更新显示的数据保存在缓冲区当中,用户需要更新显示的数据时,只需要改变对应的缓冲区中的数据即可。
具体流程图如下。
秒计时采用IRQ5的2Hz时基中断进行计时,流程图如图3-3所示。
键盘输入利用61板自带的三个按键,输入的端口为IOA0—IOA2。
图3-2IRQ41KHz时基中断流程图3-3IRQ52Hz时基中断流程图
4调试结果
4-1
5.1调试结果
本装置将实现0-99的计数,每一秒钟,计数器将加1,在数码管上显示当前计数值,并可用键盘按制计数的起始,以及归零。
具体要求如下:
1.开机时数码管显示00。
2.每一秒钟,计数器自动加1。
3.按键控制计数,分别控制开始计时、停止计时和归零,功能分配如下:
按KEY1开始计时数码管显示从00开始计时到99结束再从00开始循环;
按KEY2停止计时数码管显示当前数值;
按KEY3归零;按KEY4复位.
5.2结果分析
本设计应该熟悉凌阳十六位单片机系统板-61板的基本构成,掌握LED数码管原理及使用方法,掌握61板的使用方法,初步掌握SPCE061A单片机汇编语言一般编程技巧,初步掌握61板系统调试的一般步骤及方法。
设计结构现实:
开机时数码管显示为00,每一秒钟计数器自动加一,按KEY1键开始计时,按KEY2键停止计时并现实当前数值,按KEY3键归零。
6结论与体会
两周的单片机课程设计结束了,最初的目的是想学到一些对将来就业很有实质性帮助的东西。
结果还算可以接受,虽然说与预期的有不少出入,但锻炼自己这个主要目标算是达成了。
通过这次课程设计,我对如何完成一项实际的计划有了进一步的认识,对如何加强自己的合作能力有了更进一步的思考。
通过这次课程设计,我想下学期的毕业设计会少点困难,以后在工作中也能够有更多的经验好借鉴。
在这段日子里,我实践、思考、反思、总结,所得收获都已经成为大学生涯中的宝贵财富。
或许大学生活中的片断随着岁月的流逝难免被遗忘,但是这段课程设计的日子相信仍会是记忆深刻,它作为我们走向社会的第一步,承载了即将面对现实和挑战的心情,必将难忘。
在此,感谢赵老师的细心辅导,有了这次的实践经验,为毕业设计奠定基础。
7参考文献
[1]杨季文.《汇编语言程序设计教程》清华大学出版社 ,2008,3.
[2] 康华光.数字电子技术基础,北京:
高等教育出版社,2008,1 .
[3] 张荣祥.《微型计算机原理》,北京:
中国电力出版社.
[4]黄正瑾.综合电子设计与实践[M].东南大学出版社,2002,3.
[5]马力.《 8086汇编语言程序设计》,机械工业出版社 ,2006,9.
[6]顾永杰.电工电子技术实训教程.上海:
上海交通大学出版社,1999 .
[7]杨志坚.《Intel8086/8088系列微型计算机原理及接口技术》[M].,北京:
中国电力出版社 ,2007年4月第三次印刷.
附录1:
电路图
7-1
附录2:
源程序
ctrl_portEQU0106H
A_PORTEQU0100H
B_PORTEQU0102H
c_portequ0104h
countequ0206h
count0equ0200h
count1equ0202h
INTREQU0304H
INTR1EQU0306H
DCOUNTEQU6
datasegment
LEDTABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
BUFDB0,0,0,0,0,0
buffdb20dup(?
)
DAT1DB0
DAT2DB0
DAT3DB1
dat4db0
dataends
CODESEGMENT
ASSUMECS:
CODE,ds:
data
START:
CLI
PUSHDS
MOVSI,2*4
MOVAX,0
MOVDS,AX
MOV[SI],OFFSETINTB
MOV2[SI],SEGINTB
POPDS
MOVAL,00010011B
MOVDX,INTR
OUTDX,AL
MOVAL,00000010B
MOVDX,INTR1
OUTDX,AL
MOVAL,00000001B
MOVDX,INTR1
OUTDX,AL
STI
movax,data
movds,ax
moval,00110111b;8253初始化
movdx,count
outdx,al
movdx,count0
movax,500h
outdx,al
moval,ah
outdx,al
moval,01110111b
movdx,count
outdx,al
movdx,count1
movax,50h
outdx,al
moval,ah
outdx,al
MOVAL,10000001B;8255初始化,
MOVDX,CTRL_PORT
OUTDX,AL
back:
MOVDX,C_PORT
inal,dx
testal,00000010b
jzb2;判断是否清0
again:
MOVDX,C_PORT
inal,dx
testal,00000001b
jzb1;判断是暂停还是继续?
movcx,6
jia6:
incsi
loopjia6
MOVAL,00000000B
MOVDX,C_PORT
OUTDX,AL
MOVAL,DAT1;DTA1中是秒
CMPAL,100
JZA1
MOVBL,10
DIVBL
MOVBUF,AH;秒的个位
MOVBUF+1,AL;秒的十位
CALLDISPLAY_DEC
INCDAT1
JMPback
A1:
MOVDAT1,0;满60秒,对DAT1清0
MOVAL,0
MOVAH,0
MOVBUF,AH
MOVBUF+1,AL
CALLDISPLAY_DEC;先显示00,再进位
INCDAT2
MOVAL,DAT2;DAT2中是分
CMPAL,60
JZA2
MOVBL,10
DIVBL
MOVBUF+2,AH;分的个位
MOVBUF+3,AL;分的十位
CALLDISPLAY_DEC
MOVCX,60
LOOPAGAIN
A2:
MOVDAT2,0;满60分对DAT2清0
MOVAL,0
MOVAH,0
MOVBUF+2,AH
MOVBUF+3,AL
CALLDISPLAY_DEC;先显示00:
00再进位
MOVAL,DAT3;DAT3中是时
CMPAL,24
JZA3
MOVBL,10
DIVBL
MOVBUF+4,AH;时的个位
MOVBUF+5,AL;时的十位
CALLDISPLAY_DEC
MOVCX,60
DECCX
JZback
A3:
INCDAT3
JMPback
b1:
CALLDISPLAY_DEC
moval,01110000b;对8253送GATE1控制信号
movdx,c_port
outdx,al
callcunchu
CALLDELAY
jmpback
b2:
movdx,c_port
inal,dx
testal,00000100b
jnzli
callxianshicj
calldisplay_dec
movcx,1
jznext2
movsi,6
deccx
next2:
calldelay
jmpback
li:
movbuf,0;清0
movbuf+1,0
movbuf+2,0
movbuf+3,0
movbuf+4,0
movbuf+5,0
movdat2,0
movdat3,1
calldisplay_dec
;movbx,1000
;jzback
moval,10110000b;对8253送GATE0控制信号
movdx,c_port
outdx,al
CALLDELAY
;decbx
jmpback
DISPLAY_DECPROC
DA:
MOVDI,2
DISPAGAIN1:
MOVBL,BUF
MOVBH,0
LEASI,LEDTAB;以十进制显示
MOVAL,[BX][SI];取个位段码
notal;共阳
MOVDX,A_PORT
OUTDX,AL;用数码管显示个位
MOVAL,11100000B;位选,1点亮
MOVAH,0
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H;清屏
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
CALLDELAY1
LEASI,LEDTAB
MOVBL,BUF+1
MOVBH,0
MOVAL,[BX][SI];取十位段码
notal
MOVDX,A_PORT
OUTDX,AL;用数码管显示十位
MOVAL,11010000B
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
LEASI,LEDTAB
MOVBL,BUF+2
MOVBH,0
MOVAL,[BX][SI];取分个位段码
notal
MOVDX,A_PORT
OUTDX,AL;用数码管显示分个位
MOVAL,11001000B
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
CALLDELAY1
LEASI,LEDTAB
MOVBL,BUF+3
MOVBH,0
MOVAL,[BX][SI];取分十位段码
notal
MOVDX,A_PORT
OUTDX,AL;用数码管显示分十位
MOVAL,11000100B
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
LEASI,LEDTAB
MOVBL,BUF+4
MOVBH,0
MOVAL,[BX][SI];取时个位段码
notal
MOVDX,A_PORT
OUTDX,AL;用数码管显示时个位
MOVAL,11000010B
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
CALLDELAY1
LEASI,LEDTAB
MOVBL,BUF+5
MOVBH,0
MOVAL,[BX][SI];取时十位段码
notal
MOVDX,A_PORT
OUTDX,AL;用数码管显示时十位
MOVAL,11000001B
MOVDX,B_PORT
OUTDX,AL
CALLDELAY
MOVAL,0H
MOVDX,B_PORT
OUTDX,AL
CALLDELAY1
DECDI
JNZDISPAGAIN1
RET
DISPLAY_DECENDP
DELAYPROC
MOVCX,1dh
LOOP$
RET
DELAYENDP
DELAY1PROC
MOVCX,3h
LOOP$
RET
DELAY1ENDP
cunchuproc
pushax
pushbx
pushcx
moval,buf
movah,buf+1
movbl,buf+2
movbh,buf+3
movcl,buf+4
movch,buf+5
movbuff[si],al
movbuff[si+1],ah
movbuff[si+2],bl
movbuff[si+3],bh
movbuff[si+4],cl
movbuff[si+5],ch
popax
popbx
popcx
ret
cunchuendp
xianshicjproc
pushax
pushbx
pushcx
moval,buff[si]
movah,buff[si+1]
movbl,buff[si+2]
movbh,buff[si+3]
movcl,buff[si+4]
movch,buff[si+5]
movbuf,al
movbuf+1,ah
movbuf+2,bl
movbuf+3,bh
movbuf+4,cl
movbuf+5,ch
popax
popbx
popcx
ret
xianshicjendp
INTBPROCFAR
PUSHAX
PUSHBX
PUSHCX
MOVSI,6
MOVAL,20H
OUT20H,AL
POPCX
POPBX
POPAX
IRET
INTBENDP
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 基于 8086 秒表 设计 实现 课程设计