1、八路抢答器C51程序#include #include #include #include #include /*/* 定义接口信息 */*/sbit RS =P24;sbit WRD=P25;sbit E= P26;/sbit PSB=P21;/sbit RES=P23;/*按键*/sbit key1=P30; /定义按键位置sbit key2=P31;sbit key3=P32;sbit key4=P33;sbit key5=P34; /定义按键位置sbit key6=P35;sbit key7=P36;sbit key8=P37;/*数码管*/unsigned char const do
2、fly=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/ 显示段码值01234567/*共阳数码管*/*功能键*/sbit fuwei=P21;sbit speak=P27;sbit kaishi=P20;unsigned char shijian=30;/unsigned char code IC_DAT3=48,49,50,51,52,53,54,55,56,57,58,;unsigned char code IC_DAT3=0123456789;/*8延时程序*/*8/void delayms(unsigned int n) /延时1
3、0n毫秒程序 unsigned int i,j; for(i=0;in;i+) for(j=0;j2000;j+); void delay(unsigned char m) /延时程序 unsigned int i,j; for(i=0;im;i+) for(j=0;j10;j+);/*/* 函数声明 */*命令数据写*/void TransferData(char data1,bit DI) /传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据. WRD=0; RS=DI; delay(1); P0=data1; E=1; delay(1); E=0; /*/* 液晶初始化-字库
4、 */*/void initinal(void) /LCD字库初始化程序 delay(40); /大于40MS的延时程序/ PSB=1; /设置为8BIT并口工作模式 delay(1); /延时 / RES=0; /复位 delay(1); /延时/ RES=1; /复位置高 delay(10); TransferData(0x30,0); /Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF delay(100); /大于100uS的延时程序 TransferData(0x30
5、,0); /Function Set delay(37); /大于37uS的延时程序 TransferData(0x08,0); /Display on Control delay(100); /大于100uS的延时程序 TransferData(0x10,0); /Cursor Display Control光标设置 delay(100); /大于100uS的延时程序 TransferData(0x0C,0); /Display Control,D=1,显示开 delay(100); /大于100uS的延时程序 TransferData(0x01,0); /Display Clear del
6、ay(10); /大于10mS的延时程序 TransferData(0x06,0); /Enry Mode Set,光标从右向左加1位移动 delay(100); /大于100uS的延时程序 /要显示的汉字unsigned char code IC_DAT=抢答者:第 ;unsigned char code IC_DAT4=队 ;unsigned char code IC_DAT1=违规者:第 ;unsigned char code IC_DAT2= 抢答开始 ;/*/* 函数声明 */*写汉字起始地址*/ void lcd_mesg(unsigned char code *adder1) u
7、nsigned char i ; TransferData(0x90,0); /Set Graphic Display RAM Address delay(100); /*for(i=0;i16;i+)*/for(i=0;i10;i+) TransferData(*adder1,1); adder1+; void lcd_mesg1(unsigned char code *adder1) unsigned char i ; TransferData(0x98,0); /Set Graphic Display RAM Address delay(100); /*for(i=0;i16;i+)*/
8、for(i=0;i10;i+) TransferData(*adder1,1); adder1+; void lcd_mesg2(unsigned char code *adder1) unsigned char i ; TransferData(0x81,0); /Set Graphic Display RAM Address delay(100); /*for(i=0;i16;i+)*/for(i=0;i=50)speak=0;delayms(300);goto lianghenfei;delayms(100);if(fuwei=0)speak=0;delayms(25);goto lia
9、nghenfei; lcd_mesg3(shijian-); P1=dofly1; while(shijian=50)speak=0;delayms(300);goto lianghenfei;delayms(100);if(fuwei=0)speak=0;delayms(25);goto lianghenfei; lcd_mesg3(shijian-); P1=dofly2; while(shijian=50)speak=0;delayms(300);goto lianghenfei;delayms(100);if(fuwei=0)speak=0;delayms(25);goto liang
10、henfei; lcd_mesg3(shijian-); P1=dofly2; while(shijian=50)speak=0;delayms(300);goto lianghenfei;delayms(100);if(fuwei=0)speak=0;delayms(25);goto lianghenfei; lcd_mesg3(shijian-); P1=dofly3; while(shijian=9) lcd_mesg3(shijian); P1=doflyshijian-; speak=0; delayms(25); speak=1; delayms(100);if(fuwei=0)speak=0;delayms(25);goto lianghenfei; if(fuwei=0)speak=0;delayms(25);goto lianghenfei; if(!key4) /按下相应的按键,数码管显示相应的码值 delay(100); if(!key4) initinal(); lc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1