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

下载本文档

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

文档简介

1、合肥学院计算机科学与技术系页:1调整字的大小微机原理与接口技术课程设计页:1学期呢? 课程设计题目:夜班防睡控制页:1下划线长短不一,没有居中 姓 名:洪 欢 学 号:0604031047 班 级:06网络工程(一)班 指 导 教 师:张向东 2008年12月一、题义分析及解决方案1.题义需求分析页:2文章标号混乱,其他雷同1.1任务分析1)每5分钟用一次较柔和的声音提醒值班者按复位键,计时重新开始。2)若计时到6分钟时,无人按复位键,则以较急促的声音报警,黄灯闪烁。3)当到15分钟的时候红灯闪烁,并以持续尖锐的声音报警,用LED显示分和秒。1.2 功能分析本设计主要是为了防止值班人员在值班时

2、睡觉。设计中通过扬声器来防止值班人员睡觉,每隔5分钟用较柔和的声音提醒值班人员一次,值班人员按下复位键重新即时,说明值班人员并未睡着;若计时到6分钟值班人员还没有按复位键,说明此时值班人员可能已经开始打瞌睡,扬声器发出较急促的声音报警,并且黄灯闪烁,若此按下复位键,重新计时;若到了15分钟还没有人按复位键,那么此时值班人员可能已经完全睡着,扬声器发出持续的尖锐声音报警,红灯闪烁,并用LED记录睡着的时间。1.3 需要解决的问题需要发声提醒,发声提醒又分为3种(柔和,急促,尖锐),通过键盘复位,要红,黄灯闪烁。还要将时间动态显示在LED显示器上,每秒刷新一次。而且分秒显示共需4位数字,所以要有4

3、个LED数码管进行控制。秒控制的两位要在60秒后进位,分钟的两位加1,秒清零。扬声器可用专门的扬声器电路。2 解决问题方法及思路2.1 硬件部分 1) PC机一台,并行接口8255A一片,LED数码管4只,发光二极管2只(红、黄各一只),开关一个,扬声器一只。2) 利用扬声器发声报警,节拍由延时程序决定。3) 使不同颜色的发光二极管按一定规律发光。4) 使实验箱上的8255A作为输出接口,驱动二极管发光。所用端口工作在方式0、输出即可。5) 定义开关清零。6) PC7接开关,用作输入,控制复位。7) 通过8255A来控制LED发光二极管的亮灭。8) PC0接扬声器、PC1接红灯、PC2接黄灯。

4、9) 二极管闪烁:开|关 输出为0则亮,输出为1则灭。2.2 软件部分 程序部分首先进行初始8255,然后进行时间显示,初值显示00分00秒,四个显示器每个显示10ms,接着秒个位加1,进行下一次显示,当秒个位为10时,秒十位加1,同时秒个位清零.当秒十位为6时,分个位加1,秒位清零,依次显示。当显示为5分00秒时,发出控制信号使扬声器发出柔和的声音,此时,若有人拨动开关,则四个显示器全清零,又从00分00秒开始显示。当显示5分00秒时,发出轻微的柔和的报警声, 当显示6分00秒时,发出急促的报警声,发出控制信号使黄灯闪烁。当显示为15分00秒时,扬声器持续发出尖锐的报警声,发出控制信号使红灯

5、闪烁。二、硬件设计1.芯片8255-A1.1在本设计中的作用8255A作为输出接口,驱动二极管发光。所用端口工作在方式0。控制发光二极管的亮灭。A口,B口控制LED数码显示管,C口低四位分别接扬声器,红灯,黄灯。高四位中的Pc4接开关,用于输入信号,使系统复位。1.2功能分析8255A有A、B、C三个并行输入/输出端口(简称为A口、B口、C口),其功能全部由程序设定,每个端口都有自己的特点。A口、B口通常作为独立的I/O端口使用,C口也可作为一般的I/O端口使用,但当A口、B口作为应答式的I/O口使用时,C口分别用来作为A口、B口提供应答控制信号,各端口的功能如下:页:3表名呢?工作方式A口B

