ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:247.82KB ,
资源ID:4970495      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4970495.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(夜班防睡控制.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

夜班防睡控制.docx

1、夜班防睡控制合肥学院计算机科学与技术系微机原理与接口技术课程设计报告20082009学年第1学期课程微机原理与接口技术课程设计名称夜班防睡控制/记录学生姓名杜 鹏学号0604032045专业班级网络工程专业(06网工2)指导教师龙 夏2009 年 1 月一、提议分析及解决方案1.提议需求分析在STAR ES598PCI单板机上实现对值班人员的 放睡控制和记录睡着时间的次数的功能。(1)设5min用较柔和的声音提醒一次值班者,值班者按某一键后复位,计时从新开始。(2)若计到6min时无人按复位键,则以较急促的声音报警,黄灯闪烁。(3)当到15min时红灯闪烁,并以尖锐的声音持续报警。以LED显示

2、分和秒。显示格式: 分 秒。该程序设计是为了解决值班人员在夜班时容易睡觉的问题。设计通过蜂鸣器发声以提醒值班人员,计时到5分钟后开始用较柔和的声音提醒值班人员;计时到6分钟后用较急促的声音报警,并且黄灯闪烁,以此提醒可能已经睡着的值班人员;计时到15分钟后用尖锐的声音持续报警,并且红灯闪烁,以此叫醒睡着的值班人员。在此计时期间,若值班人员没有睡觉而按下复位键则计时时间从零开始,LED显示分秒。需要柔和、黄灯急促和红灯尖锐三个不同的发声子程序,按所需要求调用发声子程序。时间动态显示在4个LED数码管上,若无复位则正常即时。秒个位分个位逢十进一,秒十位逢六进一。8255A控制蜂鸣器发声及黄灯、红灯

3、闪烁。2.解决问题方法及思路(1)硬件部分(1)PC机一台,并行接口8255A一片,LED数码管4只,红灯黄灯各一个,开关一个,蜂鸣器一个。(2)8255A的A口B口用于LED数码管的段选位选以显示时间。(3)8255A的C口低四位用于输出,蜂鸣器、红灯和黄灯根据输出的0或者1发声及灯亮。(4)8255A的C口高四位用于输入,复位用开关控制,高电平即复位。(5)不同的发声子程序由子程序中延时不同来区别。(2)软件部分 程序部分首先初始化8255,然后显示时间初始值00分00秒,4个LED数码管逐个显示,显示数据时用软件延时当显示完毕后秒个位加1,进行下一次显示。当秒个位为10时,秒个位清零秒十

4、位加1;当秒十位为6时,秒十位清零分个位加1;当分个位为10时,分个位清零分十位加1。为5分00秒,开始发出控制信号使蜂鸣器发出柔和的声音; 6分00秒后,发出控制信号使黄灯闪烁并以急促报警;计时器为15分00秒后,发出控制信号使红灯闪烁并以尖锐声音报警。此间若有人拨动开关复位,则四个显示器全清零从初始值00分00秒开始计时并显示。二、 硬件设计1. 芯片8255-A(1)8255A在本设计中的作用8255A工作在方式0。A口,B口控制段选位选以控制LED数码显示,C口低四位分别接蜂鸣器,红灯,黄灯。高四位中的Pc4接开关,用于输入信号,使计时复位。(2)8255A的功能分析8255方式0是基

5、本输入/输出方式,A、B、C三个口中任何一个口都可提供简单的输入和输出操作,不需要应答联络信号即可用于无条件传送的场合,也可以用作查询方式传送。当采用查询方式传送时,原则上可用A、B和C三个口的任一位充当查询信号,但通常都是选用C口充当查询信号,这和C口的编程有关。A口、B口通常作为独立的I/O端口使用,C口也可作为一般的I/O端口使用,但当A口、B口作为应答式的I/O口使用时,C口分别用来作为A口、B口提供应答控制信号。通常把C口的4位(高4位或低4位)规定为输出口,用以输出一些控制信号,把C口的另4位规定为输人口,用以输入外设的状态。方式0通常不用联络信号,不使用中断,三个通道中的每一个都

6、有可以由程序选定作为输入或输出。两个8位通道:通道A、B。两个四位通道:通道C高4位和低四位,任何一个通道可以作输入/输出,输出是锁存的而输入是不锁存的。(3)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.8255A的操作功能表图2-1.8

7、255A的方式控制字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

8、-4.0mAICCPower Supply Current120mAIILInput Load Current10AIOFLOutput Float Leakage10A表2-2.8255A技术参数输入最低电压:min -0.5V,max 0.8 V,输入最高电压:2.0 V。输出最低电压:0.45 V输出最高电压:2.4 V。2. LED显示器(1)LED显示器在本设计中的作用在程序设计中采用7段数字发光二级管做为时间的终端显示,以 分 秒的格式显示时间。(2)LED显示器的功能分析 LED数码管的主要部分是七段发光二极管,这七段发光二极管分别称为a、b、c、d、e、f、g,通过7个发光段的

9、不同组合,当对应的位为1时,则该段亮,可以显示09和AF共16个字母数字或其它异形字符。LED数码管有共阳极、共阴极两种结构,本实验中采用的是共阴极结构。 下图为LED数码管子内部结构示意图: 图2-2.数码管内部结构(3)LED显示器的技术参数PCWIfVrIrIfRP对应型号散射颜色BT-235-270255=1.5=2.5200SEL-10红色表2-3.LED技术参数数字DPgfedcba二进制编码(字形)0001111113FH10000001103H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011

10、107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100169HD010111105EHE0111100179HF0111000171H表2-4.LED段选码编码表3.蜂鸣器(1)蜂鸣器在本设计中的作用程序设计中需要扬蜂鸣器发出三种不同频率的响声,由8255的PC0控制(第0位控制)(2)蜂鸣器的功能分析8255的PC0端口循环输出使该位为0或1,蜂鸣器工作与不工作的间歇频率不同即使不同的声音。4.硬件总逻辑图及其说明图2-3.硬件总逻辑图逻辑总图的基本思想是:在STAR ES598PCI实验箱中插入PCI卡,将PCI的A0、A1

11、分别接8255A的A0、A1,8255A的CS接片选区CS1,地址范围是0F0H-0FFH,8255A作为通讯接口,分别与数码显示管、蜂鸣器、红黄灯以及开关相连。其中A口和B口与数码显示管相连,分别控制段选和位选,设计中选取最后四位数码显示管。C口红黄灯、开关及蜂鸣器, C口低四位作输出口,PC0接扬声器,PC1接黄灯,PC2接红灯,高四位作输入口,PC7接开关。三、 控制程序设计1.控制程序设计思路说明首先将8255初始化(设置8255A的控制方式,A口、B口用于输出C口高四位输入,低四位输出),LED动态显示时间(分、秒),用软件查询判断分秒的情况:当显示5:00 、6:00、15:00时

12、,分别调用不同的发声子程序。显示期间若按复位键则时间从00:00开始计时。2.程序流程图图3-4.主程序流程图图3-5.判断时间控制流程图图3-6.进位判断3. 控制程序.MODEL TINY pcibar3 equ 1ch ;8位i/o空间基地址(它就是实验仪的基地址, 也为dma & 32bitram板卡上的8237提供基地址) vendor_id equ 10ebh ;厂商id号device_id equ 8376 ;设备id号.stack 100.data io_bit8_baseaddress dw ? msg0 db bios不支持访问pci $msg1 db 找不到star pc

13、i9052板卡 $msg2 db 读8位i/o空间基地址时出错$ com_add dw 00f3h ;控制口偏移量pa_add dw 00f0h ;pa口偏移量pb_add dw 00f1h ;pb口偏移量pc_add dw 00f2h ;pc口偏移量.code shuju db 3fh,06h, 5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;存储表示数字的各段选码分别表示为0-9wei db 00h,00h,00h,00h ;存储要显示的四个时间量start: mov ax,data mov ds,ax nop call initpci call modifyaddres

14、s ;根据pci提供的基地址,将偏移地址转化为实地址main: mov dx,com_add ;写8255a方式控制字mov al,88h mov al,10001000b ;a、b为工作方式0输出;c口pc4pc7为输入,pc3到pc0为输出 out dx,al mov dx,pc_add mov al,11111111b out dx,al mov si,offset wei ;设置wei的偏移地址于si中time: mov ah,0 mov si,ah mov si+1,ah mov si+2,ah mov si+3,ahtime1: mov ah,30 ;设置一秒钟循环显示的次数sho

15、w: mov di,offset wei+3 mov cl,11111110b ;位选码disp: mov al,di mov bx,offset shuju xlat mov dx,pb_add ;写入端口b out dx,al ;将从shuju空间内读取的段选码输入到端口b mov al,cl mov dx,pa_add out dx,al ;将位选码送入端口a call delay ;调用延时子程序 cmp cl,11110111b jz sadd dec di rol cl,1 jmp disp ;重新显示下一位sadd: dec ah jnz show ;一秒未显示30次则继续显示

16、mov dx,pc_add ;判断pc7是否为0 in al,dx test al,10000000b jnz time ;不为0则转移到初始化时间的程序段 mov al,0 mov ah,1 mov bl,5 mov bh,6 mov ch,10 add si+3,ah ;秒个数的时间量加1 cmp si,ah ;分十位是否为1 jb T5 ;小于1则转移 cmp si+1,bl jb T55 call strong jmp T4T5: cmp si+1,bl jnz T6 call soft jmp changeT6: cmp si+1,bh jb change call hurryT55

17、: call hurry jmp changechange:cmp si+3,ch jnz time1 mov si+3,al add si+2,ah cmp si+2,bh jnz time2 mov si+2,al add si+1,ah cmp si+1,ch jnz time2 mov si+1,al add si,ah jmp time2time2:jmp time1soft proc ;柔和声音子程序 push ax push bx push cx mov bx,5 ;叫声次数sound1: mov dx,pc_add mov al,11111110b out dx,al ;蜂鸣器

18、 mov cx,00ffh ;延时wait1: loop wait1 mov al,11111111b out dx,al mov cx,00ffh ;延时每次叫声持续的时间waitt1: loop waitt1 dec bx jne sound1 pop cx pop bx pop ax retsoft endphurry proc ;黄灯急促报警子程序 push ax push bx push cx mov bx,15sound2: mov dx,pc_add mov al,11111100b out dx,al ;蜂鸣器 mov cx,0fffh ;延时wait2: loop wait2

19、 mov al,11111111b out dx,al mov cx,00ffhwaitt2: loop waitt2 dec bx jne sound2 pop cx pop bx pop ax rethurry endpstrong proc ;红灯尖锐报警子程序 push ax push bx push cx mov bx,20sound3: mov dx,pc_add mov al,11111010b out dx,al ;蜂鸣器 mov cx,00ffh ;延时wait3: loop wait3 mov al,11111111b out dx,al mov cx,00f0hwaitt

20、3: loop waitt3 dec bx jne sound3 pop cx pop bx pop ax retstrong endpdelay proc ;延时子程序 push cx mov bl,20del: mov cx,1000waitd: loop waitd dec bl jnz del pop cx ret delay endp initpci proc near mov ah,00h mov al,03h int 10h ;清屏 mov ah,0b1h mov al,01h int 1ah cmp ah,0 jz initpci2 lea dx,msg0 initpci1:

21、mov ah,09h int 21h jmp exit initpci2: mov ah,0b1h mov al,02h mov cx,device_id mov dx,vendor_id mov si,0 int 1ah jnc initpci3 ;是否存在star pci9052板卡 lea dx,msg1 jmp initpci1 initpci3: mov di,pcibar3 mov ah,0b1h mov al,09h int 1ah ;读取该卡pci9052基地址 jnc initpci4 lea dx,msg2 jmp initpci1 initpci4: and cx,0ff

22、fch mov io_bit8_baseaddress,cx ret initpci endpmodifyaddress proc near add com_add,cx add pa_add,cx add pb_add,cx add pc_add,cx ret modifyaddress endpexit: mov ah,4ch int 21h四、上机调试过程1硬件调试1.8255的B口段选码, A口位选码,起初连接排线时排线接错或接反而不能显示完整数据。2.8255的C口高四位输入低四位输出,起初用排线接到灯及开关处,不能实现功能。应直接用导线接红黄灯,开关及蜂鸣器。2软件调试1.延时可用

23、软件延时或硬件延时,起初设计程序时便是用8255兼顾LED数码管显示以及蜂鸣器发声,而在实验报告预审期间,老是指导说蜂鸣器发声时占用CPU会导致显示的时间间隔不再准确,后在程序设定时让发声程序尽可能的缩短以缩小时间上的误差。2.LED数码管显示时间且蜂鸣器鸣叫时显示数据跳动不清晰,是由于蜂鸣器发声的时间过长。而程序定义是显示完4位时间再比较时间值,符合条件则发声,此时后三位LED数码管熄灭,只有现实分十位的数码管亮。若发声时间过长则明显看到后三位LED数码管显示的数据跳动。3.程序需要三种不同的发声子程序,且需要逐个增强的效果。程序中定义的可影响发声声音的是发声的次数,发声的时间以及发声的间隔

24、时间。而程序需要运行时间15分钟以上,为了节省时间提高效率只能让每秒的软件延时减短,延时时间短前提下可行的发声子程序在延时接近一秒时区别效果却不尽人意。为了使声音效果更好可以在定义程序计时时间初值时候改变初始值,例如设11分秒代替00分00秒就能很快检验后两种发声子程序的实际效果。4.程序6到15分是黄灯闪烁且声音急促,而6到10分和10到15分的声音效果不一样,结果发现是程序的循环语句定义有错误,改正后程序功能正确。5.程序设定是使用LED数码管后四位,在指导教师的要求下需要改为前四位显示,需要将位选码11111110改为11101111,判断是否显示完毕的11110111改为0111111

25、1.即送第五位开始显示,显示以后后向左循环左移。6.调试过程中8255的C口低四位输入出现问题,例如不需要蜂鸣器鸣叫时,蜂鸣器出现很低声音的鸣叫,换了输出端口也是如此。换了机器后功能恢复正常。五设计结果分析及问题讨论1.课程设计结果及分析程序开始正常运行时,四个LED数码管从00分00秒开始计时并显示时间,并隔相应的时间加一秒,当时间显示到5分00秒后,蜂鸣器发出较柔和的声音;到6分00秒后,蜂鸣器发出较急促的声音,黄灯闪烁;到15分00秒后,蜂鸣器发出尖锐的报警声,红灯闪烁。再次期间若拨动开关到高电平,系统则回到初始设置,时间为00分00秒,拨回开关开始从00分00秒从新计时。LED数码管的

26、显示使用段选和位选的方法进行控制。位选来选择哪一个显示灯亮,段选来控制显示器显示的时间数值。需要设置时间数字的缓冲区便于对时间的变化进行查询,以此来决定时都调用发声子程序。故要确定段码数值,利用段码表提供的数和位选依次对各个位进行赋初始值,此时偏移地址为0。在计时过程中通过改变缓冲区内的数值值以此作为换码指令的偏移地址,通过换码指令得到应该在数码显示器中显示的时间值。2. 收获、体会和建议1.通过课程设计对七段LED数码显示器的发光原理有了进一步的了解。发光二极管是一种当外加电压(阳极电压接高电位)超过额定电压时发生击穿,并因此能产生可见光的器件。数码显示管通常由多个发光二极管来组成7段或8段

27、笔画显示器,当段组合发亮时,便可显示某一数码或字符。设计中有4位七段LED接口电路,共有4个七段发光二极管的器件。为了减少所用器件的数量,这个电路可以和4个8位并行输出口连接。4个显示器共用同一组段代码输出线,但通过数位选择线,在任何时间内只有一个显示器能够显示其代码。为了实现这一功能,可让每个显示器接通一小段时间,以显示其对应的数,并且循环显示这4个数,以达到一秒的时间。这样可,人们看上去好象4个显示器都在同时显示。通过段码表来确定显示时间的数值。2.通过课程设计对8255的方式0有了进一步的了解。8255有三个8位端口PA,PB和PC。各端口都可由程序设定为各种不同的工作方式,在设计中A口

28、工作于方式0,低4位用作位选码;B口工作于方式0,8位用于段选码;C口也工作于方式0,高4位用于输入口,低4位用于输出口,红黄灯及蜂鸣器接低四位,复位开关接高四位。3.通过课程设计更深一步地学习和掌握了计算机中常用接口电路8255的应用和设计技术,也更进一步了解到其他芯片例如8253的用途和结构等,认识到理论知识对应用技术的指导性作用,实践更利于理论知识的吸收。通过此次课程设计自己查资料动脑筋设计方案,并花大量的时间调试硬件和软件,对课本知识的理解上升更高的层次,相信再过很长时间也还印象深刻。上枯燥抽象的理论课,经过一步加强理论知识与应用相结合的实践和锻炼后也有了更深的理解与心得。 4.为完成这次课程设计,不仅巩固了我的专业知识,更提高了我独立思考和实践的能力。可以说这次的设计与以往的课程设计存在很大的迥异,因为它不仅要求编程,更需要软件的设计配合完成硬件的设计,这对我们的学习和分析问题的能力是一次很好的训练和提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1