微机课程设计报告-数字时钟设计_第1页
微机课程设计报告-数字时钟设计_第2页
微机课程设计报告-数字时钟设计_第3页
微机课程设计报告-数字时钟设计_第4页
微机课程设计报告-数字时钟设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、班级:组长:组员:完成日期: 指导老师:目录1概述1.1设计目的31.2设计要求42概要设计42.1设计环境与器材42.2设计思想52.3电路原理与主要心片功能52. 3. 1 8253主要功能62. 3. 28255主要功能72. 3. 38259主耍功能82.3.4 8279主要功能103详细设计113.1显示模块的实现123. 2转换为段码模块133.3修改时间模快的实现143.4中段计时模块的实现173.5主程序流程图174接口电路逻辑图184. 1方案一实验连接线路图204.2方案二实验连接线路图215实现功能与操作说明225. 1功能225.2操作说明226调试记录及误差分析226

2、. 1调试结果记录226.2误差分析237课程设计工作日志238总结体会249附录(程序清单)25、概述1.1设计目的1)题目:设计数字时钟:实时显示时间于lh)数码管,并可以修改时间;2)设计0的:通过一个学期对微机原理与接口技术学习,我们掌握的知识还停留在理 论的上。但是这是一门实践性较强的课程,让我们在学完该课程之后,进行一次 课程设计,使我们将课堂所学的知识和实践有机结合起来,初步掌握接口电路设 计的方法,提高我们学生的分析和解决实际问题的能力。通过设计实践,还培养了我们查阅专业资料,工具书或参考书,了解有关工业 标准,掌握现代设计手段和软件工其,并能以图纸和说明书表达设计思想和结果

3、的能力。1.2设计要求本次课程设计的内容为电子时钟的设计与实现,利用8253可编程定时计数 器,8259屮断控制器,8255可编程并行接门芯片和8279让六个七段数码管显示 吋分秒设计一个电子钟的电路。利用定吋器从0开始进行计时,将计吋的结果可 以分别通过软件延迟和硬件中断两种方式显示在数码管上。每隔1秒,秒钟计时 一次,到60秒,分钟加1,秒钟清零;到60分小时加1,分钟清零;到24时时 小吋、分钟、秒钟都清零,重新开始计时,这时记做是一天24吋。在本次做的 数字时钟中我小组还做出了进行修改时间和在到整点时进行声音提示功能。总体a容:设计一数字电子时钟,能在数码管上显示时间并计时。*接口设计

4、:根据题目和所用的接口电路芯片设计出完整的接口电路,并在 实验系统上完成电路的连接和调试通过.*程序设计:要求両出程序框图,设计出全部程序并给出程序设计说明和程序 注释。*课程设计报告:正文字数约4000字以上(不包含程序淸单),a容主要有总体设计方案,工作和组成原理(框图)或设计说明,采用的技术路线,接口电路设 计,程序设计(程序框图和程序清单及注释),对设计屮所存在的问题和不足进行 分析和总结。*前期完成的实验有:8259a中断控制器实验,8253定时计数器实验,8255 并行接口实验。二、概要设计2.1设计环境与器材(1) 电脑一台功能:用于对程序的进行编译测试等,同时还需要对实验设备进

5、行控制,提 供整个程序的运行平台,并il收集和释放硬件信号,实现程序功能。(2) 实验箱一台功能:此设备必须能提供我们小组做的数字时钟所需的8253、8255、8259、 8279和显示灯等必要芯片。并且能通过接受pc机传来的信息,显示出相应的功 能。以支持电子时钟的实现。(3) 导线若干条功能:用于电路和芯片之间的连接。2.2设计思想这次的课程设计数字时钟我小组选用丫两种方案完成,这边我们主要讲第二 种方案的设计思想,第二种方案是通过硬件中断的方法来实现。该方案主要是由 以下模块组成:一. 将时分秒转换为段码;二. 显示时分秒模块;三. 屮断计时模块;四. 修改时间模块;在整个电子钟的设计中

