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

📄 lcd.c

📁 tms320c5402的boot c程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                    *a=0x0f;
                    write_command();
                  }
                  else if (help1_down==1)
                       {
                       SetDAdress(AC3+7);
                       *a=0x0f;
                       write_command();
                       }
         }
   }  
     asm (" NOP ");
     asm (" NOP ");
    if(key_a==0x00 && (menuhelp==1 || menuhelp==2 || menuhelp==3) && help1_down==0)
     {  
     menuhelp=0;
     Initial_menu0();
     }
     else if(key_a==0x00 && (menuhelp==4 || menuhelp==5 || menuhelp==6) && help1_down==0)
     {
      menuhelp=0;
     Initial_menu1();
     }
     if(key_a==0x00 && help1_down==1)
     {
     switch(menuhelp)
     {
      case 1 : help1=1;
               help1_down=0;
               Experience1();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break;
               
      case 2 : help1=1;
               help1_down=0;
               Experience2();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break;
      case 3 : help1=1;
               help1_down=0;
               Experience3();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break;
              
      case 4 : help1=1;
               help1_down=0;
               //Experience4();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break;
      case 5 : help1=1;
               help1_down=0;
               //Experience5();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break; 
      case 6 : help1=1;
               help1_down=0;
               ///Experience6();
                 asm(" NOP ");
		         asm(" NOP ");
		         asm(" NOP ");
               break;         
     }
     }
  }
}    
void gdram_intial(unsigned char *DPTR0)
{
 gdram_cur_x=0;
 gdram_cur_y=0;
 temp=gdram_cur_x;
  setup_expand_mode();
  for(j=0;j<32;j++)
  {
  for(i=0;i<8;i++)
  {
  R0=*DPTR0;
  DPTR0++;
  R1=*DPTR0;
  DPTR0++;
  gdram_write_word(R0,R1);
  gdram_cur_x++;
  }
   gdram_cur_x=temp;
   gdram_cur_y++;
  }
 gdram_cur_x=8;
 gdram_cur_y=0;
 temp=gdram_cur_x;
  for(j=0;j<32;j++)
  {
  for(i=0;i<8;i++)
  {
  R0=*DPTR0;
  DPTR0++;
  R1=*DPTR0;
  DPTR0++;
  gdram_write_word(R0,R1);
  gdram_cur_x++;
  }
   gdram_cur_x=temp;
   gdram_cur_y++;
  }
 *a=0x36;
 write_command();
}
//设定垂直或水平地址
void  set_gdram_addr(unsigned int addr)
{
 *a=addr|0x80;
 write_command();
}
//绘图函数
void gdram_draw(void)
{
 gdram_cur_x=0;
 gdram_cur_y=0;
 gdram_disp();
}
//画图函数
void gdram_disp(void)
{
 for(n=0;n<128;n++)
  {
   gdram_cur_y=DataAd50[n];
   gdram_cur_x=n/16;
    l=n%16;
    if(l<8)
    {
    Databack[DataAd50[n]+1][n/8]=Databack[DataAd50[n]+1][n/8]|Binary[l];
    Databack[DataAd50[n]][n/8]=Binary[l]|Databack[DataAd50[n]][n/8];
    }
    else if(l>=8 && l<16)
    {
    l=l-8;
    Databack[DataAd50[n]+1][(n/16)*2+1]=Databack[DataAd50[n]+1][(n/16)*2+1]|Binary[l];
    Databack[DataAd50[n]][(n/16)*2+1]=Databack[DataAd50[n]][(n/16)*2+1]|Binary[l];
    }
   }
   DPTR=&Databack[0][0];
   gdram_intial(DPTR);
}
//向液晶发送数据
void gdram_write_word(unsigned int fir_word,int unsigned sec_word)
{
 set_gdram_addr(gdram_cur_y);
 set_gdram_addr(gdram_cur_x);
 *data=fir_word;
 write_data();
 *data=sec_word;
 write_data();
}
//设定扩展模式
void setup_expand_mode(void)
{
*a=0x34;
write_command();
}
//中断子函数
interrupt void timer()
{
int *DataAd50_1=(int *)0x110;
READAD50();
 for(i=0;i<32;i++)
  {
    for(j=0;j<16;j++)
       {
       Databack[i][j]=0x0;
       }
  }
for(k=0;k<128;k++)
{
DataAd50[k]=(1.0*(*DataAd50_1)/64.0)/32+16.00;
DataAd50_1++;
}
init_lcm();
ddram_clear();
//DPTR=&clear[0][0];
//gdram_intial(DPTR);
gdram_draw();
}
/*void  display_led(void)
{
  for(k=0;k<5;k++)
     {
       port8001=0xaa;
       long_delay();
       port8001=0x55;
       long_delay();
     }
  for (k=0;k<5;k++)
      { 
         port8001=0xff;
         long_delay();
         port8001=0x00;
         long_delay();
      }
}*/  


 void send_byte( unsigned char out_byte) //发送8位的控制指令
{
	unsigned char i;
	send_0();
	for(i=0;i<8;i++)
	{
		if(out_byte&0x80)
		{
			send_1();

		}
		else
		{
			send_2();
		}
		out_byte=out_byte*2;
	}
}

