学士学位论文微机原理及应用课程设计电子钟设计.docx

上传人:b****3 文档编号:26885859 上传时间:2023-06-23 格式:DOCX 页数:25 大小:175.85KB
下载 相关 举报
学士学位论文微机原理及应用课程设计电子钟设计.docx_第1页
第1页 / 共25页
学士学位论文微机原理及应用课程设计电子钟设计.docx_第2页
第2页 / 共25页
学士学位论文微机原理及应用课程设计电子钟设计.docx_第3页
第3页 / 共25页
学士学位论文微机原理及应用课程设计电子钟设计.docx_第4页
第4页 / 共25页
学士学位论文微机原理及应用课程设计电子钟设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

学士学位论文微机原理及应用课程设计电子钟设计.docx

《学士学位论文微机原理及应用课程设计电子钟设计.docx》由会员分享,可在线阅读,更多相关《学士学位论文微机原理及应用课程设计电子钟设计.docx(25页珍藏版)》请在冰豆网上搜索。

学士学位论文微机原理及应用课程设计电子钟设计.docx

学士学位论文微机原理及应用课程设计电子钟设计

南京工程学院

通信工程学院

课程设计说明书(论文)

 

题目电子钟设计

课程名称微机原理与接口技术课程设计

专业

班级

学生姓名

学号

设计地点

指导教师

 

设计起止时间:

2013年12月23日至2013年12月27日

目录

一、设计要求3

二、基本任务3

三、总体设计3

1、设计思路3

2、设计流程图4

3、硬件设计5

四、功能模块实现7

1、显示模块7

2、计数模块7

3、中断模块8

4、定时模块8

5、修改模块8

五、硬件连线8

六、调试结果10

七、心得体会10

八、参考文献11

九、附录:

源程序11

 

一、设计要求

利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编写一段程序使得该电子钟能正常运行。

二、基本任务

(1)选用8253的计数器2进行100MS的定时,其输出OUT2与8259的IR0相连,当定时到100MS时产生一个中断信号,在中断服务程序中进行天数、时、分、秒的计数,并送入相应的存储单元;

(2)8255的A口接七段数码管的位选信号,B口接数码管的段选信号,天数、时、分、秒的数值通过对8255的编程可送到七段数码管上显示。

附加任务:

选用8253的计数器0、1产生一个10s的时间定时,并将其输出OUT1与蜂鸣器相接,产生10S蜂鸣。

8255的C口接开关输入,用K1、K2、K3分别控制时、分、秒的修改。

3、总体设计

利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编制一程序使得该电子钟能正常运行。

电子钟除了能够完成正常的计时、显示功能外,还必须具备正常时、分、秒的数值显示功能、时间设定功能等。

绘制相应的硬件电路原理图并完成接线。

编制相应控制程序实现电子钟的计时、显示等功能。

控制程序设计规范,应有适当的注释,表达清楚。

钟的时分秒显示分别采用6个7段LED数码管实现。

1、设计思路

(1)在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器2可在方式2下工作。

(2)8255的A口、B口都设为方式0,为基本的输入输出的方式

(3)在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。

时、分、秒,分别对应6个存储单元,分别存放时、分、秒的十位和个位。

当中断次数满10次时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同时对分、时作相应处理。

(4)七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的段码,从8255的B口输出,A口输出对应位的位选信号,延时后进行下一位的显示

(5)用8253的计数器0、1产生一个20S周期的方波,计数器0工作在方式2下,计数器1工作在方式3下。

(6)在循环程序中检测K1、K2、K3是否为高电平,若是则相应位置加1,同时还得引入变量控制K1、K2、K3一直在高电平的状况,确保每次按动开关相应位置只加一次。

2、设计流程图

主程序中断服务程序

3、硬件设计:

①8259A芯片的内部结构及引脚

中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。

因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。

在MD微机系统中,8259芯片工作于单片方式。

8259引脚图如图3.3,各引脚功能如下。

D7~D0——八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0——地址信号;

INT——中断请求信号;

INTA(低电平有效)——中断响应信号;

CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;

图3.18259A引脚图

SP/EN——从编程/允许级联。

在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。

在非缓冲方式中,作为输入信号用于表示主片还是从片;

IR0~IR7——外部中断请求输入线。

要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。

②8255芯片的内部结构及引脚

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:

方式0—基本输入/输出方式

方式1—选通输入/输出方式

方式2—双向选通输入/输出方式

