夜班防睡控制.doc_第1页
夜班防睡控制.doc_第2页
夜班防睡控制.doc_第3页
夜班防睡控制.doc_第4页
夜班防睡控制.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

微机原理与接口技术课程设计 课程设计题目:夜班防睡控制/记录器 姓 名: 学 号: 班 级: 指 导 教 师:微机原理与接口技术课程设计1需求分析和解决问题的思路1.1 需求分析1.1.1 任务分析本次课程设计是对这一功能的模拟实现,根据设计的任务可知,完成本次课程设计需要实现以下三个基本功能和一个扩展功能:1)每5分钟用一次较柔和的声音提醒值班者按复位键,之后计时重新开始。2)若计时到6分钟时,还没人按复位键,则以较急促的声音报警,黄灯闪烁。3)当到15分钟的时候红灯闪烁,并以持续尖锐的声音报警,以LED显示分和秒。4)完成以上三个基本功能后,实现扩展功能,即为控制器设定控制键,使其可以根据用户的选择任意在7分钟、8分钟、9分钟处发出不同频率和强度的报警声,设定7分钟时发出柔和报警声,8分钟时发出急促报警声,9分钟时发出尖锐的报警声。1.1.2 功能分析夜班防睡控制/记录器主要是为了防止值班人员在值夜班时睡觉的问题,通夜班防睡控制/记录器,提醒值勤人员,时刻保持清醒状态,从而保证值勤的工作效率。1.1.3 需要解决的问题1)如何设定三种不同状态的声音?(较柔和、较急促和尖锐的声音)对于这个问题,我是这样解决的:可以通过软件的方法进行实现,首先,需要编写显示三种声音的子程序,以便程序执行过程中分情况进行调用;其次,对于声音的不同状态可以通过控制发声的时间延迟,和发声次数来实现;再次,就需要根据所用的硬件来进行特定的初始化编程了。2)如何实现计时功能?这是本实验的关键部分,对于这个问题我同样用软件的方法进行实现。第一,实验中要显示时间的分和秒,所以需要四位数,在计时的时候还要考虑到进位的问题,即当秒的个位为10时向秒十位进一,当秒为60时就要向分进位,同理对于分的改变也满足上述过程。第二,实现本功能必定需要四位数码显示灯,对于多位数码显示器的亮与灭,我通过段选和位选的方法进行控制,即用位选来选择哪一个显示灯亮,用段选来控制显示器显示的时间值。第三,因为时间的确定决定着发声和灯亮的操作,故一定要设置一个时间数字的缓冲区,以便于对时间的变化进行查询。本次设计中最为重要的是定义段码表,其作用可归纳为。段码表的作用:(1)初始状态时,时间为00:00这时要利用段码表提供的数和位选依次对各个位进行赋值。(此时偏移地址为0)(2)计时时通过改变缓冲区内的数值值,以此作为换码指令的偏移地址,通过换码指令得到应该在数码显示器中显示的时间值。(3)如何设定每秒钟的时间间隔? 这是本实验时间显示的一个要点,每秒的时间间隔应该是可控的,因为为了在实验中较快的验证试验结果的正确性,我们很有必要将每秒的时间间隔设置的尽量短,而在实际的操作过程中我们则要将其设置的与具体时间变化的进度一致。解决这个问题的方法是:利用一个计数值控制每次的时间显示,在编码中可利用循环和跳转来实现,例如,可将每秒显示的时间延迟设置为20,则可将数20存入寄存器中,用循环控制计数递减实现每秒时间上的延迟。1.2 解决问题方法及思路1.2.1 硬件部分1)PC机一台,并行接口8255A一片,可编程定时器/计数器8253一片,七段LED数码显示管,2发光二极管只(红、黄各一只),开关四个,峰鸣器一只,连接线、排线若干。2) 利用峰鸣器发出报警,警报的声音频率和强弱通过发声子程序控制。3) 使不同颜色的发光二极管在特定的时间段按一定规律依次发光。4) 实验箱上的8255作为输入、输出接口,驱动数码显示管显示时间和发光二极管的亮灭。5)实验箱上的8253用以驱动峰鸣器发声。6) 一个开关用来进行数码显示管的清零和复位控制,其余的三个开关用以传递特定时间的可控发声及灯亮控制信号。7) 控制二极管闪烁时输出为0则亮,输出为1则灭。1.2.2 软件部分1)程序部分首先对8255进行初始化,然后通过软件实现时间的显示,时间初值显示00分00秒。2)由位选控制字来控制若干个数码管的亮与灭,本程序中要求只使用显示灯的后四个。3)对于初始赋值为00:00时要不断的进行查询,确定四个显示管均已显示。由于位选信号为反向驱动,故此时信号为0数码管亮,为1则灭。4)时间变化过程中要进行查询,注意与0,5,6,10几个敏感的数值进行比较,通过比较进行相应的操作。功能扩展后,为了实现可控时间的发声,还需要与7、8、9三个数字进行比较,从而发出特定的报警声。5)8255的A、B口控制七段数码显示管,C口接8253,红、黄灯,以及开关,它们的工作状况可用C口的控制字进行控制。6)时刻对开关的控制字进行查询,检测是否要求在7、8、9三个时间点进行报警发声。2 硬件设计2.1可编程并行接口芯片8255A2.1.1 8255A在本设计中的作用8255作为输入、输出接口,驱动数码显示管和发光二极管的发光,并向8253传递控制信号。其中A、B端口工作在方式0输出,C口Pc7到Pc4为输入,Pc3到Pc0输出。数码显示管后四位进行显示,基本实现方法是用A口控制段选,B口控制位选。C口用来控红灯,黄灯的亮灭和检测开关信号,并向8253传递控制信号,用以在特定的时间点驱动蜂鸣器发出报警声音。CS:片选信号,低电平有效;A0、A1: 地址信号。JP52: PC口JP53: PB口JP56: PA口图 2-1 8255A原理图2.1.2 8255A的功能分析 8255A有A、B、C三个并行输入/输出端口(简称为A口、B口、C口),其功能全部由程序设定,每个端口都有自己的特点。A口、B口通常作为独立的I/O端口使用,C口也可作为一般的I/O端口使用,但当A口、B口作为应答式的I/O口使用时,C口分别用来作为A口、B口提供应答控制信号,各端口的功能如下:表 2-1 8255A的端口功能表工作方式A口B口C口0基本输入/输出端口输入不锁存,输出锁存同A口同A口1选通输入/输出端口输入/输出均可锁存同A口C口3位作为A口的应答线;C口另3位作为B口的应答线2应答式双向输入/输出端口,均可锁存不用C口5位用作A口的应答线(1) 端口寻址及操作功能表 2-2 8255A的操作功能表 A1 A0操 作数 据 传 送 方 式 0 0 1 0 0读 A 口A口数据 数据总线 0 0 1 0 1读 B 口B口数据 数据总线 0 0 1 1 0读 C 口C口数据 数据总线 0 1 0 0 0写 A 口数据总线数据 A口 0 1 0 0 1写 B 口数据总线数据 B口 0 1 0 1 0写 C 口数据总线数据 C口 0 1 0 1 1写控制口数据总线数据 控制口2.1.3 8255A的方式控制字图 2-2 8255A的方式控制字2.1.4 8255部分技术参数表 2-3 8255A技术参数SymbolParameterMinMaxUnitVILInput Low Voltage-0.50.8VVIHInput High Voltage2.0VCCVVOL(DB)Output Low Voltage(Date Bus)0.45*VVOL(PER)Output Low Voltage(Peripheral Port)0.45*VVOH(DB)Input Low Voltage(Date Bus)2.4VVOH(PER)Input Low Voltage(Peripheral Port)2.4VIDAR(1)Dartington Drive Current-1.0-4.0mAICCPower Supply Current120mAIILInput Load Currenti10AIOFLOutput Float Leakage10A输入最低电压:min -0.5V,max 0.8 V,输入最高电压:2.0 V。输出最低电压:0.45 V,输出最高电压:2.4 V。2.2 可编程定时器/计数器82532.2.1 8253在本设计中的作用本设计中8253的主要功能是控制峰鸣器的发声,通过在计数器中打入不同的计数初值,使8253在特定的工作方式下实现峰鸣器发出不同频率和强度的报警声。设计中8253与8255的C口相连,8255向8253输出门控信号,通过对8255控制口写C口置位复位控制字,控制PC0置1,使8253以方式3产生方波,从而驱动蜂鸣器的发声。图 2-3 8253A原理图2.2.2 8253的功能分析由数据总线缓冲器、控制寄存器、读/写控制逻辑和计数器等部分组成。 图 2-4 8253A内部结构(1)3个独立的16位计数器,最大计数范围为065535; (2)每个计数器均可以按二进制或二十进制计数; (3)计数器速率可达2MHz; (4)可编程6种不同的工作方式; (5)所有输入和输出都与TTL兼容。(6)三个计数器内部结构相同,每个计数器有一个16位减法计数器,可对二进制数或BCD码进行计数。某些方式下,一次计数结束可以自动取初值进行下一次计数。每个计数器都有时钟输入CLK、门控输入GATE和输出OUT引脚。计数过程、输出信号与控制字中设定的内容有关。每个计数器的工作方式和工作过程完全独立。(7)8253具有较好的通用性和使用灵活性,几乎适合于任何一种微处理器组成的系统。 2.2.3 8253计数器的3个引脚说明(1)CLK时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1(2)GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型(3)OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号2.2.4 8253的工作方式8253是一种面向微机系统的专用接口芯片,它的每一个计数器都可以按照控制字的规定有6种不同的工作方式, 每种工作方式中都有以下三种情况: * 正常计数的波形图; * 正在计数过程中改变门控信号GATE后对整个计 数工作的影响; * 正在计数的过程中改变计数值对整个计数工作的影响。方式0计数结束中断方式 图 2-5 计数结束中断方式方式1 可编程的单稳态触发器 图 2-6 可编程的单稳态触发器方式2 比率发生器、分频器 方式2用门控信号达到同步计数的目的。图 2-6可编程的单稳态触发器方式3 方波发生器 方式3的工作过程同方式2,只是输出的脉宽不同。图 2-6方波发生器方式4 软件触发选通方式 用方式4工作时,GATE门控信号只是用来允许或不允许定时操作的,定时的执行过程由装入的初值决定。图 2-7软件触发选通方式方式5 硬件触发选通方式 方式5为硬件触发选通方式,完全由GATE端引入的触发信号控制定时和计数。图 2-7硬件触发选通方式2.2.5 8253的控制字8253的控制字有4个主要功能: * 选择计数器; * 确定计数器数据的读写格式; * 确定计数器的工作方式; * 确定计数器计数的数制图 2-8 8253的控制字2.3 LED显示器2.3.1 LED显示器在本设计中的作用LED数码管的主要部分是七段发光二极管,这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示09和AF共16个字母数字或其它异形字符。LED数码管有共阳极、共阴极两种结构,本实验中采用的是共阴极结构,由于发光二极管发光时,通过的平均电流为10mA20mA,而通常的输出锁存器不能提供这么大的电流,所以LED各段必须接驱动电路。 对于数码显示管的多为显示,可采用一种方案,在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。本实验中用2个8位输出端口就可以实现8个数码管的显示控制。其中,一个端口用作位控制,即控制哪个(位)数码管显示。但具体显示什么数码,则由另一个端口,即段控制端口决定。 图2-9 LED内部结构示意图2.3.2 LED显示管段选码编码表表 2-4 LED段选码数字DPgfedcba二进制编码(字形)0001111113FH10000001103H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100169HD010111105EHE0111100179HF0111000171H2.3.3 技术参数表 2-5 LED技术参数PCWIfVrIrIfRP对应型号散射颜色BT-235-270255=1.5=2.5200SEL-10红色2.4 蜂鸣器2.4.1 蜂鸣器在本设计中的作用本实验中选用的发声装置是蜂鸣器,用于实现报警功能,其电路图如下所示:图2-10 蜂鸣器原理图Ctrl:控制接口,0蜂鸣实验中需要蜂鸣器发出三种不同频率和强度的响声,由8255和8253共同完成这一功能,其中8255可用来控制8253是否可驱动蜂鸣器发声,由8255的PC0给8253输入门控信号,8253通过输入的不同计数初值输出不同的控制信号,实现不同的报警声。2.5 单刀双掷开关2.5.1 开关在本设计中的作用本设计中共需要用到4位开关,一位开关用于值班人员对时间进行复位,其余的开关则用于为用户提供选择报警时间点的介质,开关电路图如下:+5V图 2-11 单刀双掷开关2.5.2 功能分析实验中复位单刀双掷开关接地,当值班者拨动开关接+5V电压时,PC7检测到为1,证明未复位,当值班者断开开关时,PC7检测到为0,说明值班人员未睡着,此时计时重新开始。其余三个开关分别与8255的PC4、PC5、PC6相连,程序运行时会进行检测,判断报警的时间点。2.5.3 技术参数开关闭合输入0,开关断开输入1,开关高电平:+5V、低电平:0V。2.6 硬件总逻辑图及其说明逻辑总图的基本思想是:在STAR ES598PCI实验箱中插入PCI卡,将PCI的A0、A1分别接8255A的A0、A1,8255A的CS接片选区CS1,地址范围是0F0H0FFH,8255A作为通讯接口,分别与数码显示管、蜂鸣器、红黄灯以及开关相连。其中A口和B口与数码显示管相连,分别控制段选和位选,设计中选取最后四位数码显示管。C口红黄灯、开关及为8253提供门控信号,其中PC0接8253,PC1和PC2用来控制黄灯和红灯,PC4、PC5、PC6分别用来选择报警的时间点, PC7接开关用于控制复位。8253选择计数器2,其门控信号由8255提供,OUT端接蜂鸣器。所有的操作功能可用软件的方法进行实现。3 控制程序设计3.1 控制程序设计思路说明控制程序中需要在主程序中解决时间的显示和正常计数功能,实现发声和灯亮的功能要定义三个发声子程序分别为SOFT,HURRY和STRONG。整个程序的设计思路是首先初始化8255,令其工作在方式0,端口A,B均为方式0输出,端口C高四位输入,低四位输出。通过8255的A、B口对LED数码显示器进行段选和位选,通过程序的显示和计时部分动态的在数码管的后四位显示时间的分和秒,用软件的方法对变化的时间进行查询判断分秒的情况,当显示05:00 、06:00和15:00时,分别调用不同的发声子程序,实现程序的特定功能。程序中还要对C口的PC7状态进行查询,即检查显示期间是否执行了复位操作,若复位则要将时间重新置零,否则正常计时和显示。对于发声控制则要使用8255和8253,首先对8255写置位控制字,使PC0置位为1,为8253提供门控信号,8253通过打入不同的计数初值实现发出不同强度和频率的声音。综上所述:用软件实现本程序的功能,要完成的几个关键的步骤是:(1)初始化时间和用段位选控制时间的显示。(2)检测分和秒的状态,实现进位并在要求的情况下进行发声和灯亮的操作。(3)时间变化前要不断地对复位情况进行检测,当复位时要重新计时,即在程序中就是返回初始时间状态。(4)对8255写置位/复位控制字,用PC0控制8253进行工作。3.2 控制程序流程图 图 2-12 主流程图图2-12 主控制过程2-14 发声控制过程图2-13 计时子过程图2-15 过程sound1 图2-16 过程sound2图2-17 过程sound33.3 控制程序26.MODELTINYPCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK100.DATAIO_Bit8_BaseAddressDW?msg0DBBIOS不支持访问PCI $msg1DB找不到Star PCI9052板卡 $msg2DB读8位I/O空间基地址时出错$COM_ADD DW00F3H;控制口偏移量PA_ADDDW00F0H;PA口偏移量PB_ADDDW00F1H;PB口偏移量PC_ADDDW00F2H;PC口偏移量COM_ADDRDW00B3H;8253控制口偏移量T0_ADDRDW00B0H;8253T0计数器偏移量T1_ADDRDW00B1H;8253T1计数器偏移量T2_ADDRDW00B2H;8253T2计数器偏移量segcode db 3fh,06h, 5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;LED数字显示的段码表buffer db 00h,00h,00h,00h;显示时间的存储缓冲区.CODESTART:MOV AX,DATAMOVDS,AXNOP CALLInitPCICALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址main: mov dx,COM_ADD ;写8255A方式控制字 mov al,88h ;10001000另A口和B口方式0输出;C口Pc7到Pc4为输入,Pc3到Pc0输出 out dx,al mov dx,COM_ADDR;初始化8253,向8253控制口写入控制字 mov al,0BFH ;10111111,即选通道2,先高后低写入计数器,方式3,BCD码计数 out dx,al mov dx,COM_ADD;向8255控制口写C口置位复位控制字 mov al,00H ;00000000,即将PC0口置0 out dx,al call crazycrazy proc near mov si,0 mov buffersi,0 mov buffersi+1,0 mov buffersi+2,0 mov buffersi+3,0getready: mov ah,20choose : mov di,3 mov cl,0fehdisp: mov al,bufferdi mov bx,offset segcode ;取段表基地址 xlat mov dx,PA_ADD ;A口输出段选码 out dx,al mov al,cl mov dx,PB_ADD ;B口输出位选码 out dx,al mov dx,PC_ADD ;初始C口信号 mov al,0ffh out dx,al call delay1 ;调用延时,等待灯电亮 cmp cl,0f7h jz changetime dec di rol cl,1 jmp disp ;时间依次显示changetime: dec ah jnz choose mov dx,PC_ADD in al,dx mov ah,al test al,10000000B;判断是否复位 call init mov al,ah test al,01000000B;判断是选择7 jnz judge7 mov al,ah test al,00100000B;判断是选择8 jnz judge8 mov al,ah test al,00010000B;判断是选择9 jnz judge9 add buffersi+3,1 cmp buffersi+1,5;判断分的个位是否为5 jz judge0 cmp buffersi+1,6 ;判断分的个位是否为6 jz judge6judge0: cmp buffersi,0 ;判断分的个位是为5时调用柔和子程序 jnz judge1 call soft call delay ;调用发声延时子程序 call stop call xx ;正常计时judge6: cmp buffersi,0 ;判断分的个位是为6时调用急促子程序 call hurry call delay call stop call xxjudge1:cmp buffersi,1 ;判断为15分钟时调用强烈发声子程序 call strong call delay ;调用延时子程序 call stop call xxjudge7: call sound1 call xxjudge8: call sound2 call xxjudge9: call sound3 call xxcrazy endpxx proc near push bx mov bx,0 cmp bufferbx+3,10 jz miao;改变秒个位 call crazy miao: mov bufferbx+3,0 add bufferbx+2,1 cmp bufferbx+2,6 jz min;改变分个位 call crazymin: mov bufferbx+2,0 add bufferbx+1,1 cmp bufferbx+1,10 jz changem;改变分十位 call crazychangem: mov bufferbx+1,0 add bufferbx,1pop bxretxx endpsound1 proc near add buffersi+3,1 cmp buffersi+1,5;判断分的个位是否为5 jz judge00 cmp buffersi+1,6 ;判断分的个位是否为6 jz judge06 cmp buffersi+1,7 jz judge07 call xx ;正常计时judge00: cmp buffersi,0 ;判断分的个位是为5时调用柔和子程序 jnz judge11 call soft call delay ;调用发声延时子程序 call stop call xxjudge06: cmp buffersi,0 ;判断分的个位是为6时调用急促子程序 call hurry call delay call stop call xxjudge11:cmp buffersi,1 ;判断为15分钟时调用强烈发声子程序 call strong call delay;调用延时子程序 call stop call xx judge07:cmp buffersi,0 call soft call delay call stop call xxretsound1 endpsound2 proc near add buffersi+3,1 cmp buffersi+1,5;判断分的个位是否为5 jz judge000 cmp buffersi+1,6 ;判断分的个位是否为6 jz judge006 cmp buffersi+1,8 jz judge08 call xx ;正常计时judge000: cmp buffersi,0 ;判断分的个位是为5时调用柔和子程序 jnz judge111 call soft call delay ;调用发声延时子程序 call stop call xxjudge006: cmp buffersi,0 ;判断分的个位是为6时调用急促子程序 call hurry call delay call stop call xxjudge111:cmp buffersi,1 ;判断为15分钟时调用强烈发声子程序 call strong call delay;调用延时子程序 call stop call xx judge08:cmp buffersi,0 call hurry call delay call stop call xxretsound2 endpsound3 proc nearadd buffersi+3,1 cmp buffersi+1,5;判断分的个位是否为5 jz judge0000 cmp buffersi+1,6 ;判断分的个位是否为6 jz judge0006 cmp buffersi+1,9 jz judge09 call xx ;正常计时judge0000: cmp buffersi,0 ;判断分的个位是为5时调用柔和子程序 jnz judge1111 call soft call delay ;调用发声延时子程序 call stop call xxjudge0006: cmp buffersi,0;判断分的个位是为6时调用急促子程序 call hurry call delay call stop call xxjudge1111:cmp buffersi,1 ;判断为15分钟时调用强烈发声子程序 call strong call delay;调用延时子程序 call stop call xx judge09:cmp buffersi,0 call strong call delay call stop call xxretsound3 endpsoft proc near ;柔和声音报警 mov dx,T2_ADDR;向8253T2计数器写入计数初值 mov al,80h out dx,al mov al,00h out dx,al mov dx,COM_ADD;向8255控制口写C口置位复位控制字mov al,01H;00000001,即将PC0口置1,使8253以方式3产生方波out dx,al retsoft endphurry proc near ;柔和声音报警 mov dx,COM_ADD;向8255控制口写C口置位复位控制字 mov al,02H;00000010,即将PC1口置0 out dx,al mov dx,T2_ADDR;向8253T2计数器写入计数初值 mov al,80h out dx,al mov al,90h out dx,al mov dx,COM_ADD;向8255控制口写C口置位复位控制字mov al,01H;00000000,即将PC0口置1,使8253以方式3产生方波out dx,alrethurry endpstrong proc near ;柔和声音报警 mov dx,COM_ADD ;向8255控制口写C口置位复位控制字 mov al,04H ;00000100,即将PC2口置0 out dx,al mov dx,T2_ADDR ;向8253T2计数器写入计数初值 mov al,99h out dx,al mov al,99h out dx,al mov dx,COM_ADD ;向8255控制口写C口置位复位控制字mov al,01H;00000001,即将PC0口置1,使8253以方式3产生方波out dx,alretstrong endpstop proc near;使8253暂停输出方波 mov dx,COM_ADDmov al,00Hout dx,alstop endpdelay proc near;发声延时子程序 PUSH AXPUSH DXMOV DX,300 ;延时300msMOV AH,0FFH;星研公司提供的软中断INT 21HPOP DXPOP AX RETdelay endpdelay1 proc ;延时子程序 push cx mov bl,10count: mov cx,1000waitt: loop waitt dec bl jnz count pop cx ret delay1 endp InitPCI PROCNEAR MOVAH,00H MOVAL,03H INT10H;清屏 MOVAH,0B1H MOVAL,01H INT1AH CMPAH,0 JZInitPCI2 LEADX,msg 0InitPCI1: MOVAH,09H INT21H JMPExitInitPCI2: MOVAH,0B1H MOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH;读取该卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:ANDCX,0FFFCHMOVIO_Bit8_BaseAddress,CXRETInitPCI ENDPModifyAddressPROCNEARADDCOM_ADD,CXADDPA_ADD,CXADDPB_ADD,CXADDPC_ADD,CXADDCOM_ADDR,CXADDT0_ADDR,CXADDT1_ADDR,CXADDT2_ADDR,CXRETModifyAddressENDPExit:MOVAH,4CHINT21HENDSTART4 设计结果分析及问题讨论4.1 上机调试过程1、 初次调试:排线接反了,使得所显示的数据不完整。2、 C口的红黄灯接线插口连接错误,使的灯亮的次序不正确。3、 调试时,红黄等均亮,蜂鸣器不停的发声时间值无任何变化原因:初始显示的时候没有见C口的状态关闭,时间变化时应该首先让秒的个位加一,否则无变化。4、 调试时秒个位时间一直没有变化。原因:计时部分判断秒个为是否为10时,判断无进位时未进行正常的时间显示。5、软件的设计问题:基本上可以实现但出现错误,六分钟时红灯开始闪烁,到十分钟时黄灯开始闪烁,直到第十五分钟停止闪烁,到第十六分钟红灯又开始闪烁。6、红黄灯闪烁错位,表明接线错误,调换过来后,又出现六分钟时黄灯开始闪烁,到十分钟时红灯开始闪烁,直到第十五分钟停止闪烁,到第十六分钟黄灯又开始闪烁,到十七分钟红一直红灯闪烁。7、检查后发现实现时间变化的程序部分有逻辑问题,重新进行修改后,以上问题基本解决,可以实现规定的功能,但到第十六分钟时黄灯又开始闪烁。8、经过以上问题的纠正和修改后,程序的基本功能已实现,但报警的声音变化还不是太明显,需要重新设置时间的延迟和报警的次数,尽量将报警的声音做明显的区分。9、采用方案2:使用8253对蜂鸣器进行控制时不能正常使其发声,经检查才知道没有进行8253的地址转换,因此也多次造成了死机。10、蜂鸣器正常发声后,出现了不能及时将其关闭的问题,经过思考后决定采用8255的PC0作为GATE门控信号,对8253的计数器2进行控制,解决这个问题的关键是对8255的PC0进行置位/复位,以此来控制8253开始和停止输出方波。11、基本实现夜班防睡控制器的功能后,根据老师的要求又对其进行了改进,改进过程中主要的问题是:(1)8253一直输出方波,使得蜂鸣器不停的发声。(2)拨动不同的开关时,可以控制实现发出不同的声音,但并不在指定的时间点进行发声。解决方法:在指定的发声位置调用发声延时并通过控制8253计数器2的门控信号控制发声的停止。将不同的发声程序定义不同的实现过程。4.2 课程设计结果及分析4.2.1 设计结果开始程序运行,在数码显示器上显示00分00秒。当时间显示到05分00秒时,扬声器发出较柔和的声音,到06分00秒时,扬声器发出较急促的声音,黄灯闪烁,到15分00秒时,扬声器发出尖锐的报警声,红灯闪烁。每次拨开关为高电平时,数码显示管重新复位。

温馨提示

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

评论

0/150

提交评论