工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->微机单片机电路图->单片机综合电路图->122*32液晶显示程序,显示图形及汉字

122*32液晶显示程序,显示图形及汉字

作者:dolphin时间:2011-05-05

硬件:TG12232B (122*32)模拟口线接线方式
连接线图:
--------------------------------------------------|
|DB0-----P0.0 | DB4-----P0.4 | RW-------P1.1 | A0--------P1.0
|
|DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | V0接1K电阻到GND |
|DB2-----P0.2 | DB6-----P0.6 | E1-------P1.3 |
|DB3-----P0.3 | DB7-----P0.7 | E2-------P1.2 |
---------------------------------------------------

本程序源码只供学习参考,如有需要请联系作者。

[注:AT89x52使用22.1184M或11.0592M晶振,实测使用22.1184M或11.0592都可以]
编译平台:Keil uV2 7.08


//可能看起来有点乱,不过效果还是不错的,显示图形总的来说比显示汉字要简单,当然显示汉字也不难。
希望此程序能给你一些帮助。
=============================================================*/


#include AT89X52.H

#define uchar unsigned char
#define uint unsigned int

#define E1 P1_3 //块1 左边
#define E2 P1_2 //块2 右边
#define RW P1_1
#define A0 P1_0 //A0为1时是数据,0时为指令数据
#define DATA P0 //数据

extern unsigned char code Bmpt1[];
extern unsigned char code Bmpt2[];
extern unsigned char code Bmpt3[];
extern unsigned char code Bmpt4[];
extern unsigned char code Bmpt5[];
extern unsigned char code Bmpt6[];
extern unsigned char code Bmpt7[];
extern unsigned char code Bmptc[];
extern unsigned char code bmp001[];
extern unsigned char code Bmp08[];
extern unsigned char code Bmp07[];
extern unsigned char code Bmp06[];
extern unsigned char code Bmp05[];
extern unsigned char code Bmp04[];
extern unsigned char code Bmp03[];
extern unsigned char code Bmp02[];
extern unsigned char code Bmp01[];
extern unsigned char code Bmp012[];
extern unsigned char code Bmp003[];
extern unsigned char code Bmp002[];


//延时
void delay(unsigned int i)
{
unsigned char k=200;
while(i0)
{
i--;
}
while(k1)k--;
}

//左页
//发送数据
void OUTMD(unsigned char i)
{
A0=1; //写数据
//delay(5);
E1=1;
//delay(10);
DATA=i;
//delay(5);
E1=0;

}
//左页
//发送命令
void OUTMI(unsigned char i)
{
A0=0; //写指令
//delay(5);
E1=1;
//delay(10);
DATA=i;
//delay(5);
E1=0;

}
//右页
//发送数据
void OUTSD(unsigned char i)
{
A0=1; //写数据
//delay(5);
E2=1;
//delay(10);
DATA=i;
//delay(5);
E2=0;

}
//右页
//发送命令
void OUTSI(unsigned char i)
{
A0=0; //写指令
//delay(5);
E2=1;
//delay(10);
DATA=i;
//delay(5);
E2=0;

}

//初始化
void lcdini(void)
{
RW=0;
OUTMI(0XE2);
OUTSI(0XE2);//复位
OUTMI(0XAE);
OUTSI(0XAE);//POWER SAVE
OUTMI(0XA4);
OUTSI(0XA4);//动态驱动
OUTMI(0XA9);
OUTSI(0XA9);//1/32占空比
OUTMI(0XA0);
OUTSI(0XA0);//时钟线输出
OUTMI(0XEE);
OUTSI(0XEE);//写模式

OUTMI(0X00);
OUTMI(0XC0);
OUTSI(0X00);
OUTSI(0XC0);

OUTMI(0XAF);
OUTSI(0XAF);

}
/*
函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
------------------------------------------------------------------------
*/
void SetPage(uchar page0,uchar page1)
{
OUTMI(0xB8|page1);OUTSI(0xB8|page0);
}

/*
--------------------------------------------------------------------------------
函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
--------------------------------------------------------------------------------
*/
void SetAddress(uchar address0,uchar address1)
{
OUTMI(address1);OUTSI(address0);
}

/*
--------------------------------------------------------------------------------

调用方式:void PutChar0(uchar ch)



评论

技术专区