lcd1602a51全功能驱动12m晶振 1文档格式.docx

上传人:b****5 文档编号:20564620 上传时间:2023-01-24 格式:DOCX 页数:10 大小:16.32KB
下载 相关 举报
lcd1602a51全功能驱动12m晶振 1文档格式.docx_第1页
第1页 / 共10页
lcd1602a51全功能驱动12m晶振 1文档格式.docx_第2页
第2页 / 共10页
lcd1602a51全功能驱动12m晶振 1文档格式.docx_第3页
第3页 / 共10页
lcd1602a51全功能驱动12m晶振 1文档格式.docx_第4页
第4页 / 共10页
lcd1602a51全功能驱动12m晶振 1文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

lcd1602a51全功能驱动12m晶振 1文档格式.docx

《lcd1602a51全功能驱动12m晶振 1文档格式.docx》由会员分享,可在线阅读,更多相关《lcd1602a51全功能驱动12m晶振 1文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

lcd1602a51全功能驱动12m晶振 1文档格式.docx

_nop_();

};

//******************LCD控制线说明******************//

//状态字读操作:

输入RS=低、RW=高、EP=高;

输出:

读出状态字;

//数据读出操作:

输入RS=高、RW=高、EP=高;

读出为数据;

//指令写入操作:

输入RS=低、RW=低、EP=上升沿;

无;

//数据写入操作:

输入RS=高、RW=低、EP=上升沿;

无。

//******************LCD1602命令字******************//

#defineLCD_CMD_8DB0x38

#defineLCD_CMD_4DB0x28

#defineLCD_CMD_CLR0x01 

//清屏指令

//初始化命令,以下几条(指令)按位或,就可得组合

//0x38//设置5*7二行8数据线

//0x28//设置5*7二行4数据线

//0x01//lcd清屏

//0x02//光标复位指令

//0x0e//整体显示开,光标开

//0x08//整体显示关

//0x0c//整体显示开,光标关

//0x0f//整体显示开,光标开,光标闪烁

//0x0e//整体显示开,光标开,光标不闪烁

//0x04//字符不移,光标左移

//0x06//字符不移,光标右

//0x05//字符移,光标左移

//0x07//字符移,光标右移

//

//控制移动命令,以下几条(指令)按位或,就可得组合

//0x10 

//左移动光标

//0x14 

//右移动光标

//0x18 

//左移动字符

//0x1c 

//右移动字符

//LCD1602a5*8自定义字符CGRAM控制

//命令格式:

01A5A4A3A2A1A0 

;

A5-A0为CGRAM地址

//从低位起每8个CGRAM组成一个自定义字符,共可定义8个

//例如将自定义字符写入CGRAM的0x08-0x0f间,

//调用lcd_wdat(0x02)就能显示

#ifdefLCD_8DB

#defineLCD_MODELCD_CMD_8DB

#endif

#ifdefLCD_4DB

#defineLCD_MODELCD_CMD_4DB

externucharcodeTAB_LCD_Hex[];

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

/**********LCD各函数声明*************/

externvoiddelay(ucharx);

externbitlcd_busy();

externvoidlcd_wcmd(ucharcmd);

externvoidlcd_wdat(uchardat);

externvoidlcd_init();

externvoidlcd_PrPos(ucharrow,ucharcol);

externvoidlcd_PrHexByte(ucharprbyte);

externvoidlcd_PrString(uchar*prstring);

externvoidlcd_wCGRAM(ucharcg_pos,uchar*cg_arr);

lcd.c文件:

#include"

LCD.h"

ucharcodeTAB_LCD_Hex[]={'

0'

'

1'

2'

3'

4'

5'

6'

7'

8'

9'

A'

B'

C'

D'

E'

F'

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

/* 

*/

/*延时子程序 

voiddelay(ucharx)

{ucharj;

while((x--)!

=0)

{

for(j=0;

j<

125;

j++) 

}

}

/*检查LCD忙状态 

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据*/

staticbitlcd_busy()

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(LCD_DB_Port&

0x80);

LCD_EN=0;

return(result);

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

/*写指令数据到LCD 

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

voidlcd_wcmd(ucharcmd)

while(lcd_busy());

LCD_RW=0;

_nop_();

LCD_DB_Port=cmd;

LCD_DB_Port&

=0x0F;

//清高四位

LCD_DB_Port|=(cmd&

0xF0);

//送高四位

//上跳沿时输入数据

LCD_DB_Port|=(cmd<

<

4);

//送低四位

#endif

delayNOP();

/*写显示数据到LCD 

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

voidlcd_wdat(uchardat)

LCD_RS=1;

LCD_DB_Port=dat;

LCD_DB_Port|=(dat&

//送高四位数据

LCD_DB_Port|=(dat<

//送低四位数据

/*LCD初始化设定 

voidlcd_init()

{

delay(15);

//等待电源稳定 

lcd_wcmd(LCD_MODE);

//设置显示模式

delay(5);

lcd_wcmd(0x0c);

//显示开,关光标

lcd_wcmd(0x06);

//移动光标

lcd_wcmd(0x01);

//清除LCD的显示内容

/*设定显示位置 

voidlcd_PrPos(ucharrow,ucharcol)

if(row==0)

lcd_wcmd(col|0x80);

//数据指针=80+地址变量

if(row==1)

lcd_wcmd(col|0x80|0x40);

/*显示字符串 

voidlcd_PrString(uchar*prstring)//显示一个字符串的子程序

{

while((*prstring)!

='

\0'

lcd_wdat(*prstring);

prstring++;

/*显示二进制字节 

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

voidlcd_PrHexByte(ucharprbyte)//显示一个字符子程序

ACC=prbyte;

ACC>

>

=4;

lcd_wdat(TAB_LCD_Hex[ACC]);

//显示高四位

ACC&

//显示低四位

/*写入自定义字符 

voidlcd_wCGRAM(ucharcg_pos,uchar*cg_arr) 

//cg_pos0-7写入自定义cgram中的位置

uchari;

cg_pos<

=3;

//cg_pos=cg_pos*8,转化成地址

cg_pos|=0x40;

//转化成命令字

for(i=0;

i<

8;

i++)

lcd_wcmd(cg_pos);

lcd_wdat(*cg_arr);

cg_pos++;

cg_arr++;

测试test.c文件:

lcd.h"

ucharcodebell[]={0x01,0x1b,0x1d,0x19,0x1d,0x1b,0x01,0x00};

main()

uchari;

lcd_init();

lcd_PrPos(0,16);

lcd_PrString("

abc"

);

for(i=0;

16;

i++)

lcd_wcmd(0x18);

delay(200);

lcd_wcmd(0x02);

//重置光标

lcd_wcmd(0x01);

//清屏

lcd_wCGRAM(0x01,bell);

//写入自定义字符

lcd_PrPos(1,5);

lcd_wdat(0x01);

//显示自定义字符

while

(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1