⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpqmb.c

📁 rs485、八位扫描显示、按键、数字编码器
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg51.h>
#include <staticv.h>
#include <intrins.h>
#include <24c04.h>
#define KEY_DELAY 100;
#define KEY_ADSB 10;
#define KEY_KEEP 20;
sbit dsp_gz=P3^7;
uchar t0yc=5,t0yc1=5,datap,sendp,dsp_p,takep;
uint add_offset;
uchar txd[13];
bit rxded,notbit1,notbit2,temp_bit;
sbit dpc_a=P1^1;
sbit dpc_b=P1^0;
sbit p_led=P1^2;
sbit key1=P1^1;
sbit key2=P1^0;
sbit key3=P1^2;

bit und_bit,sending,ankey,on_off,error,send_com=1;
bit inc_dec,db_3,da_3;
uchar st_con,menu_con,cmenu,led_s;
uint set_data,fu_data,zu_data;
uchar dela,delb;
uchar ud_con;
unsigned char displaya[4],displayb[4],ndsp=0;
/*按件********************按件*********************按件*/
uchar keyboad()
{uchar temp=0;
 if(!key1)temp=1;
 if(!key2)temp=2;
 if(!key3)temp=3;
temp=temp*(dsp_p+1);
return(temp);
}

/*通讯设置********************通讯设置****************通讯设置**/
void scr(void)
{uchar temp;
uint num=0;
sendp=0;
for(temp=0;temp<5;temp++)
 {num+=txd[temp];
 }
txd[5]=num>>8;
txd[6]=num&0xff;
}
void scanf_scr()
{
uchar i;
uint temp=0;
uint num;
num=rxd[4]<<8;
num&=0xff00;
num|=rxd[5];
for(i=0;i<4;i++)
{temp+=rxd[i];}
if(temp==num)temp_bit=1;
else temp_bit=0;
}

