中南大学微机原理课程设计报告.doc

上传人:叶*** 文档编号:34999334 上传时间:2022-08-19 格式:DOC 页数:24 大小:121KB
返回 下载 相关 举报
中南大学微机原理课程设计报告.doc_第1页
第1页 / 共24页
中南大学微机原理课程设计报告.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《中南大学微机原理课程设计报告.doc》由会员分享,可在线阅读,更多相关《中南大学微机原理课程设计报告.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、中南大学 微机原理课程设计实验报告 题 目 设计电子万年历 学生姓名 学 号 指导教师 学 院 信息科学与工程学院 专业班级 通信工程 一、设计目的及要求(一) 设计任务: 通过本次课程设计,使学生巩固和加深微型计算机原理理论知识,通过过实践进一步加强学生独立分析问题和解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后工作打下良好的基础。计算机原理与接口课程课程设计结合教学内容,从应用的角度出发,进行三类课程设计,分别分为:汇编语言程序设计、微机标准接口课程设计和接口技术课程设计。(1)通过设计电子万年历,掌握中断的使用方法。 (2)

2、掌握基本的显存读写技术。 (3)学会在屏幕上以七段数码管的形式显示本机时间的方法。 (4)学会用汇编语言编写一个完整的程序,提高自己的动手操作能力。 (5)学习程序设计的基本思路和方法,培养分析问题、解决问题的能力。汇编语言是计算机能够提供给用户使用的最快而又最有效的语言, 也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间的要求很高的场合,汇编语言的应用是必不可少的。至于很多需要直接控制 硬件的应用场合,则更是非用汇编语言不可了。随着科学技术迅速发展,理工科大学生不仅需要掌握计算机方面的基本理论知识,而且还需要掌握基本的实验技 能及一定的科学研究能力。 通过课

3、程设计,使学生巩固和加深微型计算机原理理论知识, 通过实践进一步加强学生独立分析问题和解决问题的能力、综合设计及 创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后工作打下良好的基础。鉴于汇编语言的广泛用途及其在当代计算机界的重要作用,本人利用学的知 识,在同学门的帮助下,花费大量时间,完成了关于电子万年历的系统设计。这个系统是应用于电脑中的小应用程序,可是显示电脑中的时间。很多地方都会有个时钟显示,其中大多是应用了类似这样的方法。关键词:汇编语言 微机原理 接口技术 时钟显示 键盘输入 一次性初始化六位(二)设计功能:1.电子万年历,具有年、月、日、时、分、

4、秒24小时制的运行,并可以在8位数码管上显示; 2.电子万年历具有启动键、蜂鸣、整点报时、暂停、初始化年、月、日、时、分、秒。(三) 课程设计方式与基本要求: 【1】 实验方式:微机原理与接口技术课程设计共2周,要求学生做出设计方案(硬件线路图、程序框图)并提交指导教师检查确认。然后进行硬件连接、软件调试、得出结果,由指导教师检查是否达到设计要求,最后撰写报告。根据通信工程专业学生的实际情况,课程设计的指导思想是:对于学习成绩好、动手能力强的学生,让他们有充分发挥的余地;对于大多数学生务必完成设计要求;对于少数学习稍差的学生只需完成基本要求。基于这一原则给出了35个题目,每一个题目的大小、难易

5、可以伸缩,由学生自选。【2】基本要求:电子万年历(三星)设计任务:1正常计时并显示,默认状态下用8个7段LED数码管作为显示设备,显示:时分秒,每秒刷新显示;2通过按键,可以切换显示:年(后两位)月日;3通过按键,可以调整时间;4实习整点定时闹铃功能,整点定时输出为音乐信号或语音信号。扩展:可通过串口通讯来获取电子万年历的时间。其他功能(创新部分)。(四)设计所用元件设备是武汉恒科电子教学仪器有限公司的超想3000TB综合实验/仿真系统。配合PC机构成实验环境。8253 定时器:用于产生秒脉冲,计数器2的输出信号作为中断请示信号送 IRQ3 。以及计数器0作为蜂鸣器的输入脉冲使用。8279 接