6、口C口0基本输入/输出端口输入不锁存,输出锁存同A口同A口1选通输入/输出端口输入/输出均可锁存同A口C口3位作为A口的应答线;C口另3位作为B口的应答线2应答式双向输入/输出端口,均可锁存不用C口5位用作A口的应答线1.3原理图及功能表图 2-1 8255A原理图表 2-1 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

7、写 C 口数据总线数据 C口 0 1 0 1 1写控制口数据总线数据 控制口8255A有三种工作方式,用户可以通过编程来设置。1.4方式控制字图 2-2 8255A方式控制字页:5太多空白1.5 方式0的工作特点这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。其功能为:1)两个8位通道:通道A、B。两个四位通道:通道C高4位和低四位;2)任何一个通道可以作输入/输出;3)输出是锁存的;4)输入是不锁存的;5)在方式0时各个通道的输入/输出可有16种不同的组合。1.6 8255部分技术参数表 2-2 8255A技术参数SymbolParameterMin

8、MaxUnitVILInput 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 Curren

9、t120mAIILInput Load Current±10AIOFLOutput Float Leakage±10A输入最低电压:min -0.5V,max 0.8 V,输入最高电压:2.0 V。输出最低电压:0.45 V输出最高电压:2.4 V。2.LED显示器2.1在本设计中的作用LED发光二级管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,做为终端显示。2.2 功能分析 图 2-3 LED图示(1)物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。(2)工作原理:当在发光二极

10、管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。(3) 数字成像:将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。实验中采页:6注意整篇文章的段落和缩进,调整文章段落关系,使之更有条理用的是共阴极七段LED显示器,他由多个发光二极管组成,七段或八段笔画显示器,当段组发亮时,便可显示数字1位,七段代码的各位用作a-g和Dp的输入,当对应的位为1时,则该段亮。图2-4 LED内部结构示意图2.3 LED显示管

11、段选码编码表表 2-3 LED段选码数字DPgfedcba二进制编码(字形)0001111113FH10000001103H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100169HD010111105EHE0111100179HF0111000171H2.4 技术参数表 2-4 LED技术参数PCWIfVrIrIfRP对应型号散射颜色BT-235-270255>=1.5<=2.

12、5200SEL-10红色3.单刀双掷开关3.1在本设计中的作用本次设计需要用1个开关,用于检测值班者是否睡着。+5V图 2-5 单刀双掷开关3.2功能分析开关闭合输入0,开关断开输入1。3.3 技术参数开关高电平:+5V、低电平:0V实验中单刀双掷开关接地,即通过8255,PC5检测到为0,当值班者拨动开关接+5V电压时,PC5检测到为1(即相当于值班者按动按扭)4扬声器4.1 在本设计中的作用本次设计需要扬声器发出三种不同频率的响声,由8255的PC0控制(第0位控制)4.2 功能分析如果使该位交替为0为1则产生一个脉冲电流,该电流放大后驱动扬声器发出声音。5.硬件总逻辑图及其说明图 2-8

13、 硬件总逻辑图上图所示为数码显示管逻辑总图,图中所用到的为一片8255芯片、1位开关、4个七段LED数码显示管、红灯和黄灯。将PCI的CS、A0、A1分别接8255A的CS、A0、A1,8255A的PA0PA7接入数码管选择脚, PB0PB7分别与数码管段码相连,作为段选择。8255的A口,B口控制LED数码显示管,C口低四位作输出口,PC0接扬声器,PC1接黄灯,PC2接红灯,高四位作输入口,PC7接开关。三、控制程序设计1.控制程序设计思路说明首先将8255初始化(设置8255A的控制方式,A口、B口用于输出C口高四位输入,低四位输出),LED动态显示时间(分、秒),用软件查询判断分秒的情

14、况:当显示5:00 、6:00、15:00时,分别调用不同的发声子程序。显示期间若按复位键则时间从00:00开始计时。2 控制程序流程图页:8流程图要居中,不要超出边界,且每一个流程图下面都要有图标。 图 3-1主程序流程图图 3-2判断时间控制流程图 图 3-3进位判断33 控制程序.MODELTINYpcibar3equ1ch;8位i/o空间基地址(它就是实验仪的基地址, 也为dma & 32 bit;ram板卡上的8237提供基地址) vendor_idequ 10ebh ;厂商id号device_idequ8376;设备id号.stack100.dataio_bit8_base

