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

📄 ynxfzd.c.bak

📁 接收串口字模或数字,在led显示屏上显示
💻 BAK
字号:
#include <AT89X52.H>


 unsigned char code DAT[11]={0xfd,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x00};
unsigned char code  DIG[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
	 /*      led"=",0x5b"[",0x25"% 空秤"0x24重秤"$"0x23有卡"#"};*/
void delay(int ) ;
sbit SCL=P2^4;  
sbit SDA=P2^5;  


sbit SE=P1^0;	   //4寸数码管
sbit SCK=P1^1;
sbit RCK=P1^2;

sbit SE1=P1^4;	   //汉字屏
sbit SCK1=P1^5;
sbit RCK1=P1^6;	

sbit LED=P1^3;	 //指示灯
sbit DOT=P1^7;	 //冒号

sbit KEY=P2^7;	//键盘
sbit IRB=P2^6;  //红外

sbit GREEN=P2^3;//绿灯
sbit RED=P2^2;//红灯
sbit UP=P2^0;//升栏杆机
sbit DOWN=P2^1;//降栏杆机

unsigned char  str1[16];
unsigned char   str2[16];
unsigned char  str3[16];
unsigned char  str4[16];
unsigned char  str5[16];
unsigned char  str6[16];
unsigned  char  str7[16];
unsigned  char  idata str8[16];

int tj_bytes;
unsigned char g_232,hz,g_232_led,led,zt;
//bit hz;


void out_disp_8(unsigned char);
void out_disp_led(unsigned char);
unsigned char led_8(char);

void init_rs232();
void tx_char( char );
unsigned char rx_char();


//unsigned char  s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,
//               s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63;



void main()
{ // unsigned char dat1,dat2,zt,i;
   delay(5000);
   //定时器设置
  TH0=0xfb;
  TL0=0x30;
  IE=0x82;

  TMOD=0x21;//
  
  EA=1;
  TR0=1; 
   init_rs232();
   	ET1=1;
	ES=1;
 IP=0x10;
   KEY =1;
   GREEN =1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升*/DOWN=0;/*栏杆机降*/
 
   P0=0x00;
  out_disp_8(0x00);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  out_disp_8(DAT[0]);
  
  RCK=0;RCK=1;

   while (1){ 
   
    LED=~LED;  delay(2000);}



          
	
	  }
  	  
          	 
 
 
void init_rs232()
{	/*PCON=0x80;	 波特率加倍					*/
    //PCON&=0xef;	  // 波特率不加倍	
	SCON=0x50;
	TMOD=0x21;
	TH1=0xfd;
	TL1=0xfd;
    TR1=1;
	TI=1;

	}




void delay(int t) {
int i;
for (i=0;i<t;i++) ;
}

void out_disp_8(unsigned char dd) {

	unsigned char i,k;
	for (i=0;i<8;i++) {  k=dd & 0x01;SE=k;SCK=1;dd=dd>>1;SCK=0;	}
               }

void out_disp_led(unsigned char dd) {
	unsigned char i,k;
	for (i=0;i<8;i++) {  k=dd & 0x80;SE1=k;SCK1=1;dd=dd<<1;SCK1=0;	}
               }

unsigned char led_8( char dd){
   unsigned char i;
    i=0;
    while(1) {if(dd==DIG[i]) break;
		i++;if(i>9) break;}
	if(i>9) return(DAT[0]);
    return DAT[i];}
										 
										
void get_disp (void) interrupt 4 using 0

{
unsigned char rx;
	if((SCON & 0x01)==0x01)			//如果是串口输入引起中断
			{	// TR0=0;
				 rx= SBUF;
				 if( rx==0x5b) {g_232=0;hz=1;led=0;}


		         if (rx==0x23) zt=1;
                 if((rx==0x25) && (zt==1) && (IRB==1))/*空秤*/ {GREEN=1;/*绿灯*/RED=0;/*红灯*/UP=1;/*栏杆机升*/DOWN=0;/*栏杆机降*/zt=2;} 
		      	 if((rx==0x24) && (GREEN==1) && (zt==2) && (IRB==0)) {UP=0;/*栏杆机升*/DOWN=1;/*栏杆机降*/GREEN=0;/*绿灯*/RED=1;   zt=1; } /*重秤*/
    
	             if(rx==0x3d){ g_232_led=0,led=1;hz=0;}
			     if((rx==0x30) && ( led==1	)&& (g_232_led==1) ) {out_disp_8(0x00);}/*灭*/
				 if((rx!=0x30) && ( led==1	)&& (g_232_led==1) ) {out_disp_8(led_8(rx));}/*灭*/
				 if(( led==1)&& (g_232_led>0) ) {out_disp_8(led_8(rx));}
			     if((g_232_led==9)&&(led==1)) {RCK=0; RCK=1;led=0;} 
				 if(led==1)	 g_232_led++;
	                    

				 if((g_232>0)&&(g_232<17)&&(hz==1)) str1[g_232 - 1]=rx;
				 if((g_232>16)&&(g_232<33)&&(hz==1)) str2[g_232 - 17]=rx; 
				 if((g_232>32)&&(g_232<49)&&(hz==1)) str3[g_232 - 33]=rx; 
				 if((g_232>48)&&(g_232<65)&&(hz==1)) str4[g_232 - 49]=rx; 
				 if((g_232>64)&&(g_232<81)&&(hz==1)) str5[g_232 - 65]=rx;
				 if((g_232>80)&&(g_232<97)&&(hz==1)) str6[g_232 - 81]=rx;  
				 if((g_232>96)&&(g_232<113)&&(hz==1)) str7[g_232 - 97]=rx; 
			//	 if((g_232>112)&&(g_232<129)&&(hz==1)) str8[g_232 - 113]=rx; 
				 /*if((g_232==113)&&(hz==1)) K0=rx; 
				 if((g_232==114)&&(hz==1)) K1=rx; 
				 if((g_232==115)&&(hz==1)) K2=rx; 
				 if((g_232==116)&&(hz==1)) K3=rx; 
				 if((g_232==117)&&(hz==1)) K4=rx; 
				 if((g_232==118)&&(hz==1)) K5=rx; 
				 if((g_232==119)&&(hz==1)) K6=rx; 
				 if((g_232==120)&&(hz==1)) K7=rx; 
				 if((g_232==121)&&(hz==1)) K8=rx; 
				 if((g_232==122)&&(hz==1)) K9=rx; 
				 if((g_232==123)&&(hz==1)) K10=rx; 
				 if((g_232==124)&&(hz==1)) K11=rx;
				 if((g_232==125)&&(hz==1)) K12=rx; 
				 if((g_232==126)&&(hz==1)) K13=rx; 
				 if((g_232==127)&&(hz==1)) K14=rx; 
				 if((g_232==128)&&(hz==1)) K15=rx; */
				 if(hz==1) g_232++;
				 if(g_232==112) hz=0;
				 
			     
				RI=0;
			//	TR0=1;
			}
}








 

void timer0(void) interrupt 1 { 

	TH0=0xfb;
	TL0=0x30; 
	
	     //   out_disp_led(~str8[tj_bytes]);

			out_disp_led(~str7[tj_bytes]);
			out_disp_led(~str6[tj_bytes]);
			out_disp_led(~str5[tj_bytes]);
			out_disp_led(~str4[tj_bytes]);
			out_disp_led(~str3[tj_bytes]);
			out_disp_led(~str2[tj_bytes]);
			out_disp_led(~str1[tj_bytes]);
	

    RCK1=0;RCK1=1;
  P0=tj_bytes;
  tj_bytes ++;
  if(tj_bytes>15) tj_bytes=0;
 }

⌨️ 快捷键说明

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