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

📄 画点.txt

📁 单片机驱动12864画点程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
   COUNT3=0X02;
   LCD_X=0X80;//128
   for (;COUNT3!=0;COUNT3--)
   {
       LCD_Y=0X80;
       COUNT2=0X20;//32
       for (;COUNT2!=0;COUNT2--)
       {
         COUNT1=0X10;//16
         WR_ZB();
         for (;COUNT1!=0;COUNT1--)
          {
            send_data(*s++);
            
          }
         LCD_Y+=1;
       }
       LCD_X=0X88;
   }
   send_com(0x36);
   send_com(0x30);   //可省
}
//******************显示点阵子程序************
void LAT_DISP(void)
{
   COUNT3=0X02;
   LCD_X=0X80;
   for (;COUNT3!=0;COUNT--)
    {
       LCD_Y=0X80;
       F0=0;
       COUNT2=0X20;
       for (;COUNT2!=0;COUNT--)
         {
           COUNT1=0X10;
           WR_ZB();
           if (F0!=0)
           {
             LCD_DATA=LCD_DATA2;
           }
           else LCD_DATA=LCD_DATA1;
           for (;COUNT1!=0;COUNT1--)
             {
              send_data(LCD_DATA);
             }
           LCD_Y+=1;
           F0=!F0;
         }
       LCD_X=0X88;
    }
   
   send_com(0x36);
   send_com(0x30);
}
void WORD_DISP(unsigned char x, unsigned char y,unsigned char flash *s)
{   //x=0---0x07,8个,  Y= 0-63  共64行 
   COUNT3=0X02;
   if( x>7)
   {   
       LCD_X=0X87;
   }else
   {
       LCD_X=0x80+x;
   }
   if(y>31)
   {
       if(y>63){ y=32;}
	   LCD_Y=0X80+y-32;
	   LCD_X=LCD_X+8;
   }else
   {
       LCD_Y=0X80+y;
   }
   COUNT2=0X10;
   for (;COUNT2!=0;COUNT--)
   {
           COUNT1=0X02;
           WR_ZB();
           for (;COUNT1!=0;COUNT1--)
           {
              send_data(LCD_DATA);
           }
           LCD_Y+=1;
    }
   
   send_com(0x36);
   send_com(0x30);
}
void PIC_trans(unsigned char x, unsigned char dx, unsigned char dy,unsigned char *s)
{   
   //x=0-127个(共128列),  Y= 0-63  共64行
   //已知  要转换的数据   data_yuanshi[j]
   //转换为               data_new[i]
    unsigned int i,j; 
	unsigned char k;
	unsigned char start,end,weiyi,weiyi_end;
	unsigned char x_num;
   	end=((x+dx)>>4);
	k=(x+dx)&0x0f;
	if((end>0)&&(end<=7))
	{
	    if(k==0)
		{
		    end--;
		}
	}
	if(end>7)
	{ 
	    end=7;
	}
	start=x>>4;
	x_num=end-start+1;
	
	weiyi=x & 0x0f;
	weiyi_end=(x+dx) & 0x0f;
	i=0;j=0;
	
	for(k=dy;k!=0;k--)
	{
	    if(weiyi<=8)
		{
		    data_new[i++]=s[j++]>>weiyi;
			data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
			j++;
		}else
		{
		    data_new[i++]=0;
			data_new[i++]=s[j]>>(weiyi-8);
			j++;
		}
		if(x_num==1)
		{
		    //continue;
			goto loop_1;
		}
		if(x_num>2)
		{
	      for(start=x_num-2;start!=0;start--)
		  {
		    if(weiyi<=8)
			{
		          data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
				  j++;
				  data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
				  j++;
			 }else
			{
		          data_new[i++]=(s[j-1]<<(16-weiyi))+(s[j]>>(weiyi-8));
				  j++;
				  data_new[i++]=(s[j-1]<<(16-weiyi))+(s[j]>>(weiyi-8));
				  j++;
			 }
		  }
		}
		{
		    if(weiyi_end<=8)
			{
			    if(weiyi_end==0) //ok
				{
				    data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
					j++;
					data_new[i++]=(s[j-1]<<(8-weiyi))+(s[j]>>weiyi);
					j++;
				}else
				{    //ok
				    data_new[i++]=(s[j-1]<<(8-weiyi_end));  
					
					data_new[i++]=0;
				}
				
			}else
			{
			    data_new[i++]=(s[j-1]<<(16-weiyi_end))+(s[j]>>(weiyi_end-8));
			    
				data_new[i++]=(s[j]<<(16-weiyi_end));
				j++;
				
			}
		}
loop_1:	;
	}
}

