原创 12232液晶驱动。SED1520驱动的12232

2007-9-5 09:46 5672 6 13 分类: MCU/ 嵌入式

/******************************************************************************
Copyright 2007
All rights reserved.


文件名 :12232-2.c
模块名称:SED1520驱动12232液晶驱动
功能概要:


取代版本:0.0.1
修改人 :pulan
完成日期:2007.07.08
升级说明:create
CPU: stc89c58   主频:11.0592M
液晶型号:       生产厂家:        驱动芯片:
硬件连接:
12232液晶
---------------------------------------------------------------
|DB0-----P0.0 | DB4-----P0.4 | RW-------P2.2 | A0--------P2.1 |
|DB1-----P0.1 | DB5-----P0.5 | E2-------P2.4 | Vo接10k电位器调整对比度 |
|DB2-----P0.2 | DB6-----P0.6 | E1-------P2.5 |
|DB3-----P0.3 | DB7-----P0.7 | RST-------P2.3|   
---------------------------------------------------------------
******************************************************************************/
#include <reg52.h>


#define  uchar  unsigned char
#define DATA P0     //数据口
sbit E1 = P2^5;
sbit E2 = P2^4;
sbit RW = P2^2;
sbit A0 = P2^1;
sbit led = P1^1;
/*--  Arial12;  此字体下对应的点阵为:宽x高=16x16   --*/
//普 兰 工 作 室
//00 01 02 03 
 