void write7279(unsigned int cmd,unsigned int dta)//向7279写控制指令及数据
{
	unsigned char i;
	unsigned int cmddata;
	dta=(dta&0x00ff);
	cmddata=((cmd<<8)|dta);
	send_0();
for (i=0;i<16;i++)
{
	if(cmddata&0x8000)
	{
		send_1();
	}
	else 
	{
		send_2();
	}
	cmddata=cmddata*2;
}
	send_end();
}
void long_delay(void)    //长延时
{
	unsigned char i,j;
	for (i=0;i<0xff;i++)
	{
		for(j=0;j<0xeff;j++)
		{}
	}

}
void short_delay(void)  //短延时
{
    unsigned char i,j;
	for(i=0;i<0x10;i++)
	{  for(j=0;j<0x5ff;j++)
	{}
	}
}
interrupt void key_int() //按键中断服务子程序
{   
        asm(" SSBX INTM");
        asm(" STM #0xFFFF, IFR ");
        INT3_ISR();
        key_b=*(unsigned char *)0x16;
        if(key_b==0xff)
        {
        ;
        }
        else
        {
        key_a=key_b;
        write7279(DECODE1,key_a);
        }
        asm(" STM #0x104, IMR ");
        asm(" RSBX INTM");
}
void Initial_menu(unsigned char *DPTR1)
{
   //Turn off Display
   *a=0x08;
    write_command();
   //Clear Ddram
   *a=0x01;
    write_command();
   //Turn on Display
   *a=0x0f;
   write_command();
 	for(i=0;i<32;i++)
	   {
	   R2=*DPTR1;
	   DPTR1++;
	   R3=*DPTR1;
	   DPTR1++;  
	   SetDCdata(R2,R3);   
       }
}
 void Initial_menu0(void)
{  
    page=0;
    down_key=0;
    DPTR=&Menu0[0][0];
    Initial_menu(DPTR);
    //set address
    SetDAdress(AC0);
    *a=0x0f;
    write_command();
}
void Initial_menu1(void)
{  
   //Turn off Display
   *a=0x08;
    write_command();
   //Clear Ddram
   *a=0x01;
    write_command();
   //Turn on Display
   *a=0x0f;
   write_command();
   SetDAdress(AC1+2);
   SetDCdata(0xd5,0xfd);
   SetDCdata(0xd4,0xda);
   SetDCdata(0xd7,0xd4);
   SetDCdata(0xbc,0xec);
   /*SetDAdress(AC2+2);
   SetDCdata(0xd4,0xcb);
   SetDCdata(0xd0,0xd0);
   SetDCdata(0xd6,0xd0);*/
   SetDAdress(AC2);
   *a=0x0c;
   write_command();
}
void Menuhelp1(void)
{  
   switch_key=5;
   down_key=5;
   help1_down=0;
   DPTR=&Menu_help1[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
   *a=0x0f;
   write_command();
}

void Menuhelp2(void)
{
   switch_key=5;
   down_key=5;
   help1_down=0;
   DPTR=&Menu_help2[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
    *a=0x0f;
   write_command();
}
void Menuhelp3(void)
{ 
   switch_key=5;
   help1_down=0;
   down_key=5;
   DPTR=&Menu_help3[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
   *a=0x0f;
   write_command();
} 
void Menuhelp4(void)
{
   switch_key=5;
   help1_down=0;
   down_key=5;
   DPTR=&Menu_help4[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
   *a=0x0f;
   write_command();
}
void Menuhelp5(void)
{ 
   switch_key=5;
   help1_down=0;
   down_key=5;
   DPTR=&Menu_help5[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
   *a=0x0f;
   write_command();
}
void Menuhelp6(void)
{
   switch_key=5;
   help1_down=0;
   down_key=5;
   DPTR=&Menu_help6[0][0];
   Initial_menu(DPTR);
   //set address
   SetDAdress(AC3);
   *a=0x0f;
   write_command();
}
void SetDAdress(unsigned int Daddr)
{
  *a=Daddr;
  write_command();
}
void SetDCdata(unsigned int Ddata0,unsigned int Ddata1)
{
  *data=Ddata0;
  write_data();
 // short_delay();
  *data=Ddata1;
//  short_delay();
  write_data();
}    
void Experience1(void)
{
  key_a=0x22;
while (help1)
{
  if(key_a==0x00)
  {
  help1=0;
  }
  else
  {
  port=port8000;
  port8001=port;
  SetDAdress(AC3);
  *a=0x0f;
  write_command();
  }
}
}
void Experience2(void)
{
  key_a=0x22;
  OpenMcBSP();
  Int();
  while(help1)
  {
    if(key_a==0x00)
    {
    help1=0;
    }
  }
  asm(" STM 0104h,IMR ");
  asm(" RSBX INTM");
  init_lcm();
  ddram_clear();
     
}
void Experience3(void)
{
   key_a=0x22;
   while(help1)
   {
     if(key_a==0x00)
     {
     help1=0;
     }
     else
     {
	  port8001=0x0a;
	  short_delay();
	  port8001=0x06;
	  short_delay();
	  port8001=0x05;
	  short_delay();
	  port8001=0x09;
	  short_delay();
	  
    }
   }
    port8001=0x00;
}

⌨️ 快捷键说明

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