/******************************************************************************
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();
}
}
}
用户203333 2011-10-5 23:11
请发一给我~邮箱liwen8@139.com
用户83055 2011-4-4 10:35
用户829600 2010-8-11 17:02
测试不行....
测试不行....
测试不行....
测试不行....
用户59886 2009-12-11 10:19
用户9451 2008-3-15 10:33
用户472938 2008-1-27 22:16
我再发一个你测试一下
用户29550 2008-1-27 18:02