|
发表于 2011-11-27 00:46:23
|
显示全部楼层
//**********************************************************
//函数名称:LCD12864_Write(uchar cmdordata,uchar Data)
//函数功能:写数据或命令道LCD12864
//形式参数:uchar cmdordata,uchar Data
//行参说明:命令或者数据
//返回参数:无
//使用说明:传送数据或者命令,当cmdordata=0是,传送命令,当cmdordata=1,传送数据.
//**********************************************************
void LCD12864_Write(unsigned char cmdordata,unsigned char Data) //传送数据或者命令,当cmdordata=0是,传送命令,当cmdordata=1,传送数据.
{
LCD12864WaitForReady();
LCD_CLR_EN;
LCD_CLR_RW;
if(cmdordata == 0)
{
LCD_CLR_RS;
}
else
{
LCD_SET_RS;
}
LCD12864_Data_POUT = Data;
LCD_SET_EN;
LCD_CLR_EN;
}
//**********************************************************
//函数名称:LCD12864_Read(void)
//函数功能:从LCD12864中读取数据
//形式参数:无
//行参说明:无
//返回参数:读取的数据
//使用说明:无
//**********************************************************
uchar LCD12864_Read(void)
{
uchar data;
LCD12864WaitForReady();
LCD12864_SetReadData;
LCD_SET_RS;
LCD_SET_RW;
LCD_SET_EN;
Delayus(1);
data = LCD12864_Data_PIN;
LCD_CLR_EN;
LCD12864_SetWriteData;
return data;
}
这个是我以前写过的430F2618的,都能正常读写的
这是主函数中测试的代码:
WDTCTL = WDTPW + WDTHOLD;
unsigned char ReadOldH,ReadOldL;
P5DIR |= 0x10;
P5SEL |= 0x10;//用的是P5口
P3DIR = 0xFF;//控制口
LCD12864_Init();
LCD12864_Clear();
LCD12864_ClearDDRAM();
LCD12864_Write(COMMAND,0x80);
LCD12864_Read();
ReadOldH = LCD12864_Read();
ReadOldL = LCD12864_Read();
LCD12864_Write(COMMAND,0x86);
LCD12864_Write(DATA,ReadOldH);
LCD12864_Write(DATA,ReadOldL);
while(1); |
|