15、addressdw?msg0 db'bios不支持访问pci $'msg1 db'找不到star pci9052板卡 $'msg2 db'读8位i/o空间基地址时出错$'com_adddw00f3h;控制口偏移量pa_adddw00f0h;pa口偏移量pb_adddw00f1h;pb口偏移量pc_adddw00f2h;pc口偏移量tab db 3fh,06h, 5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;存储表示数字的各段选码分别表示为0-9m1 db 00h,00h,00h,00h ;存储要显示的四个时间量.codestar

16、t:movax,datamovds,axnopcallinitpcicallmodifyaddress ;根据pci提供的基地址,将偏移地址转化为实地址init8255: mov dx,com_add ;写8255a方式控制字mov al,88h ;设置端口a为工作方式0输出端口;端口pc7到pc4为输入,pc3到pc0为输出;端口b 为输出并工作在方式0out dx,almov dx,pc_add mov si,offset m1 ;设置m1的偏移地址于si中initime: mov ah,0 mov si,ah ;初始化4位时间的初值 mov si+1,ah mov si+2,ahmov

17、si+3,ahmov al,0ffhout dx,allop1: mov ah,30 ;设置一秒钟显示之间的间隔时间waite: mov di,offset m1+3 ;显示四个时间量 mov cl,0feh ;位选码送入cl低位为1110;将tab内的段选码传送入m1空间内的相对位置,根据位选码决定disp: mov al,dimov bx,offset tabxlat mov dx,pb_add ;写入端口b out dx,al ;将从tab空间内读取的段选码输入到端口bmov al,clmov dx,pa_add out dx,al ;将位选码送入端口a call delay ;调用延时

18、子程序延时低于20um则不闪烁 cmp cl,0f7h ; 1111 01111b 判断该位选码是否指向最后一个时间值(一次时间显示有四个时间值显示在led上) jz judge ;是最后一个时间值则转向将时间加一秒的程序 dec di ;指向下一个时间值以待显示 rol cl,1 ;将位选码左移一 位 cl 1110 jmp disp ;重新显示下一位 lop2: jmp lop1 delay proc ;每一位经段选和位选后的延时,之后处理下一位的段选、位选push cxmov bl,10del: mov cx,1000wait5: loop wait5dec bljnz delpop c

19、xret delay endp judge: dec ah jnz waite ;若一秒未显示30次则转向以上显示四个时间量的程序显示30次;否则转向判断报警 mov dx,pc_add ;判断c口开关端口pc7输入是否为0in al,dxtest al,10000000b jnz initime ;为零则转向初始化时间量的程序段;是否复位 ;报警方式 mov al,0 mov ah,1 mov bl,5 mov bh,6 mov ch,10 cmp si,ah jb a cmp si+1,bl jb b call red jump carrya: cmp si+1,bh jnb b cmp

20、si+1,bl jnb c jmp carryb: call yellow jmp carryc: call soft jump carry ;时间进位控制carry: add si+3,ah ;秒个数的时间量加1 cmp si+3,ch ;判断秒个位是否为10,不为则转向以上显示四个时间量的程序段中 jnz lop1 mov si+3,al ;若秒个位为10则将其置零 add si+2,ah ;秒十位加1 cmp si+2,bh jnz lop2 ;判断秒十位是否为6,是则转向显示时间量的程序段 mov si+2,al ;若为6则将其清零 add si+1,ah ;并分个位加1pp: cmp

21、 si+1,ch jnz asd ;若分个位不为10则转向显示时间量 mov si+1,al ;若为10则将其清零 add si,ah ;并分十位加1asd: jmp lop1 ;控制时间进位soft proc ;柔和报警子程序push axpush bxpush cx mov bx,5 ;bx为一秒内报警次数sound1:mov dx,pc_add mov al,11111110b out dx,al ;扬声器工作 mov cx,00fffh ;一次报警的延时wait1: loop wait1 mov al,0ffh ;扬声器停止工作out dx,al dec bxjne sound1mov

