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

📄 displayled.c

📁 显示条屏原代码
💻 C
📖 第 1 页 / 共 2 页
字号:
        read_ok= RW24XX(l_data,8,0,0xA1,M24256);
      }
    while(read_ok);
    _nop_();
	switch(l_data[2])
		{
          case(0x30):lum=1;break;       //较亮
          case(0x31):lum=2;break;       //亮
          case(0x32):lum=3;break;       //很亮
		  default:lum=2;
		 }
	switch(l_data[1])
		{
          case(0x30):speed=50;break;	 //慢
          case(0x31):speed=40;break;	 //较慢
          case(0x32):speed=30;break;	 //中
		  case(0x33):speed=20;break;	 //较快
          case(0x34):speed=10;break;	 //快
		  default:speed=30;
		 }
	switch(l_data[0])
		{
          case(0x30):move_flag=0;break;  //静止
          case(0x31):move_flag=1;break;  //运动
          case(0x32):move_flag=0;break;
		  case(0x33):move_flag=1;break;
		  default:move_flag=0;
		 }
	start_page=toint(l_data[4])*16+toint(l_data[5]);  //显示起止屏计算
    end_page=toint(l_data[6])*16+toint(l_data[7])+1;

    iic_flag=0;			   //选择AT24C256(1)
}

void time_trans()
{
   uchar i;
   uchar num_temp;
   v_Get1381(taba);					   //读取HT1381当前时间
   for(i=0;i<14;i++)				   //取时间数字字模并存储在固定区域1024-1137
   {								   //数字字模
     if(i%2==1)
	 {
	   num_temp=taba[i/2]&0xf0;
	   num_temp=num_temp>>4;
	 }
	 else
	 {
	   num_temp=taba[i/2]&0x0f;
	 }
	 switch(num_temp)
		{
          case(0x00):num_temp=0;break;
          case(0x01):num_temp=1;break;
          case(0x02):num_temp=2;break;
		  case(0x03):num_temp=3;break;
		  case(0x04):num_temp=4;break;
		  case(0x05):num_temp=5;break;
		  case(0x06):num_temp=6;break;
		  case(0x07):num_temp=7;break;
		  case(0x08):num_temp=8;break;
		  case(0x09):num_temp=9;break;
		  default:num_temp=0;
		 }
	 UartBuf[13-i]=num_temp;	 
   }
   
	UartBuf[15]=UartBuf[13];
	UartBuf[14]=UartBuf[12];
	UartBuf[13]=11;
	UartBuf[12]=UartBuf[11];
	UartBuf[11]=UartBuf[10];
	UartBuf[10]=11;
	UartBuf[9]=UartBuf[9];
	UartBuf[8]=UartBuf[8];
//	UartBuf[7]=UartBuf[7];
//	UartBuf[6]=UartBuf[6];
	tabh[0]=UartBuf[4];
	tabh[1]=UartBuf[5];
	UartBuf[5]=10;
	UartBuf[4]=tabh[1];
	UartBuf[3]=tabh[0];
	UartBuf[2]=10;
//	UartBuf[1]=UartBuf[1];
//	UartBuf[0]=UartBuf[0];
}

/*void  display_time()
{
     uchar i,j;
     time_trans();
     for(i=0;i<16;i++)
      {
        for(j=0;j<8;j++)	
	     {
		   if(i>=8)
		   {taba[j]=num[UartBuf[j+8]][i-8];}
		   else
		   {taba[j]=num[UartBuf[j]][i];}         
       	 }		          
        GATE=1;     																	
        hc595(taba);
        GATE=0;
	    line_scan(tabb);
	    OE0=0;				  //hc595行扫描输出使能(单行显示)
        delay(1);
        OE0=1;				  //关闭行扫描hc595输出 (关闭显示)
		Deal_Cmd();
      } 
}*/




/*****************串口初始化函数*********************/
/******波特率发生器使用定时器1方式2(自动重装)******/
/***************波特率为57600************************/
/************串口方式1(8位UART波特率可变T1)********/
void  uart_ini(void)
{
       AUXR=0x40;	 //定时器1工作在1T模式
       TMOD=0x20;    //定时器T1为方式2
       TL1=0xe8;	 //重装值0x70 波特率9600
       TH1=0xe8;     //重装值0xE8 波特率57600
       SCON=0x50;    //串行口方式1
	   PCON=0x80;    //波特率加倍 SMOD=1
	   TR1=1;		 //启动定时器1
       ES=1; 		 //串口中断允许
}

