1104011006杨磊夜班防睡.docx

上传人:b****5 文档编号:30006329 上传时间:2023-08-04 格式:DOCX 页数:27 大小:274KB
下载 相关 举报
1104011006杨磊夜班防睡.docx_第1页
第1页 / 共27页
1104011006杨磊夜班防睡.docx_第2页
第2页 / 共27页
1104011006杨磊夜班防睡.docx_第3页
第3页 / 共27页
1104011006杨磊夜班防睡.docx_第4页
第4页 / 共27页
1104011006杨磊夜班防睡.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

1104011006杨磊夜班防睡.docx

《1104011006杨磊夜班防睡.docx》由会员分享,可在线阅读,更多相关《1104011006杨磊夜班防睡.docx(27页珍藏版)》请在冰豆网上搜索。

1104011006杨磊夜班防睡.docx

1104011006杨磊夜班防睡

 

计算机科学与技术系

 

微机原理与接口技术

课程设计

2013~2014学年第1学期

课程设计题目

微机原理与接口技术课程设计

院系名称

计算机科学与技术

专业

计算机科学与技术

班级

11级计本一班

姓名(学号)

杨磊(1104011006)

指导教师

张向东、龙夏

2014年1月

 

1功能分析及解决方案2

1.1功能需求分析2

1.2解决问题方法及思路2

2硬件设计3

2.1可编程定时器计数器82533

2.2可编程并行接口82555

2.3可编程设置型键盘/显示器接口82795

2.4语音模块ISD14205

2.5键盘5

2.6LED灯5

2.7数码管5

2.8蜂鸣器5

2.9硬件总逻辑图及其说明12

3控制程序设计14

3.1控制流程设计及其思路说明14

3.2程序流程图15

3.3控制程序18

4上机调试过程41

4.1硬件调试41

4.2软件调试41

4.3联机调试42

4.4调试结果及问题的提出42

5设计结果分析及问题讨论42

5.1课程设计及结果分析42

5.2问题讨论42

5.3收获、体会和意见42

附录1系统原理图44

 

一、需求分析和解决问题的思路

1.1需求分析

1.1.1市场需求分析

如今社会上是大型企业和社会重要部门与组织的固定资产愈来愈多,而大量的固定资产的保护是现今企业面临的主要问题。

许多的企业都选择夜间值班这一措施来保护自己的固定资产,这个方法看上去是个不错的解决方式,但实际上它也是存在着不小的漏洞。

在夜间值班期间,值班者总有不时犯困的,而犯困是周围有没有人来提醒值班者,这同样可以让不法者有机可乘。

本设计就是针对这一问题而设计的。

利用计时警报提醒来警示值班者,从而可以大大降低值班者的昏睡频率。

进而保护企业的财产。

同时该设计这市场上的前景也是比较开阔的。

据了解在市场上同类型的产品基本上属于真空。

这也保证了本设计的市场出路。

1.1.2任务分析

1)每5分钟用一次较柔和的声音提醒值班者按复位键,之后计时重新开始。

2)若计时到6分钟时,还没人按复位键,则以较急促的声音报警,黄灯闪烁。

3)当到15分钟的时候红灯闪烁,并以持续尖锐的声音报警,以LED显示分和秒。

1.1.3功能分析

本设计主要是为了解决值班人员在值夜班时容易睡觉的问题。

设计中主要通过扬声器发生来防止值班人员睡觉,每隔5分钟用较柔和的声音提醒值班人员一次,值班人员按下复位键重新即时,说明值班人员并未睡着;如果及时到6分钟值班人员还没有按复位键,说明此时值班人员可能已经开始打盹,扬声器发出较急促的声音报警,并且黄灯闪烁,若此按下复位键,又重新计时;如果到了15分钟还没有人按复位键,那么此时值班人员可能已经完全睡着,扬声器发出尖锐的声音报警,红灯闪烁,并以LED记录睡着的时间。

1.1.4需要解决的问题

需要发声提醒,发声提醒又分为3种(较柔和,较急促,尖锐的声音),通过键盘复位,要红,黄灯闪烁。

还要将时间动态显示在LED显示器上,每秒刷新一次。

而且分秒显示共需4位数字,所以要有4个LED数码管进行控制。

秒控制的两位要在60秒后进位,分钟的两位加1,秒清零。

扬声器可用专门的扬声器电路,也要用PC机的喇叭实现。

1.2解决问题方法及思路

1.2.1硬件部分

1)PC机一台,并行接口8255A一片,LED数码管4只,发光二极管2只(红、黄各一只),开关一个,扬声器一只。

2)利用扬声器发声报警,节拍由延时程序决定.

