社区导航

 

搜索
查看: 2201|回复: 5

[LaunchPad] 12864液晶无法点亮,求帮助

[复制链接]

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2012-7-25 17:22 | 显示全部楼层 |阅读模式
#include
#define uchar unsigned char
#define uint  unsigned int
#define DataDir     P1DIR
#define DataPort    P1OUT
//#define Busy     0x80
#define CtrlDir     P2DIR
#define CLR_RS P2OUT&=~BIT0;    //RS = P2.0
#define SET_RS P2OUT|=BIT0;
#define CLR_RW P2OUT&=~BIT1; //RW = P2.1
#define SET_RW P2OUT|=BIT1;
#define CLR_EN P2OUT&=~BIT2; //EN = P2.2
#define SET_EN P2OUT|=BIT2;
uchar  table4[]="LCD12864";
uchar  table5[]="自定义显示字符";
uchar  table6[]="大海橡树";

/*void delay(uint i) //延时函数
{
while(--i);
}*/
void delay_1ms(void)
{
        unsigned int i;
        for (i=0;i<1140;i++);
}
void delay_nms(unsigned int n)
{
        unsigned int i=0;
        for (i=0;i                 delay_1ms();
}

void read_busy() //读忙标志 最高位为1则busy,不能进行读写操作
{
CLR_RS ; //RS=0;
SET_RS ; //RW=1;
SET_EN ; //EN=1; //看时序
while(DataPort  & 0x80);
CLR_EN ; //EN=0;
}

void write_LCD_command(uchar value) //写命令函数
{
read_busy(); //每次读写都要进行读忙标志
CLR_RS ; //RS=0;
CLR_RW ; //RW=0;
//delay(200);
delay_nms(5);
SET_EN ; //EN=1;  //EN从1--0锁存数据
DataPort =value;
//delay(200);
delay_nms(5);
CLR_EN ; //EN=0;
}
void write_LCD_data(uchar value) //写数据函数
{
read_busy();
SET_RS ; //RS=1;
CLR_RW ; //RW=0;
//delay(200);
delay_nms(5);
SET_EN ; //EN=1;  //EN从1--0锁存数据
DataPort =value;
//delay(200);
delay_nms(5);
CLR_EN ; //EN=0;
}
void init_LCD()    //8位并口方式LCD1864初始化函数
{
//delay(4000);   //等待时间>40ms
delay_nms(50);
write_LCD_command(0x30);//功能设定:8位数据、基本指令操作
//delay(100);    //等待时间>100us
delay_nms(1);
write_LCD_command(0x30);//功能设定:8位数据、基本指令操作
//delay(37);    //等待时间>37us
delay_nms(1);
write_LCD_command(0x0C);//显示设定:整体显示、游标关、不反白
//delay(100);    // 等待时间>100us
delay_nms(1);
write_LCD_command(0x01);//清屏指令
//delay(10000);   //等待时间>10ms
delay_nms(20);
write_LCD_command(0x06);//进入点设定:地址指针加1
delay_nms(1);
}

void main( void )
{
   uchar num;
   WDTCTL = WDTPW + WDTHOLD;  // Stop watchdog timer to prevent time out reset
   CtrlDir |= 0x07;                 //控制线端口设为输出状态
   DataDir |= 0xFF;                 //数据端口设为输出状态
  // DataPort |=0xFF;
   //CtrlDir |=0xFF;
   init_LCD();
//  LCD_CLR();

       write_LCD_command(0x80);
     for(num=0;num<8;num++)
     {
      write_LCD_data(table6[num]);
     }
     write_LCD_command(0x84);
     for(num=0;num<8;num++)
     {
      write_LCD_data(table4[num]);
     }
     write_LCD_command(0x90);
     for(num=0;num<14;num++)
     {
      write_LCD_data(table5[num]);
     }
  //  while(1);
}

这是整个程序,编译无错,调试时出现No source available for "c_int00_noexit() at 0xe0dc" (the entry point was reached),液晶没有任何反应。数据口是P1,RS,RW,E,分别是片p2.0,p2.1,p2.2。PSB直接接的高电平。求助。。。。。。。

回复

使用道具 举报

166

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2012-7-25 18:28 | 显示全部楼层
你的液晶的电源接的是开发板上的吗?

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-28 14:10 | 显示全部楼层
你的液晶19,20脚怎么接的?

回复

使用道具 举报

145

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-28 14:45 | 显示全部楼层
自己里一个顺序。
、先背光弄亮嘛

回复

使用道具 举报

12

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-28 16:37 | 显示全部楼层
如果硬件没问题的话  读忙状态加点延时(在读忙程序里加延时)

回复

使用道具 举报

12

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2012-7-28 16:38 | 显示全部楼层
还是要定义为输入口 然后在定义为输出口

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-1-23 04:14 , Processed in 0.210351 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表