有没有用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]