6、口芯片:实现键盘输入和显示输出。 8259 中断控制器:用于产生中断。8255 并行控制器:触发蜂鸣器扬声。数码管:八个 LED 用于显示年、月、日,时、分、秒。以格式00-00-00输出值。蜂鸣器:扬声报时。 二、 设计题目及思想(一) 设计原理: 计算机原理与接口技术是通信工程专业的一门专业基础课程,学生需要掌握RAM扩充、8253计数器/定时器、8255并行口、8251串行口、8259中断控制器、D/A数模转换、A/D模数转换、DMA、LED显示等各个器件的性能和使用方法。课程设计的目地是综合这些基础知识,就具体问题让学生做出软、硬件解决方案并付诸实施,以培养解决实际问题的能力。 本程序

7、的主要设计原理是用主程序完成键盘按键的扫描,实现计时结果的数码管显示,实现时分秒与年月日之间的转换。通过判断键盘按键调用相应功能程序段以实现相应功能,即实现了初始化年月日、初始化时分秒、显示年月日、显示时分秒等功能。通过实验板上的键盘实现一次性对年月日的六位数字或者时分秒的六位数字同时进行初始化的手动设置功能,在本次实验的所有班级中只有我们一组是通过这种方式进行的初始化,这也是我们组的特色所在。 利用8253的定时器功能。8253的四个端口地址为48H,49H,4AH,4BH, 本实验采用8253的计数器2,工作在方式3(方波发生器方式)输入CLK2为1MHZ。先给8253的初始值0C350H

8、,循环记数。即一次记数完后,自动装入初始值。输出OUT2作为8259的输入脉冲。8259有两个口地址,本实验为20H和21H,其中20H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,采用3号中断源,即IR3和8253输出口OUT2相连,每过1/20秒接收到一个中断,向8259发出中断请求信号,如果电平信号不符合要求,则自动转到7号中断,显示ERR,CPU响应后,在中断处理程序中,对中断次数进行记数,记满20次,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,这样便实现了产生一秒钟长短的时间间隔,以作为程序的主要时钟。计数初值的计算:X=1M/2=50000

9、D=0C350H(用1MHZ信号产生1/20秒方波)。(二)主要模块: 【1】系统总体设计 :本系统设计的电子钟以 8088 微处理器作为 CPU, 8253 做定时计数器产生一秒钟的时间间隔用作程序的主要时钟频率,8279 做可编程并行接口显示时钟和键盘电路,8259 做中断控制器产生中断。在此系统中,8253 的功能是定时,接入 8253 的 CLK 信号为周期性时钟信号。 8253 采用计数器 0和计数器2。计数器2:工作于方式 3,使 8253 的 OUT0 端输出周期性的负脉冲信号,即每隔 20ms,8253 的 OUT0 端就会输出一个负脉冲的信号, 此信号接 8259 的 IR2

10、,当中断到 50 次数后,CPU 即处理,使液晶显示器上的时间发生变化。计数器0 :工作于方式3,使 8253 的 OUT2 作为蜂鸣器的输入信号,使蜂鸣器产生闹铃。 8255的PB0口与8253的GATE0相连,8255的PB0受程序里面的函数控制,当需要闹铃的时候置1,否则置0。程序由以下模块组成:系统共有 6 个功能模块,分别为,主控模块,显示模块,定时模块,闹钟模块,中断模块,初始化模块。【2】主控模块 :主控模块是系的核心模块,对 8253、8255、8279 进行初始化,设置中断向量,主要由软件实现。再由主控模块进入程序菜单,程序菜单的主要功能是调用其它模块对系统工作进行协调,它的

11、主要功能是读小键盘输入键值并执行要做的工作,每当进入菜单就会先调用显示模块SHOW1,显示58-58-58,表示成功进入了菜单。接下来读键值选择相应的功能,如果键值为 F 则初始化年月日并置入相应的内存,成功后返回主控模块。如果键值为 D则初始化时分秒并置入相应的内存,成功后返回主控模块。如果键值为 B 则显示年月日内存中的值,成功后等待下次有键输入后返回主控程序。如果健值为 9 则显示时分秒内存中的值,成功后等待下次有键输入后返回主控程序。 并调用显示模块显示。【3】定时模块 :定时模块是为 8259 提供中断请求信号的。由一片 8253 实现,选用定时器 0#, 工作在方式 3,由于时钟应

12、该 1 秒走动一次,所以输出值应为 1S,其输出信号可作 为 8259 的中断请求信号。【4】 中断处理模块 :中断模块实现动态显示的,硬件为一片 8259,由于中断请求信号为每秒一次, 中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一 秒,从而达到动态显示的效果。【5】 并行模块:并行模块是8255是数据在多根传输线上一次以8位为单位进行传输。8255由数据总线缓冲器,读/写控制逻辑、A组和B 组控制电路以及3个数据端口(A 口、B 口和C口)等组成。【6】显示模块: 显示模块是将显示缓冲区的数值送到 LED 显示的功能模块,显示缓冲区是由六 个字节构成,分别保存小时

