y87797215 发表于 2011-10-19 21:13:09

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;
}
最基本的显示字符数字都出不来哦。。。。

y87797215 发表于 2011-10-22 10:42:20

已解决。。。
页: [1]
查看完整版本: LPC2132上用320240液晶显示不出来,谁帮我看下程序啊?