/////RW1063 Test Code////////////////////////////////// ///interface:IIC/////////////////////////////////////// ///Slave address:0x78(DB0=0,DB1=0);DB5 setting VSS///// ///MCU:C8051;XTAL:12MHz//////////////////////////////// /////////////////////////////////////////////////////// #include #include #define uint unsigned int #define uchar unsigned char //======================================================== sbit RES=P1^0; sbit SDA=P1^1;//connect to DB6 sbit SCL=P1^2;//connect to DB7 //======================================================== void init(); void main(); void start(); void stop(); void write_com(int para); void write_data(int para); void sendbyte(int temp); void delay(int t); void Write_LCD(unsigned char dat ,unsigned char dat1); //======================================================== void main() { init();//initial LCD while(1) { Write_LCD(0x20,0x20);//write CGROM delay(500); delay(500); delay(500); Write_LCD(0x30,0x40);//write CGROM delay(500); delay(500); delay(500); Write_LCD(0x50,0x60);//write CGROM delay(500); delay(500); delay(500); Write_LCD(0x70,0xa0);//write CGROM delay(500); delay(500); delay(500); Write_LCD(0xb0,0xc0);//write CGROM delay(500); delay(500); delay(500); Write_LCD(0xe0,0xf0);//write CGROM delay(500); delay(500); delay(500); } } void init() { RES=0; delay(1); RES=1; delay(50); write_com(0x38);//Function set delay(5); write_com(0x0c);//Display ON/OFF delay(5); write_com(0x01);//Clear display delay(10); write_com(0x06);//Entry mode set delay(5); } //======================================================== void Write_LCD(unsigned char dat,unsigned char dat1 ) { int i; write_com(0x80);//ddrma address for(i=0;i<16;i++) { write_data( dat+i );//write data } delay(5); write_com(0xc0);//ddrma address for(i=0;i<16;i++) { write_data( dat1+i );//write data } delay(5); } //======================================================== //======================================================== void start() { SDA=1; _nop_(); SCL=1; _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); SCL=0; } //======================================================== void stop() { SDA=0; _nop_(); SCL=1; _nop_(); _nop_(); SDA=1; _nop_(); _nop_(); } //======================================================== void write_com(int para) { start(); sendbyte(0x78); //slave address sendbyte(0x00); //command sendbyte(para); stop(); } //======================================================== void write_data(int para) { start(); sendbyte(0x78); //RW1063 slave address sendbyte(0x40); //data sendbyte(para); stop(); } //======================================================== void sendbyte(int temp) { // int i,j; int i; for(i=0;i<8;i++) { SCL=0; if(temp&0x80) SDA=1; else SDA=0; _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); SCL=0; temp=temp<<1; } _nop_(); _nop_(); _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); // j=0; // while(SDA) // { // if(j>4) // { // break; // } // j++; // } SCL=0; _nop_(); _nop_(); _nop_(); _nop_(); } //======================================================== void delay(int t) { register int i,j; for(i=0;i