深圳市炜烨兴电子有限公司|LCD在线 网站 >> 液晶使用 >> 带字库液晶12864-12/12232F等C51驱动程序和电路

带字库液晶12864-12/12232F等C51驱动程序和电路

深圳市炜烨兴电子有限公司|LCD在线 网站 深圳市炜烨兴电子有限公司 yesever 2009-3-17 21:17:05

 

本程序只适用于KM系列汉字液晶模块(KM12232F KM12232H01,KM12864-12,KM12864-19...),对于其它厂家的请先核对接口定义再使用。

以下是KM12232F/KM12232H01/KM12864-12/KM12864-19等的串行模式的C51范例。
#include  //添加你自己的包含文件
#include  //添加你自己的包含文件
typedef unsigned char uchar;
typedef unsigned int uint;

sbit _PS = P3^4; /* 串口模式  仅适用于12864-12/12864-19   KM12232F的PSB在产品出厂时就已经确定了,无法更改*/
sbit _CS = P3^3; /*片选端 高电平有效 */
sbit _SID = P3^1; /*串行数据输入端*/
sbit _CLK = P3^0; /*同步时钟输入端*/

void delay(void)
{
      uchar i,j;
      for (i = 0;i != 0xff;i++)
          for (j = 0;j != 0xff;j++) ;
}
void sendBYTE(uchar dat)/*串行传送一字节数据*/
{
      uchar i;
      for (i=0;i<8;i++)
      {
          _CLK = 0;
          if ((dat & 0x80)!=0)
          _SID = 1;
          else 
          _SID = 0;
          _CLK = 1;
          dat = dat<<1;
      }
}
void sendCMD(uchar dat)/*写控制指令*/
{
      _CS = 1;
      sendBYTE(0xf8);       //串口功能定义:写指令
      sendBYTE(dat & 0xf0);     //写指令高四位
      sendBYTE((dat<<4)&0xf0);  //写指令低四位
      _CS = 0;
/*     P1=dat;        //并行传送
     _CS=0; //  command
     _SID=0; //  R/W
     _CLK=1; //  E=1
     delay(1);
     _CLK=0;*/
}
void sendDAT(uchar dat)/*写显示数据;也可以写一个单字节字符*/
{
      _CS = 1;
      sendBYTE(0xfa);   //串口功能定义:写显示数据
      sendBYTE(dat & 0xf0);  //写数据高四位
      sendBYTE((dat<<4)&0xf0); //写数据低四位
      _CS = 0;
/*     P1=dat;        //并行传送
     _CS=1; //  display data
     _SID=0; //  R/W
     _CLK=1; //  E=1
     delay(1);
     _CLK=0;*/
}
void display(uchar x_add,uchar dat,uchar dat1)
/*写汉字到LCD屏指定位置*/
/*x_add 显示RAM地址*/
/*dat/dat1 显示汉字编码*/
{
      sendCMD(x_add);
      sendDAT(dat);
      sendDAT(dat1);
}
void disSTR(unsigned char addr,unsigned char code *hz)    //更新于2009-07-01
/*写字串到LCD屏指定位置*/
/*不进行地址判定,超出一行8个字的需要判定地址*/
{
 sendCMD(addr);
 while(*hz!='\0')
 {
     sendDAT(*hz++);
     sendDAT(*hz++);
 }
}
void initlcm(void)/*初始化LCM*/
{
      _PS = 0; /*Serial Mode*/
      delay();
      sendCMD(0x30);/*功能设置:一次送8位数据,基本指令集*/
      sendCMD(0x04);/*点设定:显示字符/光标从左到右移位,DDRAM地址加一*/
      sendCMD(0x0f);/*显示设定:开显示,显示光标,当前显示位反白闪动*/
      sendCMD(0x01);/*清DDRAM*/
      sendCMD(0x02);/*DDRAM地址归位*/
}
void main(void)
{
      initlcm();
      sendCMD(0x80);/*DDRAM*/
      sendDAT(0x4c);/*L*/
      sendDAT(0x43);/*C*/
      sendDAT(0x44);/*D*/
      sendDAT(0x20);/**/
      display(0x82,0xd4,0xda);/*在*/
      display(0x83,0xcf,0xdf);/*线*/
      disSTR(0x88,"LCD 在线");  //显示上面一样的内容
      disSTR(0x90,"从90开始显示一串字符");//
      while(1);
}

硬件电路图如下:

单片机与KM12232F/KM12864-12的连接图

责任编辑: admin 参与评论
Copyright 2002-2009©深圳市炜烨兴电子有限公司-LCD在线 All Right Reserved
QQ:56154083 电话:13714759758 0755-26586760 26158257 86230436
粤ICP备05054967号