微机原理课程设计-电子钟的设计.doc
《微机原理课程设计-电子钟的设计.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计-电子钟的设计.doc(29页珍藏版)》请在三一文库上搜索。
1、摘要数字闹钟1、通过8253定时器产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。2、将当前时分秒在七段LED显示器上显示(如:091132)。3、可设置闹钟的时间当前值(对准时间),设置闹铃时间,闹铃功能的关闭和开放.关键词:数字闹钟,8253定时器,LED显示器,8255A并行口目 录1.实验线路12.设计思想23.功能流程图44.结果讨论85.源程序以及注释9参考文献26271.实验线路实验线路如图1所示。图1 实验线路图2.设计思想一、概述:程序主体设计:本程序共有分端口设置模块,计数模块,显示模块等几个模块。C-DISPLAY 12, 45, 37 -将闹钟
2、设置为12:45: 37;G-GO AHEAD-开中断,闹钟恢复走时D-STOP TO DISPLAY-关中断,闹钟停止走时E-EXIT TO DOS-返回DOSM-SET THE CLOCK -设置闹铃时间F-OPEN THE CLOCK-设置闹钟功能为开B-CLOSE THE CLOCK-设置闹钟功能为关P-POSITION THE BENINNING DATE-设置闹钟的时间二、计时器软件的设计:主程序中,要对各个用到的芯片进行初始化,目的是使其每20豪秒产生一次方波。8253A的定时器输出与8259A的IR2连接,计数器0工作在模式3(方波发生器),计数值采用二进制格式,输出作为计数器
3、1的输入, 计数器1工作在模式2(分频器),计数值采用二进制格式,输出到总线IRQ2,向CPU发送时钟中断信号,根据两个计数器的设置,系统每隔20毫秒便由8253A产生一次中断请求,即每隔20豪秒执行一次中断处理程序。这个方法将与时间相关的两个模块即显示模块和计时模块放在中断处理程序中,这样,就保证了数字显示的稳定,中断处理程序完成计时功能要依靠两个方面,因为中断处理程序是每20豪秒执行一次,但计时并不是以20豪秒为单位进行的,而是以秒为单位进行的,所以,计时功能的实现一方面要利用20毫秒这个基准时间单位,另一方面借助一个计数单位。计数单位的初始值为50,每进行一次中断,便使计数单元的内容减1
4、。每当计数单元从50减为0时,说明已经过了1秒时间。并判断是否有进位,如有则进行修改,实现进位。并在LED上显示。显示部分:本程序显示部分用了6个共阴极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。程序中,用8255A的PA口作为输出,输出扫描信号,PB口作为输入,读进列值。本程序用行扫描法来识别键盘的闭合键。先使第0行接地,其余行为高电平,然后看第0行是否有
5、键闭合,这是通过检查列线电位来实现的,即在第0行接地时看是否有哪条列线变成低电平。如果有某条列线变为低电平,则表示第0行和此列线位置上的键被按下如果没有,则说明第0行上没有键被按下。此后,再将第1行接地,然后检测列线中是否有变为低电平的线。如此往下逐行扫描,直到最后一行。为消除键的抖动,所以调用延迟程序,然后再判断具体按下的到底是哪个键,如果得到的是FFH,则程序在循环中等待。计数部分:见流程图时间设定模块对于输入的检测,若超出范围,则对其置F-,3.功能流程图一、程序主流程控制图(如图2所示)D键?P键?M键?F键?B键?E键?NNNNNNYYYYYYG键?NYC键?Y显示初始化时间开始计时
6、停止计时开启闹铃设置闹铃设置时间关闭闹铃退出回到DOSN图2 程序主流程控制图二、中断服务子程序流程图(如图3所示)收到50次中断?进位处理部分(下)闹铃开?计数值减一(初值为50)YN闹铃时间到?中断进入YYN响铃退出中断服务图3 中断服务子程序流程图图三、进位处理部分流程图(如图4所示)开始秒钟是否到59(此部分的转换从略)秒加1秒十位和各位赋值为0 0NY分钟是否到59(此部分的转换从略)分钟加1NY分钟十位和各位赋值为0 0分钟是否到23(此部分的转换从略)小时加1NY小时十位和各位赋值为0 0闹铃判断响铃部分图4进位处理部分流程图4.结果讨论本程序共有分端口设置模块,计数模块,显示模
7、块等几个模块。经过调试,本程序可以实现题目的要求。时、分、秒都分两位。个位满十后就向前进一位。分秒的十位满六十后也向前进一位。显示小时两位在满二十四后重新计数。在置数时,使用者可置任意值,但如果有某位超过计数值,则在LED显示器上输出出错信息。程序中设置压C键为LED显示器清0,压E键为退出,压D键为计数暂停,压P键为设置LED显示器初始值。应该注意的是,程序中设定的键值为实验台上的小键盘的键值,并非计算机键盘。经测试,程序中设置的功能全都可以良好运行。本程序参照实验室电脑中16BIT文件中的kl.asm编制定时器/计数器8253计数初值的设定。下面对几个重点部分的调试过程和遇到的问题作一定的
8、讨论:修改后的中断服务子程序(改变进位的条件)(1)其中进位的条件判断以及后面的闹铃的程序段位置的设置都与程序结果有很大的关系.进位判断特别要注意仔细,编程实现前应该画个流程图,直接再源文件上改不但不能节省时间,反而更加浪费时间.(2)此中断服务子程序的类型设置为FAR调用,这里要特别注意.因为相对于中断发生时的运行状态,此程序段与之不在同一代码段,所以应该定义为FAR类型.这样产生了另外一个问题,在此程序段中若想调用此CODE段中以他过程,则那个过程也应该被定义为FAR调用,当然可以简单的通过不使用过程调用解决.以解决此中断子程序过程和其他普通过程对对应过程的调用冲突.5.源程序以及注释;此
9、程序实现数字闹钟的设定,闹铃时间得设定,闹铃功能的开关;试验硬件平台是TPC-1型试验培训系统;386以上微机适用;纯DOS下才能使用;TASM4.1或以上编译;*;* 键盘显示 8255LED *;*; IO_PLX_DEVICE_ID EQU 05406H;TPC卡设备ID IO_PLX_VENDOR_IDEQU 010B5H;TPC卡厂商ID IO_PLX_SUB_ID EQU 0905410B5H;TPC卡子设备及厂商ID PA55 EQU 218H-200H;8255端口地址 PB55 EQU 219H-200H P55CTL EQU 21BH-200H PORTSEG EQU 21
10、1H-200H;LED端口地址 PORTBIT EQU 210H-200H TIM_CTL EQU 203H-200H;8253端口地址 TIMER0 EQU 200H-200H TIMER1 EQU 201H-200H MODE03 EQU 36H ;0011-0111 MODE12 EQU 74H ;0111-0101DATA SEGMENT CSREGDW? IPREGDW? ;旧中断向量保存空间 IO_9054BASE_ADDRESSDB 4 DUP(0);TPC卡PCI接口芯片I/O基地址暂存空间 IO_BASE_ADDRESS DB 4 DUP(0);TPC卡I/O基地址暂存空间
11、INTERRUPT_LINE DB 2 DUP(0);TPC卡中断号暂存空间 PCICARDNOTFINDDB 0DH,0AH,TPC PCI CARD NOT FIND OR ADDRESS/INTERRUPT ERROR !,0DH,0AH,$ IO9054BASEADDRESSDB 0DH,0AH,TPC PCI CARD 9054 CHIP I/O BASE ADDRESS : ,$ IOBASEADDRESSDB 0DH,0AH,TPC PCI CARD I/O BASE ADDRESS : ,$ INTNUMBER DB 0DH,0AH,TPC PCI CARD INTERRUPT
12、 LINE : ,$ ENTER_RETURN DB 0DH,0AH,$ MESS DB 8253A TIMER0 IN MODE3! COUNT=0200H,0AH,0DH DB 8253A TIMER1 IN MODE2! COUNT=0AH,0AH,0DH,$ MESS1 DB I AM RINGING,0AH,0DH,$ IRQ_VECTDB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH,70H,71H,72H,73H,74H,75H,76H,77H;新的中断向量,中断0-7的向量为:08H-0FH,中断8-15的向量为:70H-77H IRQ_MASK_0_7_TA
13、BLEDB 011111110B,011111101B,011111011B,011110111BDB 011101111B,011011111B,010111111B,001111111BDB 011111011B,011111011B,011111011B,011111011BDB 011111011B,011111011B,011111011B,011111011B;新的中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零 IRQ_MASK_8_15_TABLEDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 011111110B,0
14、11111101B,011111011B,011110111BDB 011101111B,011011111B,010111111B,001111111B;新的中断掩码,中断0-7时全一,中断8-15时从低至高相应位为零COUNT DB 15CTIME DB 00H,00H,00H,00H,00H,00HCLOCK DB 0AH,0AH,0AH,0AH,0AH,0AHBUF DB 00H,00H,00H,00H,00H,00H;*MYBELL DB 00H;*OFF*INITIALIZEMONTH3 DB 0DAY3 DB 0CHAR1 DB ?INTMASK DB ?CONST1 DW ?L
15、ED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,79H,00HTABLE1 DW 0101H,0201H,0401H,0801H,1001H,2001H,4001H,8001H DW 0102H,0202H,0402H,0802H,1002H,2002H,4002H,8002H DW 0104H,0204H,0404H,0804H,1004H,2004H,4004H,8004HCHAR DB CDEFBA9845673210 RPMG;MAXDAY DB 00H,1FH,1CH,1FH,1EH,1FH,1EH,1FH,1FH,1EH,1FH,
16、1EH,1FHMES DB IN SMALL KEYRORD,0AH,0DH DB C-DISPLAY 12, 45, 37 ; G-GO AHEAD,0AH,0DH DB D-STOP TO DISPLAY ; E-EXIT TO DOS,0AH,0DH DB M-SET THE CLOCK ; F-OPEN THE CLOCK,0AH,0DH DB B-CLOSE THE CLOCK,0AH,0DH DB P-POSITION THE BENINNING DATE,0AH,0DH,$DATA ENDSSTACKS SEGMENTDB 100 DUP (?)STA DW 512 DUP (?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计 电子钟 设计
链接地址:https://www.31doc.com/p-3268109.html