OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 1620 这是我的1620驱动程序,可就是调不通,大侠们看看阿

共2条 1/1 1 跳转至

1620 这是我的1620驱动程序,可就是调不通,大侠们看看阿

院士
2006-12-22 22:43:00    评分
1620 这是我的1620驱动程序,可就是调不通,大侠们看看阿



关键词: 这是     我的     驱动程序     就是     不通     大侠     看看    

院士
2006-12-22 22:43:00    评分
2楼
问 #include "config.h"
#define rs 0x04
#define rw 0x08
#define ep 0x10
uint32 P0;


uint8 dis1[] = {"welcome!"};
uint8 dis2[] = {"www.willar.com"};
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--)
      for(i=0; i<1; i++);
}
void delay(uint8 ms)
{                            // 延时子程序
    uint8 i;
    while(ms--)
    {
        for(i = 0; i< 250; i++)
        {
            DelayNS(0);
            DelayNS(0);
        }
    }
}
uint32 lcd_status()
{
uint32 i;
i=IO0PIN;
i=i>>5;
i=i & 0xFF;
return i;
}

uint8 lcd_bz()
{                            // 测试LCD忙碌状态
    uint8 result;
    IO0CLR=rs;
    IO0SET=rw|ep;
    DelayNS(0);
    DelayNS(0);
    P0=lcd_status();
    result = (uint8)(P0 & 0x80);
    IO0CLR=ep;
    return result;    
}

void lcd_wcmd(uint32 cmd)
{                            // 写入指令数据到LCD
    uint32 Ncmd;
    Ncmd=~cmd;
    Ncmd=Ncmd & 0xFF;
    cmd=cmd<<5;
    Ncmd=Ncmd<<5;
    while(lcd_bz());
    IO0CLR=rs|rw|ep;
    DelayNS(0);
    
    IO0SET=cmd;
    IO0CLR=Ncmd;
    DelayNS(0);
    DelayNS(0);
    IO0SET=ep;
    DelayNS(0);
    DelayNS(0);

    IO0CLR=ep;    
}

void lcd_pos(uint8 pos)
{                            //设定显示位置
    lcd_wcmd(pos | 0x80);
}

void lcd_wdat(uint32 dat)    
{                            //写入字符显示数据到LCD
    uint32 Ndat;
    while(lcd_bz());
    Ndat=~dat;
    Ndat=Ndat & 0xFF;
    dat=dat<<5;
    Ndat=Ndat<<5;
    IO0SET=rs;
    IO0CLR=rw | ep;
    
    IO0SET=dat;
    IO0CLR=Ndat;
    Ndat=IO0SET;
    DelayNS(0);
    DelayNS(0);
    IO0SET=ep;
    DelayNS(0);
    DelayNS(0);
    IO0CLR=ep;    
}

void lcd_init(void)
{                            //LCD初始化设定
    lcd_wcmd(0x38);            //
    delay(1);
    lcd_wcmd(0x0C);            //
    delay(1);
    lcd_wcmd(0x06);            //
    delay(1);
    lcd_wcmd(0x01);            //清除LCD的显示内容
    delay(1);
}

int main (void)
{// add user source code
   uint8 i;
   PINSEL0 = 0x00000000;
   PINSEL1 = 0x00000000;    // 设置管脚连接,P0.16设置为EINT0,P0.20设置为EINT3
    IO0DIR=0x1FFC;
    
    lcd_init();                // 初始化LCD            
    delay(10);
    lcd_pos(4);            // 设置显示位置为第一行的第5个字符
    i = 0;
//    while(dis1[i] != '\0')
//    {                        // 显示字符"welcome!"
        lcd_wdat(0x27);
//        i++;
//    }
    lcd_pos(0x41);            // 设置显示位置为第二行第二个字符
//    i = 0;
//    while(dis2[i] != '\0')
//    {
        lcd_wdat(0x27);    // 显示字符"  www.willar.com  "
//        i++;
//    }
    while(1);    
    return 0;
}
1: ```````````我用的是EasyARM2119大侠们救救我

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]