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

📄 lcm141.c

📁 基于msp430的液晶显示模块LCM141
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <msp430x16x.h>
#include <math.h>
 
//显示初始化	
#define lcm_cs		 	BIT3
#define	lcm_wr		 	BIT2
#define	lcm_data		BIT1


 
//显示变量
  
unsigned char  disbuffer[8];
unsigned char  disbuffer1[6];
const unsigned char   sunsiliangdis_model[]=
{
  0xeb,0x60,0xc7,0xe5,0x6c,0xad,0xaf,0xe0,0xef,0xed,    //0,1,2,3,4,5,6,7,8,9  
  0xfb,0x70,0xd7,0xf5,0x7c,0xbd,0xbf,0xf0,0xFF,0xfd,    //0.,1.,2.,3.,4.,5.,6.,7.,8.,9.
  0x00,0x0f,0xee,0x0a,0x04,0xce,0x27,0x8F,0xad,0x67,0x2f,0x8e,0x0b,0x6e,0x07    //灭,t,A,I,-,P, o ,E,s,d,b,f,l,h,c
                                                  
														//显示位1~6
};                                                

const unsigned char  leijiliangdis_model[]=
{
  0xd7,0x06,0xe3,0xa7,0x36,0xb5,0xf5,0x07,0xf7,0xb7,    //0,1,2,3,4,5,6,7,8,9
  0xdf,0x0e,0xeb,0xaf,0x3e,0xbd,0xfd,0x0f,0xFF,0xbf,    //0.,1.,2.,3.,4.,5.,6.,7.,8.,9.
  0x00,0xb5,0xe6,0x77,0xf4,0xd1,0xf0,0xe4,0x70,0xf3,	//灭码,s,d,A,b,c ,t,o,r,e显示位7~14
  0x00,0x20                                             //灭码,-    
};                                                                                                 
 
unsigned int  flag=0x00fc; // ....K13~K10  K5~K8  K4~K1  K16  K17  K18  K15

//延时程序


void yantime(unsigned char  a)
 {
 unsigned  int i;
 unsigned  int j;   
 
	for (j=1;j<=a;j++)
      {
       for (i=1;i<=200;i++);  
       }	   
}

void times(void)
{     
  unsigned char i;
  for(i=10;i>0;i--);
}


///////////////给lcm送命令
void wrcom(unsigned char  cod)// 1 0 0 C7 C6 C5 C4 C3 C2 C1 C0 0   ..............共12位
{
   unsigned char   i;

   P1OUT |= lcm_cs;
   times();
   P1OUT &= ~lcm_cs;
   times();
///////////////////////送100
   P1OUT &= ~lcm_wr;
   times();
   P1OUT |= lcm_data;   
   times();//---------------1
   P1OUT |= lcm_wr;
   times();
///////////////////			  
   P1OUT &= ~lcm_wr;
   times(); 
   P1OUT &= ~lcm_data;
   times();//-----------------0
   P1OUT |= lcm_wr;
   times();
////////////////
   P1OUT &= ~lcm_wr;
   times(); 
   P1OUT &= ~lcm_data;
   times();//-----------------0
   P1OUT |= lcm_wr;
   times();
   /*
   P1OUT &= ~lcm_wr;
   P1OUT &= ~lcm_data;
   P1OUT &= ~lcm_cs;
   P1OUT |= lcm_wr;
   P1OUT |= lcm_data;
   P1OUT |= lcm_cs;
  */
 ////送命令代码
    for (i=1;i<=8;i++)// ----------------C7.......C0 
     {
	P1OUT &= ~lcm_wr;
        times();   
   	if ((cod&0x80)==0x80)
	   {
	   P1OUT |= lcm_data;
	   }
	else  
	   {
	   P1OUT &= ~lcm_data;
	   } 
       times();
       P1OUT |= lcm_wr;
       times();
       cod<<=1;
     }  
	 ////////////////////// 
     P1OUT &= ~lcm_wr;
          times();

     P1OUT &= ~lcm_data;
          times();//-------------------0
     P1OUT |= lcm_wr;
       times();
}

//显示初始化////////////
void display_init(void) 
 {
    unsigned char   a;
    unsigned char   cod;

	a=250;
        yantime(a);         //延时200ms      
     
        cod=0x29;
	wrcom(cod);   //初始化

	cod=0x18;
	wrcom(cod);   //内部RC振荡方式// 0x18    //32768Hz  0x14

        cod=0x01;
	wrcom(cod);  //开振荡器

	cod=0x03;
	wrcom(cod);   //开显示

}

