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

📄 bpqmb.bak

📁 rs485、八位扫描显示、按键、数字编码器
💻 BAK
📖 第 1 页 / 共 2 页
字号:
#include <reg51.h>
#include <staticv.h>
#include <intrins.h>
#include <24c04.h>
#define zt_ 0
#define gn_ 0
#define dz_h 1
#define dz_l 2
#define sj_h 3
#define sj_l 4
#define jyh_l 5
#define jyh_h 6
#define jw_ 9
#define _mima 1234
#define dmima 5858
sbit dsp_gz=P3^7;
uchar t0yc=5,t0yc1=5,datap,sendp,dsp_p,takep;
uint add_offset;
uchar txd[7];
uchar rxd[6];
bit rxded,notbit1,notbit2,temp_bit;
/*sbit dpc_a=P2^5;
sbit dpc_b=P2^4;*/
sbit dpc_a=P1^0;
sbit dpc_b=P1^1;
sbit spi_spe=P3^3;
sbit spi_dat=P3^0;
sbit spi_clk=P3^1;
bit und_bit,sending,pass,passd,passf,ankey,on_off,error,send_com=1;
bit inc_dec,db_3,da_3,set_send,k_abs,i_goon,d_goon;
uchar st_con,menu_con,cmenu,con_num;
uint password,set_data,fu_data,zu_data,pw_delay,pv_fu,pv_zu,pv1_zu,pv1_fu;
uchar dela,delb,xh_jsk,xh_jsn;
uchar ud_con,ture_ud,ncall_dsp;
unsigned char displaya[4],displayb[4],ndsp=0;
/*delay********************delay*********************delay*/
/*void sytxd()
{txd[0]=0x51;txd[1]=0x52;txd[2]=0xa3;txd[3]=0xa4;
txd[4]=0x55;txd[5]=0x56;txd[6]=0xa7;txd[7]=0xa8;sending=1;} */
void send_dat()
{
uchar num,temp;
takep=0;
spi_dat=0;
   spi_spe=1;
while(spi_spe){;}
while(!spi_spe){;}
    spi_spe=1;
spi_clk=1;
spi_dat=0;
temp=txd[sendp];
if(sendp<6)sendp++;
else{sendp=0;
        send_com=0;
        sending=0;
       }
for(num=8;num>0;num--)
   {     if(temp&0x80)
          spi_dat=1;
         else spi_dat=0;
        while(!spi_clk){;}
         while(spi_clk){;}
         temp<<=1;
    }
   if(send_com)spi_dat=0;else spi_dat=1;
}
void take_dat()
{
uchar num,temp;
sendp=0;
spi_dat=1;
spi_spe=1;
while(spi_spe){;}
while(!spi_spe){;}
spi_clk=1;
temp=0;
for(num=8;num>0;num--)
   {            temp<<=1;
        while(!spi_clk){;}
        if(spi_dat)
        temp++;
         while(spi_clk){;}
    }
     rxd[takep]=temp;
         spi_dat=1;
if(takep<5)takep++;
else
     {
     spi_dat=0;
     takep=0;
     rxded=send_com=1;
     }
}
/*定时器*******************定时器*******************定时器**/
void tint1() interrupt 1   using 3
{unsigned char temp=1,num,temp_del;
 TH0=0Xd5;
 TL0=0X00;
  TR0=1;
 t0yc--;
 if(t0yc==0)
 {t0yc=10;
 t0yc1--;
 notbit1=~notbit1;
 }
   if(t0yc1==0)
 {t0yc1=10;
  notbit2=~notbit2;
if(pw_delay>0)pw_delay--;
else {passd=passf=0;if((password!=0)&&(password>9999))pass=0;}
 }
 ET0=1;
 P0=0;
dpc_a=0;
dpc_b=0;
dpc_a=1;
dpc_b=1;
dpc_a=0;
dpc_b=0;
temp_del=dsp_p+1;
temp<<=dsp_p;
P2&=0XF0;
temp|=P2;
P2=temp;
if((notbit2)||(!und_bit)||((ndsp!=dsp_p)&&(ndsp!=0xff)))
{num=displaya[dsp_p];
if(dela==temp_del)num|=0x80;
P0=num;
dpc_a=0;
dpc_a=1;
}
num=displayb[dsp_p];
if(delb==temp_del)num|=0x80;
P0=num;
dpc_b=0;
dpc_b=1;
dsp_p++;
if(dsp_p>3)dsp_p=0;
}
/*通讯设置********************通讯设置****************通讯设置**/
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 copy(void)
{/* uchar num,i,j;
add_offset=0;
		displaya[0]=_x;
		     displaya[1]=_x;
		       displaya[2]=_x;
   			displaya[3]=_x;
			displayb[0]=_c;
			displayb[1]=_o;
			displayb[2]=_p;
			displayb[3]=_y;
	while(add_offset<0x1f0)
	{cp_ps_txd(1);
        for(i=0;i<17;i++)
        {
        send();
	}
                RI=0;
 		REN=1;
 		ES=1;
             scanf_scr();
		if((temp_bit)&&(txd[gn_]!=4))
		{  rxded=0;
                    	set_data=rxd[sj_h]<<8;
                        set_data&=0xff00;
                        set_data|=rxd[sj_l];
			add_offset=rascii(dz_h,4);
    		 num=add_offset&0xff;
 		    i=add_offset>>8;
			j=set_data&0xff;
			wr_24c04(i,num,j);
		    num++;
			j=set_data>>8;
			wr_24c04(i,num,j);
                        add_offset++;
                        add_offset++;

		}
        }  */
 }
void paste(void)		 /*执行粘贴*/
{/*uchar temp,i,j;
add_offset=0;
  cp_ps_txd(2);
  rxded=0;
	     displaya[0]=_x;
    	     displaya[1]=_x;
    	     displaya[2]=_x;

⌨️ 快捷键说明

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