6、,我们使用8253用于定时功能,由于8259的中断只 能是电平与边缘触发,我们这边选择用的是边缘触发。我们选择8253初始化控 制字为35h,工作在方式2,在每次的计数初值的n-1吋产生一个脉冲。在clko 引脚接入1miiz的时钟周期,而将计数初值通过两个计数器写为1000000时,继 而在0ut1会每is产生一个脉冲,然后将输出的脉冲送到8259的1r0产生中断, 产生的中断信号去自动修改秒针,根据秒钟的判断再对时和分进行计数。电子时 钟的显示格式hh.丽.ss由左到右分别为时、分、秒,六个数码管动态显示时、 分、秒的当前值。最大记吋23:59:59超过这个吋间吋分秒位都清零重新开始。对于

7、本次实验的一个功能:修改时间功能,该功能主要通过设置8255的工 作方式为a 口输入,然后将8个开关分别接a 口端,通过读入8个开关的状态, 判断要进行的修改操作。木实验我们设置8个开关所对应的功能:k0: 0表示不修改时间,拨到1状态表示要进行修改时间操作;k1:拨到1状态可以实现时钟全部清零的功能;k2:对数字钟的秒进行加操作;k3:对数字钟的秒进行减操作;k4:对数字钟的分进行加操作;k5:对数字钟的分进行减操作;k6:对数字钟的时进行加操作;k7:对数字钟的时进行减操作。对于本实验的另一个功能就是在我们在程序的8259里边调用中断函数时进 行判断时、分、秒有没超过最大值时,如果到了整点

8、即当分钟达到60min要执行 吋加1时,系统会通过滴 一声来提示。该功能主要是通过8253的计数器2, 提供一个声音频率,再对8253初始化一个工作方式,通过计数器2的out2输入 该频率的声音到喇叭。2.3电路原理与主要心片功能本次设计实现的电子时钟的功能,电子时钟主要采用可编程并行接口芯片 8255a、中断控制器2859a、定时/计数器8253、led数码显示管和两个按键来设 置一个控制灯的开关来组合设计。其屮主要用8259a的ir7屮断服务程序完成秒、分、时的运算即计时功能, tr6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲作为tr7 的中断请求信号。8255a负责

9、将内存里的时位、分位和秒位数值输出到数码管。 8279a用来控制显示器显示时钟。按键k1+和k2+分别作为ir2和ir6的屮断请 求信号。按键k1+启动/关闭对时功能,它决定是否屏蔽tr7和tr6中断源。2.3.1 8253主要功能1、主要功能:(1)具有三个独立的16位减法计数器;(2)每个计数器可按二进制或十进制计数;(3)每个计数器的计数速率可达2mhz;(4) 每个计数器有六种工作方式;(5) 全部输入输岀都与ttl电平兼容。 2、8253内部结构:oateo3、8253的控制字:控制字的作用是决定8253各计数器工作方式。控制字寄存器实际上是3个,分别控制三个计数器,但它们的端口地址

10、相 同。d7、d6 :计数器选择00 -计数器0;01 -计数器110 -计数器2;11 -非法d5、d4 :读写格式00 计数器锁存;使当前计数值锁存,以后再读取;因计数器为16位, 而数据线8位,故需锁存,分次读取。01 只读写计数器的低8位,高8位自动为0;10 -只读写计数器高8位,低8位自动为0;11 -先读写计数器低8位,再读写高8位。d3、d2、d1 :计数器工作方式000 方式0;001 方式1;x10 方式2; xii 方式3;100 一方式4;101 方式5;do :计数数制,决定计数器按二进制计数或bcd码(十进制)计数。 0 二进制;1 一 bcd码(十进制)2.3.2

11、 8255主要功能8255可编程外围接门芯片是intel公司生产的通用并行i/o接门芯片,cs10pa7-pa010pc7-pc410pc3-pc010pb7-pb0cn(低4位)cn(位)a组 控制据线冲肖数总缓rpa3pa2 pa1paordcs gnda1a0pc7pc6pc5pc4 pco pc1 pc2pc3pbo pb1 pb20123 4 567890 19* 3456 7 891111111111?-5528o987654 3 1-1o9s7654 3 7-1 4 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2pa4 pa5 pa6pa7wrrese