void PIC_READ(unsigned char x,unsigned char dx,unsigned char  y,unsigned char dy,  unsigned char *s)
{
    unsigned int i;
	unsigned char j, k;
    unsigned char start,end,x_num;
   	end=((x+dx)>>4);
	k=(x+dx)&0x0f;
	if((end>0)&&(end<=7))
	{
	    if(k==0)
		{
		    end--;
		}
	}
	if(end>7)
	{ 
	    end=7;
	}
	start=x>>4;
	x_num=end-start+1;
	;
    do
	{
	   if(y<32)
   	   {
           LCD_Y=0x80+y;
	   	   LCD_X=(x>>4)+0x80;
   	   }else
  	   {
           LCD_Y=0X80+y-32;
	   	   LCD_X=(x>>4)+0x88;
  	   }
	   k=x_num;
	   WR_ZB();
	   for(;k!=0;k--)
	   {
	       j=read_data();
		   
		   s[i++]=j;
	       j=read_data();
		   
		   s[i++]=j;
		   
	   }
	   y++;
	   dy--;
	}while(dy!=0);
//   send_com(0x36);
//   send_com(0x30);   //可省
	
	
	
}
void PIC_DRAW(unsigned char x,unsigned char dx,unsigned char  y,unsigned char dy,  unsigned char flash *s)
{
    //x,dx  分别是坐标的起点。y、dy
   unsigned char k;
   unsigned char start,end,x_num;
   	end=((x+dx)>>4);
	k=(x+dx)&0x0f;
	if((end>0)&&(end<=7))
	{
	    if(k==0)
		{
		    end--;
		}
	}
	if(end>7)
	{ 
	    end=7;
	}
	start=x>>4;
	x_num=end-start+1;
    do
	{
	   if(y<32)
   	   {
           LCD_Y=0x80+y;
	   	   LCD_X=(x>>4)+0x80;
   	   }else
  	   {
           LCD_Y=0X80+y-32;
	   	   LCD_X=(x>>4)+0x88;
  	   }
	   k=x_num;
	   WR_ZB();
	   for(;k!=0;k--)
	   {
	       send_data(*s++);send_data(*s++);
	   }
	   y++;
	   dy--;
	}while(dy!=0);
   send_com(0x36);
   send_com(0x30);   //可省
}	
unsigned char PIC_EXAM(unsigned char x,unsigned char dx,unsigned char y,unsigned char dy)
{   
    unsigned char i;
	i=0;
	if((y+dy)>64)
	{
	    i=0xff;
	}
	if((x+dx)>128)
	{
	    i=0xff;
	}
	
	
	
    return(i);
}      


/****************************************************
*  绘点函数                                         *
*  输入:   X    :点的横坐标  0-128                *
*           Y    :点的纵坐标  0-64                 *
*           State:0-绘点/1-清除                    *
****************************************************/
void Point (char X,char Y,char State)
{
        char X_Temp     = 0;
        char X_Position = 0;
        X_Temp = X;
        while (X_Temp>15)
        {
                X_Position++;
                X_Temp = X_Temp-16;
        }
        
        if (X_Temp<=15)
        {
                if(Y<32)
                {
                        LCD_X=0x80+X_Position;
                        LCD_Y=0x80+Y;
                }
                else
                {
                        LCD_X=0x88+X_Position; 
                        LCD_Y=0x80+Y-32;
                }
                
                WR_ZB();
                read_data();
                ramdata[0]=read_data();
                ramdata[1]=read_data();
                
              
                if(X_Temp<8)
                {
                        WR_ZB();
                        if(State==0)
                        {
                                send_data(ramdata[0]|data[X_Temp]);
                                send_com(0x36);
                        }
                        else
                        {
                                send_data(ramdata[0]&data2[X_Temp]);
                                send_com(0x36);
                        }       
                
                
                }
                else
                {
                        WR_ZB();
                        if(State==0)
                        {
                                send_data(ramdata[0]);
                                send_data(ramdata[1]|data[X_Temp-8]);
                                send_com(0x36);
                        }
                        else
                        {
                                send_data(ramdata[0]);
                                send_data(ramdata[1]&data2[X_Temp-8]);
                                send_com(0x36);
                        }
                }
        } 
}
        
void linex(char X,char end)
{       
        unsigned char temp;
        for(temp=0;temp<end;temp++)
        {
                Point(X,temp,0);
        }
}  

void liney(char Y,char end)
{                                        
        unsigned char temp;
        for(temp=0;temp<end;temp++)
        {
                Point(temp,Y,0);
        }	
}    


⌨️ 快捷键说明

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