zengxy 发表于 2011-3-6 20:19:50

有没有用ARM驱动过T6963C(LM4228)的?帮我看看我这个怎么不对?可以读状态,但是好像写数据

/*******************************************
*        File name:         LCD_Drive.c
*        Date:                2011-02-26       
*        Auther:                Zxy
*        Description:        LCD control APIs
*        Change log:       
*        Date                        Auther                Detail

*********************************************/



#include "includes.h"


void LCD_Init(void)
{
        LCD_RUN();
//        LCD_EN();
        LCD_RELEASE();
        LCD_LARGEFONT();
}


INT8U LCD_Readstatus(void)
{
        INT8U stat;

        LCD_SETDATPORT_IN(); //IODIR0 &= 0x000000FF

        LCD_ACC_CMD();       //C/D = H

        LCD_RD();    //RD = L
        LCD_EN();    // \CE = L

       
       
        stat = (INT8U)IOPIN(LCD_DATA_PORT) & LCD_DATA_PORT_MSK;


        LCD_RD_RST();    //RD = H
        LCD_DIS();       //\CE = H


        return stat;

}


void LCD_Status_check(INT8U status_chk)
{

        INT8U status;
        do
        {
                status = LCD_Readstatus();
        }
        while((status & status_chk) != status_chk);

}

void LCD_Writeto(INT8U data, BOOLEAN LCD_ACC_C_D)
{

               
       
        if(LCD_ACC_C_D)
        {
                LCD_ACC_CMD();
        }
        else
        {
                LCD_ACC_DAT();
        }
        LCD_WR();
        LCD_EN();
       

        LCD_SETDATPORT_OUT();
        IOPIN(LCD_DATA_PORT) = (IOPIN(LCD_DATA_PORT) & (~LCD_DATA_PORT_MSK)) | data;
       
       
       
        LCD_WR_RST();

        LCD_DIS();
       
}

void LCD_Cmd_0data(INT8U cmd)
{
       
        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(cmd, LCD_ACC_CMND);

}


void LCD_Cmd_1data(INT8U data, INT8U cmd)
{
       
        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(data, LCD_ACC_DATA);

        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(cmd, LCD_ACC_CMND);

}

void LCD_Cmd_2data(INT8U data1, INT8U data2, INT8U cmd)
{

       
        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(data1, LCD_ACC_DATA);

        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(data2, LCD_ACC_DATA);
       
        LCD_Status_check(BIT(LCD_STA_CMD_EN)|BIT(LCD_STA_DAT_EN));

        LCD_Writeto(cmd, LCD_ACC_CMND);

}
页: [1]
查看完整版本: 有没有用ARM驱动过T6963C(LM4228)的?帮我看看我这个怎么不对?可以读状态,但是好像写数据