求大神帮忙看看病房呼叫器的程序!谢过
时间:10-02
整理:3721RD
点击:
题目要求:使用AT89S51单片机制作病房呼叫器。键盘输入两位的床位号码,输入后4位数码管低2位显示当前床位号,高2位显示前一个呼叫的号码。输入后蜂鸣器响应10秒后停止,数码管需闪烁显示。
lz编的程序:
#include <reg51.h>
#define uchar unsigned char
sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
sbit SPK=P3^7;
sbit ge1=P3^5;
sbit shi1=P3^4;
sbit ge2=P3^6;
sbit shi2=P3^3;
uchar dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time,number,cut;
delay(time)
{
unsigned int j;
for(j=0;j<time;j++)
{}
}
unsigned int key_scan()//键盘扫描
{
uchar temp;
uchar i;
P2=0xef;
for(i=0;i<=3;i++)
{
if(L1==0)return(i*4+0);
if(L2==0)return(i*4+1);
if(L3==0)return(i*4+2);
if(L4==0)return(i*4+3);
delay(500);
temp=P2;
temp=temp|0x0f;
temp=temp<<1;
temp=temp|0x0f;
P2=temp;
}
}
main()
{
while(1)
{
EA=1;
ET0=1;
{
number=key_scan();//数码管显示
ge1=0,shi1=1;
shi1=number/10;
ge1=number%10;
P0=dis[ge1];
delay(10);
ge1=1,shi1=0;
shi1=number/10;
ge1=number%10;
P0=dis[shi1];
SPK=1;//蜂鸣器响
while(SPK==1)//数码管闪烁
{
ge1=1,shi1=1;
delay(50);
ge1=0,shi1=1;
shi1=number/10;
ge1=number%10;
P0=dis[ge1];
delay(10);
ge1=1,shi1=0;
shi1=number/10;
ge1=number%10;
P0=dis[shi1];
delay(50);
TR0=1;
for(cut=0;cut<500;cut++)//计时10s
{
TH0=0xb1;
TL0=0xe0;
}
SPK=0;
}
ge2=0,shi2=1;
ge2=ge1;
P0=dis[ge2];
ge2=1,shi2=0;
shi2=shi1;
P0=dis[shi2];
}
}
}
谢大神,好人一生平安
lz编的程序:
#include <reg51.h>
#define uchar unsigned char
sbit L1=P2^0;
sbit L2=P2^1;
sbit L3=P2^2;
sbit L4=P2^3;
sbit SPK=P3^7;
sbit ge1=P3^5;
sbit shi1=P3^4;
sbit ge2=P3^6;
sbit shi2=P3^3;
uchar dis[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int time,number,cut;
delay(time)
{
unsigned int j;
for(j=0;j<time;j++)
{}
}
unsigned int key_scan()//键盘扫描
{
uchar temp;
uchar i;
P2=0xef;
for(i=0;i<=3;i++)
{
if(L1==0)return(i*4+0);
if(L2==0)return(i*4+1);
if(L3==0)return(i*4+2);
if(L4==0)return(i*4+3);
delay(500);
temp=P2;
temp=temp|0x0f;
temp=temp<<1;
temp=temp|0x0f;
P2=temp;
}
}
main()
{
while(1)
{
EA=1;
ET0=1;
{
number=key_scan();//数码管显示
ge1=0,shi1=1;
shi1=number/10;
ge1=number%10;
P0=dis[ge1];
delay(10);
ge1=1,shi1=0;
shi1=number/10;
ge1=number%10;
P0=dis[shi1];
SPK=1;//蜂鸣器响
while(SPK==1)//数码管闪烁
{
ge1=1,shi1=1;
delay(50);
ge1=0,shi1=1;
shi1=number/10;
ge1=number%10;
P0=dis[ge1];
delay(10);
ge1=1,shi1=0;
shi1=number/10;
ge1=number%10;
P0=dis[shi1];
delay(50);
TR0=1;
for(cut=0;cut<500;cut++)//计时10s
{
TH0=0xb1;
TL0=0xe0;
}
SPK=0;
}
ge2=0,shi2=1;
ge2=ge1;
P0=dis[ge2];
ge2=1,shi2=0;
shi2=shi1;
P0=dis[shi2];
}
}
}
谢大神,好人一生平安
