3186|5

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

12864液晶无法点亮,求帮助 [复制链接]

#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直接接的高电平。求助。。。。。。。

最新回复

还是要定义为输入口 然后在定义为输出口  详情 回复 发表于 2012-7-28 16:38
 
点赞 关注

回复
举报

151

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
你的液晶的电源接的是开发板上的吗?
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
你的液晶19,20脚怎么接的?
 
 
 

回复

132

帖子

0

TA的资源

一粒金砂(中级)

4
 
自己里一个顺序。
、先背光弄亮嘛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 
如果硬件没问题的话  读忙状态加点延时(在读忙程序里加延时)
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

6
 
还是要定义为输入口 然后在定义为输出口
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表