22、 cx,00effh ;一秒内5次报警完毕后的停顿延时wai1: loop wai1pop cxpop bxpop axretsoft endpyellow proc ;黄灯急促报警子程序push axpush bxpush cxmov bx,20sound2:mov dx,pc_add mov al,11111100bout dx,al ;扬声器mov cx,01f00h wait2: loop wait2 mov al,0ffhout dx,aldec bxmov cx,000ffhwai2:loop wai2 dec bxjne sound2pop cxpop bxpop axretye

23、llow endpred proc ;红灯尖锐报警子程序push axpush bxpush cx mov bx,100sound3:mov dx,pc_add mov al,11111010bout dx,al ;扬声器 dec bxmov cx,00fffh wait3: loop wait3 mov al,0feh out dx,almov cx,000f0h wai3: loop wai3 dec bxjne sound3pop cx pop bx pop ax retred endpinitpciprocnearmovah,00hmoval,03hint10h;清屏movah,0b1

24、hmoval,01hint1ahcmpah,0jzinitpci2leadx,msg0initpci1:movah,09hint21hjmpexitinitpci2:movah,0b1hmoval,02hmovcx,device_idmovdx,vendor_idmovsi,0int1ahjncinitpci3;是否存在star pci9052板卡leadx,msg1jmpinitpci1initpci3:movdi,pcibar3movah,0b1hmoval,09hint1ah;读取该卡pci9052基地址jncinitpci4leadx,msg2jmpinitpci1initpci4:a

25、ndcx,0fffchmovio_bit8_baseaddress,cxretinitpciendpmodifyaddressprocnearaddcom_add,cxaddpa_add,cxaddpb_add,cxaddpc_add,cxretmodifyaddressendpexit:movah,4chint21hendstart四、设计结果分析及问题讨论1.上机调试过程页:6调试分为硬件调试,软件调试,联机调试3部分,详细些1)在扬声器发声的时候,LED数码显示管停止显示时间,这将导致当前时间显示太长。2) 在程序控制部分出现了错误,时间从6分00秒开始黄灯闪烁,发出急促的报警声后,到7

26、分00秒就不报警了。应该从6分00后一直报警直到15分00秒。通过对程序的反复检验,发现在调用声音子程序的模块上少了个循环语句。3)最后在报警声音方面上又遇到了问题,没有达到预期的声音逐渐增强的效果。通过反复的对声音模块参数的修改终于达到了预期效果。4)蜂鸣器正常发声后,出现了不能及时将其关闭的问题,经过思考后决定采用8255的PC0作为GATE门控信号,对8253的计数器2进行控制,解决这个问题的关键是对8255的PC0进行置位/复位,以此来控制8253开始和停止输出方波。2 课程设计结果及分析2.1 设计结果程序开始运行时,四个LED灯从00分00秒开始显示时间,并隔相应的时间加一秒,一直

27、显示到59分59秒,然后又从00分00秒开始显示,如此循环下去。当时间显示到05分00秒时,扬声器发出较柔和的声音,到06分00秒时,扬声器发出较急促的声音,黄灯闪烁,到15分00秒时,扬声器发出尖锐的报警声,红灯闪烁。每次拨开关为高电平时,LED灯就变成从00分00秒开始显示。2.2 结果分析1、数码管的显示使用段选和位选的方法进行控制,即用位选来选择哪一个显示灯亮,用段选来控制显示器显示的时间值。设计中因为时间的确定决定着发声和灯亮的操作,故一定要设置一个时间数字的缓冲区,以便于对时间的变化进行查询。本次设计中最为重要的是定义段码表,其作用可归纳为:(1)初始状态时,时间为00:00这时要利用段码表提供的数和位选依次对各个位进行赋值。(此时偏移地址为0)(2)计时时通过改变缓冲区内的数值值,以此作为换码指令的偏移地址,通过换码指令得到应该在数码显示器中显示的时间值。2、时间变化过程中要进行查询,注意与0,5,6,15几个敏感的数值进行比较,通过比较进行相应的操作。3、本设计中峰鸣器的发声由8253完成,通过在计数器中打入不同的计数初值,使8253在特定的工作方式下实现峰鸣器发出不同频率和强度的报警声。8253要与8255的C口相连,8255向8253输出门控信号,通过对8255控制口写C口置位复位控制字,控制PC0置1,使8253以方式3产生方波,从而驱动蜂鸣

温馨提示

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

评论

0/150

提交评论