3)使不同颜色的发光二极管按一定规律发光。

4)使实验箱上的8255A作为输出接口,驱动二极管发光。

所用端口工作在方式0、输出即可。

5)定义开关清零。

6)PC7接开关,用作输入,控制复位。

7)通过8255A来控制LED发光二极管的亮灭。

8)PC0接扬声器、PC1接红灯、PC2接黄灯。

9)二极管闪烁:

开|关输出为0则亮,输出为1则灭。

1.2.2软件部分

程序部分首先进行初始8255,然后进行时间显示,初值显示00分00秒,四个显示器每个显示10ms,接着秒个位加1,进行下一次显示,当秒个位为10时,秒十位加1,同时秒个位清零.当秒十位为6时,分个位加1,秒位清零,依次显示。

当显示为5分00秒时,发出控制信号使扬声器发出柔和的声音,此时,若有人拨动开关,则四个显示器全清零,又从00分00秒开始显示。

当显示5分00秒时,发出轻微的柔和的报警声,当显示6分00秒时,发出急促的报警声,发出控制信号使黄灯闪烁。

当显示为15分00秒时,扬声器持续发出尖锐的报警声,发出控制信号使红灯闪烁。

2硬件设计

2.1芯片8255-A

2.1.18255A在本设计中的作用

8255A作为输出接口,驱动二极管发光。

所用端口工作在方式0。

控制发光二极管的亮灭。

A口,B口控制LED数码显示管,C口低四位分别接扬声器,红灯,黄灯。

高四位中的Pc4接开关,用于输入信号,使系统复位。

2.1.28255A的功能分析

8255方式0是基本输入/输出方式,A、B、C三个口中任何一个口都可提供简单的输入和输出操作,不需要应答联络信号,即可用于无条件传送的场合,也可以用作查询方式传送。

当采用查询方式传送时,原则上可用A、B和C三个口的任一位充当查询信号,但通常都是选用C口充当查询信号,这和C口的编程有关。

通常把C口的4位(高4位或低4位)规定为输出口,用以输出一些控制信号,把C口的另4位规定为输人口,用以输入外设的状态。

2.1.38255A原理图及功能表

图2-18255A原理图

表2-18255A的操作功能表

A1A0

操作

数据传送方式

00100

读A口

A口数据→数据总线

00101

读B口

B口数据→数据总线

00110

读C口

C口数据→数据总线

01000

写A口

数据总线数据→A口

01001

写B口

数据总线数据→B口

01010

写C口

数据总线数据→C口

01011

写控制口

数据总线数据→控制口

8255A有三种工作方式,用户可以通过编程来设置。

2.1.48255A的方式控制字

图2-28255A方式控制字

2.1.5方式0的工作特点

这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。

其功能为:

1)两个8位通道:

通道A、B。

两个四位通道:

通道C高4位和低四位;

2)任何一个通道可以作输入/输出;

3)输出是锁存的;

4)输入是不锁存的;

5)在方式0时各个通道的输入/输出可有16种不同的组合。

2.1.68255部分技术参数

 

表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

(1)

DartingtonDriveCurrent

-1.0

-4.0

mA

ICC

PowerSupplyCurrent

120

mA

IIL

InputLoadCurrent

±10

μA

IOFL

OutputFloatLeakage

±10

μA

输入最低电压:

min-0.5V,max0.8V,输入最高电压:

2.0V。

输出最低电压:

0.45V

输出最高电压:

2.4V。

2.2LED显示器

2.2.1作用

LED发光二级管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。

2.2.2LED功能分析

图2-3LED图示

(1)物理构造:

LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。

(2)工作原理:

当在发光二极管PN结上加正向电压时,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。

(3)数字成像:

将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。

实验中采用的是共阴极七段LED显示器,他由多个发光二极管组成,七段或八段笔画显示器,当段组发亮时,便可显示数字1位,七段代码的各位用作a-g和Dp的输入,当对应的位为1时,则该段亮。

图2-4LED内部结构示意图

2.2.3LED显示管段选码编码表

表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

2.2.4技术参数

表2-4LED技术参数

PCW

If

Vr

Ir

If

RP

对应型号

散射颜色

BT-235-2

70

25

5

>=1.5

<=2.5

200

SEL-10

红色

2.3单刀双掷开关

2.3.1开关的作用

本次设计需要用1位开关,用于检测值班者是否睡着。

+5V

图2-5单刀双掷开关

2.3.2开关的功能分析

开关闭合输入0,开关断开输入1。

2.3.3技术参数

开关高电平:

+5V、低电平:

0V