/*通讯设置******************通讯设置**********通讯社制*/
void rd_txd(uchar temp)
{
txd[gn_]=temp;
if(menu_con==3)
{
txd[dz_l]=ud_con;
txd[dz_h]=ture_ud;
}
else
{
txd[dz_l]=cmenu;
txd[dz_h]=0;
}
txd[sj_l]=0;
txd[sj_h]=0;
scr();
sending=1;
}
void ask_txd()
{
txd[gn_]=0;
txd[dz_l]=cmenu;
txd[dz_h]=0;
txd[sj_h]=txd[sj_l]=0;
scr();
sending=1;
}
void gz_txd()
{
txd[gn_]=3;
txd[dz_l]=cmenu;
txd[dz_h]=menu_con;
txd[sj_h]=txd[sj_l]=0;
scr();
sending=1;
}
void clr_txd()
{txd[gn_]=6;
txd[sj_h]=0;
txd[sj_l]=1;
scr();
}
void con_txd(uchar num)
{
txd[gn_]=10;
txd[dz_h]=0;
txd[dz_l]=cmenu;
txd[sj_l]=num&0xff;
txd[sj_h]=num>>8;
scr();
sending=1;
}
void cp_ps_txd(uchar num)
{
txd[gn_]=num;
txd[dz_l]=add_offset&0xff;
txd[dz_h]=add_offset>>8;
txd[sj_l]=set_data&0xff;
txd[sj_h]=set_data>>8;
scr();
sending=1;
}
void write_txd(uchar temp)
{
txd[gn_]=temp;
if(menu_con==3)
	{
txd[dz_l]=ud_con;
txd[dz_h]=ture_ud;
	}
else
 {
txd[dz_l]=cmenu;
txd[dz_h]=menu_con;
 }
txd[sj_l]=set_data&0xff;
txd[sj_h]=set_data>>8;
scr();
sending=1;
}
void admin_txd()
{
 switch(cmenu)
{case 0:set_data=0;break;
case 1:txd[dz_l]=0;
txd[gn_]=7;break;
case 2:txd[dz_l]=1;
txd[gn_]=7;break;
case 3:txd[gn_]=8;
}
txd[dz_h]=txd[sj_h]=txd[sj_l]=0;
scr();
sending=1;
}
/*显示设置*****************显示设置*******************显示设置*/
void dsp_dnum(uint inum,uchar *p,bit num)
{uchar i;
p+=3;
if(inum>9999)inum=0;
i=inum/1000;
if(num)*p=led_8[i];
p--;
inum-=i*1000;
i=inum/100;
*p=led_8[i];
p--;
inum-=i*100;
i=inum/10;
*p=led_8[i];
p--;
i=inum-i*10;
*p=led_8[i];
}
void dsp_num()
{
switch(cmenu)
{
	case 0:dela=3;da_3=1;break;
	case 1:displaya[3]=_a;da_3=0;dela=0;break;
	case 2:displaya[3]=_u;da_3=0;dela=0;break;
	case 3:da_3=1;dela=0;break;
	case 4:displaya[3]=_u;da_3=0;dela=0;break;
	default: da_3=1;
}
if(!error)dsp_dnum(fu_data,displayb,db_3);
dsp_dnum(zu_data,displaya,da_3);
}
void dsp_data1(void)
{
uchar i;
dela=delb=0;
if((!cmenu)&&(menu_con==3))
{i=set_data&0xf;
displaya[0]=led_8[i];displaya[2]=0x3f;displaya[3]=0x3f;
i=set_data>>4;
displaya[1]=led_8[i];
}
else
{
if(ture_ud<7)
    {
    i=s_opp[ture_ud-1][ud_con]&0x70;
i>>=4;
if(menu_con==3)
switch(i)
	{
	case 1:dela=3;
	break;
	case 2:	dela=2;
	}
    }
 dsp_dnum(set_data,displaya,1);
}
if(menu_con==3)
switch(cmenu)
{case 2:dela=3;break;
case 3:if(ud_con<16)dela=2;break;
case 9:if(ud_con<4)dela=0;else if(ud_con==17)dela=2; else dela=3;
}
}
void dsp_data2(void)
{
uchar i;
dela=delb=0;
if(!cmenu)  /*比特位显*/
{i=set_data&0xf;
displayb[0]=led_8[i];displayb[2]=0x3f;displayb[3]=0x3f;
i=set_data>>4;
displayb[1]=led_8[i];
}
else
{
if(ture_ud<7)
     {i=s_opp[ture_ud-1][ud_con]&0x70;
     i>>=4;
     if(menu_con==3)switch(i)
	{
	case 1:delb=3;
	break;
	case 2:delb=2;
	}
      }
      dsp_dnum(set_data,displayb,1);
}
switch(cmenu)
{case 2:delb=3;break;
case 3:if(ud_con<16)delb=2;break;
case 9:if(ud_con<4)delb=0;else if(ud_con==17)delb=2; else delb=3;
}
}
void dsp_cmenu(bit num)
{
uchar temp,cnum,*tempp;
if(num)tempp=displayb;else tempp=displaya;
tempp+=3;
switch(menu_con)
                {case 0:*tempp=_d;tempp--;*tempp=_p;break;
                 case 1:*tempp=_e;tempp--;*tempp=_x;break;
                 case 2:*tempp=_p;tempp--;*tempp=_x;break;
                 case 3:*tempp=_f;tempp--;*tempp=led_8[cmenu];break;
                 case 4:*tempp=_a;tempp--;*tempp=_d;
                }
        if(menu_con!=3)cnum=cmenu;else cnum=ud_con;
        tempp--;
        temp=cnum/10;
	*tempp=led_8[temp];
        tempp--;
	temp*=10;
	temp=cnum-temp;
	*tempp=led_8[temp];
}
void dsp_gzdm()
{uchar num;
displayb[3]=_e;
displayb[2]=_x;
if(menu_con)num=set_data&0xff;
else num=fu_data&0xff;
switch(num)
	{case 0:displayb[1]=_n;
			displayb[0]=_o;break;
		case 1:displayb[1]=_a;
			displayb[0]=_c;
			break;
		case 2:displayb[1]=_d;
			displayb[0]=_c;
			break;
		case 3:displayb[1]=_r;
			displayb[0]=_c;
			break;
		case 4:displayb[1]=_a;
	        	displayb[0]=_u;
			break;
		case 5:displayb[1]=_d;
			displayb[0]=_u;
			break;
		case 6:displayb[1]=_r;
			displayb[0]=_u;
			break;
		case 7:displayb[1]=_s;
			displayb[0]=_u;
			break;
                case 8:displayb[1]=_l;
			displayb[0]=_u;
                        break;
		case 9:displayb[1]=_s;
        	       displayb[0]=_c;
			break;
		case 10:displayb[1]=_c;
			displayb[0]=_e;
	                break;
		case 11:displayb[1]=_o;
			displayb[0]=_l;
			break;
		case 12:displayb[1]=_e;
			displayb[0]=_o;
			 break;
		 case 13:displayb[1]=_r;
			displayb[0]=_t;
			break;
		case 14:displayb[1]=_o;
			displayb[0]=_h;
			break;
		case 15:displayb[1]=_t;
			displayb[0]=_o;
			break;
		case 16:displayb[1]=_e;
			displayb[0]=_t;
		break;
		case 17:displayb[1]=_d;
			displayb[0]=_e;
		break;
        case 18: displayb[3]=_x;
        displayb[1]=_a;
			displayb[0]=_c;
			break;
		case 19:displayb[3]=_x;
       displayb[1]=_d;
			displayb[0]=_c;
		break;
		case 20: displayb[3]=_x;
          displayb[1]=_r;
			displayb[0]=_c;
		break;
              default:displayb[1]=_u;
			displayb[0]=num;
				}
}
void dsp_x()
{displayb[3]=displayb[2]=displayb[1]=displayb[0]=_x;}
void dsp_dsp()
{
	switch(st_con)
		{case 0:         und_bit=0;
                if(error)dsp_gzdm();
                	db_3=1;dsp_num();
			break;
		case 1: und_bit=0;
                dela=delb=0;
              displaya[3]=_c;displaya[2]=_o;displaya[1]=_n; displaya[0]=led_8[menu_con];
                switch(menu_con)
				{case 0:displayb[3]=_p;
						displayb[2]=_r;
						displayb[1]=_o;
						displayb[0]=_g;
						break;
                case 1:	displayb[3]=_a;
						displayb[2]=_d;
						displayb[1]=_i;
						displayb[0]=_n;
						break;
				case 2:	displayb[3]=_e;
						displayb[2]=_r;
						displayb[1]=_r;
						displayb[0]=_o;
                        break;
				case 3: displayb[3]=_d;
					    displayb[2]=_s;
					    displayb[1]=_p;
					    displayb[0]=_l;

				}
                                break;
		case 2:und_bit=0;dela=0;delb=0;
                	switch(menu_con)
					{
					case 0:dsp_dnum(fu_data,displayb,1);
                                        dsp_cmenu(0);
                                        break;
					case 1:		dsp_cmenu(0);
							if(cmenu<8){
					   	  				dsp_gzdm();
										}
                                        else
										{und_bit=0;dsp_dnum(set_data,displayb,1);
                                        }
					break;
					case 2:			dsp_cmenu(0);
                                         if(!pass)dsp_x();
                                         else  dsp_dnum(set_data,displayb,1);
					break;
					case 3:	displaya[3]=_f;
							displaya[2]=led_8[cmenu];
							displaya[1]=_0;
							displaya[0]=_0;
							displayb[3]=_x;
							displayb[2]=_s;
							displayb[1]=_e;
							displayb[0]=_t;
					break;
					case 4:	displaya[3]=_s;
							displaya[2]=_u;
							displaya[1]=_p;
							displaya[0]=led_8[cmenu];
                                                dsp_x();
						/*	switch(cmenu)
								{case 0:
							displayb[3]=_u;
							displayb[2]=_s;
							displayb[1]=_e;
							displayb[0]=_r;
								break;
								case 1:
								case 2:
							displayb[3]=_a;
							displayb[2]=_c;
							displayb[1]=_t;
							displayb[0]=_a;
								break;
								case 3:
							displayb[3]=_f;
							displayb[2]=_a;
							displayb[1]=_c;
							displayb[0]=_t;
								}   */
					}
			break;
		case 3:und_bit=0; dsp_cmenu(0);
                dsp_data2();
			break;
		case 4:if(menu_con==1)
                       {displaya[3]=_c;displaya[2]=_l;displaya[1]=_r;displaya[0]=_e;
                        displayb[3]=_t;displayb[2]=_f;displayb[1]=_x;
                        if(set_data)displayb[0]=0x6;else displayb[0]=0x3f;}
                else{und_bit=1;dsp_data1();dsp_cmenu(1);}
		}
}
/*复制********************复制***********************复制******/
/*按键*********************按键**********************按键******/
void ture_add(void)
{
 if(menu_con==3)
 {switch(cmenu)
		{case 0:
		case 1:ture_ud=cmenu;break;/*set_con*/
		case 2:ture_ud=10;break;/*setf*/
		case 3:ture_ud=11;break;/*sett*/
		case 9:ture_ud=12;break;/*seto*/
		case 10:ture_ud=13;break;/*setz*/
	default:ture_ud=cmenu-2;
		}
 }
else ture_ud=cmenu;
}
void enter_prg()
{
uchar temp;
switch(st_con)
	{case 0:
	 case 1:st_con++; /*menu切换*/ dela=0;delb=0;
         if(menu_con==1){gz_txd();set_send=1;}
               break;
	 case 2:st_con++;
               switch(menu_con)
               {
	        case 0: st_con=0;break;
                case 1:st_con=4;gz_txd();set_data=0;set_send=1;break;
                case 2:st_con=4;ask_txd();set_data=0;break;
                case 3:rd_txd(1);set_send=1;break;
                case 4:und_bit=1;ndsp=0;set_send=1;st_con=4;
                    admin_txd();
                }
                break;
	 case 3: st_con=4;
  			ture_add();
			 und_bit=1;ndsp=0;
		break;
	  case 4:     ndsp=0;set_send=1;
	  		switch(menu_con)
			{
                        case 1:if(set_data)clr_txd();st_con=2;break;
			case 2:st_con=2;
                        switch(cmenu)
			   {case 0:if(!pass)			/*密码pass*/
			     {if(password==set_data){pass=1;set_data=0;}set_send=0;}
			       else{write_txd(5);password=set_data;} /*改密码*/
    			     break;
			     case 1:set_send=0;
                             if(set_data==dmima){passd=pass=1;set_data=0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -