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

📄 jh.c

📁 用于排队叫号系统的中央显示大屏控制程序。可以循环滚动显示文字
💻 C
字号:
//********************************************************************
//叫号系统窗口屏
//********************************************************************
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#include <intrins.h>
#include<string.h>
#include<bao.h>
void y6()
     {
	   P2=0xc0;
	   P2=0x00;
	 }
//显示红字
void row_r()
      {
	      {
		    or1=d7;
		    og1=0;
  	        pk=0;
		    pk=1;
		    or1=d6;		    
  	        pk=0;
		    pk=1;
		    or1=d5;		    
  	        pk=0;
		    pk=1;
		    or1=d4;		    
 	        pk=0;
		    pk=1;
		    or1=d3;		    
  	        pk=0;
		    pk=1;
		    or1=d2;		    
  	        pk=0;
		    pk=1;
		    or1=d1;		    
  	        pk=0;
		    pk=1;
		    or1=d0;		   
  	        pk=0;
		    pk=1;
		  }	
	  }
void init()
      {	   	
          IE=0x90;
 		  TMOD=0x20;  //33M/0xEE;
		  TH1=0xfa;//0xfd;//-11.0592//0xf4;//-22.1184//////////////9600
		  TR1=1;
		  SCON=0xf0;//SM2=0//全部接收//0x50;	
		  EA=1;
		  ES=1;
		  Flag=0;		  
		  P1=0x00;//InceptScr/44;
		  y6();          
		  CodeH[0]=CodeL[0]=Windows[0]=0;
 		  CodeH[1]=CodeL[1]=Windows[1]=0;
		  CodeH[2]=CodeL[2]=Windows[2]=0;
		  CodeH[1]=CodeL[3]=Windows[3]=0;
		  CodeH[4]=CodeL[4]=Windows[4]=0;
	  }
void receive(void) interrupt 4 using 3
  {	 	
    uchar i,TempData,Address;
	uint Addr,Code;	      
	le=1;
	   P1=0xd0;
	   le=0;
	   Address=P0;
	   le=1;
	   P1=0xf0;
	   le=0;
	   Address=~Address;
	if (RI)
	{
	RI=0;
    TempData=SBUF;//接收第一个字节
	if (TempData>0x7f && TempData<0xf0)//地址数据位
	   {	         
	        {
				 SM2=0;
			     {
				   Address2=_getkey();//地址第二字节	
			       if (Address2!=0xff)return;
	               MainAdd1=_getkey();//主机高
				   if (MainAdd1!=0xfd)return;	      
			       MainAdd2=_getkey();//主机低
				   if (MainAdd2!=0xff)return;  
				   Answer=_getkey();//应答信号
				   if (Answer!=0x09)return;
				   for (i=4;i>1;i--)
  				       {
					     CodeH[i]=CodeH[i-1];
					   }
				   CodeH[0]=_getkey();//号码高	
				   for (i=4;i>1;i--)
  				       {
					     CodeL[i]=CodeL[i-1];
					   }
				   CodeL[0]=_getkey();//号码低		
			   	   for (i=4;i>1;i--)
				       {
					     Windows[i]=Windows[i-1];
					   }
				   Windows[0]=_getkey();//窗口号				   
				   Team=_getkey();//队列号				   
			       Flag=1;
				   SM2=1;
				 }
	        }	       	    
	   }
	   else 
	   {
	     return;
	   }
//处理接收到的数据
	{	       
      Code=CodeH[Address-1]*256+CodeL[Address-1];
	  Addr=(Code/10000+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][3]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=(((Code%10000)/1000)+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][4]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=((Code%1000)/100+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][5]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=((Code%100)/10+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][6]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=(Code%10+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][7]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=((Windows[Address-1]%100)/10+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][16]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=((Windows[Address-1]%10)+0x30)*16;
	  for (i=0;i<16;i++)
	      {
		    Buffer[i][17]=CBYTE[0xe800+Addr+i];
		  }
	}	
	}
  }
void FlashShow()
     {
	   uchar i,j,k;
	   uint m; 	  
         for (k=0;k<5;k++)
		     {
			 for (m=0;m<50;m++)
			     {
                  for (i=0;i<16;i++)
			          {		
		      		    le=1;
					    for (j=0;j<Width*2;j++)
						    {
							  bd=Buffer[i][j];
							  row_r();							  
							}					  				
					    oe=1;
			 			latch=0;
			 			latch=1;
			 			P1=0xf0|i;
			 			oe=0;             
			 			le=0;				  
				      }	
				 }
			 for (m=0;m<50;m++)
			     {
                  for (i=0;i<16;i++)
			          {			
	      			    le=1;
					    for (j=0;j<Width*2;j++)
						    {
							  bd=~Buffer[i][j];
							  row_r();							  
							}					  				
					    oe=1;
			 			latch=0;
			 			latch=1;
			 			P1=0xf0|i;
			 			oe=0;             
			 			le=0;				  
				      }	
				 }
			 }
	 }
void StaticShow()
     {
	   uchar i,j;
	   uint m; 	      
			 for (m=0;m<50;m++)
			     {
                  for (i=0;i<16;i++)
			          {		
		      		    le=1;
					    for (j=0;j<Width*2;j++)
						    {
							  bd=Buffer[i+16][j];
							  row_r();							  
							}					  				
					    oe=1;
			 			latch=0;
			 			latch=1;
			 			P1=0xf0|i;
			 			oe=0;             
			 			le=0;					  
				      }	
				 }
	 }
void RollShow()
     {
	   uchar i,j,m,n,h,l;
       for (m=0;m<16;m++)
	       {	
             h=31-m;
	     	 l=15-m;
		     for (n=0;n<5;n++)
			     {				     
				   for (i=16;i<32;i++)
				       {	
				         le=1;
					     for (j=0;j<Width*2;j++)
						     {
							   bd=Buffer[i-m][j];
							   row_r();
							 }
						 oe=1;
			 			latch=0;
			 			latch=1;
			 			P1=0xf0|i;
			 			oe=0;             
			 			le=0;	
					   }
				 }
			 for (j=0;j<Width*2;j++)
			     {
				   Buffer[h][j]=Buffer[l][j];
				 }     
		   }
	 }
void main()
         {	
	       uint i;	   
		   init();		   
mm:        if (Flag==1)
              {
			    Flag=0;                 
			    RollShow();	
			    FlashShow();
	  	      }
		   while(1)
			    {				  
	 			  for (i=0;i<200;i++)
				      {
				        StaticShow();	
			   	        if (Flag==1)
	   	     	           {
					         goto mm;
					       }
					  }				  			  
				}		 			  
		 }

⌨️ 快捷键说明

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