打印
[ZLG-MCU]

LM3S615模拟总线时序,对LCD读写代码

[复制链接]
2414|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maliang100|  楼主 | 2008-1-24 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************************************************************************************************
函数名称: DispWriteCmd(uint8 cmd )
输入参数: cmd --- 命令参数,A0 = 0 时为写命令
函数功能: 写命令给LCD
输出参数: 无
********************************************************************************************************/
void DispWriteCmd(uint8 cmd )
{
    GPIOPinWrite(GPIO_PORTA_BASE, CS, (uint8)(~CS));                    // 置低 CS 
    
    GPIOPinWrite(GPIO_PORTA_BASE, A0, (uint8)~A0);                      // 置低 A0, A0 = 0 时为写命令
    
    GPIOPinWrite(GPIO_PORTA_BASE, RW, (uint8)(~RW));                    // 置低 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, RD, RD);                              // 置高 RD 
    
    GPIOPinWrite(GPIO_PORTD_BASE, 0xff, cmd);                           // 写入数据
    //delay(1);                                                           // 等待数据稳定
    GPIOPinWrite(GPIO_PORTA_BASE, RW, RW);                              // 置高 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, CS, CS);                              // 置高 CS 
}

/********************************************************************************************************
函数名称:  DispWriteData(uint8 _data )
输入参数: _data --- 数据内容,A0 = 1 时为写数据
函数功能: 写数据进入LCD
输出参数: 无
********************************************************************************************************/
void DispWriteData(uint8 _data )
{
    GPIOPinWrite(GPIO_PORTA_BASE, CS, (uint8)(~CS));                    // 置低 CS 
    
    GPIOPinWrite(GPIO_PORTA_BASE, A0, A0);                              // 置高 A0, A0 = 0 时为数据
    
    GPIOPinWrite(GPIO_PORTA_BASE, RW, (uint8)(~RW));                    // 置低 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, RD, RD);                              // 置高 RD 
    
    GPIOPinWrite(GPIO_PORTD_BASE, 0xff, _data);                         // 写入数据
    //delay(1);                                                           // 等待数据稳定
    GPIOPinWrite(GPIO_PORTA_BASE, RW, RW);                              // 置高 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, CS, CS);                              // 置高 CS 
}


/********************************************************************************************************
函数名称: unsigned char DispReadData( )
输入参数: 无
函数功能: 从LCD读数据
输出参数: 读出的数据
********************************************************************************************************/
uint8 DispReadData( )
{
    uint8 ReData;
    SetDataPortIn();                                                    // 数据口设置为输入
    GPIOPinWrite(GPIO_PORTA_BASE, CS, (uint8)(~CS));                    // 置低 CS 
    
    GPIOPinWrite(GPIO_PORTA_BASE, A0, A0);                              // 置高 A0, A0 = 0 时为数据
    
    GPIOPinWrite(GPIO_PORTA_BASE, RW, RW);                              // 置高 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, RD, (uint8)(~RD));                    // 置低 RD 
    
    ReData = GPIOPinRead(GPIO_PORTD_BASE,0xff);                         // 读数据
    //delay(1);                                                           // 等待数据稳定
    GPIOPinWrite(GPIO_PORTA_BASE, RD, RD);                              // 置高 RD 
    GPIOPinWrite(GPIO_PORTA_BASE, CS, CS);                              // 置高 CS 
    SetDataPortOut();                                                   // 数据口设置为输出
    return ReData;
}

uint8 DispReadCmd( )
{
    uint8 ReData;
    SetDataPortIn();                                                    // 数据口设置为输入
    GPIOPinWrite(GPIO_PORTA_BASE, CS, (uint8)(~CS));                    // 置低 CS 
    
    GPIOPinWrite(GPIO_PORTA_BASE, A0, (uint8)~A0);                      // 置高 A0, A0 = 0 时为数据
    
    GPIOPinWrite(GPIO_PORTA_BASE, RW, RW);                              // 置高 RW 
    GPIOPinWrite(GPIO_PORTA_BASE, RD, (uint8)(~RD));                    // 置低 RD 
    
    ReData = GPIOPinRead(GPIO_PORTD_BASE,0xff);                         // 读数据
    delay(1);                                                           // 等待数据稳定
    GPIOPinWrite(GPIO_PORTA_BASE, RD, RD);                              // 置高 RD 
    GPIOPinWrite(GPIO_PORTA_BASE, CS, CS);                              // 置高 CS 
    SetDataPortOut();                                                   // 数据口设置为输出
    return ReData;
}

相关帖子

沙发
hotpower| | 2008-1-24 21:15 | 只看该作者

沙发~~~不过应该给个型号之类的~~~

使用特权

评论回复
板凳
maliang100|  楼主 | 2008-1-25 09:08 | 只看该作者

只要是并口的LCD屏,都可以阿,这个只是与LCD通讯部分的.

使用特权

评论回复
地板
hotpower| | 2008-1-25 21:56 | 只看该作者

哈哈~~~不可能的~~~每种LCD都有自己的控制器的~~~

使用特权

评论回复
5
AIRWILL| | 2008-1-28 13:46 | 只看该作者

看样子, 跟 T6963 合适

使用特权

评论回复
6
lordor| | 2008-1-28 17:42 | 只看该作者

问一下楼主

问一下楼主,读写是模拟8位数据的吗?不知硬件是怎么样的?

使用特权

评论回复
7
maliang100|  楼主 | 2008-1-29 12:46 | 只看该作者

读写是模拟8位数据

读写是模拟8位数据,没错,
硬件为:PD为数据端口,PA的几个引脚对应的控制端口如下:
#define RD   GPIO_PIN_0                //定义RD   --- PA0
#define RW   GPIO_PIN_1                //定义RW   --- PA1
#define A0   GPIO_PIN_2                //定义A0   --- PA2
#define RST  GPIO_PIN_3                //定义RST  --- PA3 
#define CS   GPIO_PIN_4                //定义CS   --- PA4
#define LED  GPIO_PIN_5                //定义LED  --- PA5

使用特权

评论回复
8
xwj| | 2008-1-29 12:58 | 只看该作者

好麻烦啊,速度可想而知

应该尽量合并端口,作为字节或字来操作

使用特权

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

本版积分规则

5

主题

34

帖子

1

粉丝