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

一、引脚图


二、串行时序图

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、取模软件设置




  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值