/******************************************************************* 函 数 名:W_1byte 入口参数:RW、RS、W_data 出口参数:无 建立日期:2007年3月3日 修改日期: 函数作用:写一个字节的数据到12864液晶,包括指令和数据 说 明:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶; (一般RW都设为0,即只向液晶写数据,不读数据) RS=1,写入的是数据;RS=0,写入的是指令; 一般模式:RW=0,RS=1;写数据 RW=0,RS=0;写指令 ********************************************************************/ void W_1byte(unsigned char RW, unsigned char RS, unsigned char W_data) { unsigned int H_data,L_data,S_ID = 0xf8; //11111RWRS0 if(RW == 0) { S_ID &=~ 0x04; } else //if(RW==1) { S_ID |= 0X04; } if(RS == 0) { S_ID &=~ 0x02; } else //if(RS==1) { S_ID |= 0X02; } H_data = W_data; H_data &= 0xf0; //屏蔽低4位的数据 L_data = W_data; //xxxx0000格式 L_data &= 0x0f; //屏蔽高4位的数据 L_data <<= 4; //xxxx0000格式 Set_CS(); Write_8bits(S_ID); //发送S_ID Write_8bits(H_data); //发送H_data Write_8bits(L_data); //发送L_data Clr_CS(); Clr_CS(); Clr_CS(); }
bool Csio::run(void) { pSIOCONNECTOR_value = pSIOCONNECTOR->Get_values(); // Read connector Set_SD( SIO_GET_PIN(S_SD) ); Set_RR( SIO_GET_PIN(S_RR) ); Set_RS( SIO_GET_PIN(S_RS) ); Set_ER( SIO_GET_PIN(S_ER) ); // Set_PRQ( SIO_GET_PIN(S_PRQ) ); if (RS) { Set_CS(1); Set_CD(1); // if (mainwindow->dialoganalogic) mainwindow->dialoganalogic->setMarker(1); } Sii_bit = 0; if (ER && CD && RR) { // if (mainwindow->dialoganalogic) mainwindow->dialoganalogic->setMarker(8); Sii_bit = transmit(); } Set_RD( Sii_bit ); receive(); SIO_SET_PIN(S_RD, Get_RD()); SIO_SET_PIN(S_CS, Get_CS()); SIO_SET_PIN(S_CD, Get_CD()); //SIO_SET_PIN(SIO_PAK, 0); pSIOCONNECTOR_value = pSIOCONNECTOR->Get_values(); // pTIMER->state++; return true; }