超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx

上传人:b****5 文档编号:18345620 上传时间:2022-12-15 格式:DOCX 页数:16 大小:152.94KB
下载 相关 举报
超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx_第1页
第1页 / 共16页
超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx_第2页
第2页 / 共16页
超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx_第3页
第3页 / 共16页
超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx_第4页
第4页 / 共16页
超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx

《超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx》由会员分享,可在线阅读,更多相关《超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx(16页珍藏版)》请在冰豆网上搜索。

超强的51+LCD1602控制四位八位控制1602函数全集+写入字库Word格式.docx

(unsignedcharcmd);

//写入指令

voidLCD_dat 

(unsignedchardat);

//写入数据

voidLCD_pos 

(unsignedcharx,unsignedchary);

//显示定位

voidLCD_printc(unsignedcharx,unsignedchary,unsignedcharc);

//定位输出字符

voidLCD_prints(unsignedcharx,unsignedchary,unsignedchar*s);

//定位输出字符串

voidLCD_printn(unsignedcharx,unsignedchary,unsignedintnum);

//定位输出16位二进制数字

unsignedcharLCD_current_addr(void);

//读出AC当前地址(DB6~DB0)或忙标志位DB7

unsignedcharLCD_current_addr_dat(void);

//读出AC当前地址的数据

unsignedcharLCD_addr_dat(unsignedcharx,unsignedchary);

//读出AC指定地址的数据

voidLCD_pos_CG(unsignedcharx,unsignedchar*CGRAM_dat);

//指定地址(x:

0-7)写入8bytes数据CGRAM

/*-------------------------------------------------------------*/

//光标、画面移动,不影响DDRAM

#defineLCD_LEFT_MOVE 

LCD_cmd(0x18);

//LCD显示左移一位

#defineLCD_RIGHT_MOVE 

LCD_cmd(0x1c);

//LCD显示右移一位

#defineLCD_CURSOR_LEFT_MOVE 

LCD_cmd(0x10);

//光标左移一位

#defineLCD_CURSOR_RIGHT_MOVE 

LCD_cmd(0x14);

//光标右移一位

/*--------------------------------------------------------------*/

//设置显示、光标及闪烁开、关

#defineLCD_DISPLAY_ON 

LCD_cmd(0x0c);

//LCD开显示

#defineLCD_DISPLAY_OFF 

LCD_cmd(0x08);

//LCD关显示

#defineLCD_CURSOR_ON 

LCD_cmd(0x0e);

//光标显示

#defineLCD_CURSOR_OFF 

//光标不显示

#defineLCD_CURSOR_BLINK_ON 

LCD_cmd(0x0f);

//光标闪烁

#defineLCD_CURSOR_BLINK_OFF 

//光标不闪烁

#defineLCD_GO_HOME 

LCD_cmd(0x02);

//AC=0,光标、画面回HOME位,DDRAM内容不变

#defineLCD_CLR 

LCD_cmd(0x01);

//LCD清屏,清除DDRAM,清除屏幕,置AC为0,光标回位?

//工作方式设置

#defineLCD_DISPLAY8_DOUBLE_LINE 

LCD_cmd(0x38);

//两行显示8-bits

#defineLCD_DISPLAY8_SINGLE_LINE 

LCD_cmd(0x30);

//单行显示8-bits

#defineLCD_DISPLAY4_DOUBLE_LINE 

LCD_cmd(0x28);

//两行显示4-bits

#defineLCD_DISPLAY4_SINGLE_LINE 

LCD_cmd(0x20);

//单行显示4-bits

//输入方式设置

#defineLCD_AC_AUTO_INCREMENT 

LCD_cmd(0x06);

//数据读、写操作后,AC自动加1

#defineLCD_AC_AUTO_DECREASE 

LCD_cmd(0x04);

//数据读、写操作后,AC自动减1

#defineLCD_MOVE_ENABLE 

LCD_cmd(0x07);

//数据读、写操作,画面平移

#defineLCD_MOVE_DISENABLE 

//数据读、写操作,画面不动

以下是液晶驱动头文件:

//File:

LCD1602_8A.H

//Time:

20:

10

//Modi:

09-5-17

//防止被重复定义

#ifndef__LCD1602_8A_H__ 

#define__LCD1602_8A_H__

#defineInt_Transfer 

//=1, 

允许中断服务函数调用

//=0,不允许中断服务函数调用

//LCD1602与单片机接口定义

sfr 

LCD_IO=0x80;

//P0-0x80,P1-0x90,P2-0xA0,P3-0xB0;

sbit 

LCD_RS=P2^0;

//LCD数据/命令选择端(H/L)

LCD_RW=P2^1;

//LCD 

读/写 

选择端(H/L)

LCD_EN=P2^2;

//LCD使能控制端

//LCD1602地址相关

/*

#defineLINE1_HEAD 

0x80 

//第一行DDRAM起始地址

#defineLINE2_HEAD 

0xc0 

//第二行DDRAM起始地址

#defineLINE1 

//第一行

#defineLINE2 

//第二行

#defineLINE_LENGTH 

16 

//每行的最大字符长度(40-DDRAM)

#ifPort_Type_Select 

//选择八位数据模式

unsignedcharLCD_current_addr(void)

{

unsignedcharac_addr;

LCD_EN=0;

LCD_RS=0;

//指令

LCD_RW=1;

//读出

LCD_IO=0xff;

//端口置为输入方式(P0)

LCD_EN=1;

ac_addr=LCD_IO;

return(ac_addr);

}

#else 

//选择四位数据模式

LCD_IO|=0xf0;

ac_addr=LCD_IO&

0xf0;

//高四位

ac_addr|=LCD_IO>

>

4;

//低四位

#endif

//检测LCD忙状态

#ifInt_Transfer 

//允许中断服务函数调用 

voidLCD_busy(void)

unsignedcharac_dat;

unsignedcharbusy_flag;

do

ac_dat=LCD_current_addr();

busy_flag=ac_dat&

0x80;

}while(busy_flag);

//=1表示忙,=0表示空闲

//不允许中断服务函数调用

bitbusy_flag;

busy_flag=(bit)(ac_dat&

0x80);

unsignedcharLCD_current_addr_dat(void)

unsignedcharaddr_dat;

// 

unsignedchari;

LCD_busy();

//或者检查忙最可靠

for(i=0;

i<

3;

i++) 

//要连续读出三次才会有效

LCD_RS=1;

//数据

addr_dat=LCD_IO;

return(addr_dat);

addr_dat=LCD_IO&

addr_dat|=LCD_IO>

voidLCD_cmd(unsignedcharcmd)

//检测忙

LCD_RW=0;

//写入

LCD_IO=cmd;

//传指令

//下降沿有效

LCD_IO&

=0x0f;

//清高四位

LCD_IO|=cmd&

//写高四位

cmd<

<

=4;

//低四位移到高四位

voidLCD_dat(unsignedchardat)

LCD_IO=dat;

//传数据

LCD_IO|=dat&

dat<

//显示定位DDRAM

voidLCD_pos(unsignedcharx,unsignedchary)

if(y) 

LCD_cmd(x|0xc0);

//y=1第二行显示,y=0第一行显示 

0<

=x<

16(40-DD

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

当前位置:首页 > 高等教育 > 院校资料

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

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