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

📄 lcd_ch.c

📁 一个MSP430相关的ADC—LCD的DEMO CODE
💻 C
字号:
//LCD型号:KM12232F(ST7920A),连接模式:串口模式,供电:3V.
//KM12232F是内带汉字库,只须提供汉字内码地址给LCD模块即可.
//MCU:TI MSP430F1121. SID-->P4.6,SCK-->P4.7
//C编译器:IAR Embedded Workbench IDE 3.2
//编写日期:2004.7.
//编写提供:DC Huang
# include <msp430x14x.h>

#define SID 0x40                  //串行数据输入端
#define SCK 0x80                  //同步时钟输入端
#define DDRAM_0    0x80           //显示回位     
#define off_cursor 0x0c           //关闭光标
#define on_cursor  0x0e           //开光标
#define off_cursor_filsh  0x0e    //光标关闪烁
#define on_cursor_filsh  0x0f     //光标开闪烁

#define GM12232_MINADD_L1 0x80    //第一行第一位地址
#define GM12232_MAXADD_L1 0x87    //第一行最后地址
#define GM12232_MINADD_L2 0x90    //第二行第一位地址
#define GM12232_MAXADD_L2 0x97    //第二行最后地址

//**************************************************
void delay(void)
{ char i;
  for (i = 0;i != 0xff;i++);
}
//**************************************************
void sendBYTE(char dat)       //串行传送一字节数据   
{     
 char i;
 P4DIR|=SID;                  //设P1.3 SID为输出
 for (i=0;i<8;i++)
   {
    P4OUT&=~SCK;              //SCK=0
    if((dat & 0x80)!=0)
      P4OUT|=SID;             //SID=1
    else 
     P4OUT&=~SID;             //SID=0
     P4OUT|=SCK;              //SCK=1;
     dat = dat<<1;
   }
}

//****************************************************
//如果需要改变半字地址,也是用此程序.只需输入地址就可以.
void sendCMD(char dat)        //写控制指令   
{
 sendBYTE(0xf8);
 sendBYTE(dat & 0xf0);
 sendBYTE((dat<<4)&0xf0);
}
//****************************************************
void sendDAT(char dat)//写显示数据;也可以写一个单字节字符   
{
 sendBYTE(0xfa);
 sendBYTE(dat & 0xf0);
 sendBYTE((dat<<4)&0xf0);
}
//****************************************************
void display(char x_add,char dat,char dat1)
//写汉字到LCD屏指定位置  
//x_add显示RAM地址   
//dat/dat1显示汉字编码  
{
 sendCMD(x_add);
 sendDAT(dat);
 sendDAT(dat1);
}
//*****************************************************
void initlcm(void)//初始化LCM       
{
 delay();
 P4DIR|=SCK;   //SCK设为输出
 sendCMD(0x30);//功能设置:一次送8位数据,基本指令集   
 sendCMD(0x04);//点设定 :显示字符/ 光标从左到右移位,DDRAM地址加一    
 sendCMD(0x0f);//显示设定:开显示 ,显示光标,当前显示位反白闪动    
 sendCMD(0x0f);//显示设定:开显示,显示光 标,当前显示位反白 闪动    
 sendCMD(0x01);//清DDRAM         
 sendCMD(0x02);//*DDRAM 地址归位    
}

//****************************************************
//发送半角数字和字母字符串
//*p为字符串指针
//x_add 所要显示的地址
void char_string (unsigned char *p, unsigned char x_add)
{
  unsigned char n;
  if((x_add >= GM12232_MINADD_L1)&&(x_add <GM12232_MAXADD_L1))
    { sendCMD(x_add);
      for (n=0; p[n]!='\0'; n++)
       { sendDAT(p[n]); }
    } 
  else if ((x_add >= GM12232_MINADD_L2)&&(x_add <GM12232_MAXADD_L2))
   { sendCMD(x_add);
     for (n=0; p[n]!='\0'; n++)
       { sendDAT(p[n]); }
   }
  else
    return ;
}

⌨️ 快捷键说明

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