8255引脚图如图3.2示,各引脚功能如下。

D7~D0——与CPU侧连接的八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0、A1——片内寄存器选择输入信号;

PA7~PA0——A口外设双向数据线;

PB7~PB0——B口外设双向数据线;

PC7~PC0——C口外设双向数据线;

RESET——复位输入信号

③8253芯片的内部结构及引脚

8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHZ,它所有的技术方式和操作方式都通过编程控制。

8253的功能用途是:

(1)延时中断

(2)可编程频率发生器

(3)事件计数器

(4)二进倍频器

(5)实时时钟

(6)数字单稳

(7)复杂的电机控制器

8253有六种工作方式:

(1)方式0:

计数结束中断

(2)方式1:

可编程频率发生器

(3)方式2:

频率发生器

(4)方式3:

方波频率发生器

(5)方式4:

软件触发的选通信号

(6)方式5:

硬件触发的选通信号

8253各引脚功能如下。

D7~D0——八条双向数据线;

WR(低电平有效)——写输入信号;

RD(低电平有效)——读输入信号;

CS(低电平有效)——片选输入信号;

A0、A1——片内寄存器地址输入信号;

CLK——计数输入,用于输入定时基准脉冲或计数脉冲;

OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形;

GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步。

 

四、功能模块实现

1、显示模块

显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由八个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位,一个横杠和一位天数的显示。

硬件上主要涉及到的是8255。

定义8255控制字为89H,其在方式0下工作,A,B输出,C输入的工作方式。

8255的A口接七段数码管的位选信号,B口接数码管的段选信号,C口接开关,用排线接好。

2、计数模块

软件上主要是对时、分、秒、天的扫描显示,主要是在DISPLAYLED函数里体现出来:

首先将10000000B送至OUTBIT端口,即确定LED的哪一位显示,再把BX中存储在内存中的翻译好的显示码送至OUTSEG短口,来确定显示什么字符。

依次将BX加1而CL减一,直至CL为0跳转而字符的译码则是在STSRT函数中的LP中完成的,以小时HOUR为例,将HOUR存入AH中再DIV以10,按“余高商低”的规则,AH中存的是小时的个位AL中村的是小时的十位,将AL转换成显示码,并存入显示缓冲区。

其他分、秒、天类似。

计数模块的主要芯片是8253,8253控制字10100111H,表示选用计数器2,对高字节读写,方式3。

因为选用的是计数器2,则OUT的端口即选用OUT2,连至8259的IR0端口,CLK2端口接来自实验箱的62.5KHz的时钟频率。

将62500HZ的频率转化为10HZ的频率,即题目要求的100MS。

每隔100MS送出一个信号至8259,配合中断程序的实现。

则要求初始值N0=100MS*62.5K=6250。

3、中断模块

控制终端模块的主要芯片是8259。

IINIT函数是专为初始化8259。

初始化8259的命令字:

ICW1为00010011B,即中断请求是边沿触发,用于8086系统,需要设置ICW4。

ICW2为00001000B,ICW2是设置中断类型号的初始化命令字。

ICW4为00001001B,ICW4叫中断结束方式初始化。

OCW1为11111110B即表示只有M0允许中断,故接线时8253的OUT2,连至8259的IR0端口.。

软件上包括初始化8259的命令字和操作命令字,中断服务程序,中断服务子程序。

设一个变量CNT,每次调用中断服务程序则CNT加一,在判断CNT能不能被10整除,若能,则秒加一;不能,跳出中断程序。

若秒满60,则分加一,秒数清零,依次类推。

4、定时模块

定时模块由8253完成,8253CLK0接2MHZ频率,OUT0接CLK1,OUT1接蜂鸣器,GATE0接高电平,GATE1接脉冲信号,当其为高电平时有效。

计数器0初始值设为5000,计数器1初始值设为8000,从OUT1出来的信号为周期20S的方波,而蜂鸣器为低电平有效。

5、修改模块

修改模块是由8255完成的,从C口输入开关信号控制时间的修改,中间引入中间变量,以防每按动开关一次,跳动多次。

 

5、硬件连线

A3区:

A0、A1

——

B3、B4、C5区:

A0、A1

A3区:

CS3

——

B3区:

CS

A3区:

CS4

——

C5区:

CS

C5区:

GATE0、GATE2

----

VCC

A3区:

CS8

——

B4区:

CS

B3区:

INT、INTA

——

ES8688:

INTR、INTA

B3区:

IRO

