大连cms建站模板,网站设计专业有前途吗,网站服务器类型查询,中国营销传播网官网LCD1602
1602液晶也叫1602字符型液晶#xff0c;它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成#xff0c;每个点阵字符位都可以用显示一个字符#xff0c;每位之间有一个点距的间隔#xff0c;每行之间也有间隔#…LCD1602
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成每个点阵字符位都可以用显示一个字符每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用正因为如此所以它不能很好的显示图片。 操作步骤:
初始化写命令RSL设置显示坐标写数据RSH LCD1602关键性的指令设置 功能清除液晶显示器即将 DDRAM 的内容全部填入空白的 ASCII码 20H;光标归位即将光标撤回液晶显示屏的左上方;将地址计数器(AC)的值设为 0。 功能 设定每次定入 1 位数据后光标的移位方向 并且设定每次写入的一个字符是否移动。参数设定的情况如下所示
I/D 0写入新数据后光标左移 1写入新数据后光标右移S 0写入新数据后显示屏不移动 1写入新数据后显示屏整体右移 1 个字符 功能控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下
D 0显示功能关 1显示功能开C 0无光标 1有光标B 0光标闪烁 1光标不闪烁 功能设定数据总线位数、显示的行数及字型。参数设定的情况如下
DL 0数据总线为 4 位 1数据总线为 8 位N 0显示 1 行 1显示 2 行F 05×7 点阵/每字符 15×10 点阵/每字符 RAM地址映射图 功能设定数据总线位数、显示的行数及字型。参数设定的情况如下
DL 0数据总线为 4 位 1数据总线为 8 位N 0显示 1 行 1显示 2 行F 05×7 点阵/每字符 15×10 点阵/每字符 实验代码
lcd.h
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
当使用的是4位数据传输的时候定义
使用8位取消这个定义
**********************************/
//#define LCD1602_4PINS/**********************************
包含头文件
**********************************/
#includereg52.h//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endif/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_EP2^7;
sbit LCD1602_RWP2^5;
sbit LCD1602_RSP2^6;/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c); //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat) ;
/*LCD1602初始化子程序*/
void LcdInit(); #endiflcd.c
#include lcd.h/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数延时1ms
* 输 入 : c
* 输 出 : 无
* 说 名 : 该函数是在12MHZ晶振下12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c) //误差 0us
{uchar a,b;for (; c0; c--){for (b199;b0;b--){for(a1;a0;a--);} }}/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输 入 : com
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com) //写入命令
{LCD1602_E 0; //使能LCD1602_RS 0; //选择发送命令LCD1602_RW 0; //选择写入LCD1602_DATAPINS com; //放入命令Lcd1602_Delay1ms(1); //等待数据稳定LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}
#else
void LcdWriteCom(uchar com) //写入命令
{LCD1602_E 0; //使能清零LCD1602_RS 0; //选择写入命令LCD1602_RW 0; //选择写入LCD1602_DATAPINS com; //由于4位的接线是接到P0口的高四位所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E 0;LCD1602_DATAPINS com 4; //发送低四位Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E 0;
}
#endif
/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat) //写入数据
{LCD1602_E 0; //使能清零LCD1602_RS 1; //选择输入数据LCD1602_RW 0; //选择写入LCD1602_DATAPINS dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E 0;
}
#else
void LcdWriteData(uchar dat) //写入数据
{LCD1602_E 0; //使能清零LCD1602_RS 1; //选择写入数据LCD1602_RW 0; //选择写入LCD1602_DATAPINS dat; //由于4位的接线是接到P0口的高四位所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E 0;LCD1602_DATAPINS dat 4; //写入低四位Lcd1602_Delay1ms(1);LCD1602_E 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E 0;
}
#endif
/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD初始化子程序
{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点
}
#else
void LcdInit() //LCD初始化子程序
{LcdWriteCom(0x32); //将8位总线转为4位总线LcdWriteCom(0x28); //在四位线下的初始化LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点
}
#endifmain.c
/**************************************************************************************
实验现象下载程序后插上LCD1602液晶在开发板上即可显示接线说明 (具体接线图可见开发攻略对应实验的“实验现象”章节)注意事项根据自己使用的LCD1602是否带有转接板如果带有转接板的即为4位需在LCD.H头文件中
将宏#define LCD1602_4PINS打开我们这里使用的LCD1602是8位所以默认将该宏注释 ***************************************************************************************/#include reg52.h //此文件中定义了单片机的一些特殊功能寄存器
#include lcd.htypedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;u8 Disp[] Pechin Science ;/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{u8 i;LcdInit();for(i0;i16;i){LcdWriteData(Disp[i]); }while(1);
}