12、tdod1d2d3d4d5d6 d7 vcc pb7pb6pb5 pb4 pb3它具有a、b、c三个并行接门,并行接门是以数据的字节为单位与i/o设 备或被控制对象之间传递信息。cpu和接口之间的数据传送总是并行的,即可 以同时传递8位、16位、32位等。用+5v单电源供电,能在以下三种方式下 丁*作:方式0基本输入/出方式、方式1 一选通输入/出方式、方式2双向选 通工作方式。8255的内部结构及引脚如图2.1所示:图2.1内部结构及引脚8255工作方式控制字和c 口按位置位/复位控制字格式如图3-7-2所示:d7d6 | d5d4 | d3d2 | d1 | d0cu低4位 0输岀 1输入

13、d7d6 | d5d4 | d3 | d2d1 | do不用s位复位 0反位1bdcu的位选择位 d3d2d1 0 0 0 0 1 0 0 1 2 0 103 0 114 10 05 10 16 11071110输出 1输入方式选择 0 7/式 01方式1cl1尚4位 0输出 1输入方式选择 00方式0 01方式1 lx 方jt2(a)工作方式控制字(b) c口按位置位/复位控制字阁2. 2置位/复位控制字格式2.3.3 8259主要功能中断控制器8259a是intel公司专为控制优先级中断而设计开发的芯片。 它将屮断源优先级排队、辨别屮断源以及提供屮断矢量的电路集于一片屮,因 此无需附加任何

14、电路,只需对8259a进行编程,就可以管理8级中断,并选择 优先模式和中断请求方式,即中断结构可以由用广编程来设定。同时,在不需 增加其他电路的情况下,通过多片8259a的级连,能构成多达64级的矢量中断 系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否 响应和响应哪一级屮断,3)响应屮断时,向cpu传送屮断类型号。8259a的 内部结构和引脚如图2. 3所示:d7-d0控制逻讲数据总线 缓冲器rd wr a0 cs casocas1cas2sp.en读/写电路级联缓冲器/比较器l屮断服务器(isr)优先级分析器器irr0 19-34567 iririr.iririri

15、riricv1初始化icw2>命令寄icw3存器组icw4/内部总线|中断wife器(imr)l 0cw1 >0cw20cw3 /操作命令>寄存器组srd765 4 3 21oo1d cwriddddddddssne cc g0 12 3 4 12 3 4567891111187654 3 9-1098765 2 2 2 2 2 2 2 2 2 11111vccao:inta ir7ir6ir5ir4ir3ir2ir1ir0ixt sptn cas2图2. 3内部结构和引脚8259a的命令共有7个,一类是初始化命令字,另一类是操作命令。8259a 的编程就是根据应用需要将初始

16、化命令字icw1-icw4和操作命令字ocw1-ocw3 分别写入初始化命令寄存器组和操作命令寄存器组。ocw1-ocw3各命令字格式如图2.4所示,其中ocw1用于设置中断屏蔽操 作字,ocw2用于设置优先级循环方式和中断结束方式的操作命令字,ocw3用于 设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的 渎出命令。ox:无效0:不査湘0x:尤效10:夂位特殊w蔽1:允汴査询10:可读1rr11:没迚特殊w蔽11: nj iisr图 2. 4 0cw1-0cw3各命令字格a01)71)61)51)4d3d21)1wedm7| m6 |m5 |m4 | m3m2i ml

17、im0 |ao1)71>61)5d4d3d2d1do0r1 sl |eoi |0 1 0l21 ii 1l0 |l|111001般 eo1中断结束汆令银码对应1roil特殊eo1的沿低优先权101湖环优先权的一般koi100在门动eoi下h骷环优先权ft动袖环000在flzi/jeol卜u位骷坏优先权111綱、优先权的特殊eo1兪令110设说优先权特殊彻坏010x效ao1)71)61)5i>4d3d21)1do00esmm |smn10 | 1rrrisocw2ocw32.3.4 8279主要功能8279是可编程的键盘、显示接门芯片。它既具有按键处理功能,又具有自 动显示功能,在单

18、片机系统中应用很广泛。8279内部有键盘ftfo (先进先出堆 栈)/传感器,双重功能的8*8=64b ram,键盘控制部分可控制8*8=64个按键或 8相阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示ram 容量为16*8,即显示器最大配置可达16位led数码显示。rl2 cs-140 vccrl3 c239rl1clk c338 rloirq c437cntl/srl4 c536 shiftrl5 c635 sl3rl6 c734 sl2rl7 c833sl1rst匚932 slord c1031 outbowr c1130 0utb1dbo c1229 0utb2db1

