for(j=0;j<10;j++);
}
/******************************************************************/
/*函数声明*/
/****************************命令数据写·*****************************/
voidTransferData(chardata1,bitDI)//传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据.
{
WRD=0;
RS=DI;
delay
(1);
P0=data1;
E=1;
delay
(1);
E=0;
}
/******************************************************************/
/*液晶初始化-字库*/
/******************************************************************/
voidinitinal(void)//LCD字库初始化程序
{
delay(40);//大于40MS的延时程序
//PSB=1;//设置为8BIT并口工作模式
delay
(1);//延时
//RES=0;//复位
delay
(1);//延时
//RES=1;//复位置高
delay(10);
TransferData(0x30,0);//ExtendedFunctionSet:
8BIT设置,RE=0:
basicinstructionset,G=0:
graphicdisplayOFF
delay(100);//大于100uS的延时程序
TransferData(0x30,0);//FunctionSet
delay(37);////大于37uS的延时程序
TransferData(0x08,0);//DisplayonControl
delay(100);//大于100uS的延时程序
TransferData(0x10,0);//CursorDisplayControl光标设置
delay(100);//大于100uS的延时程序
TransferData(0x0C,0);//DisplayControl,D=1,显示开
delay(100);//大于100uS的延时程序
TransferData(0x01,0);//DisplayClear
delay(10);//大于10mS的延时程序
TransferData(0x06,0);//EnryModeSet,光标从右向左加1位移动
delay(100);//大于100uS的延时程序
}
//要显示的汉字
unsignedcharcodeIC_DAT[]={
"抢答者:
第"
};unsignedcharcodeIC_DAT4[]={
"队"
};
unsignedcharcodeIC_DAT1[]={
"违规者:
第"
};
unsignedcharcodeIC_DAT2[]={
"抢答开始"
};
/******************************************************************/
/*函数声明*/
/***************************写汉字起始地址***************************/
voidlcd_mesg(unsignedcharcode*adder1)
{
unsignedchari;
TransferData(0x90,0);//SetGraphicDisplayRAMAddress
delay(100);
/*for(i=0;i<16;i++)*/
for(i=0;i<10;i++)
{
TransferData(*adder1,1);
adder1++;
}
}
voidlcd_mesg1(unsignedcharcode*adder1)
{
unsignedchari;
TransferData(0x98,0);//SetGraphicDisplayRAMAddress
delay(100);
/*for(i=0;i<16;i++)*/
for(i=0;i<10;i++)
{
TransferData(*adder1,1);
adder1++;
}
}
voidlcd_mesg2(unsignedcharcode*adder1)
{
unsignedchari;
TransferData(0x81,0);//SetGraphicDisplayRAMAddress
delay(100);
/*for(i=0;i<16;i++)*/
for(i=0;i<10;i++)
{
TransferData(*adder1,1);
adder1++;
}
}
/******************************************************************/
/*函数声明*/
/***************个位十位百位***************************************/
voidlcd_mesg3(unsignedcharr)
{
unsignedchara,b,c;
a=r/100;
b=r%100/10;
c=r%10;
TransferData(0x8C,0);//SetGraphicDisplayRAMAddress数据起始地址
delay(100);
TransferData(IC_DAT3[c],1);//个位
delay(100);
TransferData(0x8B,0);//SetGraphicDisplayRAMAddress
delay(100);
TransferData(IC_DAT3[b],1);//十位
delay(100);
TransferData(0x8A,0);//SetGraphicDisplayRAMAddress
delay(100);
TransferData(IC_DAT3[a],1);//百位
delay(100);
}
/****************************************************
********************************主程序***************/
voidmain(void)
{
inti=200,j=200,k=200;/****报警参数?
********/
lianghenfei:
i=200;j=200;k=200;shijian=30;speak=1;
initinal();//调用LCD字库初始化程
lcd_mesg(IC_DAT);//显示中文汉字1
lcd_mesg1(IC_DAT1);
delay(100);
P1=0x7f;/*关闭数码管*/
while(kaishi)
{
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key1)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key1)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[1],1);
while
(1)
{
speak=0;
P1=dofly[1];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key2)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key2)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[2],1);
while
(1)
{
speak=0;
P1=dofly[2];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key3)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key3)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[3],1);
while
(1)
{
speak=0;
P1=dofly[3];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key4)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key4)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[4],1);
while
(1)
{
speak=0;
P1=dofly[4];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key5)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key5)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[5],1);
while
(1)
{
speak=0;
P1=dofly[5];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key6)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key6)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[6],1);
while
(1)
{
speak=0;
P1=dofly[6];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key7)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key7)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[7],1);
while
(1)
{
speak=0;
P1=dofly[7];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key8)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key8)
{
delay(100);
TransferData(0X9E,0);
delay(100);
TransferData(IC_DAT3[8],1);
while
(1)
{
speak=0;
P1=dofly[8];
if(fuwei==0){gotolianghenfei;}
};//警告
}
}
}
lcd_mesg2(IC_DAT2);delay(100);
/*****************************开始抢答*************************
**************************************************************/
while(i--){speak=0;}
speak=1;
while
(1)
{
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key1)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key1)
{
initinal();
lcd_mesg(IC_DAT);
delay(100);
TransferData(0X95,0);
delay(100);
TransferData(IC_DAT3[1],1);
delay(100);
speak=0;
delayms(50);
speak=1;
while
(1)
{
if(shijian>=50){speak=0;delayms(300);gotolianghenfei;}
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
lcd_mesg3(shijian--);
P1=dofly[1];
while(shijian<=9)
{
lcd_mesg3(shijian);
P1=dofly[shijian--];
speak=0;
delayms(25);
speak=1;
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
}
}
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key2)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key2)
{
initinal();
lcd_mesg(IC_DAT);
delay(100);
TransferData(0X95,0);
delay(100);
TransferData(IC_DAT3[2],1);
delay(100);
speak=0;
delayms(50);
speak=1;
while
(1)
{
if(shijian>=50){speak=0;delayms(300);gotolianghenfei;}
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
lcd_mesg3(shijian--);
P1=dofly[2];
while(shijian<=9)
{
lcd_mesg3(shijian);
P1=dofly[shijian--];
speak=0;
delayms(25);
speak=1;
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
}
}
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key2)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key2)
{
initinal();
lcd_mesg(IC_DAT);
delay(100);
TransferData(0X95,0);
delay(100);
TransferData(IC_DAT3[2],1);
delay(100);
speak=0;
delayms(50);
speak=1;
while
(1)
{
if(shijian>=50){speak=0;delayms(300);gotolianghenfei;}
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
lcd_mesg3(shijian--);
P1=dofly[2];
while(shijian<=9)
{
lcd_mesg3(shijian);
P1=dofly[shijian--];
speak=0;
delayms(25);
speak=1;
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
}
}
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key3)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key3)
{
initinal();
lcd_mesg(IC_DAT);
delay(100);
TransferData(0X95,0);
delay(100);
TransferData(IC_DAT3[3],1);
delay(100);
speak=0;
delayms(50);
speak=1;
while
(1)
{
if(shijian>=50){speak=0;delayms(300);gotolianghenfei;}
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
lcd_mesg3(shijian--);
P1=dofly[3];
while(shijian<=9)
{
lcd_mesg3(shijian);
P1=dofly[shijian--];
speak=0;
delayms(25);
speak=1;
delayms(100);
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
}
}
}
}
if(fuwei==0){speak=0;delayms(25);gotolianghenfei;}
if(!
key4)
{//按下相应的按键,数码管显示相应的码值
delay(100);
if(!
key4)
{
initinal();
lc