logo资料库

基于8086秒针设计.doc

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
1.1 99秒秒表设计背景
1.2 设计目的
1.3硬件选择
2 设计方案及基本原理
2.1 预备知识
2.2 LED显示原理
2.3 元器件选择
2.4 系统设计
2.5硬件工作原理
2.6 硬件连接
3 设计流程图
3.1设计步骤
4 程序
ctrl_port EQU 0106H
A_PORT EQU 0100H
B_PORT EQU 0102H
c_port equ 0104h
count equ 0206h
count0 equ 0200h
count1 equ 0202h
INTR EQU 0304H
INTR1 EQU 0306H
DCOUNT EQU 6
data segment
LEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
BUF DB 0,0,0,0,0,0
buff db 20 dup(?)
DAT1 DB 0
DAT2 DB 0
DAT3 DB 1
dat4 db 0
data ends
CODESEGMENT
ASSUME CS:CODE,ds:data
START: CLI
PUSH DS
MOV SI,2*4
MOV AX,0
MOV DS,AX
MOV [SI],OFFSET INTB
MOV 2[SI], SEG INTB
POP DS
MOV AL,00010011B
MOV DX,INTR
OUT DX,AL
MOV AL,00000010B
MOV DX,INTR1
OUT DX,AL
MOV AL,00000001B
MOV DX,INTR1
OUT DX,AL
STI
mov ax,data
mov ds,ax
mov al,00110111b ;8253初始化
mov dx,count
out dx,al
mov dx,count0
mov ax,500h
out dx,al
mov al,ah
out dx,al
mov al,01110111b
mov dx,count
out dx,al
mov dx,count1
mov ax,50h
out dx,al
mov al,ah
out dx,al
MOV AL,10000001B ;8255初始化,
MOV DX,CTRL_PORT
OUT DX,AL
back: MOV DX,C_PORT
in al,dx
test al,00000010b
jz b2 ;判断是否清0
again: MOV DX,C_PORT
in al,dx
test al,00000001b
jz b1 ;判断是暂停还是继续?
mov cx,6
jia6: inc si
loop jia6
MOV AL,00000000B
MOV DX,C_PORT
OUT DX,AL
MOV AL,DAT1 ;DTA1中是秒
CMP AL,100
JZ A1
MOV BL,10
DIV BL
MOV BUF,AH ;秒的个位
MOV BUF+1,AL ;秒的十位
CALL DISPLAY_DEC
INC DAT1
JMP back
A1: MOV DAT1,0 ;满60秒,对DAT1清0
MOV AL,0
MOV AH,0
MOV BUF,AH
MOV BUF+1,AL
CALL DISPLAY_DEC ;先显示00,再进位
INC DAT2
MOV AL,DAT2 ;DAT2中是分
CMP AL,60
JZ A2
MOV BL,10
DIV BL
MOV BUF+2,AH ;分的个位
MOV BUF+3,AL ;分的十位
CALL DISPLAY_DEC
MOV CX,60
LOOP AGAIN
A2: MOV DAT2,0 ;满60分对DAT2清0
MOV AL,0
MOV AH,0
MOV BUF+2,AH
MOV BUF+3,AL
CALL DISPLAY_DEC ;先显示00:00再进位
MOV AL,DAT3 ;DAT3中是时
CMP AL,24
JZ A3
MOV BL,10
DIV BL
MOV BUF+4,AH ;时的个位
MOV BUF+5,AL ;时的十位
CALL DISPLAY_DEC
MOV CX,60
DEC CX
JZ back
A3: INC DAT3
JMP back
b1: CALL DISPLAY_DEC
mov al,01110000b ;对8253送GATE1控制信号
mov dx,c_port
out dx,al
call cunchu
CALL DELAY
jmp back
b2:
mov dx,c_port
in al,dx
test al,00000100b
jnz li
call xianshicj
call display_dec
mov cx,1
jz next2
mov si,6
dec cx
next2: call delay
jmp back
li: mov buf,0 ;清0
mov buf+1,0
mov buf+2,0
mov buf+3,0
mov buf+4,0
mov buf+5,0
mov dat2,0
mov dat3,1
call display_dec
; mov bx,1000
;jz back
mov al,10110000b ;对8253送GATE0控制信号
mov dx,c_port
out dx,al
CALL DELAY
;dec bx
jmp back
DISPLAY_DEC PROC
DA:
MOV DI,2
DISPAGAIN1:
MOV BL,BUF
MOV BH,0
LEA SI,LEDTAB ;以十进制显示
MOV AL,[BX][SI] ;取个位段码
not al ;共阳
MOV DX,A_PORT
OUT DX,AL ;用数码管显示个位
MOV AL,11100000B ;位选,1点亮
MOV AH,0
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H ;清屏
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
CALL DELAY1
LEA SI,LEDTAB
MOV BL,BUF+1
MOV BH,0
MOV AL,[BX][SI] ;取十位段码
not al
MOV DX,A_PORT
OUT DX,AL ;用数码管显示十位
MOV AL,11010000B
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
LEA SI,LEDTAB
MOV BL,BUF+2
MOV BH,0
MOV AL,[BX][SI] ;取分个位段码
not al
MOV DX,A_PORT
OUT DX,AL ;用数码管显示分个位
MOV AL,11001000B
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
CALL DELAY1
LEA SI,LEDTAB
MOV BL,BUF+3
MOV BH,0
MOV AL,[BX][SI] ;取分十位段码
not al
MOV DX,A_PORT
OUT DX,AL ;用数码管显示分十位
MOV AL,11000100B
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
LEA SI,LEDTAB
MOV BL,BUF+4
MOV BH,0
MOV AL,[BX][SI] ;取时个位段码
not al
MOV DX,A_PORT
OUT DX,AL ;用数码管显示时个位
MOV AL,11000010B
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
CALL DELAY1
LEA SI,LEDTAB
MOV BL,BUF+5
MOV BH,0
MOV AL,[BX][SI] ;取时十位段码
not al
MOV DX,A_PORT
OUT DX,AL ;用数码管显示时十位
MOV AL,11000001B
MOV DX,B_PORT
OUT DX,AL
CALL DELAY
MOV AL,0H
MOV DX,B_PORT
OUT DX,AL
CALL DELAY1
DEC DI
JNZ DISPAGAIN1
RET
DISPLAY_DEC ENDP
DELAY PROC
MOV CX,1dh
LOOP $
RET
DELAY ENDP
DELAY1 PROC
MOV CX,3h
LOOP $
RET
DELAY1 ENDP
cunchu proc
push ax
push bx
push cx
mov al,buf
mov ah,buf+1
mov bl,buf+2
mov bh,buf+3
mov cl,buf+4
mov ch,buf+5
mov buff[si],al
mov buff[si+1],ah
mov buff[si+2],bl
mov buff[si+3],bh
mov buff[si+4],cl
mov buff[si+5],ch
pop ax
pop bx
pop cx
ret
cunchu endp
xianshicj proc
push ax
push bx
push cx
mov al,buff[si]
mov ah,buff[si+1]
mov bl,buff[si+2]
mov bh,buff[si+3]
mov cl,buff[si+4]
mov ch,buff[si+5]
mov buf,al
mov buf+1,ah
mov buf+2,bl
mov buf+3,bh
mov buf+4,cl
mov buf+5,ch
pop ax
pop bx
pop cx
ret
xianshicj endp
INTB PROC FAR
PUSH AX
PUSH BX
PUSH CX
MOV SI,6
MOV AL,20H
OUT 20H,AL
POP CX
POP BX
POP AX
IRET
INTB ENDP
CODEENDS
END START
电路图
5.1 调试结果
5.2 结果分析
6 结论与体会
7.参考文献
 [1] 康华光,数字电子技术基础,北京:高等教育出版社,2008年1月。 
  [2]数字电子技术《实验指导书》 
  [3]顾永杰.电工电子技术实训教程.上海:上海交通大学出版社,1999     
