-
序
写这篇文章前,我刚刚完成LCD1602的学习,对它也有了一些感悟,当然也存在一些困惑,在这里,我将尽量把我的感悟详细的保存。 -
LCD1602
1602分为8引脚的和4引脚的,所以,我们在编写它的**.h**文件时需要分情况讨论。
而整个.h文件需要包含写命令的函数以及写数据的函数。这两个函数大体一致,区别在于RS引脚的设置。当它为0时,意味着写入命令,而当它为1时,则是写入数据。需要注意的是,最开始的时候,E和R/W都是低电平。但随着数据(命令)的输入,变化的只有E。当E为下降沿时,数据(命令)发出。
以下就是LCD1602的.h文件全部:
#include "lcd.h"
void Lcd1602_Delay1ms(uint c)
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
1. 函 数 名 : LcdWriteCom
2. 函数功能 : 向LCD写入一个字节的命令
3. 输 入 : com
4. 输 出 : 无
*******************************************************************************/
#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;
}