实验中单刀双掷开关接地,即通过8255,PC5检测到为0,当值班者拨动开关接+5V电压时,PC5检测到为1(即相当于值班者按动按扭)

2.4扬声器

2.4.1作用

本次设计需要扬声器发出三种不同频率的响声,由8255的PC0控制(第0位控制)

2.4.2功能分析

如果使该位交替为’0’为’1’则产生一个脉冲电流,该电流放大后驱动扬声器发出声音。

2.5硬件总逻辑图及其说明

图2-8硬件总逻辑图

上图所示为数码显示管逻辑总图,图中所用到的为一片8255芯片、1位开关、4个七段LED数码显示管、红灯和黄灯。

将PCI的CS、A0、A1分别接8255A的CS、A0、A1,8255A的PA0~PA7接入数码管选择脚,PB0~PB7分别与数码管段码相连,作为段选择。

8255的A口,B口控制LED数码显示管,C口低四位作输出口,PC0接扬声器,PC1接黄灯,PC2接红灯,高四位作输入口,PC7接开关。

 

3控制程序设计

3.1控制程序设计思路说明

首先将8255初始化(设置8255A的控制方式,A口、B口用于输出C口高四位输入,低四位输出),LED动态显示时间(分、秒),用软件查询判断分秒的情况:

当显示5:

00、6:

00、15:

00时,分别调用不同的发声子程序。

显示期间若按复位键则时间从00:

00开始计时。

3.2控制程序流程图

 

图3-1主程序流程图

图3-2判断时间控制流程图

图3-3进位判断

 

3.3控制程序

.modeltiny

extrnDisplay8:

near

.stack100

.data

COM_ADDEQU0F003H;控制口偏移量

PA_ADDEQU0F000H;PA口偏移量

PB_ADDEQU0F001H;PB口偏移量

PC_ADDEQU0F002H;PC口偏移量

tabdb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

m1db00h,00h,00h,00h

bufferdb00h,00h,00h,00h,00h,00h,00h,00h

m2db00h,00h,00h,00h

.code

start:

movax,@data

movds,ax

nop

movsi,offsetm2

movah,0

mov[si],ah

mov[si+1],ah

mov[si+2],ah

mov[si+3],ah

main:

movdx,COM_ADD;写8255A方式控制字

moval,88h;10001000令A口和B口方式0输出;C口Pc7到Pc4为输入,Pc3到Pc0输出

outdx,al

movdx,PC_ADD

moval,0FFH

outdx,al

movsi,offsetm1

lop:

movah,0

mov[si],ah

mov[si+1],ah

mov[si+2],ah

mov[si+3],ah

callLedDisplay

lop4:

movah,30

waite:

movdi,offsetm1

disp:

callLedDisplay

calldelay

exit2:

decah

jnzwaite

movdx,PC_ADD

inal,dx

testal,10000000B;判断是否复位

jzmain

calldecide

jmplop4

decideprocnear

pushax

pushbx

pushcx

moval,0

movah,1

movbl,5

movbh,6

add[di+3],ah;秒钟自动加一

cmp[di],ah;分十位是否小于等于1

jnaaa

ee:

callsleep;时间大于15

callrlgspk

jmpasd

aa:

cmp[di],ah;分十位是否大于等于1

jnbbb

cmp[di+1],bh;分个位是否小于6

jbcc

callylgspk

cc:

cmp[di+1],bl;分个位是否为5

jnzasd

callsoftspk

bb:

cmp[di],ah

jnzasd

cmp[di+1],bl;分个位是否大于5

jaeee

callylgspk

asd:

calltime

popax

popbx

popcx

ret

decideendp

timeprocnear;记时间子程序

pushax

pushbx

pushcx

moval,0

movah,1

movbh,6

movch,10

cmp[di+3],ch;判断秒钟的个位是否满10,满10后秒钟的个位清零,秒钟十位加1

jnzsl1

mov[di+3],al;秒钟的个位清零

add[di+2],ah;秒钟的十位加1

cmp[di+2],bh;判断秒的十位是否为6

jnzsl1

mov[di+2],al;秒钟十位满6后清零

add[di+1],ah;分钟个位加1

cmp[di+1],ch;判断分的个位是否为10,满10清零,分钟的十位加1

jnzsl1

mov[di+1],al

add[di],ah

sl1:

popax

popbx

popcx

ret

timeendp

 

;0-5之间的报警柔和

softspkproc

pushax

pushbx

pushcx

movbx,5

sound1:

movdx,pc_add

moval,11111110b

outdx,al

movcx,050h

wait1:

loopwait1

moval,0ffh

outdx,al

decbx

jnesound1

popcx

popbx

popax

