1. 设计目的
培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
2. 设计内容
设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零 后重新开始计时。可用开关控制,也可用按键控制。(开关控制 ☆ )(按键控制★)
3. 设计要求
一.基本要求
1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。其中数字0控制清零,数字1控制继续和退出
二.提高要求:
1)秒表可以分组存储、批量显示、倒计时等。
2)采用图像显示,界面精美,设置报警声等
4. 设计原理与硬件电路
一.整体设计思想
使用8253工作在方式0计数,对 1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。
二. 使用各芯片的作用及工作原理
1、定时器/计数器8253
用系统8253定时器提供的55ms定时单位,设计秒表定时程序。
有关系统定时方法:
PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,
频率:f=1.1931816MHz。
定时器0输出方波的频率:fout=1.1931816/65536=18.2Hz。
输出方波的周期Tout=1/18.2=54.945ms。8253A每隔55ms引起一次中断,作为定时信号。可用55945ms作基本计时单位。
用BIOS调用INT 1AH可以取得该定时单位。例:1秒=18.2 (计时单位)
8253的引脚图及硬件连接图如下图示:
2、 用可编程并行接口芯片8255的PA口以及PB口实现数码管输出,PC口实现按键实现数据显示输出
8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255 的内部结构及引脚如图2.1所示:
图2.1 内部结构及引脚
8255 工作方式控制字和C口按位置位/ 复位控制字格式如图3-7-2 所示:
图2.2 置位/ 复位控制字格式
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. 数据收发器245
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)
*DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。
5. 译码器74ls154
74ls154为4—16线制译码器其引脚图如下图所示
6. 7段数码管
数码管要正常显示,就要来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示驱动
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。
5.程序流程图
6.程序代码
a1 equ 0000h
b1 equ 0002h
c1 equ 0004h
ctr1 equ 0006h ;8255各端口地址
a2 equ 0200h ;8253计数器0端口地址
ctr2 equ 0206h ;8253控制端口地址
a3 equ 0100h
data segment
; keynum db 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H
tab db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
buf db 0,0,0,0
buf1 db 0,0,0,0,0,0,0,0
buf2 db 0,0;前为第一开关次数
buf3 db 80 dup(?)
data ends
code segment 'code'
assume ds:data,cs:code
start: mov ax,data
mov ds,ax
;设中断入口地址设置
mov ax,0
mov es,ax
mov di,08
mov ax,offset intr_key
cld
stosw
mov ax,seg intr_key
stosw
mov ax,data
mov es,ax
;8255写入控制字
mov al,10001001b ;A口B口输出显示,C口高四位低四位输入
mov dx,ctr1
out dx,al
n3: call jishu
jmp n3
n2: lea si,buf2
mov bh,00h
mov bl,1h[si]
lea di,buf3
add di,bx
add bl,8
mov 1h[si],bl
lea si,buf1
cld
mov cx,8
rep movsb
n4: call dis
jmp n4
n5: lea si,buf2
mov bh,00h
mov bl,1h[si]
cmp bl,0
jz n1
lea di,buf1
sub bl,8
mov 1h[si],bl
lea si,buf3
add si,bx
cld
mov cx,8
rep movsb
n6: call dis
jmp n6
n1: call qinlin
jmp n1
;jmp start
jishu proc near ;计数子程序
lea si,buf
mov bl,[si]
cmp bl,100
jnz s6
s1: mov bl,0
mov [si],bl
mov ah,1h[si]
cmp ah,59
jz s2
inc ah
mov 1h[si],ah
jmp s6
s2: mov ah,0
mov 1h[si],ah
mov ah,2h[si]
inc ah
mov 2h[si],ah
jmp s6
s6:call chu
mov cx,3
s5:call dis
loop s5
call delay1s
inc byte ptr[si]
ret
jishu endp
chu proc ;rukou al ;数处理子程序
push si
push bx
mov bl,4
lea di,buf1
lea si,buf
next:lodsb
mov ah,00
mov cl,10
div cl
xchg ah,al
stosb
mov al,ah
stosb
dec bl
jnz next
pop bx
pop si
ret
chu endp
dis proc near ;显示buf1中的值
push bx
push cx
lea bx,tab
lea di,buf1
mov cx,8
mov ah,7Fh
loop1: mov al,[di]
xlat ;换码
mov dx,a1
out dx,al
mov dx,b1
mov al,ah
out dx,al
mov bh,1
call delay
call qp
lea bx,tab
ror ah,1
inc di
loop loop1
pop cx
pop bx
ret
dis endp
delay1s proc near ;8253延时子程序
push dx
push ax
mov dx,ctr2 ;8253 控制
mov al,00110000b
out dx,al ;8253计数器0控制字 方式0 out端作为中断请求信号
mov dx,a2
mov al,01h
out dx,al
mov al,00h
out dx,al
mov dx,a3
M1: in al,dx
test al,01h
jz M1
pop ax
pop dx
ret
delay1s endp
qp proc near ;清频子程序
mov al,0ffh
mov dx,b1
out dx,al
ret
qp endp
delay PROC NEAR ;内部延时之程序
PUSH bx
PUSH CX
wait0: MOV CX,06h
wait1: LOOP wait1
DEC bh
JNZ wait0
POP CX
POP bx
RET
delay ENDP
intr_key proc near ;中断服务子程序
call key
test al,2h
jz n1
test al,4h
jz n5
lea di,buf2
mov bh,[di]
inc bh
mov [di],bh
test bh,1h
jnz n2
jmp n3
iret
intr_key endp
qinlin proc ;键盘清零子程序
mov ax,0
lea di,buf
mov cx,14
cld
rep stosb
call dis
qinlin endp
key proc ;读取键盘程序
mov dx,c1
in al,dx
ret
key endp
code ends
end start
7.程序及硬件系统调试情况
按下暂停键实现暂停功能
继续计数后按下清零键实现清零功能
8.设计心得
经过这次课程设计,我觉得我有了很大的收获,:
1.我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不是很强。而通过这次课程设计,使自己的研发能力有了很大堤提高。
2.我对于工科设计的严谨性,仔细性有了更深地体会。我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料,但是我们在研发,调试过程中还是出现了一些错误。简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。这就要求我们在以后的工程设计当中要更为细致仔细。
3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。原来有很多知识只是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。
4.在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但是将其转变城实际程序就会出现许多问题。如何由脑子里的构想转变成实际的程序,这是我以后需要提高的一点。
5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。
6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。
7.学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。
总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。
9.参考文献
[1] 顾晖等。微机原理与接口技术-基于8086和Proteus仿真[M].电子工业出版社陈继红等. 微机原理及应用[M].高等教育出版社,2010
[2]戴梅萼等.微型计算机技术及应用[M].清华大学
[3]沈美明等.IBM-PC汇编语言程序设计 [M]. 清华大学出版社
[4]彭虎等. 微机原理与接口技术(第2版) [M].电子工业出版社,2008
[5] 张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社
微机原理课程设计设计报告姓名朱文斋班级学号30905020xx教师张荣标20xx年1月5日微机原理课程设计一目的结合微型计算机原理…
河北科技大学课程设计报告学生姓名学号专业班级课程名称学年学期指导教师年月课程设计成绩评定表目录一课程设计的目的1二设计题目1三设计…
接口技术基础实验报告学院计算机科学与技术学院班级计091学号09130220xx姓名曹恒楼指导老师顾晖时间20xx616接口技术课…
微机原理课程设计报告设计名称:LED七段数码管数字钟学院:电子信息学院班级:电科091提交时间:20##年6月15日一:设计内容设…
南京航空航天大学微机原理课程设计数据采集系统中断法微机原理课程设计数据采集系统中断法南京航空航天大学微机原理课程设计数据采集系统中…
微机原理课程设计总结以前从没有学过关于汇编语言的知识,起初学起来感觉很有难度。当知道要做课程设计的时候心里面感觉有些害怕和担心,担…
南京航空航天大学微机原理课程设计数据采集系统中断法微机原理课程设计数据采集系统中断法南京航空航天大学微机原理课程设计数据采集系统中…
微机原理课程设计设计报告姓名朱文斋班级学号30905020xx教师张荣标20xx年1月5日微机原理课程设计一目的结合微型计算机原理…
河北科技大学课程设计报告学生姓名学号专业班级课程名称学年学期指导教师年月课程设计成绩评定表目录一课程设计的目的1二设计题目1三设计…
微机原理课程设计报告设计名称:LED七段数码管数字钟学院:电子信息学院班级:电科091提交时间:20##年6月15日一:设计内容设…