最近學習51單片機學會LCD1602A顯示圖片功能,這里分享給大家(上傳顯示效果和使用說明)
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit lcden=P2^5;
uchar code table[]={
0x03,0x07,0x0f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x18,0x1E,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x07,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
0x10,0x18,0x1c,0x1E,0x1E,0x1E,0x1E,0x1E,
0x0f,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
0x1f,0x1f,0x1f,0x1f,0x1f,0x0f,0x07,0x01,
0x1f,0x1f,0x1f,0x1f,0x1f,0x1c,0x18,0x00,
0x1c,0x18,0x10,0x00,0x00,0x00,0x00,0x00
}; //心形圖片
uchar code table1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //自定義字符數(shù)據(jù)地址
void delay(uchar z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
void write_cmd(uchar cmd) //寫命令
{
lcdrs=0;
lcdrw=0;
lcden=1;
P0=cmd;
delay(5);
lcden=0;
lcden=1;
}
void write_date(uchar date) //寫入數(shù)據(jù)
{
lcdrs=1;
lcdrw=0;
lcden=1;
P0=date;
delay(5);
lcden=0;
lcden=1;
}
void init_lcd1602() //1602初始化
{
write_cmd(0x01);
write_cmd(0x38);
write_cmd(0x0c);
write_cmd(0x06);
delay(1);
}
void main()
{
uchar i;
init_lcd1602();
delay(1);
write_cmd(0x40); //開始寫入你要顯示的自定義字符、漢字代碼
for(i=0;i<64;i++)
{
write_date(table[i]);
delay(5);
}
write_cmd(0x80);
for(i=0;i<4;i++) //寫入心形前一半數(shù)據(jù)
{
write_date(table1[i]);
delay(5);
}
write_cmd(0xc0);
for(i=4;i<8;i++) //寫入心形后一半數(shù)據(jù)
{
write_date(table1[i]);
delay(5);
}
while(1);
}
|