ret

softspkendp

 

;6-15之间的报警急促

ylgspkproc

pushax

pushbx

pushcx

movbx,10

sound2:

movdx,pc_add

moval,11111100b

;低

outdx,al

movcx,050h

wait2:

loopwait2;50次

moval,0ffh;高

outdx,al

decbx

jnesound2

popcx

popbx

popax

ret

ylgspkendp

 

;15分钟之后的报警尖锐

rlgspkproc

pushax

pushbx

pushcx

movbx,120

sound3:

movdx,pc_add

moval,11111010b

;将pc口的p0口和p2口分别置0代表在红灯亮和扬声器响

outdx,al

decbx

movcx,050h

;进行循环50次

wait3:

loopwait3

moval,0ffh

outdx,al

decbx

jnesound3

popcx

popbx

popax

ret

rlgspkendp

 

sleepprocnear;记录睡着时间子程序

pushax

pushbx

pushcx

movsi,offsetm2

moval,0

movah,1

movbh,6

movch,10

add[si+3],ah

cmp[si+3],ch;判断秒钟的个位是否满10,满10后秒钟的个位清零,秒钟十位加1

jnzsl

mov[si+3],al;秒钟的个位清零

add[si+2],ah;秒钟的十位加1

cmp[si+2],bh;判断秒的十位是否为6

jnzsl

mov[si+2],al;秒钟十位满6后清零

add[si+1],ah;分钟个位加1

cmp[si+1],ch;判断分的个位是否为10,满10清零,分钟的十位加1

jnzsl

mov[si+1],al

add[si],ah

sl:

popax

popbx

popcx

ret

sleependp

 

;延时子程序

delayproc

pushcx

movbl,10

del:

movcx,1000

wait5:

loopwait5

decbl

jnzdel

popcx

ret

delayendp

 

LedDisplayPROCNEAR

pushax

moval,m1[0]

movbuffer,al

moval,m1[1]

oral,80h

movbuffer+1,al

moval,m1[2]

movbuffer+2,al

moval,m1[3]

movbuffer+3,al

moval,m2[0]

movbuffer+4,al

moval,m2[1]

oral,80h

movbuffer+5,al

moval,m2[2]

movbuffer+6,al

moval,m2[3]

movbuffer+7,al

leasi,buffer

callDisplay8

popax

ret

LedDisplayendp

exit:

movah,4ch

int21h

endstart

 

.

 

4.设计结果分析与问题讨论

4.1上机调试过程

1)上机过程中由于事先对实验室设备不了解,所以导致实验方案失败,重新修改了方案,耽误了不少时间;

2)联机运行后,数码管显示数字不对,经检查,发线问题出在数码转换表定义有误;

3)在扬声器发声的时候,LED数码显示管停止显示时间,这将导致当前时间显示太长。

4)时间判断子程序应放在时间控制子程序之中,否则15分钟后的报警LED会出现闪烁,达不到预期的效果。

5)最后在报警声音方面上又遇到了问题,没有达到预期的声音逐渐增强的效果。

通过反复的对声音模块参数的修改终于达到了预期效果。

6)最开始由于对汇编语言编程的不熟悉不了解,浪费了大量的时间在看书上面,导致最后剩余编程的时间太少,不得已只有在课下进机房进行编程调试。

7)在编程的过程中虽然程序能够调通,但是程序冗长,有的部分甚至出现逻辑错误。

在老师的提示下,我进行了逻辑和代码的优化。

4.2课程设计结果及分析

4.2.1设计结果

程序开始运行时,四个LED灯从00分00秒开始显示时间,并隔相应的时间加一秒,一直显示到59分59秒,然后又从00分00秒开始显示,如此循环下去。

当时间显示到05分00秒时,扬声器发出较柔和的声音,到06分00秒时,扬声器发出较急促的声音,黄灯闪烁,到15分00秒时,扬声器发出尖锐的报警声,红灯闪烁。

每次拨开关为高电平时,LED灯就变成从00分00秒开始显示,但若是在15分00秒时,值班人员没有按复位键,除了扬声器持续发出尖锐的报警声外,后面的四个数码管开始计时,且后面的四个数码管的时间不会随着复位键的激活而复位。

用于记录睡着的时间,以供管理人员第二天检查。

4.2.2结果分析

1、数码管的显示使用段选和位选的方法进行控制,即用位选来选择哪一个显示灯亮,用段选来控制显示器显示的时间值。

设计中因为时间的确定决定着发声和灯亮的操作,故一定要设置一个时间数字的缓冲区,以便于对时间的变化进行查询。

本次设计中最为重要的是定义段码表,其作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

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

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