13、的高位和低位,分钟的高位和低位,秒钟的高位和低位。 硬件上由六个 LED 构成,软件上由扫描显示的方法实现。(三)芯片初始化: 【1】8253A定时/计数: 8253 A既可作定时器又可作计数器: (1) 计数: 计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出一个标志信号。 (2) 定时: 计数器装入初值后,当GATE为高电平时,由CLK 脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。 除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。8253A控制字7654

14、3210 00 选计数器0 数制控制:0 = 二进制,1= BCD 01 选计数器1 10 选计数器2 工作方式选择:000 方式0 11 非法 001 方式1 10 方式2 00 计数器锁存命令 11 方式3 01 只读/写低8位,高8位自动置0 100 方式4 10 只读/写高8位,低8位自动置0 101 方式5 11 先写低8位,后写高8位 (3)以上为8253计数器2的初始化过程,计数器0的初始化过程类似,只是计数初值不再为053C而改为02,表示把输入的时钟频率二分频,以达到可以使蜂鸣器报警的效果。【2】8259单级中断控制:8259A编程及初始化 写初始化命令字写初始化命令字ICW

15、1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。 中断优先级排队和确定系统用单片还是多片。A7A6A51 7 6 5 4 3 2 1 0 0=不需写ICW4;1=需要写ICW4 0=多片8259级连;1=只一片8259 0=中断向量地址间距8;1=地址间距4(8088模式下为0) 0=上升沿触发;1=高电平触发 为1,ICW1标志位 中断向量A7,A6,A5位(8088模式下为000)【3】 8279显示接口:8279A的控制命令 (1) 键盘显示器方式设置命令* RESET后,设定为该种方式。 (2) 扫描频率控制命令【4】8255并行:8

16、255A控制字 (1) 方式选择控制字7 6 5 4 3 2 1 0 PC30:1=输入, 0=输出 PB口: 1=输入,0=输出 B组 方式选择:0=方式0,1=方式1 PC74:1=输入, 0=输出 PA口:1=输入,0=输出 方式选择:00=方式0 A组 01=方式1 01=方式1 01=方式2 方式标志:1=有效 (四)程序流程图:【1】主程序流程图:STI是否IRQ3关中断中断次数+1中断次数20?开中断,读中断把DATAPORT存放的数码管对应的状态显示到数码管闹钟关是否=00分秒=00闹钟开是否=59秒秒数+1秒=00是否=59分分数+1分=00时=00是否=24时时数+1年=0

17、0是否=99年年数+1月=00是否=13月月数+1日=00是否=31日日数+1将对应的年月日时分秒值放至DATA11/DATA12/DATA13DATA21/DATA22/DATA23中供以后输出查询【2】电子万年历主控程序:一系列的初始化WAITING菜单选择SHOW1(58-58-58)等待输入一个键值判断进入相应的模块程序本轮跑完五)硬件接线图:实验线路连接:1.8253A芯片的CLK2引出插孔连分频输出插孔T1(1MHZ)。2. 8259A的IRQ3插孔和8253A的OUT2插孔相连。3.将8279接口模块上的插座DU(JB51)(a-h)用8芯线连接至数码管模块插座DU (a-h),

18、8279接口模块上插座BIT(JB53)连接至数码管模块插座BIT。4.8255的片选CS插孔和8253A的Y2插孔相连,PB0和8253的GATE0相连。5.1KHz和8253的CLK0相连,8253的OUT0与蜂鸣器相连。 三 实验调试结果打开汇编软件DVCC实验系统,设置正确的接口并且联机进入程序汇编界面。按照电子万年历设计的硬件图把线路一一连接正确。(下图为正常运行情况下电子万年历的状态)按照正确接线之后,将实验台与计算机进行联机,再把程序通过DVCC汇编写进去,编译再次链接,然后调试无误,点击运行。数码管会显示初始命令等待58-58-58状态,然后至到下次正确的键入键盘上的值,如果键

