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

📄 display.c

📁 一个msp430与HGO12864加4*4键盘的菜单程序... ...!
💻 C
字号:
//***************************************************************************/
#include <msp430x16x.h>
#include "asc_cosd.h"
#include "display.h"


//******************************************基本函数**************************/
void delay1(int n)    
 {
   while(n--);
 }

void Init(void)
{
  WDTCTL = WDTPW + WDTHOLD;
  P5DIR |=BIT7+BIT6+BIT5+BIT4+BIT3;
  
}

void LcdInit()
{ 
  delay1(10);// 等待液晶进入工作状态
  LCD_12864A_RES_L;
  delay1(10);
  LCD_12864A_RES_H; // 复位脚有个上升沿
  delay1(5);
  WriteControlData(0xa3);//LCD BIAS SET ( A2 1/8;A3 1/65DUTY)
  WriteControlData(0xa0);//ADC  select,NORMAL   0-->127
  WriteControlData(0xaf);// DISPLAY ON/OFF
  WriteControlData(0x2f);//power control(VB,VR,VF=1,1,1)
  WriteControlData(0x23); // VOLT REGULATOR RADIO SET
  WriteControlData(0x81);//ELECTRONIC VOLUME mode setting 100B 对比度命令
  WriteControlData(0x28);//REFERENCE VOLT REG  set
  WriteControlData(0xc0);//SHL SELECT
  WriteControlData(0xaf);//DISPLAY ON/OFF
  WriteControlData(0x40);// DISPLAY START LINE SET
  _NOP();
  _NOP();

}

void WriteControlData(unsigned char com)
{
  LCD_12864A_CS1_L;
  LCD_12864A_A0_L;
  ShiftData(com);
  LCD_12864A_CS1_H;
}

void WriteDisplayData(unsigned char dat)
{
  LCD_12864A_CS1_L;
  LCD_12864A_A0_H;
  ShiftData( dat );
  LCD_12864A_CS1_H;
}


void ShiftData(unsigned char dat)
{
  unsigned char s,temp;
  int i;
  LCD_12864A_SCL_L;
  s = dat;
  for( i = 0 ;i<8; i++ )
  {
    LCD_12864A_SCL_L;
    _NOP();
    _NOP();
    temp=s & 0x80;
    if(temp)
         {LCD_12864A_SI_H;}
    else {LCD_12864A_SI_L;}

       LCD_12864A_SCL_H;   
       s=s<<1; 
  } 
}

void  Location(unsigned char x,unsigned char y)     
{
  WriteControlData(0xB0|y);                        //页地址设置 写命令
  WriteControlData(0x10|(0x0F&(x>>4)));            //列高4位   写命令
  WriteControlData(0x0F&x);                        //  列低4位   写命令
}
//fb=1 时为反白显示
void WriteAbc(unsigned char x, unsigned char y ,unsigned char n, unsigned char fb)
{                                        
  uchar date1,i;
 
  Location(x,y);
  for (i=0;i<8;i++)
  {
    date1=table_aa[n*16+i];
    if(fb)
    {
      date1=255-date1;
    }
    WriteDisplayData(date1);
     delay1(1);
  }
  
  Location(x,y+1);
  for(i=8;i<16;i++)
  {
    date1=table_aa[n*16+i];
    if(fb)
      {
       date1=255-date1;
      }
      WriteDisplayData(date1);
      delay1(1);
  }
} 


void WriteNumber(unsigned char x, unsigned char y ,unsigned char n, unsigned char fb)
{                                        
  uchar date1,i;
 
  Location(x,y);
  for (i=0;i<8;i++)
  {
    date1=success[n*8+i];
    if(fb)
    {
      date1=255-date1;
    }
    WriteDisplayData(date1);
     delay1(1);
  }
  
  Location(x,y+1);
  for(i=8;i<8;i++)
  {
    date1=success[n*8+i];
    if(fb)
      {
       date1=255-date1;
      }
      WriteDisplayData(date1);
      delay1(1);
  }
}
/*16*16汉字写入子程序fb=1 时为反白显示*/
void  WriteChinese(unsigned char x, unsigned char y ,unsigned char n, unsigned char fb)
{
  uchar date1,i;
 
  Location(x,y);
  for (i=0;i<=15;i++)
  {
    date1=table_ch[n*32+i];
    if(fb)
    {
      date1=255-date1;
    }
    WriteDisplayData(date1);
     delay1(1);
  }
  
  Location(x,y+1);
  for(i=16;i<32;i++)
  {
    date1=table_ch[n*32+i];
    if(fb)
      {
       date1=255-date1;
      }
      WriteDisplayData(date1);
      delay1(1);
  }
}


void WriteBmp(unsigned char x,unsigned char y,unsigned char fb ,unsigned char hang,unsigned char lie)
{
  uchar i=y,j=x,dat;
  
  for(i=y;i<y+hang/8;i++)
  { 
    
    for(j=x;j<x+lie;j++)
    {  Location(x+j,y+i);
       dat=logo[i*lie+j];
       if(fb) {dat=255-dat;}
       WriteDisplayData(dat);      
    }
    
  }
  
}
void ClearSree(unsigned char fb )
{
  //uchar i,j,dat;
  
  /*for(i=0;i<64/8;i++)
  { 
    
    for(j=0;j<128;j++)
    {  Location(j,i);
       dat=0;
       if(fb) {dat=255-dat;}
       WriteDisplayData(dat);      
    }
    
  }*/
  uchar date1,i;
  unsigned char x,y;
  for(y=0;y<8;y=y+2)
  {
   for(x=0;x<128;x=x+16) 
    {
     Location(x,y);
     for (i=0;i<=15;i++)
       {
         date1=0;
         if(fb)
         {
          date1=255-date1;
         }
     WriteDisplayData(date1);
     delay1(1);
       }
  
     Location(x,y+1);
     for(i=16;i<32;i++)
     {
       date1=0;
       if(fb)
      {
       date1=255-date1;
      }
      WriteDisplayData(date1);
      delay1(1);
     }
    }
  }
}

/******************************************************************************/

⌨️ 快捷键说明

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