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

📄 lcm.c

📁 液晶19264驱动程序。用MSP430F149控制
💻 C
字号:
   
#include <msp430x14x.h>
#include "worddot.h"
#define  uchar unsigned char 
 
#define lcd_set_di()   (P2OUT |= BIT5)                
#define lcd_set_rw()   (P2OUT |= BIT6)
#define lcd_set_e()    (P2OUT |= BIT7)
#define lcd_set_cs1()    (P2OUT |= BIT4)
#define lcd_set_cs2()    (P2OUT |= BIT3)
#define lcd_set_cs3()    (P2OUT |= BIT2)
#define lcd_clear_cs1()  (P2OUT &= ~BIT4)
#define lcd_clear_cs2()  (P2OUT &= ~BIT3)
#define lcd_clear_cs3()  (P2OUT &= ~BIT2)
#define lcd_clear_di()   (P2OUT &= ~BIT5)
#define lcd_clear_rw()   (P2OUT &= ~BIT6)
#define lcd_clear_e()    (P2OUT &= ~BIT7)
#define lcd_busy        0x80                    //    BUSY位                 
#define lcd_read_status() (P3IN & lcd_busy)    //     判断BUSY位

#define	 DISPON		0x3f	//显示?on		 
#define	 DISPOFF	0x3e	//显示off		  
#define	 DISPFIRST	0xc0	//起始行	 
#define	 SETX		0x40	  
#define	 SETY		0xb8	 	 
 
#define	 MODL		0x00	 		 
#define	 MODM		0x40	  
#define	 MODR		0x80	  
#define	 LCMLIMIT	0xC0	  

unsigned char cbyte,col,row,xi;
 
void initclk(void);                        
void writecmdl(unsigned char x) ;           
void writecmdm(unsigned char x) ;                
void writecmdr(unsigned char x) ;        
void writedata(unsigned char x);          
void lcdbusyl(void);                     
void lcdbusym(void);
void lcdbusyr(void);
void combusy(void);                        
void delay(unsigned int ms);              
 
void Lcminit(void);                      
void Lcmcls(void);                        
void putstr (uchar x,uchar y , const uchar *p_data,uchar i); 
void putdot (uchar x, uchar y ,const uchar *p_byte,uchar order,uchar wide);
void Locatexy(uchar i,uchar j);       
void nop(void);                                       
void writecmd(unsigned char x);                    
void hz_disp16(unsigned char pag,unsigned char col, unsigned char  *hzk);
void disdot(uchar x,uchar y ,const uchar *p_a);

const uchar str1[] ={0x80,0x81,0x82,0x83,0x84,0x85,
              0x86,0x87,0x88,0x89,0x8a,0x8b};
const uchar str2[] = "Waltrontech";
               

      
  
 
void main(void)
{ 
      //uchar   x;
      WDTCTL  =  WDTPW + WDTHOLD;
      P3DIR   =  0XFF;
      P2DIR   =  0XFF;
      P1DIR   =  0XFF;
      P1OUT   =  0XF0;
     
      initclk();
      delay(5);
      Lcminit();
       
     putstr(0,0,str1,12);
     putstr(2,54,str2,11);
      
     
      while(1)
      {
        /*    for ( x= 64 ; x > 0 ; x--)
            {
                  writecmdl(DISPFIRST | x);
                  writecmdm(DISPFIRST | x);
                  writecmdr(DISPFIRST | x);
                   
                  delay(1000);
             } 
       }  
      
        
		 
		 
       
      
}
     
void initclk(void)
{
      unsigned char i;
      BCSCTL1  &= ~(XT2OFF + XTS);
      BCSCTL2  |= SELM1;
      do
      {
            IFG1 &= ~OFIFG;
            for ( i = 0xff ; i > 0 ;i--);
      }
      while((IFG1 & OFIFG) != 0);
}     
      
void Lcminit(void)
	{
	        unsigned char cbyte;
		cbyte =	DISPOFF;
		writecmdl(cbyte);
		writecmdm(cbyte);
		writecmdr(cbyte);
		cbyte =	DISPON;		 
		writecmdl(cbyte);
		writecmdm(cbyte);            
		writecmdr(cbyte);
		cbyte = DISPFIRST;  
                writecmdl(cbyte);
                writecmdm(cbyte);
                writecmdr(cbyte);
		Lcmcls();		 
	}     


 
void Lcmcls( void )                       //?????
{
	//unsigned char col,row;
	for(row=0;row<8;row++)
	{
		for(col=0;col<0xc0;col++) 
		{
		        Locatexy(row,col);
		        writedata(0x00);
		 }
	}     
}

void combusy(void)            //BUSY位判断,等待BUSY为0
{
      P3OUT  = 0XFF;
      P3DIR  =  0 ;
      lcd_clear_di();
      lcd_set_rw();
      
      lcd_set_e();
      nop();
      
      while (P3IN & 0X80);        
      lcd_clear_e();
      P3DIR = 0XFF;
} 

void writedata(unsigned char x)           //D'陏?Yo

⌨️ 快捷键说明

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