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

📄 ledrgb.txt

📁 针对LED彩控及对RGB三色进行分配的原理及设计
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************************/
/*****                                 LED matrix display screen          ***********************/
/*****                     designed by lingfeng              2004-9-3     ***********************/
/*****                     changed by  caocong               2005-5-18    ***********************/                                            
/*****              main chips: W77E58,DS18B20, PCF8563,27C020, IDT7134   ***********************/                                             
/*****              main function:1.Communication with the computer       ***********************/
/*****                                   2.Get the RTC &Temperature       ***********************/
/*****                                   3. Send data to IDT7134          ***********************/
/************************************************************************************************/
/**************************checked by lingfeng 2005-5-26*****************************************/
/***********************************include files************************************************/

#include<absacc.h>
#include<intrins.h>
#include"ledcontrol.h"

uchar code  num_model[11][16] = {
          0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,          //number 0
          0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,          //number 1
          0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,         //number 2
          0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00,        //number 3
          0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,         //number 4
          0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,        //number 5
          0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,        //number 6
          0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,        //number 7
          0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,       //number 8
          0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00,       // number 9
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00       //   miuns  '-'
                  };

uchar code format_time[6][16]  =     {
	   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,       //sign  "--"
	   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,       //sign  "--"
	   0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00,       //sign  "*"
	   0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,      //sign  "  :"
	   0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,      //sign  ": "
	   0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00      //sign  "*"
                  };


uchar   code format_temp[9][32]  =  {
	   0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x12,0x18,0x21,0x8E,0xC0,0x84,       //   "今"
          0x00,0x00,0x1F,0xF0,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,
          0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,       //  "日"
          0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,
          0x40,0x00,0x27,0xF0,0x24,0x10,0x07,0xF0,0x94,0x10,0x54,0x10,0x17,0xF0,0x20,0x00,       // "温"
          0x2F,0xFC,0xC9,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x5F,0xFE,0x40,0x00,
          0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0,      //"度"
          0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
          0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE,        //"是"
          0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00,0x15,0x00,0x23,0x00,0x40,0xFE,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,       // 无
	      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
	      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,       //无
	      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
          0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0,         //"度"
          0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
          0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x02,0x80,          //"零"
          0x04,0x60,0x1A,0x1E,0xE1,0x08,0x1F,0xE0,0x00,0x40,0x02,0x80,0x01,0x00,0x01,0x00
                          };
 
/*********************************program************************************/

void main(void)
{               
/***************************inital*******************************************/                                 
         cpu_ini();
         variable_ini();
	     pcf8563_init();
	     ds1820_ini();
         watchdog();

         get_c_code(COMBUF.charbuf, 8);
		 watchdog();
 
		 Wrt_IDT7134_Buf1();
         watchdog();
/************************main loop****************************************/

          while(1)
          	{
          		if (flag_5min)
          			{	
          			   flag_5min = False;
          			get_time(time);
					watchdog();
					get_temp(time);
					watchdog();
					put_format_dispbuf(format_time,format_temp);
					watchdog();
					Wrt_IDT7134_Buf2();
					watchdog();
          			}
			commu();
			watchdog();
			if (flag_30sec)
				{
				     flag_30sec = 0;
				     DISPBUF.buf_num = 1;
				     flag_begin = False;
				}
			}
}
					










/************cpu_ini************************/
void cpu_ini(void)
{
        TMOD=0x21;                       //timer1 mode2 timer0 mode1
        TL1=0xfd;                           //9600bps                         
        TH1=0xfd;
        PCON=0;	                     //SMOD=0
        SCON=0x50;                      //serial mode 1
        TL0=0x00;                         //timer  is 50ms
        TH0=0x4c;
        EX0=1;                              //Enable int0
        IT0=1;	                         //falling  edge trigle
        ET0=1;                            //Enable time0   
        ES=1;                            //Enable serial 
        EA=1;                         
        TR0=1;
        TR1=1;
	 
		
}


void variable_ini(void)
{
	 fd_dog= 0;                                      //  count for  watchdog
     RECBUF.flag	= (uchar)0;                      // inital  the communcation buffer
	 SEDBUF.flag 	= (uchar)0;
	 RECBUF.len  =  0;
	 SEDBUF.len 	= 0;
	 RECBUF.loc = 0;
	 SEDBUF.loc = 0;
 	 flag_5min = False;
	 flag_30sec	=False;
	 flag_begin = False;
	 count_sec  = 0;
	 count_min = 0;


}

void int0_process(void)  interrupt 0 using 1
{
       flag_5min =True;
	flag_begin = True;
}



