资料编号:189
功能介绍:
设计一个可容64张床位的比那个房呼叫系统。
1、每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮
2、护士值班室面板上显示呼叫床位号,并响铃3秒
3、当护士按下“响应”键时,取消呼叫
下面是原理图展示:
下面是部分程序展示:
void key_scan()//搜索按键
{
uchar i,j;
for(i=0;i<8;i++)//行
{
P3=~(1<<i);
for(j=0;j<8;j++)//列
{
if((P2&(1<<j))==0)
{
if(!num[i*8+j])
{
time=60;
num[i*8+j]=1;//记录呼叫
all++;
}
}
}
}
}
void search()//搜索下一个呼叫
{
uchar i;
for(i=0;i<64;i++)
{
if(num[i])
{
key=i+1;
break;
}
}
}
void main()
{
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
key_scan();
search();
if(!k1) //清除呼叫
{
if(all>0)
{
all--;
num[key-1]=0;
}
while(!k1);
}
}
}
//定时器0中断
void Timer0() interrupt 1
{
if(time>0)
{
time--;
beep=0;//蜂鸣器响
}
else
{
beep=1;//蜂鸣器停
}
if(sec<10)//0.5s
sec++;
else
{
sec=0;
if(all==0)
{
write_string(1,2,"Welcome! ");
write_string(2,2," ");
}
else
{
xian1[9]=key/10+0x30; //显示
xian1[10]=key%10+0x30;
xian2[4]=all/10+0x30;
xian2[5]=all%10+0x30;
write_string(1,2,xian1);
write_string(2,5,xian2);
}
}
TH0=0X3C;
TL0=0XB0;
}
下面是流程图
源文件分享下载链接:
https://mp.weixin.qq.com/s/u45WlGsslX9R3iuHtpPXWwhttps://mp.weixin.qq.com/s/u45WlGsslX9R3iuHtpPXWw