病房呼叫系统.docx
《病房呼叫系统.docx》由会员分享,可在线阅读,更多相关《病房呼叫系统.docx(13页珍藏版)》请在冰豆网上搜索。
病房呼叫系统
模拟病房呼叫系统设计
一、设计目的
1、能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。
2、熟悉80C51单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。
3、为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。
4、对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
二、使用说明
平时病人不呼叫时,值班室数码显示时钟,并且可以调整分钟和小时,按下外部中断脉冲即可调整分钟和小时的显示。
当病人呼叫时,病人按下床边的按钮,值班室立即在数码管上从左向右依次显示病人呼叫的个数(即同时有几个人在呼叫)和病床的号码(多个病人呼叫时显示完一个时,数量不变,病床号码每隔一秒改变一次),这样就可以实现多个病人的同时呼叫显示,并且护士值班室的蜂鸣器响,以提醒护士。
当护士听到呼叫时,按下响应应答按钮,此时数码管重新开始显示时钟,并且在原来基础上,不是重置。
护士值班室派出人员即可。
功能实现完毕。
模拟一个护理站下管2个床位,哪个病人要呼叫可以按键,相应蜂鸣器响,数码管显示:
呼叫数量_床位号.要求:
1.6个数码管,正常情况下显示时间(时分秒),时间可通过按键调整。
2.有人呼叫则闪烁显示数量_床位号并蜂鸣器响,按应答键后继续显示时间。
3.若同时有多个病人呼叫则依次轮流显示:
数量_床位号。
(本机地址为01H,当接到上位机发的01H时,则回发01H)
三、设计要求
模拟一个护理站下管16个床位,哪个病人要呼叫可以按键,相应蜂鸣器响,数码管显示:
呼叫数量_床位号.要求:
1.6个数码管,正常情况下显示时间(时分秒),时间可通过按键调整。
2.有人呼叫则闪烁显示数量_床位号并蜂鸣器响,按应答键后继续显示时间。
3.若同时有多个病人呼叫则依次轮流显示:
数量_床位号。
(本机地址为01H,当接到上位机发的01H时,则回发01H)
四、程序流程图
五.实验接线图
连线
连接孔1
连接孔2
1
P1.0
S0
2
P1.1
S1
3
P1.2
S2
4
P1.3
S3
5
P1.4
S4
6
P1.5
S5
7
P1.6
S6
8
P1.7
S7
9
KEY/LED_CS
CS0
10
P3.5
喇叭脉冲输入
11
P3.2
脉冲
12
P3.3
脉冲
六、程序设计如下:
OUTBITequ08002h;位控制口
OUTSEGequ08004h;段控制口
LEDBufequ60h;显示缓冲
LEDBuf1equ80h
Hourequ40h
Minuteequ41h
Secondequ42h
C100usequ43h
chuanggaoequ70h
chuangdiequ71h
shuliangequ72h
Tickequ10000
T100usequ256-50
ORG0000H
LJMPMAIN
ORG0003H
LJMPMT
ORG000BH
LJMPTOINT
ORG0013H
LJMPHT
ORG001BH
LJMPT1INT
MAIN:
movTMOD,#22h;模式2,定时器0.1毫秒中断一次
movTH0,#T100us
movTL0,#T100us
movTL1,#6H
MOVTH1,#6H
movIE,#10001010b;EA=1,IT0=1
movHour,#0
movMinute,#0
movSecond,#0
movC100us,#high(Tick)
movC100us+1,#low(Tick)
SETBIT0
SETBIT1
SETBEX0
SETBEX1
SETBIE0
SETBIE1
movMinute,#0
movHour,#0
setbTR0
ljmpMLoop
MT:
;分調整
movSecond,#0
INCMinute
MOVA,Minute
CJNEA,#60,LOP1
MOVMinute,#0
LOP1:
RETI
HT:
;時調整
movSecond,#0
INCHour
MOVA,Hour
CJNEA,#24,lop2
MOVHour,#0
lop2:
RETI
MLoop:
mova,Hour
movb,#10
divab
callToLED
movLEDBuf,a
mova,b
callToLED
orla,#80h
movLEDBuf+1,a
mova,Minute
movb,#10
divab
callToLED
movLEDBuf+2,a
mova,b
callToLED
orla,#80h
movLEDBuf+3,a
mova,Second
movb,#10
divab
callToLED
movLEDBuf+4,a
mova,b
callToLED
movLEDBuf+5,a
callDisplayLED
movr1,100h
movr3,#0
jbp1.0,tiao1
k1:
jbp1.1,tiao2
k2:
jbf0,xian
ljmpMLoop
tiao1:
SETBTR1
setbf0
incr3
mov30h,r3
mov@r1,#1
incr1
sjmpk1
tiao2:
SETBTR1
setbf0
incr3
mov30h,r3
mov@r1,#2
incr1
sjmpk2
xian:
clrf0
mova,chuanggao
movb,#10
divab
callToLED
movLEDBuf,a
mova,b
callToLED
orla,#80h
movLEDBuf+1,a
mova,chuangdi
movb,#10
divab
callToLED
movLEDBuf+2,a
mova,b
callToLED
orla,#80h
movLEDBuf+3,a
mova,shuliang
movb,#10
divab
callToLED
movLEDBuf+4,a
mova,b
callToLED
movLEDBuf+5,a
callDisplayLED
JBP1.7,lp1
cjner3,#0,xian
ljmpxun
lp1:
CLRTR1;关振铃器返回显示时间
ljmpmloop
xun:
movr3,30h;重新置初值
mova,r1
adda,30h
movr1,a
ljmpxian
T1INT:
CPLP3.6;定时器1中断程序
RETI
TOINT:
pushPSW
pushACC
mova,C100us+1
jnzGoon
decC100us
Goon:
decC100us+1
mova,C100us
orla,C100us+1
jnzExit
movC100us,#high(Tick)
movC100us+1,#low(Tick)
decr1
decr3
movchuanggao,#0
movchuangdi,@r1
movshuliang,30h
incSecond
mova,Second
cjnea,#60,Exit
movSecond,#0
incMinute
mova,Minute
cjnea,#60,Exit
movMinute,#0
incHour
mova,Hour
cjnea,#24,Exit
movHour,#0
Exit:
popACC
popPSW
reti
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
Delay1:
movr4,#4;延时子程序
loop3:
movr7,#250
loop2:
movr6,#200
nop
loop1:
djnzr7,Loop1
djnzr6,Loop2
djnzr4,loop3
ret
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
DisplayLED:
movr0,#LEDBuf
movr5,#6;共6个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
mova,@r0
movdptr,#OUTSEG
movx@dptr,a
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr5,Loop
ret
ToLED:
movdptr,#LEDMap
movca,@a+dptr
ret
END