LPC1343与1602显示

2019-03-25 20:09发布

proteus用lpc1343与160l液晶调试,液晶一直没有正确显示,请求助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
nmg
1楼-- · 2019-03-26 02:54
_NXP LPC1000_ 最好把程序发上来
如果连接没问题,应该是程序的问题
feiyun
2楼-- · 2019-03-26 04:47
#include "LPC13xx.h"                        /* LPC13xx Peripheral Registers */
#include "lcd016.h"



//延时函数
void delay()
{
        unsigned int i=5552;
        while(--i);
}
void delay_nms(int i)
{
  i=i+10;
  while(i--);
}
//检查LCD是否忙
int LCD_busy()
{
/*        int flag;
    GPIOSetValue( 2, 0, 0 );  //写命令
         GPIOSetValue( 2, 1,1 );  //读选择端
    GPIOSetValue( 2, 2, 1 );  //E使能
   GPIOSetDir( 2, 11, 0 );
   delay_nms(100);
   if((LPC_GPIO2->DATA&(1<<11)))
   //if(LCD_BF==1) //数据满
    flag=1;   //标志位置1
   else
    flag=0;
  GPIOSetDir( 2, 11, 1 );
  GPIOSetValue( 2, 2, 0 );  //E使能
   return flag;*/  

   unsigned int i=10000;
        while(--i);
   
}

//写命令
/*void LCD_write_cmdata(unsigned char cmdata)
{
   int i;
  // while(LCD_busy());   //等待空闲
     GPIOSetValue( 2, 2, 0);
   GPIOSetValue( 2, 0, 0 );   
    GPIOSetValue( 2, 1, 0 );
        delay_nms(1);      

   
   for(i=0;i<8;i++)
   {
                  if(cmdata&0x01)
                {
                   GPIOSetValue( 2, 4+i, 1 );   
                }
                else
                        GPIOSetValue( 2, 4+i, 0 );
                cmdata= cmdata>>0x01;  
   }
         
         GPIOSetValue( 2, 2, 1);
         delay_nms(2);
             GPIOSetValue( 2, 2, 0);
          GPIOSetValue( 2, 2, 1);
          

}
//写数据
void LCD_write_wodata(unsigned char wodata)
{
   int i;
  // while(LCD_busy());   //等待空闲
   GPIOSetValue( 2, 0, 1 );     //写数据
   GPIOSetValue( 2, 1, 0);  
    GPIOSetValue( 2, 2, 0);
        delay_nms(1);      
        for(i=0;i<8;i++)
    {
                  if(wodata&0x01)
                {
                           GPIOSetValue( 2, 4+i, 1 );   
                }
                else
                        GPIOSetValue( 2, 4+i, 0 );  
                wodata= wodata>>0x01;  
           }

         GPIOSetValue( 2, 2, 1);
         delay_nms(1);
             GPIOSetValue( 2, 2, 0);
         delay_nms(1);
         GPIOSetValue( 2, 2, 1);
   
} */
//LCD初始化

void LCD_write_cmdata(unsigned char cmdata)
{
   int i;
   LCD_busy();   //等待空闲
    // GPIOSetValue( 2, 2, 0);
         LPC_GPIO2->DATA&=(~(0x001<<2));
//   GPIOSetValue( 2, 0, 0 );
        LPC_GPIO2->DATA&=(~(0x001));   
   // GPIOSetValue( 2, 1, 0 );
    LPC_GPIO2->DATA&=(~(0x001<<1));  
        delay_nms(1);      

   
  /* for(i=0;i<8;i++)
   {
                  if(cmdata&0x01)
                {
                   GPIOSetValue( 2, 4+i, 1 );   
                }
                else
                        GPIOSetValue( 2, 4+i, 0 );
                cmdata= cmdata>>0x01;  
   }*/
           LPC_GPIO2->DATA&=(0x00f);
          LPC_GPIO2->DATA|=(cmdata<<4);
         //GPIOSetValue( 2, 2, 1);
           LPC_GPIO2->DATA|=(0x01<<2);
         delay_nms(2);
             //GPIOSetValue( 2, 2, 0);
           LPC_GPIO2->DATA&=(~(0x001<<2));
        //  GPIOSetValue( 2, 2, 1);
         LPC_GPIO2->DATA|=(0x01<<2);
          

}
//写数据
void LCD_write_wodata(unsigned char wodata)
{

int i;
        LCD_busy();       
    // GPIOSetValue( 2, 2, 0);
         LPC_GPIO2->DATA&=(~(0x001<<2));
//   GPIOSetValue( 2, 0, 1 );
        LPC_GPIO2->DATA|=((0x001));   
   // GPIOSetValue( 2, 1, 0 );
    LPC_GPIO2->DATA&=(~(0x001<<1));  
        delay_nms(1);      

           LPC_GPIO2->DATA&=(0x00f);
          LPC_GPIO2->DATA|=(wodata<<4);
         //GPIOSetValue( 2, 2, 1);
         delay_nms(2);
           LPC_GPIO2->DATA|=(0x01<<2);
         delay_nms(2);
             //GPIOSetValue( 2, 2, 0);
           LPC_GPIO2->DATA&=(~(0x001<<2));
        //  GPIOSetValue( 2, 2, 1);
         LPC_GPIO2->DATA|=(0x001<<2);
  
  
}

void LCD_Init()
{
               
   LCD_write_cmdata(0x38); //显示设置
   delay_nms(6);
   LCD_write_cmdata(0x0e); //显示开关与光标设置
   delay_nms(6);
   LCD_write_cmdata(0x03);
   delay_nms(6);
   LCD_write_cmdata(0x06);
   delay_nms(6);
   LCD_write_cmdata(0x1f);
   delay_nms(6);
    LCD_write_cmdata(0x01);
        delay_nms(6);

   
}

feiyun
3楼-- · 2019-03-26 08:23
 精彩回答 2  元偷偷看……
feiyun
4楼-- · 2019-03-26 09:38
已解决
休息休息
5楼-- · 2019-03-26 13:34
楼主能不能把工程发给我,谢谢
休息休息
6楼-- · 2019-03-26 16:18
休息休息 发表于 2016-11-7 22:38
楼主能不能把工程发给我,谢谢

Q2921175784

一周热门 更多>