——

C5区:

OUT2

频率输出:

62.5k

——

C5区:

CLK2

C5区:

GATE1

----

单位脉冲

C5区:

OUT0

----

C5区:

CLK1

C5区:

OUT1

----

D1区:

CTRL

B4区:

C

----

G6区:

JP80

频率输出:

2MHZ

----

C5区:

CLK0

B4区:

A、B

——

LED区:

C、B数据线

 

 

 

六、调试结果

1、按动软件全速运行后,八位显示器分别为00.00.00-1(第一个小数点前两位表示小时,第二个小数点前两位表示分钟,第三个小数点前两位表示秒,最后一位表示天)。

秒位从0开始计时,到60秒时清零,分钟为1,以此类推。

2、将单位脉冲拨动到高电平,则从按动时刻开始10S后蜂鸣器响,再将脉冲调到低电平,蜂鸣器停止鸣响。

3、拨动开关K1一次,时显示器加1,拨动K2一次,分显示器加1,同理K3。

 

七、心得体会

本次课程设计历时四天,从第一天的查找资料到最后老师的验收,学到了许多之前在课

堂上遗漏的知识,更加熟悉了8255、8253、8259等芯片的功能,使我受益匪浅。

微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。

讨论某一部分原理时又要涉及到其它部分的工作原理。

这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。

所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。

学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。

这次课程设计,首先,让我学习和掌握计算机中常用接口电路及8255A的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。

通过实践,进一步加深了对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

本次设计给我最大的收获就是动手能力的重要性,实践和理论上是有差距的,理论与实际相结合是很重要的。

只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

动手试验也让自己对书本知识有了更深刻的认识,把书本知识真正的转化为自己所掌握的东西,能加以利用。

实验中个人的力量是不及群体的力量的,我和两个同学自成一组,三个人分工合作,做事的效率高了很多。

虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。

而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。

总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。

在此我还要感谢老师的悉心指导和同组人员的协助及配合,正是因为你们的帮助才确保了本次课程设计的顺利进行,谢谢!

 

8、参考文献

1.李干林,李升.微机原理及接口技术实验指导书.北京:

北京大学出版社.

2.李继灿.新编16/32位微型计算机原理及应用(第4版).北京:

清华大学出版社.

3.周荷琴,吴秀清.微型计算机原理与接口技术.合肥:

中国科学技术大学出版社.

 

9、附录:

源程序

D8253KEQU0C003H;8253控制口

D8253D_0EQU0C000H

D8253D_1EQU0C001H

D8253D_2EQU0C002H

MD8255EQU89H;8255控制字10001001H,A输出,B输出,C输入

PA8255EQU08000H

PC8255EQU08002H

CTL8255EQU08003H

OUTBITEQU08000H;位控制口

OUTSEGEQU08001H;段控制口

CS8259AEQU0D000H;8259地址

CS8259BEQU0D001H

DATASEGMENT

CNTDB0

LEDBUFDB8DUP(?

);显示缓冲

NUMDB1DUP(?

);显示的数据