[4]宋春荣.通用集成电路速查手册.山东科学技术出版社,1995    
 [5]吕思忠.数子电路实验与课程设计.哈尔滨工业大学出版社,2001     
[6]谢自美.电子线路设计、实验、测试.华中理工大学出版社,2000
郑州科技学院 微机原理课程设计(论文) 题 目 _基于 8086 的秒表设计与实现_ 学生姓名 程昭昭 专业班级 计科一班 学 号 201115003 所 在 系 信息工程学院 指导教师 王清珍 完成时间 2013 年 12 月 13 日
目 录 摘要 .................................................................. 3 1 99 秒秒表设计背景及目的要求 ...........................................3 1.1 99 秒秒表设计背景 ...................................................3 1.2 设计目的 ............................................................3 1.3 硬件选择 ............................................................2 1.4 设计内容 ............................................................2 2 设计方案及基本原理 ................................................... 2 2.1 预备知识 ........................................................... 2 2.2 LED 显示原理 ........................................................4 2.3 元器件选择 ......................................................... 4 2.4 系统设计 ........................................................... 4 2.5 硬件工作原理 ........................................................5 2.6 硬件连接 ........................................................... 4 3 设计流程 ............................................................. 5 3.1 设计步骤 ............................................................5 3.2 程序代码 ............................................................6 4 程序 ................................................................. 7 4.1 main.c 主程序 .......................................................7 4.2 key.asm ——键盘扫描子程序 ........................................ 11 5 调试结果及分析 ...................................................... 24 5.1 调试结果 .......................................................... 24 5.2 结果分析 .......................................................... 25 6 结论与分析......................................................................................................................25 7 参考与文献......................................................................................................................25 11
摘要 本设计是设计一个芯片控制的多功能秒表系统。近年来随着科技的飞速发展,单 的应用正在不断的走向深入,同时带动着传统控制检测日新月异更新。在实时检测和 自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方 面的知识是不够的,还要根据具体的硬件结构,以及针对具体的应用对象的软件结合, 加以完善。秒表的出现,解决了传统的由于人为因素造成的误差和不公平性。将软、 硬件有机地结合起来,使得系统能够实现两位 LED 显示,显示时间为 00~99 秒,每 秒自动加 1,能正确地进行加、减(倒)计时,快加,快减,可以同时记录 4 个相对 独立的时间,通过上翻下翻来查看这 4 个不同的计时值,可谓功能强大。其中软件系 统采用汇编语言编写程序,包括显示程序,加减计数程序,快加快减程序,中断,延 时程序,按键消抖程序等,并在 WAVE 中调试运行,硬件系统利用 PROTEUS 强大的功 能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键词: AT89C51 99 秒 【设计题目】99 秒秒表设计 1 99 秒秒表设计背景及目的要求 1.1 99 秒秒表设计背景 目前,单片机正朝着高性能和对品种方向发展,趋势是进一步向着 CMO 化,低功 耗,小体积,大存量,高性能,低价格和外国电路内装化等几个方面发展。 单片机应用的重要意义还在于他从根本上改变了传统的控制系统设计思想和设 计方法。从前必须由模拟电路或数字电路实现的大部分功能功能,现在已能用单片机 通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控 制技术的一次革命。 单片机模块中最常见的是秒表、数字钟等显示时间类的装置,此装置是一种用数 字电路实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性, 且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 此设计利用凌阳科技公司的凌阳 16 位单片机 SPCE061A 为主控芯片,充分利用 61 板上面的三个按键,完成一个简易的现实系统——99 秒秒表。 61 板是一套完整的 16 位单片机开发系统,可直接把程序下载到 61 板上进行调 试和封装。集成度高、运算速度快、体积小、运算可靠、价格低廉,在过程控制、数 据采集、机电一体化、智能仪器仪表、网络技术等方面得到广泛应用。 1.2 设计目的 11
随着单片机应用的日益广泛,在校学生加强对单片机的认识和动手能力,已经是 非常重要的一项锻炼。课程设计就是为加强实践机会、培养学生动手能力的一个重要 环节,将理论知识与实际联系起来的一个关键机会。本课程设计的基本要求是: 1. 掌握 LED 数码管原理及使用方法。 2. 掌握 61 板的使用方法。 3. 初步掌握 SPCE061A 单片机汇编语言一般编程技巧。 4. 初步掌握 61 板系统调试的一般步骤及方法。 1.3 硬件选择 装有 Windows 系统和μ’nSP™ IDE 仿真环境的 PC 机一台,μ’nSP™ 十六位 单片机实验箱一个。本设计用到的实验箱硬件模块为:SPCE061A 核心及周边电路模 块(包含 32 个 I/O 口),LED 数码管。做此实验用 51 板也可以,因为 51 板也提供了 相应的 LED 模组,因为实验室里面给我们提供了 61 板,所以我决定选用 SPCE061A 单片机实验箱。 1.4 设计内容 本装置将实现 0-99 的计数,每一秒钟,计数器将加 1,在数码管上显示当前计 数值,并可用键盘按制计数的起始,以及归零。具体要求如下: 1. 开机时数码管显示 00。 2. 每一秒钟,计数器自动加 1。 3. 按键控制计数,分别控制开始计时、停止计时和归零,功能分配如下: 表 1-1 按键功能分配 按键 KEY1 KEY2 KEY3 功能描述 开始计时 停止计时 归零 2 设计方案及基本原理 2.1 预备知识 11
1.熟悉凌阳单片机的工作原理。 (1)I/O 口的使用原理和设置; (2)定时器或时基的设置、使用; (3)中断的设定。 2.了解数码管的显示原理。 3.熟悉键盘扫描原理。 4.熟悉汇编语言或 C 语言。 2.2 LED 显示原理 静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后 就不再管,直到下一次显示数据需要更新时再传送一次新数据,显示数据稳定,占用 很少的 CPU 时间。 动态显示需要 CPU 时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的 CPU 时间多。这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的 CPU 时 间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有 闪烁感,占用的 CPU 时间多,但使用的硬件少,能节省线路板空间。 基本的半导体数码管是由七个条状发光二极管芯片排列而成的,可实现 0~9 的 显示。 LED 数码管是由发光二级管显示字段组成的显示器,有 8 段和“米”字段之分, 这种显示器有共阳级和共阴极两种。所谓共阳方式是指笔画显示器各段发光管的阳极 (即 P 区)是公共的,而阴极互相隔离。所谓共阴方式是笔画显示器各段发光管的阴 极(即 N 区)是公共的,而阳极是互相隔离的。 2.3 元器件选择 61 板一个,共阳极 2 位 LED 数码管一个,电路板一个,8050 三极管二个,1k 的 电阻 8 个,33k 电阻 2 个,导线若干,排针(10 位)2 个。 2.4 系统设计 根据设计题目的要求分析,并考虑到题目的可扩展性,可将系统分成两大部分: 1. 时间的产生和显示。 2. 按键控制计数起始、归零。 根据系统的功能现选择 61 板作为单片机控制处理部分,利用一 2 位 LED 作为显 示部分,而按键采用 61 板上自带的三个按键,如图 2-1 所示。 11
IOB 秒 SPCE061A 精简开发版 Key1 Key2 Key3 2.5 硬件工作原理 图 2-1 系统框图 两位数的显示采用的是一个 2 位共阳极 LED 数码管(LG5621AH),连接方法是 SPCE061A 的 IOB0-IOB6 接 LED 焊接板的 A-G,小数显示部分可以省略不要;IOB8-IOB9 分别接 LED 的位选 COM1、COM2,电路原理图如图 2-4。LED 与 SPCE061A 的引脚连接 如表 2-1。 采用凌阳大学计划的 LED 键盘模组和 61 板搭配可以很容易的完成这个课程设计 的题目。它的连结图如图所示,IOB 的低八位控制数码管显示段位,高八位控制点亮 哪一个数码管。 表 2-1 LED 引脚连接表 SPCE061A LED 模块 SPCE061A LED 模块 IOB0 IOB1 COM1 COM2 IOB8 IOB9 IOB10 IOB11 IOB12 IOB13 IOB14 A B C D E F G 2.6 硬件连接 采用凌阳大学计划的 LED 键盘模组和 61 板搭配可以很容易的完成这个课程设计 11
的题目。它的连结图如图所示,IOB 的低八位控制数码管显示段位,高八位控制点亮 哪一个数码管。 61 板 IOBO—7 IOB8—15 显示器片选 显示器段选 IOA0—7 IOA8—15 2*4KEY 1*8KEY 按键状态跳线 数码管 1 数码管 1 数码管 1 数码管 1 数码管 1 数码管 1 发光二极管 KEY1 KEY2 KEY3 KEY4 KEY5 KEY6 KEY7 KEY8 图 2-2 LED 键盘模组和 61 板连接图 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 9 11 10 15 14 13 18 16 17 8 7 6 5 4 3 2 1 22 23 19 20 21 U9 D0 D1 D2 D3 D4 D5 D6 D7 RD WR A0 A1 CS 8253A 21 22 24 18 31 30 23 17 33 19 U9 RESET READY INTA/QS1 INTR HOLD/GT1 HLDA/GT0 TEST NMI MN/MX CLK 8086 AD[0..15] A[16..19] ALE/QS0 BHE DT/R/S1 DEN/S2 RD WR/LOCK M/IO/S0 25 34 27 26 32 29 28 3 设计流程图 3.1 设计步骤 根据设计要求的功能,程序主要分为三部分,即: 11
(1)计时显示部分; (2)秒计时部分; (3)按键控制部分。 (4)程序主流程主要完成键盘扫描、计时处理、键值分支控制的任务,流程图如 图所示: 开始 初始化数据、以 及中断、键盘等 扫描键盘,针对 键值分支 Key1 开始计时 Key2 停止计时 Key3 清零 计时数据处理,格式 化显示 清看门狗 图 3-1 主程序流程图 显示部分是在 IRQ4 的 1KHz 中断中控制显示的,采用动态扫描的方式,1KHz 的 时基中断每 1ms 进一次中断,在中断中对 2ms 计数器 i 进行累加,当 i 从 0 累加到 2 时,则刚好为 2ms,此时更新一个位的 LED 显示,并对 i 进行清零;当下一次累计到 2ms 时,则会再更新显示下一位 LED 数码管,当更新到最后一位时,返回重第一位开 始更新;依此循环更新显示,而更新显示的数据保存在缓冲区当中,用户需要更新显 11
分享到:
收藏