19、c1328 0utb3db2匚1427 outaodb3匚1526 0uta1db4 c1625 0uta2db5 c1724 outa3db6 c1823 bddb7 c1922 csgnd匚2021 ao引脚图d7d6d5d4d3d2d1do>命令类型命令内容如上图,8279的一条命令由两大部分组成,一部分表征命令类型,为命令 特征位,由命令寄存器高3位d7d5决定。d7d5三位的状态可组合出8种 形式,对应8类命令。另一部分为命令的具体内容,由d4-do决定。每种特征 所代表的命令如表3. 3所示:表8279命令特征表d7 d6 d5代表的命令类型0 0 0键盘/妞示命令0 0 1

20、时钟编程命令0 1 0读fifo/传感器ram命令0 1 1读示器ram命令1 0 0写显示命令1 0 1m示禁止/熄灭命令1 1 0沿除命令1 1 1结束屮断/出错方式设s命令d4、d3两位用来设定4种显示方式,d2-d0三位用以设定8种键盘/显示扫描方式, 分别如表3. 4和表3. 5所示。表3. 4显示方式d4 d3显示方式0 08个字符显示,左端入u方式0 116个字符aa示,左端入u方式1 08个字符显示,右端入口方式1 116个字符砧示,右端入u方式表3. 5键盘/显示扫描方式d2 di d0键盘、显示扫描方式0 0 0编码扫描键盘,双键锁定0 0 1译码扫描键盘,双键锁定0 1

21、0编码扫描键盘,n键轮回0 1 1译码扫描键盘,n键轮回1 0 0编码扫描传感器矩阵1 0 1译码扫描传感器矩阵1 1 0选通输入,编码显示扫描1 1 1选通输入,译码显示扫描三、详细设计3.1显示模块的实现使用8279控制,用数码管的显示功能来设计,显示部分用八只led为显示 管,这些led发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。 通过在这八只发光二极管的阳极加+5v或0v的电压使不同的二极管发光,形成 不同的字符和数字。电子时钟用到的是0-9十个数字,它们所对应的字符表依次 是 3fh、 06h、 5bh、 4fh、 66h、 6dh、 7dh、 07h、 7fh、 6f

22、h。该模块主要是将运算模块和对时模块运算出来并存放在内存单元里的十六 进制时位、分位和秒位数值转化为十进制,并通过八只数码管显示出来,其中实 验室中提供给我们的实验箱因为数码管只有六个,此模块实现的硬件是使用实验 箱屮的led单元,采用软件译码,即在程序屮设置一个段选码表。cpu直接往lh) 输出八段代码,省去了硬件译码器。显示的基木代码如下:mov ex, 8;逐个清零;清空显示:缓冲区dis屮存放有八位数码管所要显示的值xz:mov dx,b79mov al,0 out dx, al loop xz mov ex, 8 mov dx,b79 lea si,display:mov al, s

23、i out dx, alinc siloop play流程图:3.2转换为段码模块流程图:开始开始3.3修改时间模块利用8个拨码开关,每拨动一次开关,对应的时钟、分钟、秒钟做相应的修 改橾作。流程图:判断时是否 大于等于243. 4中段计时模块流程图:开始3. 5主程序流程图开始、接口电路逻辑图4.1方案一实验连接线路8279的接线如t:cs79 接地址 208-20f;8255的接线如下:cs55 接地址 200-207,pa0-pa7分別接相应的开关k0-k7;连线阁见纸质报告附表。4.2方案二实验连接线路图8253的接线如下:clk0和clk2都接1m脉冲,outo接clk1, out1

24、接8259的iro, out2接音乐发生器 cateo、gate 1 和 gate2 都接+5v;cs53 接地址 218-21f8259的接线如下:cs59 接地址 210-217;8279的接线如下.cs79 接地址 208-20f;8255的接线如下:cs55 接地址 200-207,pa0-pa7分别接相应的开关k0-k7;连线图见纸质报告附表。五、系统功能与操作说明5.1功能系统的功能主要是实现一下几个方面的内容:1)在程序运行前给时间的时、分、秒分别赋个初值,程序将时间存入内存屮, 然后一运行程序时就会显示初始化的时间;2)程序设计了通过8253定时(is为周期产生一个方波)、82