DELAYTDB1DUP(?

ZHOUDB1

HOURDB-1

MINUTEDB0

SECONDDB0

CTDB1

mtDB1

VTDB1

LEDMAP:

;八段管显示码

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS

SSEGSEGMENTSTACK

DB1000DUP(?

SSEGENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

SSEG

IINITPROCNEAR;初始化8259的命令字和操作命令字

MOVDX,CS8259A

MOVAL,13H

OUTDX,AL

MOVDX,CS8259B

MOVAL,08H

OUTDX,AL

MOVAL,09H

OUTDX,AL

MOVAL,0FEH

OUTDX,AL

RET

IINITENDP

WRIINTVERPROCNEAR;中断程序子程序

PUSHES

MOVAX,0

MOVES,AX

MOVDI,20H

LEAAX,IENTER

STOSW

MOVAX,CS

STOSW

POPES

RET;返回

WRIINTVERENDP

IENTERPROC;中断服务程序

PUSHAX

PUSHDX

INCCNT

CMPCNT,10

JNEEXIT

MOVCNT,0

INCSECOND;秒加1

MOVAL,SECOND

CMPAL,60;秒数与60比较

JNEEXIT

MOVSECOND,0;秒清零

INCMINUTE;分加1

MOVAL,MINUTE

CMPAL,60;分数与60比较

JNEEXIT

MOVMINUTE,0;分清零

INCHOUR;时加1

MOVAL,HOUR

CMPAL,24;时数与24比较

JNEEXIT

MOVHOUR,0;时清零

INCZHOU

MOVAL,ZHOU

CMPAL,7

JNEEXIT

MOVZHOU,1

EXIT:

MOVDX,CS8259A

MOVAL,20H

OUTDX,AL;结束本次中断

POPDX

POPAX

IRET

IENTERENDP

DISPLAYLEDPROCNEAR;显示程序,从左到右显示字符

MOVBX,OFFSETLEDBUF

MOVCL,8;共8个八段管

MOVAH,10000000B;从左边开始显示

DLOOP:

MOVDX,OUTBIT

NOTAH

MOVAL,AH

OUTDX,AL

MOVAL,[BX]

MOVDX,OUTSEG

OUTDX,AL;显示一位八段管

PUSHAX

MOVAH,1

CALLDELAY;调用延时程序

POPAX

NOTAH

SHRAH,1

INCBX

DECCL

JNZDLOOP

MOVDX,OUTBIT

MOVAL,0

OUTDX,AL;关所有八段管

RET

DISPLAYLEDENDP

DELAYPROCNEAR;延时子程序

PUSHAX

PUSHCX

MOVAL,0

MOVCX,AX

LOOP$;

POPCX

POPAX

RET

DELAYENDP

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

NOP;空操作

CLI;使IF清0,禁止CPU响应中断

CALLIINIT;初始化8259

CALLWRIINTVER;调用中断程序,检查是否要进位

MOVAL,0B7H;8253控制字10110111H

MOVDX,D8253K

OUTDX,AL

MOVDX,D8253D_2

MOVAl,50h;利用8253计数器

OUTDX,AL

moval,62h

outdx,al

;MOVAL,AH

;OUTDX,AL

movdx,d8253k;8253定时

moval,35h

outdx,al

movdx,d8253d_0

moval,00h

outdx,al

moval,50h

outdx,al

movdx,d8253k

moval,77h

outdx,al

movdx,d8253d_1

moval,00h

outdx,al

moval,80h

outdx,al

MOVAL,MD8255;8255控制字

MOVDX,CTL8255

OUTDX,AL

MOVCNT,0;计数值初始为0

MOVAL,CNT

MOVDX,PA8255

OUTDX,AL

STI;开中断

k1:

moval,ct

testal,01h;ct为1时,+1

jzY

inchour

movct,00h

moval,hour

cmpal,24

jnzss1

movhour,0

K2:

moval,Mt

testal,01h

jzY

incMINUTE

movMt,00h

moval,MINUTE

cmpal,60

jnzss1

movMINUTE,0

K3:

moval,VT

testal,01h

jzY

incSECOND

movVT,00h

moval,SECOND

cmpal,60

jnzss1

movSECOND,0

Y:

jmpss1

LP:

movdx,pc8255

inal,dx

testal,80h

jnzk1

movct,01h

TESTAL,40H

JNZK2

MOVMT,01H

TESTAL,20H

JNZK3

MOVVT,01H

ss1:

MOVAL,HOUR

MOVAH,0

MOVCL,10

DIVCL

MOVCH,AH

MOVAH,0

MOVBX,OFFSETLEDMAP

ADDBX,AX

MOVAL,[BX];时的十位转换成显示码

MOVLEDBUF,AL;显示码存入显示缓冲区

MOVBX,OFFSETLEDMAP

MOVAL,CH

MOVAH,0

ADDBX,AX

MOVAL,[BX];时的个位转换成显示码

ORAL,80H

MOVLEDBUF+1,AL;显示码存入后一位显示缓冲区

MOVAL,MINUTE

MOVAH,0

MOVCL,10

DIVCL

MOVCH,AH

MOVAH,0

MOVBX,OFFSETLEDMAP

ADDBX,AX

MOVAL,[BX];分的十位转换成显示码

MOVLEDBUF+2,AL

MOVBX,OFFSETLEDMAP

MOVAL,CH

MOVAH,0

ADDBX,AX

MOVAL,[BX];分的个位转换成显示码

ORAL,80H

MOVLEDBUF+3,AL

MOVAL,SECOND

MOVAH,0

MOVCL,10

DIVCL

MOVCH,AH

MOVAH,0

MOVBX,OFFSETLEDMAP

ADDBX,AX

MOVAL,[BX];秒的十位转换成显示码

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

当前位置:首页 > 医药卫生 > 基础医学

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

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