东北大学接口技术课设.docx

上传人:b****8 文档编号:9551822 上传时间:2023-02-05 格式:DOCX 页数:17 大小:255.26KB
下载 相关 举报
东北大学接口技术课设.docx_第1页
第1页 / 共17页
东北大学接口技术课设.docx_第2页
第2页 / 共17页
东北大学接口技术课设.docx_第3页
第3页 / 共17页
东北大学接口技术课设.docx_第4页
第4页 / 共17页
东北大学接口技术课设.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

东北大学接口技术课设.docx

《东北大学接口技术课设.docx》由会员分享,可在线阅读,更多相关《东北大学接口技术课设.docx(17页珍藏版)》请在冰豆网上搜索。

东北大学接口技术课设.docx

东北大学接口技术课设

 

接口技术课程设计

------------数字钟

 

计算机1307

陈天浩

20134003

 

1、外观描述

数字钟的输出用到6个7段数码管,显示时采用十进制。

它们分别表示:

小时的高位,小时的低位,分钟的高位,分钟的低位,秒的高位,秒的低位。

如下图表示12:

34:

58.

数字钟的输入有两个按钮:

调时按钮和调分按钮。

每当按下一次调时按钮,时间前进一个小时;每当按下一次调分按钮,时间前进一分钟。

由于秒差异不大,所以不设置调秒按钮了。

当数字钟一上电时,显示00:

00:

00.然后就开始计时了。

在计时过程中,可以随时按下调时按钮和调分按钮来调整当前时间。

当计数到23:

59:

59时,数字钟变为00:

00:

00。

2、内部总体结构

数字钟有三个模块,模块功能及主要芯片如下所示:

1.调时按钮和调分按钮======>8259中断控制器

2.电子计数======>8253定时/计数器

3.显示系统======>8255并行传输芯片及6个七段数码管

整个系统采用中断控制方式,没有采用程序查询方式。

中断共有3种:

1、调时中断====>调时子程序=====>小时

2、调分中断====>调分子程序=====>分钟

3、8253计数中断===>调秒子程序=====>秒

采用中断方式来实现使得本系统结构清晰简练,模块之间划分明确,主程序显得凝练、短小。

同时系统很容易进行扩充,比如还可以添加一个复位中断,作为8259的第四个中断,每当按下复位中断,数字钟回归00:

00:

00.

三、8255并行传输芯片-------显示系统

显示系统用一片8255并行芯片和6片七段数码管组成,采用扫描显示技术。

8255工作在方式0状态,用一片8255控制6片七段数码管,8255的A端口作为数据总线,8255的B端口作为地址总线。

A端口控制应该显示多少,书上说“段码”,其实就相当于数据总线;B端口控制让这几片中的那一片显示,书上说“位码”,其实就相当于地址总线,也可以说是片选信号。

本系统在端口配置上进行如下处理。

比如:

OUT8255PortA,AL

表示将AL中的内容输出到8255的A端口。

8255PortA是在DSEG中定义的全局变量。

这样做可读性很好。

Display函数的作用就是显示某一位上的数字。

在上面的代码中用到了几个全局变量:

Table表示的是将一位十进制数字转化为7位二进制,从而使得这7位分别控制七段数码管上7个管的亮灭。

Which实际上相当于参数传递,要显示哪一个,就写在which里面。

如上面代码所示:

time从低位到高位依次是:

秒低位、秒高位、分低位、分高位、时低位、时高位。

四、8253计数/计时芯片--------计时电路

在本系统中,采用了可编程定时计数器8253产生1hz的秒信号来驱动时间的流逝,每隔1秒钟产生一个中断信号,调用中断程序来改变内存中的时间数值。

8253通道0输入2MHz的频率,计数值为50000(最大计数值是65536)。

实际上是50000个一循环,所以输出频率是

2MHz/50000=40Hz

再把这40Hz的频率输出到通道1的输入端口,通道1的计数值为40,这样一来通道1的输出就是1Hz。

把这1Hz的频率输出到8259的0号中断上去,从而每1s产生一个中断,使时间过一秒。

对8253进行初始化的代码如下:

五、8259中断控制器------系统的核心部分

8259芯片十分复杂,它有2类命令字:

初始化命令字ICW共4个,操作命令字OCW共2个。

ICW1:

设置是否级联、采用电平有效还是上升沿有效;

ICW2:

设置中断向量的基地址

ICW3:

用于级联的控制

ICW4:

两个功能:

中断嵌套方式选择、中断结束方式选择。

OCW1:

中断屏蔽

OCW2:

中断结束、中断优先级设置。

本系统中的8259不需要进行级联,只在IR0上接上8253的秒++控制信号,IR1上接上调分钟按钮信号,IR2上接上调节小时按钮信号。

初始化代码如下:

6、中断向量表

中断向量表的填写是把中断事件和响应函数结合起来的重要方法。

中断向量表中有三项内容:

8253的秒中断信号调用incSECOND函数使秒增加1;分钟按钮中断信号调用函数incMINUTE使分钟增加1;小时按钮中断信号调用函数incHOUR使小时增加1.

7、incSECOND中断程序

中断程序共有三个函数:

incSECOND,incMINUTE,incHOUR。

三个函数异曲同工,下面仅讨论incSECOND,incMINUTE和incHOUR可以在源代码中查看。

如上所示,时间定义为六个部分。

