打印

C8051F410编写程序1602无法显示

[复制链接]
3062|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xunzhaokaixin|  楼主 | 2012-7-6 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include  <C8051F410.h>
#include  <math.h>    //Keil library  
#include  <stdio.h>   //Keil library

#include  <INTRINS.H>
#define   uchar unsigned char
#define   uint unsigned int

unsigned char xdata Netdata[14]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e
                                 ,0x63,0x6f,0x6d,0x2e,0x63,0x6e};
unsigned char xdata NCDdata[14]={0x57,0x65,0x6c,0x63,0x6f,0x6d,0x65,0x20
                                 ,0x74,0x6f,0x20,0x4e,0x43,0x44};

sbit LCM_EN=P1^0;
sbit LCM_RW=P1^1;
sbit LCM_RS=P1^2;
#define   DataPort P0

void delay(int i)
{
     int j,k;
     for(j=0;j<i;j++)
     for(k=0;k<1000;k++);
}

void WaitForEnable(void)

{

DataPort=0xff;

LCM_RS=0;
LCM_RW=1;
_nop_();
LCM_EN=1;
_nop_();
_nop_();
while(DataPort&0x80);

LCM_EN=0;

}

void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc)WaitForEnable();

LCM_RS=0;LCM_RW=0;
_nop_();
DataPort=CMD;
_nop_();

LCM_EN=1;
_nop_();
_nop_();
LCM_EN=0;
}

void WriteDataLCM(uchar dataW)
{

WaitForEnable();

LCM_RS=1;LCM_RW=0;
_nop_();
DataPort=dataW;
_nop_();

LCM_EN=1;
_nop_();
_nop_();
LCM_EN=0;
}

void InitLcd()

{

WriteCommandLCM(0x38,1);

WriteCommandLCM(0x08,1);

WriteCommandLCM(0x01,1);

WriteCommandLCM(0x06,1);

WriteCommandLCM(0x0c,1);
}


void SYSCLK_Init(void)
{
        OSCICN    = 0x87;
}

void PORT_Init(void)
{
    P0MDOUT   = 0xFF;
    P1MDOUT   = 0xFF;
    XBR1      = 0x40;
}

void main()
{
   unsigned int i;
    PCA0MD    &= ~0x40;


SYSCLK_Init();

PORT_Init();

InitLcd();

//write_com(0x80);

//write_data('H');
  


while(1)  //最后程序停留在while语句中

{

   
for(i=0;i<14;i++)

    {

    WriteDataLCM(Netdata[i]);

     
delay(20);

    }

    WriteCommandLCM(0x80+0x51,1);

    for(i=0;i<14;i++)
   
{

    WriteDataLCM(NCDdata[i]);

    delay(20);

    }


    for(i=0;i<14;i++)
   //整屏左移

    {

    WriteCommandLCM(0x18,1);  //整屏左移一个字节

    delay(400);

    }

InitLcd();

  /*unsigned int n;

for(n=0;n<14;n++)

{

write_data(NCDdata[n]);

}

delay(5);

LCD_Init();*/


}
}

相关帖子

沙发
ayb_ice| | 2012-7-6 16:21 | 只看该作者
NOP太少了吧

使用特权

评论回复
板凳
M_sky300| | 2012-7-6 17:40 | 只看该作者
你这个程序没什么没什么问题,要看一下你的外围硬件电路是否有问题

使用特权

评论回复
地板
ningling_21| | 2012-7-6 21:52 | 只看该作者
硬件又没问题?

使用特权

评论回复
5
zxq1234508| | 2012-7-7 13:36 | 只看该作者
端口设置是开漏输出还是推挽输出?可以重新设置试试。

使用特权

评论回复
6
单车骑士| | 2012-7-17 21:39 | 只看该作者
硬件没初始化吧

使用特权

评论回复
7
328553323| | 2012-7-17 23:05 | 只看该作者
应该是初始化那里延时不够,导致程序死在检测忙标志位那个WHILE那里了。

使用特权

评论回复
8
阮天宇00| | 2012-7-27 13:17 | 只看该作者
1# xunzhaokaixin

液晶启动似乎要等一段时间才能稳定。

你在初始化程序前面延时个几秒看看。

使用特权

评论回复
9
xunzhaokaixin|  楼主 | 2012-8-2 10:29 | 只看该作者
嗯,已经解决了,是延时问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

0

粉丝