LPC1769 驱动LCD1602 的程序如下,小弟初学者,求高手帮忙!!!

2019-03-25 20:32发布

下面是我的程序,我把1602的RS,RW,E用P2【3】P2【4】
P2【5】
数据端口用P0【0——7】

系统编译时无错,不知道哪里有问题,请高手指教啊  软件使用的LPCXpresso v3.6.3_317

#include "LPC17xx.h"


#include <cr_section_macros.h>
#include <NXP/crp.h>

__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
unsigned char  _table1_[]="   2011-9-10  ";
unsigned char  _table2_[]=" HELLO CHINA ^_^";
int i;

void write_com(unsigned char com)
{
        delay_Ms(0,500);
        LPC_GPIO2->FIOCLR0=0XFF; //把P2[]清零


        LPC_GPIO2->FIOSET0=1<<6; //把P2【5】置1,其余位不变  0010 0000

        LPC_GPIO0->FIOCLR0=0XFF;
        LPC_GPIO0->FIOSET0=com;
//        LPC_GPIO0->FIOPIN0=com;//P0[0..7]读入com

        LPC_GPIO2->FIOCLR0=1<<6;  //给P2[5]置0 ,其余位不变
}

void write_date(unsigned char date)
{
        delay_Ms(0,500);

    LPC_GPIO2->FIOCLR0=0XFF;
        LPC_GPIO2->FIOSET0|=0X08;//把P2[3]置1,P2[4],P2[5]不变为0

        LPC_GPIO2->FIOSET0=1<<6;//使P2[5]置1,其余位不变
        LPC_GPIO0->FIOCLR0=0XFF;
        LPC_GPIO0->FIOSET0=date;
//        LPC_GPIO0->FIOPIN0=date;
    LPC_GPIO2->FIOCLR0=1<<6;  //给P2[5]置0 ,其余位不变1<<5

}
void init()
{
        LPC_GPIO2->FIOCLR0|=0X20;  //给P2[5]置0,其余位不变
        write_com(0x38); //设置液晶的显示模式
        write_com(0x0c);
        write_com(0x80);//数据指针初始化,从第一行开始?

        for(i=0;i<14;i++)
                {
                        write_date(_table1_);
                        delay_Ms(100);
                }
        write_com(0x80+0x40);
        for(i=0;i<16;i++)
                {
                        write_date(_table2_);
                        delay_Ms(100);
                }
}
int main()
{

        SystemCoreClockUpdate ();//
        SystemInit();
        LPC_PINCON->PINSEL0=0X00; //定义P0[0..7]为普通IO口
        LPC_GPIO0->FIODIR0=0XFF; //把端口P0设置为输出引脚
//        LPC_GPIO0->FIOCLR0=0XFF;


        LPC_PINCON->PINSEL4=0X00;//定义P2[0..7]为普通IO口
        LPC_GPIO2->FIODIR=0XFF; //把端口2 设置为输出引脚
//        LPC_GPIO2->FIOCLR0=0XFF;


        init();

        while(1);


} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。