微机原理课程设计报告
一、设计目的
培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、设计内容
设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。利用功能键进行启/停控制。其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零 后重新开始计时。可用开关控制,也可用按键控制
三、设计要求
1、基本要求:
1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。其中数字0控制清零,数字1控制继续和退出。
2、提高要求:
1)秒表可以分组存储、批量显示、倒计时等。 2)采用图像显示,界面精美,设置报警声等
四、设计原理与硬件电路
1、整体设计思想
使用8253工作在方式0计数,对 1/100S计数,并讲计数值写入bl中并与100比较若不相等,则
微机原理课程设计报告
将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。 2、使用各芯片的作用及工作原理 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的引脚图及硬件连接图如下图示:
《8253引脚图》 硬件连接图
当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在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 0 0 0 0 0 0 0 0 1 0
每个通道: GATE CLK 计数脉冲或标准脉冲输入端 1 1 1 1 0 0 0 0 X 1 0 0 0 0 1 1 1 1 X 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 X X X X 写计数器0 写计数器1 写计数器2 写控制字寄存器 读计数器0 读计数器1 读计数器2 无操作 禁止使用 无操作 WR A1A0 功 能 允许端,当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口按位置位/ 复位控制字格式如图所示:
微机原理课程设计报告
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线控制。
微机原理课程设计报告
五、程序流程图
等于59 等于1S 不等 开 始 1S计数 60S计数 60min计数 等于59 不等 不等
24h计数 等于23 BCD码调整指令10进制显示 BVD 处 理 产 生 溢 出 清 空 微机原理课程设计报告
六、程序代码
a1 equ 0000h b1 equ 0002h c1 equ 0004h
cld stosw
mov ax,seg intr_key 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
stosw
mov ax,data mov es,ax
;8255写入控制字
mov al,10001001b ;A示,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
口B口输出显 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
delay1s proc near ;8253延时子程序
push dx push ax
mov dx,ctr2 ;8253 控制
chu endp
mov al,00110000b
out dx,al ;8253计数器0控制字 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
换码 方式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
微机原理课程设计报告
七、程序及硬件系统调试情况
按下暂停键实现暂停功能
继续计数后按下清零键实现清零功能
微机原理课程设计报告
八、设计心得
经过这次课程设计,我觉得我有了很大的收获,:
1.我大大地锻炼了自己搞科研的能力,作为我们大学生,尤其是工科的大学生,对于科研能力,能够自主开发课题,项目有着很高的要求,而我们很多大学生动手研发的能力还不是很强。而通过这次课程设计,使自己的研发能力有了很大堤提高。
2.我对于工科设计的严谨性,仔细性有了更深地体会。我们本次设计的秒表仅仅是工科设计中非常简单的一个,思想并不是非常复杂,手头也有一定的资料,但是我们在研发,调试过程中还是出现了一些错误。简单的一些程序好检查,但是如果说是以后要设计的一些大型程序,出现故障就不是那么容易检查了。这就要求我们在以后的工程设计当中要更为细致仔细。
3我的专业知识得到了很好的巩固,对于本专业的一些问题有了更深的思考。原来有很多知识只是死学课本,而并没有与实际相结合,而这次课程设计使我的专业知识与实际有了很好的契合。
4.在程序设计中不能够想当然,许多程序,功能在脑子中想得很好,但是将其转变城实际程序就会出现许多问题。如何由脑子里的构想转变成实际的程序,这是我以后需要提高的一点。
5.掌握了一些检查与判断错误的经验与方法,对今后的专业学习与设计有着深刻的影响。 6.对专业设计的许多流程、原则、注意事项以及撰写专业报告的有关事项有了一定的了解。 7.学到了书本上没有的知识,掌握了一些程序设计的技巧,对以后的学习与设计有深远影响。 总之,经过这次课程设计,我对今后的专业学习所要注意的事项有了更深刻地了解,这对我以后的学习必将产生深远的影响。
九、参考文献
[1] 顾晖等。微机原理与接口技术-基于8086和Proteus仿真[M].电子工业出版社陈继红等. 微机原理及应用[M].高等教育出版社,2010
[2]戴梅萼等.微型计算机技术及应用[M].清华大学
[3]沈美明等.IBM-PC汇编语言程序设计 [M]. 清华大学出版社 [4]彭虎等. 微机原理与接口技术(第2版) [M].电子工业出版社,2008 [5] 张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社
因篇幅问题不能全部显示,请点此查看更多更全内容