单片机学习——LCD12864串口显示

  • Post author:
  • Post category:其他




一、引脚图




二、串行时序图



R/W  1/0    读/写



RS    1/0    数据/



命令



(注意:这是数据,不是并行那个端口为:

RS    1/0


命令/

数据







/********************************************************************

写命令

***********************************************************************/

void write_com(unsigned char cmdcode)

{






CS = 1;






sendbyte(0xf8);// 告诉显示屏要写命令






sendbyte(cmdcode & 0xf0);//发高四位  xxxx0000





sendbyte((cmdcode << 4) & 0xf0);//发低四位  xxxx0000





delay(2);//200us左右

}

/********************************************************************

写数据

***********************************************************************/

void write_data(unsigned char Dispdata)

{






CS = 1;





sendbyte(0xfa);





sendbyte(Dispdata & 0xf0);





sendbyte((Dispdata << 4) & 0xf0);





delay(2);

}


/********************************************************************

根据时序图发数据

***********************************************************************/

void sendbyte(unsigned char zdata)

{






unsigned int i;





for(i=0; i<8; i++)





{






if((zdata << i) & 0x80)





{






SID = 1;

//第5个引脚R/W






}





else





{






SID = 0;





}





SCLK = 0;





SCLK = 1;





}

}



三、初始化LCD


void lcdinit()

{





RST = 0;                 //复位





delay(100);





RST = 1;





delay(20000);



write_com(0x30);    //基本指令操作






//


lcd_wcmd(0x34);






//扩展指令操作






delay(50);





write_com(0x0c);    //显示开  关光标





delay(50);

}



四、显示函数



1、显示普通字符和汉字



write_com(0x30);    //基本指令操作



void hzkdis(unsigned char code *s)

{





while(*s > 0)



{





write_data(*s);





s++;





delay(50);



}

}


void Test()

{





write_com(0x03);//光标置原点





delay(50);





write_com(0x81);//汉字显示坐标,第一行(总4行),第二个汉字位置(总8列)





hzkdis(“1234567”);

}







2、显示图片















/*******************************************

整屏显示图片



unsigned char code tu_fill[]={};

********************************************/

void Fill_dis(const uchar *ptr)

{




uchar i,j,k;



//wela=0;





//dula=0;





lcd_wcmd(0x34);        //拓展命令





i = 0x80;





for(j = 0;j < 32;j++)





{




lcd_wcmd(0x80+j);//写Y轴



lcd_wcmd(0x80);//写X轴,第一大行,0~7





for(k = 0;k < 16;k++)//一个字节8*16=128



{






lcd_wdat(*ptr++);





}





}





i = 0x80;





for(j = 0;j < 32;j++)





{






lcd_wcmd(0x80+j);







lcd_wcmd(0x88);


//写X轴,第二大行,8-15





for(k = 0;k < 16;k++)





{






lcd_wdat(*ptr++);





}





}



lcd_wcmd(0x36);        //打开绘图显示





lcd_wcmd(0x30);        //返回基本命令

}



3、取模软件设置













版权声明:本文为albergemPi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。