25、59提供中断来使秒 钟加1,使能具有时钟计时功能;3)通过8255芯片的a 口接到八个拨动开关上,设计了修改时间的操作功能;4)先在屮断程序那边进行秒加1,并对秒、分、时判断屮通过判断分是否达 到最大值即60分钟,如果是,则说明到整时了,再通过8253的计数器2,输出 预先设定好的一定频率的声音,作为该系统的一个整点报时的功能;5)我们通过右数起开关2的状态来决定是否要开始设定一个闹钟时间,拨到1 状态表示进入设置闹钟状态,此吋第38个开关分别对应闹钟的时、分、秒的修改。当时间运行到设定的闹钟时间时也是通过8253的计数器2,输出预先设定 好的一定频率的声音提示闹钟时间到了,这就是闹钟的功能。

26、5.2操作说明这边的操作说明主耍是针对在运行程序后耍进行修改时间时的操作,修改主 要是由八个开关来控制。从右数起,第一个拨到丨状态表示当前可以执行修 改时间的操作了;第二个拨到1表示对时钟进行闹钟设定;第三个表示对秒 钟执行加操作;第四个表示对秒钟执行减操作;第五个表示对秒钟执行加操作; 第四个表示对秒钟执行减操作;第六个表示对分钟执行加操作;第四个表示对分 钟执行减操作;第七个表示对时钟执行加操作;第八个表示对时钟执行减操作; 确认修改后即可通过将第一个开关拨h 0状态,让数字时钟继续进行计时。 对于闹钟功能,开关2的状态来决定是否要开始设定一个闹钟时间,拨到1 状态表示进入设置闹钟状态,此

27、吋第38个开关分别对应闹钟的时、分、秒的修 改。当时间运行到设定的闹钟时间时也是通过8253的计数器2,输出预先设定 好的一定频率的声音提示闹钟时间到了。六、调试记录及误差分析6. 1调试结果记录a, 之前调试程序时,使用了 jnz,jz等条件转移指令,出现了错误提示:跳转 的字节数超出范围改进方法:使用范围更大的jmp无条件转移指令b, 实验调试过程屮,我们发现屮断程序没有运行,在检查完程序后,可以确定 程序没有错误,之后我们猜测可能是8259芯片的问题,我们换了台实验机, 全速运行之后,秒钟就可以跳动了。调试结果是硬件问题,问题已解决。6.2误差分析时钟:00: 00: 05: 00秒表:

28、00: 04: 59: 60相羞:0.4秒时钟:00: 00: 05: 00秒表:00: 05: 00: 10相差:0.1秒时钟:00: 00: 05: 00秒表:00: 05: 00: 13相差:0.13秒时钟:00: 00: 05: 00秒表:00: 04: 59: 87相差:0.13秒时钟:00: 00: 05: 00误差分析:秒表:00: 04: 59: 76相差:0.24秒用秒表对时钟进行误差分析:对数字时钟五分钟的走动进行五次时间误差测试,结果为:我们运用了两个方案,这是用硬件屮断来实现时钟的,会比用软件屮断的來 得准确,每五分钟的误差,差不多都是差零点几,去掉人为的不同步原因,硬

29、件 中断是比较准确的。t= (0.4+0.1+0.13+0.13+0.24) /5=0.18s,即平均每五分钟差 0.18 秒。则一小时约慢了 2.16秒。4 3 3 4 1 1 1 0oo.o.o.o. 秒秒秒秒秒七、课程设计工作日志6月16号确定课题,寻找资料。通过对课题的部分研宄,分组讨论,寻找网络的资料,得出对时钟信息的一些 看法和意见组内讨论主要芯片。组员复习芯片用法和功能。6月17号讨论分组,确定了两个方案,分别讨论两个方案。1. 运用8253控制时钟信息的运行,并且运用键盘上的按键来控制时间的调整和 初始化。2. 运用软件控制时钟信息的运行,并且运用键盘上的按键来控制时间的调整。

30、 主要运用的芯片进行逐步的接线和调试6月20号第一组:运用8253控制调试出1秒中发出一个信号并且运用到时钟上,并且 査询8279的具体使用方法第二组:查询资料得出运用软件得出:软件控制需要得到实验箱的单品振。向 老师了解到单晶振之后进行编程和调试。同时发现软件控制需要占用cpu即用 循环的次数来控制时间这样使得cpu负荷高。6月21号两组得出意见运用开关来进行调节,不需要运用到键盘控制。第一组:运用8253和8255的a 口和b 口接入led可以得出led上的控制实 现一秒改变一个数字第二组:运用8279和8255的控制实现对led灯的控制。查阅8279的led灯现 实功能的代码并学习。6月

