电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2201|回复: 0
收起左侧

单片机C语言实例-187-lcd-12864应用

[复制链接]
发表于 2022-2-15 14:23:13 | 显示全部楼层 |阅读模式
单片机C语言实例-187-lcd-12864应用

#define uchar unsigned char
#define uint unsigned int
sbit p3_0=P3^0;
sbit p3_1=P3^1;
sbit p3_2=P3^2;
sbit p3_3=P3^3;
sbit p3_4=P3^4;
sbit p3_5=P3^5;
sbit p2_7=P2^7;


#define LCD_RW   p3_1  
#define LCD_DI   p3_2
#define LCD_E    p3_0
#define LCD_CS1  p3_4
#define LCD_CS2  p3_3
#define LCD_RES  p3_5

#define LCD_BUSY p2_7
#define LCDPORT P2

#define LCDSTARTROW 0xC0

delay_ms(int ms)
{uchar i;
uint  j;
for(j=2*ms;j>0;j--)
  for(i=250;i>0;i--);

}


bit ChechBusy()
{

        LCDPORT=0xFF;
        LCD_RW=1;
        LCD_DI=0;
        LCD_E=1;

        LCD_E=0;
        return LCD_BUSY;
}


void write_cmd(uchar cmd)
{
        while(ChechBusy());

    LCD_E=0;
        LCD_RW=0;
        LCD_DI=0;
        LCDPORT=cmd;
        LCD_E=1;
    LCD_E=0;
}


void write_data(uchar d)
{
        while(ChechBusy());

    LCD_E=0;
        LCD_RW=0;
        LCD_DI=1;
        LCDPORT=d;
        LCD_E=1;
        LCD_E=0;

}

void LCD_init()
{
    LCD_CS1=1;
        LCD_CS2=1;

        write_cmd(0x3F);                //开显示。
        write_cmd(LCDSTARTROW);        //设置起始行。
}


void main()
{
int i,j;
uchar u, *p=encoding_01;
LCD_init();
LCD_CS1=1;
LCD_CS2=1;
P1=0;
for (i=0;i<64;i++)
{ write_cmd(0xb9);

   write_data(encoding_00);
}
write_cmd(0x40);
for (i=0;i<64;i++)
{ write_cmd(0xba);

   write_data(encoding_00>>8);
}


LCD_CS1=0;
LCD_CS2=1;

for (i=0;i<64*8;i++)
{

   u=0xb8+(7-i%8);
   write_cmd(u);
   u=0x40+i/8;
   write_cmd(u);
   u=*((uchar *)encoding_01+i);
   write_data(u);
}

for (u=0;u<64;u++)
{
  write_cmd(0xc0+u);

  delay_ms(500);
}
while(1);
}


更多详情参考附件文档
+08:00C307联盟网5529.png
游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表