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

📄 jh.c

📁 一个实用的LED条型显示屏程序
💻 C
字号:
//********************************************************************
//叫号系统窗口屏
//********************************************************************
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#include <intrins.h>
#include<string.h>
#include<bao.h>
//脉冲
void pulse()
     {
	  // P2=0xa0;
	   P2=0x00;  //采用138时脉冲	 
 	   P2=0xa0;
	 }
void y6()
     {
	   P2=0xc0;
	   P2=0x00;
	 }
//清屏过程
void cscr()
     {	
	   P2=0x00;//高选通  
  	   P1=0x40;//关屏
	   pulse();	
	 }
//开屏过程
void oscr()
     {
	// oe=0;
	 //pk=0;
	 P1=0x0f&P1;
	 pulse();
	 }
void num(uchar k)
        {		 
         P1=k;
	     //sck  
		}
//显示红字
void row_r()
      {
	    //uchar bb;		
	   //if (Type==0x00)
	      {
		    or1=~d7;
		    og1=1;
  	        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();          
		  Address1=Address2=MainAdd1=MainAdd2=Answer=CodeH=CodeL=Windows=Team=0x00;		  
	  }
void receive(void) interrupt 4 using 3
  {	 	
    uchar i,k,TempData;
	uint Addr,Code;	
	RI=0;
    TempData=SBUF;//接收第一个字节
	if (TempData>0x7f && TempData<0xf0)//地址数据位
	   {	         
		 Address1=TempData; 
         k=Address1-0x7f;
		 if (k==MyAddress)
	        {
                 cscr();
				 ES=0;	
				 SM2=0;
				 RI=0; 	  
			     {
				   Address2=_getkey();//地址第二字节				     
	               MainAdd1=_getkey();//主机高					      
			       MainAdd2=_getkey();//主机低				     
				   Answer=_getkey();//应答信号				     
				   CodeH=_getkey();//号码高					     
				   CodeL=_getkey();//号码低					   
				   Windows=_getkey();//窗口号				   
				   Team=_getkey();//队列号				   
			       Flag=1;
				   SM2=1;
				 }
	        }	  
      	    else
			{
			  return;
			}
	   }
	   else 
	   {
	     return;
	   }
//处理接收到的数据
	{	  
      /*Addr=(CodeH/0x10+0x30)*16;
      for (i=0;i<16;i++)
	      {
		    Buffer[i][2]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=(CodeH%0x10+0x30)*16;
      for (i=0;i<16;i++)
	      {
		    Buffer[i][3]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=(CodeL/0x10+0x30)*16;
      for (i=0;i<16;i++)
	      {
		    Buffer[i][4]=CBYTE[0xe800+Addr+i];
		  }
	  Addr=(CodeL%0x10+0x30)*16;
      for (i=0;i<16;i++)
	      {
		    Buffer[i][5]=CBYTE[0xe800+Addr+i];
		  }	  */
      Code=CodeH*256+CodeL;
	  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];
		  }
	}	
	ES=1;	
  }
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++)
			          {				      
					    for (j=0;j<Width*2;j++)
						    {
							  bd=Buffer[i][j];
							  row_r();							  
							}					  				
					    cscr();
					    latch=0;
					    latch=1;
					    num(i);
				 	    oscr();					  
				      }	
				 }
			 for (m=0;m<50;m++)
			     {
                  for (i=0;i<16;i++)
			          {				      
					    for (j=0;j<Width*2;j++)
						    {
							  bd=~Buffer[i][j];
							  row_r();							  
							}					  				
					    cscr();
					    latch=0;
					    latch=1;
					    num(i);
				 	    oscr();					  
				      }	
				 }
			 }
	 }
void StaticShow()
     {
	   uchar i,j;
	   uint m; 	      
			 for (m=0;m<50;m++)
			     {
                  for (i=0;i<16;i++)
			          {				      
					    for (j=0;j<Width*2;j++)
						    {
							  bd=Buffer[i+16][j];
							  row_r();							  
							}					  				
					    cscr();
					    latch=0;
					    latch=1;
					    num(i);
				 	    oscr();					  
				      }	
				 }
	 }
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++)
				       {					     
					     for (j=0;j<Width*2;j++)
						     {
							   bd=Buffer[i-m][j];
							   row_r();
							 }
						 cscr();
						 latch=0;
						 latch=1;
						 num(i);
						 oscr();
					   }
				 }
			 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 + -