void put_format_dispbuf(uchar format_time1[][16],uchar format_temp1[][32])                   //using display buffer 2
{
     

          uchar i,j;          
//fill time's format  to dsiplay buffer
          for (i=0; i<4; i=i+3) 
          	{
                   for (j=0; j<16; j++)
		         {
		            DISPBUF.disp_buf2[j][2+i] = ~format_time1[0+i/3][j-16];      // fill    "--"     "--"
		            DISPBUF.disp_buf2[j][8+i] = ~format_time1[2+i/3][j-16];	     // fill    "*"       " :"
                    DISPBUF.disp_buf2[j][12+i]= ~format_time1[4+i/3][j-16];	     // fill     ": "    "*"
                    	}
          	}                                         
//fill temperature's foramt to display buffer 
          for (i=0; i<8; i++)
          	{
            	     for(j=16; j<32; j++)
          	           {
                  DISPBUF.disp_buf2[j][i*2]    = ~format_temp1[i][(j-16)*2];
				  DISPBUF.disp_buf2[j][i*2+1]  = ~ format_temp1[i][(j-16)*2+1];			  
            	     	    }
          	}
}


void put_time_dispbuf(uchar time [ ], uchar num_model1 [ ] [ 16 ])           //using display buffer 2
{
       uchar i,j,k;
       uchar  time_g,time_s;
	  k = 6;
	for (i=0;i<10; i=i+3)
	    {                                                         //fill      year  month data  hour 
	          time_g = time[k]%10;
	          time_s = time[k]/10;
	       for (j=0; j<16; j++)
	       	{          
	       	   DISPBUF.disp_buf2[j][i]   = ~num_model1[time_g][j];
			   DISPBUF.disp_buf2[j][i+1] = ~num_model1[time_s][j];
	       	}
		 if (--k == 4)
		   	{
		   	   k--;
		   	}
		}
	 time_g = time[1]%10;
	 time_s = time[1]/10;
	for (j=0; j<16; j++)                                        //fill     min
		{
		       DISPBUF.disp_buf2[j][13]     = ~num_model1[time_g][j];
	           DISPBUF.disp_buf2[j][14]     = ~num_model1[time_s][j];
		}
}

void  put_temp_dispbuf(uchar time [ ], uchar num_model1 [ ] [ 16 ])           //using  display buffer 2
{
         uchar j;
	     uchar temp_g,temp_s;
	 if (time[8] == 0)
	 	{
	 	      for(j=16; j<32; j++)
	 	      	{
	 	      	  DISPBUF.disp_buf2[j][11] = ~format_temp[8][(j-16)*2];
			      DISPBUF.disp_buf2[j][12] = ~format_temp[8][(j-16)*2+1];
	 	      	}
	 	}
	else if(time[7] == 0xff)
		{
		       for (j=16; j<32; j++)
		       	{
		       	    DISPBUF.disp_buf2[j][11] = ~num_model1[10][j-16];
		       	}
		}
	else
		{
                temp_g =time[8]%10;
	            temp_s  =time[8]/10;
			for(j=16; j<32; j++)
				{
				    DISPBUF.disp_buf2[j][11] = 0xff;
				    if(temp_s == 0)
				    	{
				             DISPBUF.disp_buf2[j][12] = ~num_model1[temp_g][j-16];
				    	}
				    else
				    	{
				    	     DISPBUF.disp_buf2[j][11] = num_model1[temp_s][j-16];
				             DISPBUF.disp_buf2[j][12] = num_model1[temp_g][j-16];
				    	}
				}
		}
}
void put_char_dispbuf(uchar *ptr,uchar cnt)       			                                                                       // using display buffer 1
{      
	 uchar i, j;
	 ulong  location;
	 uchar  code  *charptr;                           //point to  the   first address of  word's model  
 	 for(i=0; i<cnt; i++) 
	 	{
	 	      location = (*(ptr+i)-0xa1)*94 - (*(ptr+i+1)-0xa1)*32;    //get the first address of  word's model
	 	       for (j=0; j<32; j++)
	 	       	{
					charptr=(uchar code *)location;                     //get  low 2 byte of   lccation
					P4=*((uchar *)(&location)+1);                        //get  second high byte of  lication 
			              COMBUF.charbuf[j]=*charptr;                        //get char model 
			              location++;
	 	       	}
                     
			                     //write data  to  display buffer
				 
		         if (cnt/4 == 0)
				    {
					     for (j=0; j<16; j++)
						  {    
					          DISPBUF.disp_buf1[j][i*2]    = ~COMBUF.charbuf[j*2];
							  DISPBUF.disp_buf1[j][i*2+1]  = ~COMBUF.charbuf[j*2+1];
						      }
				      }
			         else
					 {
					  	    i = i-4;
					  	    for (j=16; j<32; j++)
						     {    
							  DISPBUF.disp_buf1[j][i*2]    = ~COMBUF.charbuf[(j-16)*2];
							  DISPBUF.disp_buf1[j][i*2+1]  = ~COMBUF.charbuf[(j-16)*2+1];
						      }
					 }
		   }
		 		
		DISPBUF.buf_num = 1;
					

⌨️ 快捷键说明

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