void  timer0_open(void)
{
       TMOD=0x21;	 //定时器0为方式1(16位定时)
	   TH0=0xb7;	 //10ms
	   TL0=0xff;
	   ET0=1;		 //T0中断允许
}


void main(void)
{

   uchar i,j=0;		
   uchar m=0;
   uchar n=0;

   P1=0xff;			//端口初始化
   P3=0xff;

   WDT_CONTR=0x00;	//关闭开门狗
   uart_ini();	    //串口初始化
   timer0_open();
   PS=1;            //串口中断优先
   EA=1;			//中断允许
   t_count=1000;
   t_c=0;
   TR0=1;			//启动定时器0
   load_flag=0;

   display_mode();
   speed_temp=speed;

    
while(1)	         
 { 
   while(t_c==0)
   {
     time_trans();
     for(i=0;i<16;i++)
      {
        for(j=0;j<8;j++)	
	     {
		   Deal_Cmd();
		   while (time_flag==1)
		   {Deal_Cmd();}
		   if(i>=8)
		   {taba[j]=num[UartBuf[j+8]][i-8];}
		   else
		   {taba[j]=num[UartBuf[j]][i];}         
       	 }		          
        GATE=1;     																	
        hc595(taba);
        GATE=0;
	    line_scan(tabb);
	    OE0=0;				  //hc595行扫描输出使能(单行显示)
        delay(1);
        OE0=1;				  //关闭行扫描hc595输出 (关闭显示)		
      }
	}
	
   if(mode_flag==1)
   {
    display_mode();			         //读取显示模式
    mode_flag=0;
   }
	  		
   if(move_flag==1)
   {
   for(s=0;s<8;s++)
	{
	  for(i=0;i<8;i++)
	   {
		taba[i]=0xff;
       }
	 while(speed_temp--)
	 {
		for(i=0;i<16;i++)
		{
         for(j=0;j<4;j++)	
	      {
		    Deal_Cmd();
		    while (time_flag==1)
			{Deal_Cmd();}
            do{
                read_ok= RW24XX(tabh,2,j*32+i*2+start_page*128,0xA1,M24256);	   // 每次读取两字节
               }
            while(read_ok);
            _nop_();
	        for(m=0;m<2;m++)
	         {
	           l_data[j*2+m]=tabh[m];
	          }
	       }
		   delay(5);		  
		  transform();				 
          GATE=1;     																	
          hc595(taba);
          GATE=0; 	      
		  line_scan(tabb);
          OE0=0;				  //hc595行扫描输出使能(单行显示)
          delay(lum);
          OE0=1;				  //关闭行扫描hc595输出 (关闭显示)		  
		 }
	  }
	 speed_temp=speed;	  
	}
   flag=1; 
   }

   for(n=start_page;n<end_page;n++)	 //start_page  end_page
    {
	 if(move_flag==0)
	 {t=1;}
	 else
	 t=8;
	 for(i=0;i<8;i++)
	  {
        taba[i]=0xff;
       }
	 for(s=0;s<t;s++)
	 {
      while(speed_temp--)
      {
       for(i=0;i<16;i++)
        {
		   
         for(j=0;j<4;j++)		//8
	      {
		   Deal_Cmd();
		   while (time_flag==1)
		   {Deal_Cmd();}
            do{
                read_ok= RW24XX(tabh,2,j*32+i*2+128*n,0xA1,M24256);	   // 每次读取两字节
               }
            while(read_ok);
            _nop_();
	        for(m=0;m<2;m++)
	         {
	           l_data[j*2+m]=tabh[m];
			   //taba[j*2+m]=tabh[m];
	          }
	       }
		 if(move_flag==1)
		 {
         for(j=0;j<4;j++)		
	      {
		    Deal_Cmd();
		    while (time_flag==1)
		   {Deal_Cmd();}
		    do{
                read_ok= RW24XX(tabh,2,j*32+i*2+128*(n+1),0xA1,M24256);
               }
            while(read_ok);
            _nop_();
			for(m=0;m<2;m++)
	         {
	           tabc[j*2+m]=tabh[m];
	          }
	       }
		  }
		 transform();
         GATE=1;     																	
         hc595(taba);
         GATE=0;
	     line_scan(tabb);
	     OE0=0;				  //hc595行扫描输出使能(单行显示)
         delay(lum);
         OE0=1;				  //关闭行扫描hc595输出 (关闭显示)
        }  		                            
      }
     speed_temp=speed;	 
	 }
      flag=1;
     }
	if(load_flag==0)
	{ 
	  TR0=1;
	  t_c=0;
	}
	flag=0;   
   }          
}

⌨️ 快捷键说明

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