///累积量显示程序  
void leijiliangwrdata(void)
 {     
      unsigned char   leijiliangdisdata;
      unsigned char   lcmdress; 
      unsigned char   i; 
      unsigned char   j;	 
	 

	 lcmdress=0x1c;                   //第13位
	 leijiliangdisdata=leijiliangdis_model[disbuffer[1]]; 	  

         P1OUT |= lcm_cs;
         times();
         P1OUT &= ~lcm_cs;
         times();
	 //=====================================101  0 A5 A4 A3 A2 A1 A0  D3  D2 D1 D0   13  bit
///////////////////////送101
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();
///////////////////
         P1OUT &= ~lcm_wr;
         times(); 
         P1OUT &= ~lcm_data;
         times();//-----------------0
         P1OUT |= lcm_wr;
         times();
////////////////
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();  
////送显示地址代码
    
	lcmdress<<=2;  //构成 0 A4-A0
	 
    for (i=1;i<=6;i++)
     {
	   P1OUT &= ~lcm_wr;
           times();           
   	   if ((lcmdress&0x80)==0x80)
           {
             P1OUT |= lcm_data;  
           }
	   else
           {
             P1OUT &= ~lcm_data;
           }
           times();
           
           P1OUT |= lcm_wr;
           times();
           lcmdress<<=1;
    }  
 /////////送数据
   
   for (j=1;j<=2;j++)
   {
     for (i=1;i<=8;i++)
      {
	   P1OUT &= ~lcm_wr;
           times();            
	   if ((leijiliangdisdata & 0x80)==0x80)
           {
             P1OUT |= lcm_data;  
           }
	   else
           {
             P1OUT &= ~lcm_data;
           }
           times();
           P1OUT |= lcm_wr;
           times();	
           leijiliangdisdata<<=1; 
      }     
      leijiliangdisdata=leijiliangdis_model[disbuffer[0]]; //第14位 		 000000000000	     
     }
////////////////////////////////////
     
	 leijiliangdisdata=leijiliangdis_model[disbuffer[2]]; //第12位			   00000000000000

	
         P1OUT |= lcm_cs;
         times();
         P1OUT &= ~lcm_cs;
         times();
///////////////////////送101
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();
///////////////////
         P1OUT &= ~lcm_wr;
         times(); 
         P1OUT &= ~lcm_data;
         times();//-----------------0
         P1OUT |= lcm_wr;
         times();
////////////////
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();  
 
  
 ////送显示地址代码6个0
    
 
    for (i=1;i<=6;i++)
     {
	   P1OUT &= ~lcm_wr;
           times();
           P1OUT &= ~lcm_data;	   
           times();
           P1OUT |= lcm_wr;
           times();	
     }  
 /////////送数据
   
   for (j=1;j<=6;j++)
   {
     for (i=1;i<=8;i++)
      {
	P1OUT &= ~lcm_wr;
        times();	 
        if ((leijiliangdisdata & 0x80)==0x80)
        {
          P1OUT |= lcm_data;  
        }
	else
        {
          P1OUT &= ~lcm_data;
        }
        times();
        P1OUT |= lcm_wr;       
        times();
        leijiliangdisdata<<=1;  
       }
 	leijiliangdisdata=leijiliangdis_model[disbuffer[2+j]]; //送下一位直到第7位
     }

}



////瞬时量显示程序  
void sunsiliangwrdata(void)
{     
    unsigned char   sunsiliangdisdata;
    unsigned char   lcmdress; 
    unsigned char   i; 
    unsigned char   j; 	 


	lcmdress=0x0f;
	sunsiliangdisdata=sunsiliangdis_model[disbuffer1[5]]; //第6位

	 P1OUT |= lcm_cs;
         times();
         P1OUT &= ~lcm_cs;
         times();
///////////////////////送101
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();
///////////////////
         P1OUT &= ~lcm_wr;
         times(); 
         P1OUT &= ~lcm_data;
         times();//-----------------0
         P1OUT |= lcm_wr;
         times();
////////////////
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();  
  
////送显示地址代码
    
	lcmdress<<=2;  //构成 0 A4-A0
        
	 
    for(i=1;i<=6;i++)
    {
        P1OUT &= ~lcm_wr;
        times();	 
        if ((lcmdress&0x80)==0x80)
        {
          P1OUT |= lcm_data;  
        }
	else
        {
          P1OUT &= ~lcm_data;
        }
        times();
        P1OUT |= lcm_wr;       
        times();
        lcmdress<<=1; 

	}  
 /////////送数据
   
   for (j=1;j<=6;j++) //
   {
     for (i=1;i<=8;i++)
      {
	   
        P1OUT &= ~lcm_wr;
        times();	 
        if ((sunsiliangdisdata&0x80)==0x80)
        {
          P1OUT |= lcm_data;  
        }
	else
        {
          P1OUT &= ~lcm_data;
        }
        times();
        P1OUT |= lcm_wr;       
        times();
        sunsiliangdisdata<<=1;	
       }
      sunsiliangdisdata=sunsiliangdis_model[disbuffer1[5-j]]; //显示下1位直到第1位	     
   }

}

void measureflagwrdata(void)		 // ....K13~K10  K5~K8  K4~K1  K16  K17  K18  K15
{     								 //.... 
      
      unsigned char   lcmdress; 
      unsigned char   i; 
      unsigned char   j; 
 


	 lcmdress=0x0C;

	 P1OUT |= lcm_cs;
         times();
         P1OUT &= ~lcm_cs;
         times();
///////////////////////送101
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();
///////////////////
         P1OUT &= ~lcm_wr;
         times(); 
         P1OUT &= ~lcm_data;
         times();//-----------------0
         P1OUT |= lcm_wr;
         times();
////////////////
         P1OUT &= ~lcm_wr;
         times();
         P1OUT |= lcm_data;   
         times();//---------------1
         P1OUT |= lcm_wr;
         times();  
 
  
 ////送显示地址代码
    
	lcmdress<<=2;  //构成 0 A4-A0
	 
    for (i=1;i<=6;i++)
     {
        P1OUT &= ~lcm_wr;
        times();	 
        if ((lcmdress&0x80)==0x80)
        {
          P1OUT |= lcm_data;  
        }
	else
        {

⌨️ 快捷键说明

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