夜班防睡控制+记录器.docx
- 文档编号:4565564
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:18
- 大小:172.22KB
夜班防睡控制+记录器.docx
《夜班防睡控制+记录器.docx》由会员分享,可在线阅读,更多相关《夜班防睡控制+记录器.docx(18页珍藏版)》请在冰豆网上搜索。
夜班防睡控制+记录器
合肥学院
计算机科学与技术系
微机原理与接口技术
课程设计报告
2008〜2009学年第1学期
课程
课程设计名称学学
专
指
名
号
级
师
微机原理与接口技术
夜班防睡控制/记录器
0604032020
网络工程专业(06网工2)
2009年1月
、需求分析和解决问题的思路
1.题义与需求分析1)任务分析
1每5分钟用一次较柔和的声音提醒值班者按复位键,之后计时重新开始。
2若计时到6分钟时,还没人按复位键,则以较急促的声音报警,黄灯闪烁。
3当到15分钟的时候红灯闪烁,并以持续尖锐的声音报警,以LEDS示分和秒。
2)功能分析
本设计主要是为了解决值班人员在值夜班时容易睡觉的问题。
设计中主要通
过扬声器发生来防止值班人员睡觉,每隔5分钟用较柔和的声音提醒值班人员一次,值班人员按下复位键重新即时,说明值班人员并未睡着;如果及时到6分钟
值班人员还没有按复位键,说明此时值班人员可能已经开始打盹,扬声器发出较急促的声音报警,并且黄灯闪烁,若此按下复位键,又重新计时;如果到了15
分钟还没有人按复位键,那么此时值班人员可能已经完全睡着,扬声器发出尖锐的声音报警,红灯闪烁,并以LED记录睡着的时间。
3)需要解决的问题
需要发声提醒,发声提醒又分为3种(较柔和,较急促,尖锐的声音),通过键盘复位,要红,黄灯闪烁。
还要将时间动态显示在LED显示器上,每秒刷新一次。
而且分秒显示共需4位数字,所以要有4个LED数码管进行控制。
秒控制的两位要在60秒后进位,分钟的两位加1,秒清零。
扬声器可用专门的扬声器电路,也要用PC机的喇叭实现。
2.解决问题方法及思路1)硬件部分
1PC机一台,并行接口8255A一片,LED数码管4只,发光二极管2只(红、黄各一只),开关一个,扬声器一只。
2利用扬声器发声报警,节拍由延时程序决定.
3使不同颜色的发光二极管按一定规律发光。
4使实验箱上的8255A作为输出接口,驱动二极管发光。
所用端口工作在方式0、输出即可。
5定义开关清零。
6PC7接开关,用作输入,控制复位。
7通过8255A来控制LED发光二极管的亮灭。
8PC0接扬声器、PC1接红灯、PC2接黄灯。
9二极管闪烁:
开I关输出为0则亮,输出为1则灭。
2)软件部分
程序部分首先进行初始8255,然后进行时间显示,初值显示00分00秒,四个显示器每个显示10ms,接着秒个位加1,进行下一次显示,当秒个位为10时,秒十位加1,同时秒个位清零.当秒十位为6时,分个位加1,秒位清零,依次显示。
当显示为5分00秒时,发出控制信号使扬声器发出柔和的声音,此时,若有人拨动开关,则四个显示器全清零,又从00分00秒开始显示。
当显示5分00秒时,发出轻微的柔和的报警声,当显示6分00秒时,发出急促的报警声,发出控制信号使黄灯闪烁。
当显示为15分00秒时,扬声器持续发出尖锐的报警声,发出控制信号使红灯闪烁。
、硬件设计
1.芯片8255-A1)8255A在本设计中的作用
8255A作为输出接口,驱动二极管发光。
所用端口工作在方式0。
控制发光二极管的亮灭。
A口,B口控制LED数码显示管,C口低四位分别接扬声器,红灯,黄灯。
高四位中的Pc4接开关,用于输入信号,使系统复位。
2)8255A的功能分析
8255方式0是基本输入/输出方式,A、B、C三个口中任何一个口都可提供简单的输入和输出操作,不需要应答联络信号,即可用于无条件传送的场合,也可以用作查询方式传送。
当采用查询方式传送时,原则上可用A、B和C三个口的任一位充当查询信号,但通常都是选用C口充当查询信号,这和C口的编程有关。
通常把C口的4位(高4位或低4位)规定为输出口,用以输出一些控制信号,把C口的另4位规定为输人口,用以输入外设的状态。
3)8255A原理图及功能表
图2-18255A原理图
表2-18255A的操作功能表
CS
RD
WR
A1
操
作
数据传
送方式
A0
0
0
1
0
0
读
A口
A口数据f
数据总线
0
0
1
0
1
读
B口
B口数据f
数据总线
0
0
1
1
0
读
C口
C口数据f
数据总线
0
1
0
0
0
写
A口
数据总线数据
fA口
0
1
0
0
1
写
B口
数据总线数据
fB口
0
1
0
1
0
写
C口
数据总线数据
fC口
0
1
0
1
1
写控制口
数据总线数据
f控制口
8255A有三种工作方式,用户可以通过编程来设置。
4)8255A的方式控制字
图2-28255A方式控制字
5)方式0的工作特点
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
其功能为:
1两个8位通道:
通道A、B。
两个四位通道:
通道C高4位和低四位;
2任何一个通道可以作输入/输出;
3输出是锁存的;
4输入是不锁存的;
5在方式0时各个通道的输入/输出可有16种不同的组合。
6)8255部分技术参数
表2-28255A技术参数
Symbol
Parameter
Min
Max
Unit
VIL
InputLowVoltage
-0.5
0.8
V
ViH
InputHighVoltage
2.0
Vcc
V
VOL(DB)
OutputLowVoltage(DateBus)
0.45*
V
VOL(PER)
OutputLowVoltage(PeripheralPort)
0.45*
V
VOH(DB)
InputLowVoltage(DateBus)
2.4
V
VOH(PER)
InputLowVoltage(PeripheralPort)
2.4
V
Idar⑴
DartingtonDriveCurrent
-1.0
-4.0
mA
icc
PowerSupplyCurrent
120
mA
IlL
InputLoadCurrent
±10
A
loFL
OutputFloatLeakage
±10
A
输入最低电压:
min-0.5V,max0.8V,输入最高电压:
2.0V。
输出最低电压:
0.45V
输出最高电压:
2.4V。
2丄ED显示器
1)作用
LED发光二级管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。
2)LED功能分析
图2-3LED图示
1物理构造:
LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,
其内部结构为一个PN吉,具有单向导电性。
2工作原理:
当在发光二极管PN吉上加正向电压时,PN吉势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。
3数字成像:
将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。
4
1位,七段代码的各位用作a-g和
实验中采用的是共阴极七段LED显示器,他由多个发光二极管组成,七段或八段笔画显示器,当段组发亮时,便可显示数字Dp的输入,当对应的位为1时,则该段亮。
数码管内部结构
3)LED显示管段选码编码表
表2-3LED段选码
数字
DP
g
f
e
d
c
b
a
二进制编码(字形)
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
0
1
1
03H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
A
0
1
1
1
0
1
1
1
77H
B
0
1
1
1
1
1
0
0
7CH
C
0
0
1
1
1
0
0
1
69H
D
0
1
0
1
1
1
1
0
5EH
E
0
1
1
1
1
0
0
1
79H
F
0
1
1
1
0
0
0
1
71H
4)技术参数
表2-4LED技术参数
PCW
If
Vr
Ir
If
RP
对应型号
散射颜色
BT-235-270
25
5
>=1.5
<=2.5
200
SEL-10
红色
3.
单刀双掷开关
本次设计需要用1位开关,用于检测值班者是否睡着。
图2-5单刀双掷开关
开关闭合输入0,开关断开输入1。
开关高电平:
+5V低电平:
0V
实验中单刀双掷开关接地,即通过8255,PC5检测到为0,当值班者拨动开关接
+5V电压时,PC5检测到为1(即相当于值班者按动按扭)
4.扬声器1)作用
本次设计需要扬声器发出三种不同频率的响声,由8255的PC0空制(第0位控
制)
2)功能分析
如果使该位交替为''为T则产生一个脉冲电流,该电流放大后驱动扬声器发出声曰。
5.硬件总逻辑图及其说明
图2-8硬件总逻辑图
上图所示为数码显示管逻辑总图,图中所用到的为一片8255芯片、1位开关、4个七段LED数码显示管、红灯和黄灯。
将PCI的CSA0、A1分别接8255A勺CSA0、A1,8255A的PA0~PA接入数码管选择脚,PB0~PB分别与数码管段码相连,作为段选择。
8255的A口,B口控制LED数码显示管,C口低四位作输出口,PC0接扬声器,PC1接黄灯,PC2接红灯,高四位作输入口,PC接开关。
三、控制程序设计
1)控制程序设计思路说明
首先将8255初始化(设置8255A勺控制方式,A口、B口用于输出C口高四位输入,低四位输出),LED动态显示时间(分、秒),用软件查询判断分秒的情况:
当显示5:
00、6:
00、15:
00时,分别调用不同的发声子程序。
显示期间若按复位键则时间从00:
00开始计时。
2)控制程序流程图
开始
初始化8255
*
设置时间向量
地址
设置时间初值
>
*
图3-1主程序流程图
返回显示子程序
返回设置时间初值
图3-2判断时间控制流程图
返回设置间隔
N
Y
秒十位加1
个位清零
返回设置间隔
秒十位是否为6
Y
秒十位清零
分个位加1
返回设置间隔
图3-3进位判断
db
位选码
;重新显示下
;若一秒
判断c
0
;复位
3)控制程序
.MODELTINY
pcibar3equ1ch;8位i/o空间基地址(它就是实验仪的基地址,也为dma&32bitram板卡上的8237提供基地址)vendor_id
device_id.stack100.dataio_bit8msg0db$'msg1db卡$'msg2db
pa_addpb_addpc_add.codeLight3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;存储表示数字的各
段选码分别表示为0-9
timdb00h,00h,00h,00h
;存储要显示的四个时间量start:
movax,@data
movds,ax
nop
callinitpci
callmodifyaddress;根
据pci提供的基地址,将偏移地址转化为实地址
main:
movdx,com_add
;写8255a方式控制字
moval,88h
;设置端口a为工作方式出端口
moval,10001000b;pc4为输入,pc3到pc0为输出;端口b为输出并工作在方式0
outdx,almovdx,pc_addmoval,11111111boutdx,almovsi,offsettim
;设置tim的偏移地址于si中
movah,1
mov[si],ah
mov[si+1],ah
mov[si+2],ah
mov[si+3],ah
movah,30
;设置一秒钟循环显示的次数movdi,offsettim+3movcl,11111110b;
disp:
moval,[di]
movbx,offsetlightxlat
movdx,pb_add;写入端口b
outdx,al
;将从light空间内读取的段选码输入到端口b
moval,clmovdx,pa_add
outdx,al;将位选码送入端口a
calldelay;调用延时子程序
cmpcl,11110111bjztimingdecdirolcl,1
jmpdisp
一位
guodu:
jmpgotiming:
decah
jnzctrl
未显示30次则转向以上显示四个时间量的程序显示30次
movdx,pc_add;
口开关端口pc7输入是否为
inal,dx
testal,10000000b
jnzinit
moval,0
movah,1movbl,5movbh,6movch,10add[si+3],ah;
的时间量加1
cmp[si],ahjbmin5cmp[si+1],bljbcallhcallstrongalarmjmptimeadmin5:
cmp[si+1],bljnzmin6callsoftalarmjmptimeadmin6:
cmp[si+1],bhjbtimeadcallhurryalarmcallh:
callhurryalarmjmptimeadtimead:
cmp[si+3],chjnzgomov[si+3],aladd[si+2],ahcmp[si+2],bhjnzguodumov[si+2],aladd[si+1],ahcmp[si+1],chjnzguodumov[si+1],aladd[si],ahjmpgosoftalarmproc
;柔和声音子程序pushaxpushbxpushcx
movbx,10
sound1:
movdx,pc_add
moval,11111110b
outdx,al;
movcx,0fffh
秒个数
;叫声次数
蜂鸣器
;延时
蜂鸣器
;延时
waitl:
Ioopwaitlmoval,11111111boutdx,almovcx,Offfh;延时每次叫声持续的时间waitti:
loopwaitti
decbxjnesoundlpopcxpopbxpopaxretsoftalarmendphurryalarmproc
;急促声音伴随黄灯闪烁子程序
Pushaxpushbxpushcxmovbx,25sound2:
movdx,pc_addmoval,11111100boutdx,al;
movcx,0fffhwait2:
loopwait2
moval,11111111boutdx,almovcx,0fffhwaitt2:
loopwaitt2decbxjnesound2popcxpopbxpopaxrethurryalarmendpstrongalarmproc
;尖锐声音伴随红灯闪烁子程序
Pushaxpushbxpushcxmovbx,50sound3:
movdx,pc_addmoval,11111010boutdx,al;蜂鸣器
;是否存
movcx,0fffh;延时wait3:
loopwait3
moval,11111111b
outdx,al
movcx,0fffhwaitt3:
loopwaitt3
decbx
jnesound3
popcx
popbx
popax
ret
strongalarmendpdelayproc;延时子程序
pushcx
movbl,20
del:
movcx,1000waitd:
loopwaitddecbl
jnzdel
popcx
ret
delayendp
initpciprocnear
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:
movah,09h
int21h
jmpexitinitpci2:
movah,Ob1h
moval,02h
movcx,device_idmovdx,vendor_idmovsi,0int1ahjncinitpci3在starpci9052板卡
leadx,msg1jmpinitpcHinitpci3:
movdi,pcibar3
movah,0b1hmoval,09hint1ah;读取该卡pci9052基地址
jncinitpci4leadx,msg2jmpinitpcHinitpci4:
andcx,0fffch
mov
io_bit8_baseaddress,cx
ret
initpciendpmodifyaddressprocnear
addcom_add,cx
addpa_add,cxaddpb_add,cxaddpc_add,cxretmodifyaddressendpexit:
movah,4ch
int21h
endstart
四、设计结果分析及问题讨论
1.上机调试过程
1上机过程中由于事先对实验的具体实际要求理解不彻底,所以导致实验方案失败,重新修改了方案;
2上机运行后,数码管显示数字不对,经检查,发线问题出在数码转换表定
义有误;
3程序的时间控制部分写得不够完善,导致计时到15分钟后报警音混乱。
经思考,修改了程序。
4最后在报警声音方面上又遇到了问题,没有达到预期的声音逐渐增强的效果。
通过反复的对声音模块参数的修改终于达到了预期效果。
58253—直输出方波,使得蜂鸣器不停的发声。
解决方法:
在指定的发声位置调用发声延时并通过控制8253计数器2的门控信号控制发声的停止。
将不同的发声程序定义不同的实现过程。
6蜂鸣器正常发声后,出现了不能及时将其关闭的问题,经过思考后决定采用8255的PCG作为GAT门控信号,对8253的计数器2进行控制,解决这个问题的关键是对8255的PC0t行置位/复位,以此来控制8253开始和停止输出方波。
2.课程设计结果及分析1)设计结果
程序开始运行时,四个LED丁从00分00秒开始显示时间,并隔相应的时间加一秒,一直显示到59分59秒,然后又从00分00秒开始显示,如此循环下去。
当时间显示到50分00秒时,扬声器发出较柔和的声音,到60分00秒时,扬声器发出较急促的声音,黄灯闪烁,到15分00秒时,扬声器发出尖锐的报警声,红灯闪烁。
每次拨开关为高电平时,LED丁就变成从00分00秒开始显示。
2)结果分析
1数码管的显示使用段选和位选的方法进行控制,即用位选来选择哪一个显示灯亮,用段选来控制显示器显示的时间值。
设计中因为时间的确定决定着发声和灯亮的操作,故一定要设置一个时间数字的缓冲区,以便于对时间的变化进行查询。
本次设计中最为重要的是定义段码表,其作用可归纳为:
(1)初始状态时,时间为00:
00这时要利用段码表提供的数和位选依次对各个位进行赋值。
(此时偏移地址为0)
(2)计时时通过改变缓冲区内的数值值,以此作为换码指令的偏移地址,通过换码指令得到应该在数码显示器中显示的时间值。
2时间变化过程中要进行查询,注意与0,5,6,10几个敏感的数值进行比较,通过比较进行相应的操作。
功能扩展后,为了实现可控时间的发声,还需要
与7、&9三个数字进行比较,从而发出特定的报警声。
3本设计中峰鸣器的发声由8253完成,通过在计数器中打入不同的计数初
值,使8253在特定的工作方式下实现峰鸣器发出不同频率和强度的报警声。
8253
要与8255的C口相连,8255向8253输出门控信号,通过对8255控制口写C口置位复位控制字,控制PC(置1,使8253以方式3产生方波,从而驱动蜂鸣器的发声。
3)收获、体会和建议
1通过本次课程设计,对8255的工作方式尤其是方式0有了进一步的了解。
8255有三个8位端口PAPBffiPC,各端口都可由程序设定为各种不同的工作方式。
在本设计中A口工作于方式0,低4位用作位选码;B口工作于方式0,8位用于段选码,C口也工作于方式0,高4位用于输入口,低4位用于输出口。
2通过本次课程设计对七段LED数码显示器的发光原理有了进一步的了解。
发光二极管是一种当外加电压邙阳极电压接高电位)超过额定电压时发生击穿,并因此能产生可见光的器件。
数码显示管通常由多个发光二极管来组成7段或8
段笔画显示器,当段组合发亮时,便可显示某一数码或字符。
本设计有4位七段
LEE接口电路,共有4个七段发光二极管的器件。
为了减少所用器件的数量,这个
电路可以和4个8位并行输出口连接。
4个显示器共用同一组段代码输出线,但通
过数位选择线,在任何时间内只有一个显示器能够显示其代码。
为了实现这一功能,可让每个显示器接通一小段时间,以显示其对应的数,并且循环显示这4个数,以达到一秒的时间。
这样可,人们看上去好象4个显示器都在同时显示。
3充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 夜班 控制 记录器