|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
使用PHILIP ARM2131,控制金鹏ocm4x8c,程序如附件,请指教
由于ARM是3.3伏,而液晶是5伏,请问是否要电平转换
#include "config.h"
#define rs 1 << 8 //H=data; L=command;
#define rw 1 << 9 //H=read; L=write;
#define e 1 << 10 //input enable;
#define uint unsigned int
#define uchar unsigned char
#define comm 0
#define dat 1
const uint32 DB=(0xFF<<16);// P1[23:18]控制D0-D7,
void wr_lcd(uchar dat_comm,uchar content);
void DelayNS(uint us);
uchar tab1[]={
"本系列中文模块内"
"任意位置反白显示"
"置二级字库,可在"
"使用更方便更灵活"
};
/*------------------初始化-----------------*/
void init_lcd(void)
{
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)
{
if(dat_comm)
{
IO0CLR=rs; //data
IO0SET=rw; //write
}
else
{
IO0CLR=rs; //command
IO0CLR=rw; //write
}
IO1SET=DB; //output data or comm
IO1CLR=~DB&0xff00;
IO0SET=e; //模拟使能E下降沿
DelayNS(8000);
IO0CLR=e;
DelayNS(8000);
}
/*--------------延时-----------------*/
void DelayNS(uint32 dly)
{
uint32 i;
for ( ; dly>0; dly--)
for (i=0; i<50000; i++);
}
/*------------------主程序--------------------*/
void main()
{
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO
IO0DIR = 0xff;
IO1DIR = DB; // 设置DB控制口为输出
init_lcd();
while (1)
{
chn_disp(tab1);
DelayNS(8000);
}
}
|
|