31、22号:两组分别调试出用开关接8255a 口通过开关的改变控制寄存器中的数字加 减。第一组出现问题:8253连接8255 b u通过对b u输岀的数据判断是否有脉冲 到达,但是屏幕显示出现错误。询问老师得出:8253可能对屏幕有所影响。所 以修改方案。用8259中断控制脉冲6月23号两组整合方案:确定最终方案:8253控制时钟(可以改变为软件控制第二组 做软件)用8259中断控制脉冲发出,运用8255控制开关端口,运用8279实现 对led灯的显示。软件方面两组整合两组的各个函数,通过主程序调用函数。实现对钟进行调整和钟得加减,但是进位出现问题。有时候进位加不上去。6月24号对进位进行调整。记

32、录数据和运行。实现基本功能。进行程序的误差数据进行 记录,分析发现软件控制误差比较大硬件控制误差较小。一组添加新功能:整点时候响一声,运用8253的第三个寄存器,控制频率,对 喇叭的声音控制,通过循环控制喇叭的时间。一小时嘟一声。6月27号在基本功能之前完成的情况下,我们今天想到能不能继续添加一个简易的闹钟 的功能,我们一开始只是想通过设定一个闹钟时间,然后时间到那一点时通过一 个声音提示一下,表示闹钟时间到。通过不断的讨论与调试也基木完成了这一项 功能,就是还有些不完善就是了,比如到点吋播放一段音乐,还冇就是在设定闹 钟时也会出现一些小问题,因为时间问题,也没能对它做进一步完善了。今天还有个

33、任务就是课程设计报告的完成,我们小组也是通过分任务的方式给 每个成员分配了一个任务完成。6月29号课程设计答辩。八、总结体会在这个课程设计的过程中得到了张国安老师的悉心指导,在设计过程中我们 碰到的问题张老师为我们小组指点迷津,帮助我们幵拓了解决问题思路。这次课 程设计我们小组五个人,在一周多的设计期间,我们每个组员都发挥了各自的作 用,在该数字中设计中我们要实现的基木任务有时间转化为段码、显示时间、计 时模块、8259的中断模块等,还有在调试过程中进行一些结果的记录,我们组 讼对每个组员分配的这些任务大家都积极主动的去完成。当这些基木功能都实现 时我们又集中在一起讨论如何对功能进行完善,我们

34、想出了进行修改时间,后面 修改时间完成后我们又想到可以参考其他小组做的音乐播放程序来设置一个可 以整点提示的功能。后来又考虑是否要做一个能实现闹钟的数字钟,但由于时间 问题,这个功能没能做的完善,当然简单的闹钟功能我们还是可以实现的,只不 过还需一定时间去继续完善就是了,我想这问题也是有待我们以后的学习中去慢 慢总结的。时钟最重要的是精度问题,一点误差是难免的,当然我们小组也通过了几天 的讨论、调试来尽量减少误差。像我们一开始做的方案一,是通过软件延迟的方 式实现数字钟,后来老师跟我们说软件延迟误差会比较大,老师建议我们学会用 硬件实现。所以我们通过翻阅资料、讨论研宄,最终成功实现方案二,通过

35、8259 中断来实现计时,达到了精度比较高的要求。最后呢,就是课程实验报告的完成了,我们给各自分配一个任务,每个人写 一块:开头的设计方案与最后的总结体会流程阁连线阁调试记录工作日记通过这次课程设计我们小组成员的合作,我们明白了团队协作的力量,单靠 一个人的力量是不行的。每个人都有自己的想法,很多问题只有通过大家的讨论, 说出各自的想法,冰能更快地发现问题、解决问题。九、附录(程序清单)方案一:z8279 equ 20ahd8279 equ 208h ; 8279 端口 地址ledmod equ 0ledfeq equ 38hcs55a equ 200hcs55b equ 201hcs55 e