unsigned char code   ZM[]={
/*--  文字:  普  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x40,0x44,0x54,0x64,0x45,0x7E,0x44,0x44,0x44,0x7E,0x45,0x64,0x54,0x44,0x40,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,


/*--  文字:  兰  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x20,0x20,0x22,0x24,0x28,0x20,0x20,0x30,0x28,0x27,0x22,0x20,0x20,0x00,0x00,
0x20,0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x00,


/*--  文字:  工  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,


/*--  文字:  作  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x40,0x20,0xF8,0x07,0x22,0x18,0x0C,0xFB,0x48,0x48,0x48,0x68,0x48,0x08,0x00,
0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x04,0x04,0x04,0x04,0x06,0x04,0x00,


/*--  文字:  室  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x10,0x2C,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x34,0x2C,0x04,0x00,
0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00,



};
static  uchar code *  data pzm; 
           //静态的,指向位于code区域unchar类型的,存储于data区域的指针


#define LCD_DISPLAYON 0xaf      //af 开显示,
#define LCD_DISPLAYOFF 0xae      //ae 关显示,
#define LCD_DRIVERON 0xa5      //a5 静态显示驱动
#define LCD_DRIVEROFF 0xa4      //a4正常驱动
#define LCD_DUTY16 0xa8          //占空比1/16
#define LCD_DUTY32 0xa9          //占空比1/32
//
#define LCD_END 0xee          /*关闭“读-修改-写”模式,并把列地址指针
                              恢复到打开“读-修改-写”模式前的位置。*/


#define LCD_RESET 0xe2          /*初始化。① 设置显示初始行为第一行;
                              ②页地址设置为第三页。*/


#define LCD_RWMODE 0xe0          /*“读-修改-写”模式 。执行该指令以后,
                              每执行一次写数据,指令列地址自动加1;
                              但执行读数据指令时列地址不会改变。
                              这个状态一直持续到执行“END”指令。
                              注意:在“读-修改-写”模式下,
                              除列地址设置指令之外,其他指令照常执行。 */
#define LCD_STARTLINE0 0xc0      //设置显示起始行 可以加0-31
#define LCD_PAGE0 0xb8          //页地址设置        可以加0-3
#define LCD_COLUMNADDR0 0x00  //列地址设置     可以加0-60


#define LCD_ON() LCD_Command(LCD_DISPLAYON)
#define LCD_OFF() LCD_Command(LCD_DISPLAYOFF)
#define LCD_StaticON() LCD_Command(LCD_DRIVERON)
#define LCD_StaticOFF() LCD_Command(LCD_DRIVEROFF)
#define LCD_Select16() LCD_Command(LCD_DUTY16)
#define LCD_Select32() LCD_Command(LCD_DUTY32)
#define LCD_StartRW() LCD_Command(LCD_RWMODE)
#define LCD_EndRW() LCD_Command(LCD_END)
#define LCD_Reset() LCD_Command(LCD_RESET)
#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0|i)
#define LCD_SetPage(i) LCD_Command(LCD_PAGE0|i)
#define LCD_SetColumn(i) LCD_Command(LCD_COLUMNADDR0|i)
 
/******************************************************************************************
* 函数名称    :LCD_Command
* 功能描述    :写命令
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LCD_Command(uchar nCommand)
{                                
   A0=0;
   E1=1;
   E2=1;
   DATA=nCommand;
   E1=0;
   E2=0;
}
/******************************************************************************************
* 函数名称    :LCD_SetRam
* 功能描述    :送显示数据ndata,setMS为0主,1从
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LCD_SetRam(bit zhucongmian,uchar ndata)
{               
      A0=1;
      E1=!zhucongmian;
      E2=zhucongmian; 
     
      DATA="ndata";
      E1=0;
      E2=0;
}
/******************************************************************************************
* 函数名称    :LCD_Init
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void LCD_Init()
{
//   P1=0x00;
//  P2=0x00;
   LCD_OFF();               //关闭显示
    LCD_Command(LCD_RESET);  //复位
   LCD_Command(0xa0);       //列与段驱动反方向
   LCD_Command(LCD_DUTY32); //1/32
   LCD_Command(0xa4);       //关闭静态显示    打开正常驱动
   LCD_EndRW();             //关闭自动列加1
   LCD_SetStartLine(0);     //设置起始行
   LCD_SetColumn(0);        //起始列
   LCD_SetPage(0);          //起始页
   LCD_ON();                //开显示
}


/******************************************************************************************
* 函数名称    :clrscr
* 功能描述    :清屏
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/  
void clrscr(void)
{
  uchar i;
  uchar page;
  for(page=0;page<4;page++)
   {
    LCD_SetPage(page);
     for(i=0;i<61;i++)
       {
        LCD_SetColumn(i);
          LCD_SetRam(0,0X00);
          LCD_SetRam(1,0X00);
        }
    }
}
/******************************************************************************************
* 函数名称    :drawword
* 功能描述    ://layer 值为0,2;wenzi 码表中的几个字
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
drawword(uchar liedizhi,uchar layer,uchar wenzi)
{
  uchar column,x;//layer 值为0,2;wenzi 码表中的几个字
   bit zhucongmian;
   for(x=0;x<16;x++)
    {
     column=liedizhi+x;  
     if(column>60)
         {
          zhucongmian=1;
          column-=61;
         }
     else
      zhucongmian="0";
//    LCD_SetStartLine(0);//设置起始行
     LCD_SetColumn(column);//设置起始列
     LCD_SetPage(layer);


     LCD_SetRam(zhucongmian,*(pzm+wenzi*32+x));
//    LCD_SetStartLine(0);//设置起始行
     LCD_SetColumn(column);//设置起始列
     LCD_SetPage(layer+1);
     LCD_SetRam(zhucongmian,*(pzm+wenzi*32+16+x));
   }
}
/******************************************************************************************
* 函数名称    :delay1s
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
void delay1s()
{
  unsigned char j, k;
   for(j=0;j<150;j++)
    for(k=0;k<255;k++);
}
/******************************************************************************************
* 函数名称    :
* 功能描述    :
* 参数        :  参数名称: 输入/输出? 类型  描述
*
* 返回值      :
* 作者        :
* 创建日期    :2006-12-19
* 全局变量    :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本    :     修改人:                  修改日期:
* 修改说明    :
******************************************************************************************/
main()
{     
    uchar i;
    LCD_Init();  //液晶初始化
    clrscr();
    pzm="ZM";
    while(1)
    {
     for(i=0;i<31;i++)          
      {
      LCD_SetStartLine(i);      // 设置行地址自加1,文字向上滚动
  
      drawword(0, 0,0);//列地址,页,文字    
      drawword(16,0,1);
      drawword(32,0,2);
      drawword(48,0,3);
      drawword(64,0,4);
      drawword(72,0,5);
        led = 1;         //灯闪烁,表示程序运行正常
        delay1s();
        led = 0;
        delay1s();
      }
    }


}
   



 

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户203333 2011-10-5 23:11

请发一给我~邮箱liwen8@139.com

 

用户83055 2011-4-4 10:35

请问你们一块122*32液晶多少钱

用户829600 2010-8-11 17:02

测试不行....

测试不行....

测试不行....

测试不行....

用户59886 2009-12-11 10:19

普兰电子 老师好! 您的这个代码程序是带字库还是不带字库的屏的测试代码啊? 是不是就像1602的液晶一样的带字符的,先写地址再写显示数据就可以显示出来。不知道这个屏是不是也是这样的,谢谢!!

用户9451 2008-3-15 10:33

不错!支持一下!

用户472938 2008-1-27 22:16

我再发一个你测试一下

用户29550 2008-1-27 18:02

测试怎么不行呢?
相关推荐阅读
用户472938 2011-09-02 11:31
edn啊,太慢了。决定搬家了
这里继续保留,而且同步更新...
用户472938 2011-02-25 09:54
一年多了,冒个泡
更新一下...
用户472938 2010-09-18 19:39
总要找一些事情做一做
总要找一些事情做一做。转移一下注意力继续收拾家,逐渐的处理闲置的电子产品。东西挺多的,时间会很久。以前一直没时间走走,打算从事户外运动了,一是锻炼身体,而是放松心情。。。 ...
用户472938 2010-02-07 15:23
二手ks0108驱动19264液晶资料
型号:LG192642资料下载地址http://www.ganasys.co.kr/kor/support_board/pds_file/LG192642.pdf...
用户472938 2010-02-07 15:22
12232液晶资料
 edm1836液晶edm1837液晶原理图 ...
用户472938 2010-02-07 15:21
fm收音机模块(tea5767模块)资料。
...
我要评论
7
6
关闭 站长推荐上一条 /3 下一条