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

📄 lcd.c

📁 dsp控制lcd显示的程序,平台为DSP5416
💻 C
📖 第 1 页 / 共 2 页
字号:
/*** Configure IOPF pin as an INPUT ***/
    *PFDATDIR = *PFDATDIR & 0x7FFF;           
    

/*** Setup timers 1 and 2, and the PWM configuration ***/
    *T1CON = 0x0000;                    /* disable timer 1 */
    *T2CON = 0x0000;                    /* disable timer 2 */

    *GPTCONA = 0x0000;                  /* configure GPTCONA */
    *GPTCONB = 0x0000;                  /* configure GPTCONB */
/*     
 bit 15        0:      reserved
 bit 14        0:      T2STAT, read-only
 bit 13        0:      T1STAT, read-only
 bit 12-11     00:     reserved
 bit 10-9      00:     T2TOADC, 00 = no timerX event starts ADC
 bit 8-7       00:     T1TOADC, 00 = no timerX event starts ADC
 bit 6         0:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5-4       00:     reserved
 bit 3-2       00:     TXPIN, 00 = forced low
 bit 1-0       00:     TXPIN, 00 = forced low
*/
     
     * IMR=0x0000; 

/*     
 bit 15-6     0:      reserved
 bit 5        0:      Level INT6 is masked
 bit 4        0:      Level INT5 is masked
 bit 3        0:      Level INT4 is masked
 bit 2        0:      Level INT3 is masked
 bit 1        0:      Level INT2 is masked
 bit 0        0:      Level INT1 is masked

*/

     * IFR=0xFFFF;              //清除所有中断标志,"写1清0"

}

//--------------------------------------------------------------------
// 函数名称 : void delay_50ms(void)             
// 函数说明 : 50ms延迟
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------
void delay_50ms()
{
   UINT16 i,j;
   
   for(i=0;i<=1000;i++);
     for(j=0;j<=2000;j++);  //延迟250*1000*CLKOUT=500000*CLKOUT
                           //1/CLKOUT=0.2us 
}     

//--------------------------------------------------------------------
// 函数名称 : void delay_20ms(void)             
// 函数说明 : 20ms延迟
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------
void delay_20ms()
{
   UINT16 i,j;
   
   for(i=0;i<=1000;i++);
     for(j=0;j<=400;j++);  //延迟10*1000*CLKOUT=100000*CLKOUT
                           //1/CLKOUT=0.2us 
}  


//--------------------------------------------------------------------
// 函数名称 : void bf_ready(void)             
// 函数说明 : 液晶忙标志判断
// 输入参数 : 无
// 输出参数 : 无
//-------------------------------------------------------------------- 
 void bf_ready()
{
    UINT16 BF,BFTEMP;
  
   BF = port8004 & 0x00ff; //读指令寄存器
   
   asm(" nop ");
   
   BFTEMP = BF & 80 ;
   
   asm(" nop ");
   
   while( ( BF & 80 ) == 1)//如果忙标志为1,在这里等待
  
      return;
}         

//--------------------------------------------------------------------
// 函数名称 : void wcom(UINT16 com)             写指令寄存器             
// 函数说明 : 写指令寄存器 
// 输入参数 : 输入的命令字
// 输出参数 : 无
//-------------------------------------------------------------------- 

void wcom(UINT16 com)

{
   bf_ready();
   asm(" nop ");
   port8004 = com;
   
     return;
}       

//--------------------------------------------------------------------
// 函数名称 : void wram(UINT16 ram)             写数据寄存器             
// 函数说明 : 写数据寄存器 
// 输入参数 : 输入的数据
// 输出参数 : 无
//-------------------------------------------------------------------- 

void wram(UINT16 ram)

{
   bf_ready();
   asm(" nop ");
   port8005 = ram;
   
     return;
}       
          

//--------------------------------------------------------------------
// 函数名称 : void rram(void)             读数据寄存器             
// 函数说明 : 读数据寄存器 
// 输入参数 : 无
// 输出参数 : 无
//-------------------------------------------------------------------- 

void rram()

{
   UINT16 readram;
   
   bf_ready();
   asm(" nop ");
   
   readram = port8005;
   asm(" nop ");
   
     return;
}  

/*
***********************************************************
- 函数名称 : void Delay(int numbers)
- 函数说明 : 延时
- 输入参数 : numbers
- 输出参数 : 无
***********************************************************
*/
void Delay(UINT16 numbers)
{
  	UINT16 i,j;
  	for(i=0;i<40000;i++);
 
  		for(j=0;j<numbers;j++);

  	
  		
} 
	
/*
***********************************************************
- 函数名称 : interrupt void PHANTOM(void)
- 函数说明 : 伪中断子程序
- 输入参数 : 无
- 输出参数 : 无
***********************************************************
*/


interrupt void PHANTOM(void)
{
  
  * IFR=0xFFFF;              //清除所有中断标志,"写1清0"
  asm(" clrc INTM");         //开总中断
  return;
}

/*
************************************************************
	****************** 主函数 *******************
************************************************************
*/


void main()
{

   UINT16  temp,i;
   
//----------系统初始化-------------------------------  
   asm(" nop ");
   cpu_init();          //初始化CPU
   asm(" nop ");
   
//-----------LCD初始化--------------------------------
   asm(" nop ");
   delay_50ms();
   wcom(FUCSET);       //功能設定,8BIT 并口,基本指令集
   
   delay_100us(); 
   wcom(FUCSET);       //功能設定,8BIT 并口,基本指令集
   
   delay_100us(); 
   wcom(CURSOR);      //整體顯示,游標顯示,游標位置反白
   
   delay_100us();
   wcom(CLEAR);       //清除显示
   
   delay_20ms();      
   wcom(SETPOINT);    //進入點設定,游標右移,DDRAM 位址計數器(AC)加1
   
   delay_100us();
   
//------------LCD显示---------------------------------
for(;;)
{
   Delay(50000);
   Delay(50000);
   Delay(50000);
   wcom(0x0082);      //设定DDRAM的地址在第一行 82H
   delay_100us();
   for(i =0;i<10;i++)
   {
     
      wram(data_buff1[i]);
      delay_100us();
      asm(" nop ");
   }
   asm(" nop ");

   //------------------------------
   wcom(0x0092);      //设定DDRAM的地址在第二行 92H
   delay_100us();
   for(i =0;i<10;i++)
   {
     
      wram(data_buff2[i]);
      delay_100us();
   } 
   asm(" nop ");
  //-------------------------------- 
   wcom(0x008a);      //设定DDRAM的地址在第三行 8AH
   delay_100us();
   for(i =0;i<10;i++)
   {
     
      wram(data_buff3[i]);
      delay_100us();
   } 
   asm(" nop ");
   //--------------------------------
   wcom(0x009a);      //设定DDRAM的地址在第四行 9AH
   delay_100us();
   for(i =0;i<10;i++)
   {
     
      wram(data_buff4[i]);
      delay_100us();
   }
   asm(" nop ");
   
   delay_100us();
   Delay(50000);
   Delay(50000);
   Delay(50000);
   delay_100us();
   wcom(CLEAR);       //清除显示
   
   }
//----------- 踏步--------------------------  
           while(1)
          {
            temp = 0; 
          }
      
}

⌨️ 快捷键说明

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