36、qu 203hcode segmentassume cs:codestart:mov ax,csmov ds,ax mov dx,z8279 mov al,ledmod;设定8279工作模式out dx,al mov aljedfeq;扫描频率out dx,almain:call readsec;读秒call timercall turn:将时分秒转换为段码call display ;显示时分秒call do8255 jmp mainexitl:mov dx,cs55 mov al,90h out dx,almov al,7fhpml:mov dx,cs55b out dx,al push a

37、x call readsec pop ax ror al,l jmp pml mov ah,4ch int21hled db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh sec db 0 min db 45 hour db 08dis db 8 dup(o);显示缓冲区akou db 0 timer proccmp sec,59 ;59 秒 jae mini add jmp near ptr goonlmini add:inc min mov sec,0 cmp min,59 jae hour 1 add jmp goonlhour 1 add:inc hou

38、rmov min,0cmp hour,24jb goonl ;清时钟mov hour,0mov min,0mov sec,0goonl:rettimer endp ,一readsec proc near ;读秒push ex push bx mov bx,4lpp: mov cx,offffh delayaa:loop delayaa dec bx cmp bx,0 jne ipp inc sec pop bx pop ex retreadsec endpturn proc near ;转换函数 lea si,dis mov bl,10 xor ax,ax ;清零 mov al,sec div

39、blmov si,ah ;秒的个位 inc simov si,al ;秒的十位 add si,3xor ax,ax ;清零 mov almin div blmov si,ah ;分的个位 inc simov si,al ;分的十位 inc sixor ax,ax ;淸零 mov al,hour div blmov si,ah ;时的个位 inc simov si,al ;时的十位 mov ex,8 lea si,dis lea bxjedaskii:;查表转换为段码mov al,sij xlatmov si,al inc si loop askiiretturn endp 一,display

40、proc near ;显示函数mov cx,8xz: mov dx,d8279,逐个清零mov al,0out dx,al ;清空显示loop xzmov ex,8 mov dx,d8279 lea si,display:mov al,si out dx,al inc si loop play retdisplay endp do8255 proc nearpush ax ;8255 初始化 mov dx,cs55mov al,90h ; 8255 控制,a 口输入 out dx,altbl:;调表mov dx,cs55a in al,dx ;读 a 口 mov ah,akou xor ah,

41、almov akou,al ;保存当前a 口状态 test al,olhjz endl ;调表0,结朿shl ah,1adc hour,0shl ah,1sbb hour,0shl ah, 1adc min,0shl ah, 1sbb min,0shl ahjadc sec,0shl ah, 1sbb sec,o call turn call display mov dx,cs55a in al,dx test al,olh jnz tblendl:pop ax retdo8255 endp code endsend start方案二:ledmod equ 0 ledfeq equ 38ha5

42、5 equ 200h b55 equ 20 lh c55 equ 203ha79 equ 20ah b79 equ 208ha59 equ 21 oh b59 equ211ha53 equ218h b53 equ219h c53 equ 21 ah d53 equ 21 bhcode segment assume cs:codestart:climov ax,cs mov ds,axmov dx,a79 mov al,ledmod out dx,al;工作模式 ;扫描频率;8255端口地址;8279端口地址;8259端地址;8253端口地址;设定8279工作模式mov al,ledfeq ou

43、t dx,al ;扫描频率mov dx,c55mov al,8oh out dx,al call d8253init call d8259initstimaincall transation;将时分秒转换为段码clicall show;显示时分秒sticlicall do8255stijmp mainleddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhsecdb56mindb58hour db 22dis db 8 dup(o);显示缓冲区akou db 0d8253init proc near mov dx,d53mov al,36h;控制字out dx,

44、almov ax, 1000;计 0 初值mov dx,a53out dx,almov al,ahout dx,almov dx,d53 mov al,76h out dx,almov dx,b53mov ax, 1000 out dx,al mov al,ah out dx,al retd8253init endp,d8259init procmov al,13h mov dx,a59 out dx,al;icwl;8259初始化mov al,8;icw2mov dx,b59out dx,almov al,l;icw4out dx,almov ax,0push dsmov ds,ax,写8259中断程序的入口地:lea ax,intomov ds:4*8,axmov ax,csmov ds:4*8+2,axin al,dxand al,ofehout dx,almov dx,c55;8255初始化mov al,80hout dx,alpop dsretd8259init endpinto proc nearcliinc seccmp sec,60;60秒jae min i addjmp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论