秒对应time[0]和time[1],incSECOND函数所表达的其实就是下面这段话:

incMINUTE函数如下:

所不同的是,在汇编语言中需要注意保护现场、关中断开中断等操作。

8、课设总结

在这次课设中,我体会到了中断的好处:

中断能使程序更好地模块化,程序结构跟清晰。

通过对一些芯片的使用,我加深了对硬件知识的理解,也更深的理解了软件调用硬件的过程。

在做数字钟的过程中,在图书馆看了很多芯片用法的书。

其实就三种芯片重要:

8255、8253、8257.大部分关于芯片的知识是在课设中理解的,课上知识很糊涂的知道了。

纸上得来终觉浅,绝知此事要躬行。

9、源代码

DSEGSEGMENT

//端口定义

8255PortADW0000;

8255PortBDW0001;

8253Port0DW0002;

8253Port1DW0003;

8259Port0DW0004;

8259Port1DW0005;

//段码转换表,将4位二进制数转化为7位,从而控制七段数码管的7段的亮灭

//在本程序中只用到0-9

TABLEDB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

//WHICH是一个全局变量,用于8255控制6个7段译码器中的哪一个接受数据

WHICHDW0;

//时间6个:

秒低位、秒高位、分钟低位、分钟高位、小时低位、小时高位;初始时间为00:

00:

00;

TIMEDB0,0,0,0,0,0;

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG

ASSUMEDS:

DSEG

MAIN:

CALLFillTable;//填写中断向量表,必须在将DSEG赋给DS之前填写中断向量表,否则DS还要变

//初始化8255并行芯片

MOVAL,10001000B

OUT8255PortA,AL

CALLINIT8259//初始化8255

CALLINIT8253//初始化8253

MOVAX,DSEG

MOVDS,AX

//显示6位时间

MOVAX,0

SHOW:

CALLDISPLAY

INCAX

CMPAX,6

JNZSHOW

MOVAX,4C00H

INT21H

CSEGENDS

ENDMAIN

DISPLAYPROC

//把要显示的数据送到8255的A端口

MOVSI,WHICH//显示6位中的哪一位

MOVAL,[SI+TIME]

MOVBX,OFFSETTABLE

XLAT

OUT8255PortA,AL

//把要显示的哪一个送到8255的B端口

MOVAL,1

MOVCX,WHICH

SHLAL,CL

OUT8255PortB,AL

RET

DISPLAYENDP

FillTablePROC

MOVAX,0

MOVDS,AX

MOVSI,11111000B*4

MOV[SI],OFFSETincSECOND;

MOV[SI+2],SEGincSECOND;

MOVSI,11111001B*4

MOV[SI],OFFSETincMINUTE;

MOV[SI+2],SEGincMINUTE

MOVSI,11111010B*4

MOV[SI],OFFSETincHOUR;

MOV[SI+2],SEGincHOUR

RET

FillTableENDP

INIT8259PROC

MOVAL,13H

OUT8259Port0,AL;//设置ICW1,上升沿触发非级联方式

MOVAL,11111000B

OUT8259Port1,AL//设置ICW2,中断地址范围为F8-FF

MOVAL,01H

OUT8259Port1,AL//设置ICW3,非自动结束中断方式

MOVAL,11111000B

OUT8259Port1,AL//设置OCW1,不屏蔽0,1,2三个中断

RET

INIT8259ENDP

INIT8253PROC

MOVAL,00110000B

OUT8253Port0,AL

OUT8253Port1,AL

MOVAX,50000

OUT8253Port0,AL

MOVAX,40

OUT8253Port1,AL

RET

INIT8253ENDP

incHOURPROC

CLI

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

PUSHF

MOVAL,TIME+5

MUL10

ADDAL,TIME+4

INCAL

CMPAL,24

JNZOVER

XORAL,AL

OVER:

XORAH,AH

DIV10

MOVTIME+4,AH

MOVTIME+5,AL

MOVAX,4

MOVWHICH,AX

CALLDISPLAY

MOVAX,5

MOVWHICH,AX

CALLDISPLAY

POPF

POPDI

POPSI

POPDX

POPCX

POPBX

POPAX

SETI

IRET

incHOURENDP

incMINUTEPROC

CLI

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

PUSHF

MOVAL,TIME+3

MUL10

ADDAL,TIME+2

INCAL

CMPAL,60

JNZOVER

XORAL,AL

CALLincHOUR

OVER:

XORAH,AH

DIV10

MOVTIME+2,AH

MOVTIME+3,AL

MOVAX,2

MOVWHICH,AX

CALLDISPLAY

MOVAX,3

MOVWHICH,AX

CALLDISPLAY

POPF

POPDI

POPSI

POPDX

POPCX

POPBX

POPAX

SETI

IRET

incMINUTEENDP

incSECONDPROC

CLI

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

PUSHF

MOVAL,TIME

MUL10

ADDAL,TIME+1

INCAL

CMPAL,60

JNZOVER

XORAL,AL

CALLincMINUTE

OVER:

XORAH,AH

DIV10

MOVTIME,AH

MOVTIME+1,AL

MOVAX,0

MOVWHICH,AX

CALLDISPLAY

MOVAX,1

MOVWHICH,AX

CALLDISPLAY

POPF

POPDI

POPSI

POPDX

POPCX

POPBX

POPAX

SETI

IRET

incSECONDENDP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1