19、值为 F 则初始化年月日并置入相应的内存,成功后返回主控模块。如果键值为 D则初始化时分秒并置入相应的内存,成功后返回主控模块。如果键值为 B 则显示年月日内存中的值,成功后等待下次有键输入后返回主控程序。如果健值为 9 则显示时分秒内存中的值,成功后等待下次有键输入后返回主控程序。 并调用显示模块显示。每当程序运行到XX-00-XX的时候(XX代表任意数值),蜂鸣器响起,整点报时实现。四、 课程设计总结(一)遇到问题及解决方案:在本次设计中我们遇到不少的难题: 我们一开始按照指导书接线,并先导入计算机上本身附带的程序后没有得到相应的效果,这让我十分的疑惑,也认真检查了硬件的接线线路,后来得知

20、是不一定每一个的仪器都能顺利与主机链接上,后来经过多次的多部机子调试后得到能成功运行代码的平台。然后我们在之前的程序中加入了其他的功能:整点报时、键盘初始化等。在改进设计方案中,加入数字键盘进行时间校对的过程确实遇到了不小的麻烦。在运行原先实验指导书中的CALL KEY(主要功能是从键盘上读入键入的值)函数,在我的程序中总是不能得到正确的键值,这个问题困扰了我们小组很久,于是我们进行了断点调试,在CALL KEY函数中不断的加入8255并行接口的初始化程序,将当前程序运行中的计算结果通过8255输出到小灯上,再通过观察小灯的亮灭状态判断当前断点程序是否正常的在运行。这样,我们调试了整整一天,终

21、于发现了问题,并且解决了问题。本小组发现实验所用的编译软件存在着缺陷。当数据段的代码过长的时候,程序不能正常的找到数据段的起始地址,CALL KEY函数中的查表指令无法正常进行。我们的改进方案是将原先写在数据段的表写进代码段,通过赋初值给一片内存区域,这样又在程序开头将代码段的初始地址赋给数据段的初始地址,由于程序中代码段的初始地址与数据段的初始地址是相同的所以这次寻找代码段的初始地址便能成功查表,于是也就解决了CALL KEY函数的运行问题。在整点报时上,融入了8255,8255由DATA22的数值决定跳转哪种状态,当分钟大于等于0分钟,则是给8253的GATE0高电平,从而使OUT0选通,

22、将一定频率的信号传给蜂鸣器;当分钟小于等于0分钟,则是给8253的GATE0低电平,从而使OUT0不通,不能将一定频率的信号传给蜂鸣器,从而达到整点报时的效果。还有在我的代码程序里面有通过8279判断是否有键盘输入的部分,如下: MOV DX,PORT1IN AL,DXAND AL,07H(详情请参考8279的初始化过程)这个函数若返回AL = 0,则无键盘输入。我将这个函数写在了一个程序的循环之中,并作为循环判断条件,若无键盘输入则循环继续运行,若有键盘输入则跳出循环,但是我发现实际运行的时候它却不停的跳出循环,查了很久的代码还是没有发现原因,最后突然想到有可能是中断返回的时候将AL的改变了

23、,于是便将程序做了如下修改:CLI MOV DX,PORT1IN AL,DXAND AL,07HSTI这次的运行结果才是正确的。 对于其他的部分,我们的实验结果完全正确。(二)课程设计心得体会这次的课程设计我深刻的体会到了基础语言编程的不容易,相较于C+来说,汇编语言几乎无封装性可言,也无多态性。这些特点使得我们编程的时候必须逻辑清晰,稍有差错,程序就不知道会跑到什么地方去了。同时汇编语言语法上来说是十分容易的,但是又由于逻辑上要求十分严谨,这就造成了查错过程难以进行,因为通过编译几乎是不可能报错的,但是实际运行的时候程序也许就和你预期的完全不同,逻辑错误若不细究程序是难以查出的。同时,我也体

24、会到了程序的模块化真的对于程序的调试有着很大的便利,我也更加熟悉了分模块分段的调试方法,这对于我以后的编程道路也是一次宝贵的经历。在课程设计过程中,我深刻地体会到:微机原理与接口技术这门课程对于我们的要求不仅限于对书本知识的理解,更重要的是对书本知识的运用。除此之外,我们应该在学习过程中充分发挥自己的想象力和创新意识,将对书本知识的理解与我们的创新意识相结合,设计出实用且功能良好的实物。通过本次课程设计,也提高了我们的编程能力、协作能力和创新能力,为以后的学习打下了良好的基础。另外,我深感能找到一台运行正常的机子对实验的进行真的至关重要!参考文献1梁健武 ,微机原理与接口技术 中国铁道出版社附

