//1ms延时函数 void delay_1ms(void) { unsigned int i; for(i=0;i<600;i++); }
//n ms延时函数 void delay_nms(unsigned int n) { unsigned int i; for(i=0;i<n;i++)delay_1ms(); }
//-----------判断液晶状态----------------- void wait_en(void) { P0=0xff; RS=0; RW=1; _nop_(); EN=1; while((P0&0x80)==0x80); EN=0; }
//--------------写指令------------------- void writecomd(unsigned char comd,unsigned char wait_flag) { if(wait_flag)wait_en(); EN=0; RS=0; RW=0; _nop_(); EN=1; _nop_(); P0=comd; EN=0; RW=1; } //-----------写数据----------------------- void writedat(unsigned char dat) { wait_en(); EN=0; RS=1; RW=0; _nop_(); EN=1; P0=dat; EN=0; RW=1; } //------------读数据--------------------- unsigned char readdat(void) { unsigned char tempdat; P0=0xff; EN=0; RS=1; RW=1; _nop_(); EN=1; tempdat=P0; EN=0; return tempdat; }
//---------------液晶初始化--------------- void Init_lcd(void) { delay_nms(15); writecomd(0x38,0);//显示模式设置三次(此时不管lcd空闲与否) delay_nms(5); writecomd(0x38,0); delay_nms(5); writecomd(0x38,0); delay_nms(5); writecomd(0x38,1);//显示模式设置(从此之后均需lcd空闲) writecomd(0x08,1);//显示关闭 writecomd(0x01,1);//显示清屏 writecomd(0x06,1);//显示光标移动设置 writecomd(0x0c,1);//显示开及光标设置 } 给你程序吧
|