|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
用PHILIP ARMLPC2131控制金鹏液晶OCMJ4*8C,就是显示不出来。程序如下,请教高手。
QQ 294373247 真诚感谢
#include "config.h"
const uint32 rst=1; //resrt
const uint32 rs=1<<1 ; //H=data; L=command;
const uint32 rw=1<<4 ; //H=read; L=write;
const uint32 e=1<<5 ; //input enable;
const uint32 busy=1<<25 ; // test busy
const uint32 DB8=(0xFF<<18);// P1[25:18]控制D0-D7,
#define uint unsigned int
#define uchar unsigned char
#define comm 0
#define dat 1
void wr_lcd(uchar dat_comm,uchar content);
void chk_busy (void);
uchar tab1[]={
"本系列中文模块内"
"任意位置反白显示"
"置二级字库,可在"
"使用更方便更灵活"
};
/*------------------初始化-----------------*/
void init_lcd(void)
{
IO0SET=rst;
wr_lcd(comm,0x30); /*30---基本指令动作*/
wr_lcd(comm,0x01); /*清屏,地址指针指向00H*/
wr_lcd(comm,0x06); /*光标的移动方向*/
wr_lcd(comm,0x0c); /*开显示,关游标*/
}
/*---------------显示汉字或字符----------------*/
void chn_disp(uchar *chn)
{
uchar i,j;
wr_lcd (comm,0x30); //30,基本指令集
wr_lcd (comm,0x80); //80,从第一行第一列开始显示
for (j=0;j<4;j++)
{
for(i=0;i<16;i++)
wr_lcd(dat,chn[j*16+i]);
}
}
/*--------------写数据和指令-----------------*/
void wr_lcd(uchar dat_comm,uchar content)
{
uint i;
chk_busy ();
if(dat_comm)
{
IO0SET=rs; //data
IO0CLR=rw; //write
}
else
{
IO0CLR=rs; //command
IO0CLR=rw; //write
}
IO1PIN=content<<18; //write data or comm
IO0SET=e; //模拟使能E下降沿
for (i=0; i<0xFFFF; i++);
IO0CLR=e;
}
/*--------------检验忙信号-----------------*/
void chk_busy(void)
{
uint i;
IO0CLR=rs; //读取忙信号
IO0SET=rw;
IO0SET=e;
for (i=0; i<0xFFFF; i++);
while((IO1PIN&busy)==1);
IO0CLR=e;
for (i=0; i<0xFFFF; i++);
}
/*------------------主程序--------------------*/
int main(void)
{
uint i;
PINSEL0 = 0x00000000;
PINSEL2 = PINSEL2 & (~0x08); // P1[25:18]连接GPIO
IO0DIR = 0xff; // 设置0口为输出
IO1DIR = DB8; // 设置DB控制口为输出
init_lcd();
chn_disp(tab1);
for (i=0; i<0xFFFFFF; i++);
return 0;
}
|
|