LPC2132上用320240液晶显示不出来,谁帮我看下程序啊?
#include "config.h"const unsigned char init_set[]= {0x30,0x87,0x07,0X27,0X42,0XEF,0x28,0x00};
const unsigned char set_scroll[] = {0x00,0x00,0XEF,0x80,0x25,0XEF,0x00,0x80,0x00,0x00 }; //显示区域设置
void ms_delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++)
;
}
void write_command(unsigned char x)
{
IO0CLR=0X00000010; //CS=0 0.4
IO0SET=0X00000008; //A0=1 0.3
IO0SET=0X00000020; //RD=1 0.5
IO0CLR=0X00000040; //WR=0 0.6
__asm{NOP;}
// IO0CLR=(IO0CLR&0XFF00FFFF)|0X00FF0000; //0.16-0.23=0
// IO0SET=16<<(x&0X000000FF); //0.16-0.23=x
IO0PIN=(IO0PIN&0XFF00FFFF)|(16<<(x&0x000000FF)); //0.16-0.23=x
IO0SET=0X00000040; //WR=1
IO0SET=0X00000010; //CS=1
}
void write_data(unsigned char x)
{
IO0CLR=0X00000010; //CS=0 0.4
IO0CLR=0X00000008; //A0=0 0.3
IO0SET=0X00000020; //RD=1 0.5
IO0CLR=0X00000040; //WR=0 0.6
__asm{NOP;}
// IO0CLR=(IO0CLR&0XFF00FFFF)|0X00FF0000; //0.16-0.23=0
// IO0SET=16<<(x&0X000000FF); //0.16-0.23=x
IO0PIN=(IO0PIN&0XFF00FFFF)|(16<<(x&0x000000FF));//0.16-0.23=x
IO0SET=0X00000040; //WR=1
IO0SET=0X00000010; //CS=1
}
void lcd_setxy(unsigned int x,unsigned int y)
{
unsigned int addr;
addr = 40*((unsigned int)y) + x/8;
write_command(0x46); //光标定位
write_data(addr); //32K显存
write_data(addr>>8);
}
void lcd_setxy1 (unsigned int x,unsigned inty)
{
unsigned int addr;
addr = 40*((unsigned int)y) + x/8;
addr += 0x2580; //第二显示区的起始地址
write_command(0x46); //光标定位
write_data(addr); //32K显存
write_data(addr>>8);
}
void lcd_clr1 (void)
{
unsigned int i=9600; //半屏
write_command(0x4C); // 光标移动方向
write_command(0x46); // 光标定位
write_data(0x0); // 写入参数CSRL设置参数光标指针低8位
write_data(0x0); // 写入参数CSRH设置参数光标指针高8位
write_command(0x42); // 数据写入指令,代码
while (i--)
{
write_data(0x0) ; // 写入数据0
}
}
void lcd_clr2 (void)
{
unsigned int i=9600;
write_command(0x4C); // 光标移动方向
lcd_setxy1(0, 0);
write_command(0x42); // 数据写入指令,代码
while (i--)
{
write_data(0x0) ; // 写入数据0
}
}
void lcd_init (void)
{
uint32 i;
IO0CLR=0X00000004; //RST = 0
ms_delay(1);
IO0SET=0X00000004; //RST = 1
write_command(0x40);
for(i=0;i<8;i++)
{
write_data(init_set);
}
write_command(0x44);
for(i=0;i<10;i++)
{
write_data(set_scroll);
}
write_command(0x5A);//一个字节内,递增左移
write_data(0x00);
write_command(0x5D);//光标形状
write_data(0x07);
write_data(0x87);//光标是阴影块状显示方式 阴影块大小由 CRX CRY确定
write_command(0x4C); //光标方向
write_command(0x46); //光标位置 00
write_data(0x00);
write_data(0x00);
write_command(0x5B); //合成显示方式
write_data(0x0C);
write_command(0x59); //显示状态设置
write_data(0x14); //显示区域1,画面不闪烁,光标闪烁
lcd_clr1();
lcd_clr2();
}
int main (void)
{
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IO0DIR = 0xFFFFFFFF;
lcd_init();
write_command(0x48);
write_data('A');
while(1);
return 0;
}
最基本的显示字符数字都出不来哦。。。。 已解决。。。
页:
[1]