这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 设计工具 » LCD1602 显示程序

共1条 1/1 1 跳转至

LCD1602 显示程序

高工
2013-10-25 15:47:52     打赏

#include

#define uchar unsigned char

sbit rs=P2^0; //lcd1602 rs端

sbit rw=P2^1; //lcd1602 rw端

sbit en=P2^2; //lcd1602 e端

uchar code table[]=wang yun;

uchar code tt1[]={0x1F,0x1F,0x04,0x0E,0x0E,0x04,0x1F,0x1F}; //王

uchar code tt2[]={0x0E,0x0E,0x00,0x1F,0x1F,0x0C,0x19,0x1F}; //云

///////////////////////////////////////

void delay(uchar H,uchar L) //定时器延时程序段

{ TF0=0;TH0=H;TL0=L;

while(!TF0);

}

////////////////////////////////////// 写指令程序段

void w_comd(uchar lcd1602_code)

{ en=1;rs=0;rw=0;

P0=lcd1602_code;

delay(0xff,0xd8);

en=0; //en端下降沿触发数据发送

delay(0xff,0xd8); //本程序没有 忙检测程序,所以此处必须给足够长的延时,保证数据发送完全

}

///////////////////////////////////////写数据程序段

void w_data(uchar lcd1602_data)

{ en=1;rs=1;rw=0;

P0=lcd1602_data;

delay(0xff,0xd8);

en=0; //en端下降沿触发数据发送

delay(0xec,0x78);

}

//////////////////////////////////// 初始化lcd1602

void set_lcd1602()

{ w_comd(0x01); //清屏

delay(0xf9,0x98);

w_comd(0x02); //地址指针归位

delay(0xf9,0x98);

w_comd(0x06); //

w_comd(0x0c); //开显示屏

w_comd(0x38); //8位传送数据 2行显示

}

/////////////////////////////////// 显示程序段

void view_lcd1602(uchar addr,uchar *i) //*i为所传字符串指针

{ int j;

w_comd(addr); //写入地址

while(*i>0)

{ w_data(*i); //写入数据

i++;

for(j=0;j=100;j++)

delay(0x15,0xa0);

w_comd(0x18); //左移指令

}

}

/////////////////////////////////////// cgram写入程序段

void cgram_set_lcd1602(uchar addr,uchar*i)

{ int j;

w_comd(addr); //地址写入

for(j=0;j8;j++)

{ w_data(*i); //自定义数据写入

i++;

}

}

////////////////////////////////////// 主程序

void main()

{

TMOD=0x00; //设定定时器

TR0=1; //定时器0开

set_lcd1602(); //初始化LCD1602

view_lcd1602(0x8f,table);

cgram_set_lcd1602(0x40,tt1);

cgram_set_lcd1602(0x48,tt2);

w_comd(0xca); w_data(0x00); w_data(0x01); //自定义字符显示

while(1);

}




关键词: datasheet中文资料     datasheet p    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]