25、录:电子万年历软件代码及注释CODE SEGMENTASSUME CS:CODEINTPORT1 EQU 0020HINTPORT2 EQU 0021HINTQ3 EQU INTERUPT3INTQ7 EQU INTERUPT7DATAPORT EQU 00DEHCONTPORT EQU 00DFHPORT0 EQU 00DEH ;8279 DATA PORTPORT1 EQU 00DFH ;8279 CTRL PORTDATA1 EQU 0500HDATA2 EQU 0508HDATA3 EQU 0518HDATA4 EQU 0520HDATA5 EQU 0528HDATA6 EQU 052

26、9HDATA7 EQU 052AHDATA8 EQU 052BHDATA9 EQU 052CHDATA10 EQU 052EHDATA11 EQU 0530HDATA12 EQU 0531HDATA13 EQU 0532HDATA21 EQU 0533HDATA22 EQU 0534HDATA23 EQU 0535HDATA31 EQU 0536HDATA32 EQU 0537HDATA33 EQU 0538HCTRL EQU 0073HPORTB EQU 0071HCNT DB 06HTEMP DB 00HBUFER DB 0HKEYDATA EQU 0400H ORG 1800HSTART

27、:MOV AX,0H MOV DS,AXMOV BX,0HMOV BYTE PTR DS:BX+KEYDATA,23HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,2BHADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,33HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,3BHADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,22HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,2AHADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,32HA

28、DD BX,01HMOV BYTE PTR DS:BX+KEYDATA,3AHADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,21HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,29HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,31HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,39HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,20HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,28HADD BX,01HMOV BYTE PT

29、R DS:BX+KEYDATA,30HADD BX,01HMOV BYTE PTR DS:BX+KEYDATA,38HJMP TINT1TINT1: CLICALL FORMAT MOV DX,CONTPORTMOV AL,00HOUT DX,AL ;KEYBORD DISPLY MODEMOV AL,2AHOUT DX,AL ;8279 CLOCKMOV AL,0d0hOUT DX,AL ;8279 CLEARMOV AL,90hOUT DX,AL ;READ FIFO RAM COMMANDTEST1:IN AL,DX AND AL,80H JNZ TEST1 MOV DX,004BH ;

30、8253计数器2 MOV AL,0B6H OUT DX,AL MOV DX,004AH MOV AL,50H OUT DX,AL MOV AL,0C3H OUT DX,AL MOV DX,004BH ;8253计数器0 MOV AL,36H ;00110110 OUT DX,AL MOV DX,0048H MOV AL,00H OUT DX,AL MOV AL,02H OUT DX,AL MOV SI,DATA3 CALL LEDDISP MOV AX,0H MOV DS,AX CALL WRINTVER MOV AL,13H MOV DX,INTPORT1 OUT DX,AL MOV AL,

31、08H MOV DX,INTPORT2 OUT DX,AL MOV AL,0BH OUT DX,AL MOV AL,0F7H OUT DX,AL;*8255初始化* MOV DX,CTRL ;0073H 控制端口 MOV AL,90H ;A方式0 C上半输出 B方式0输出 C下半输出 OUT DX,ALWAITING: STI CALL CHOSE JMP WAITINGWRINTVER: MOV AX,0H MOV ES,AX MOV DI,002CH LEA AX,INTQ3 STOSW MOV AX,CS STOSW MOV DI,003CH LEA AX,INTQ7 STOSW MOV

32、 AX,CS STOSW RETINTERUPT3:CLI PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DS CMP BYTE PTR DS:DATA22,00H JNZ JUMP1 CMP BYTE PTR DS:DATA23,02H JNC CALLRINGJUMP1: CALL NORING JMP JUMP2CALLRING: CALL RINGJUMP2: MOV AL,DS:DATA6 INC AL MOV DS:DATA6,AL CMP AL,14H JC PLAY MOV BYTE PTR DS:DATA6,00H MOV SI,D

33、ATA4 CALL LEDDISP CALL NEWTIME CALL CONVERSALLPLAY: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL STI POP DS POP SI POP AX POP BX POP CX POP DX IRETINTERUPT7: CLI PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DS MOV SI,DATA1 CALL LEDDISP MOV AL,20H MOV DX,INTPORT1 OUT DX,AL POP DS POP SI POP AX POP BX POP CX POP DX IRETLEDDISP: MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV CX,08H MOV BYTE PTR DS:DATA5,07HLED1: MOV BL,DS:DATA5 MOV BH,0H MOV AL,CS:BX+SI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