一.硬件电路图
二.实物图
三.程序代码
(1).显示部分LCD1602程序
a.头文件
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
当使用的是4位数据传输的时候定义
**********************************/
#define LCD1602_4PINS
/**********************************
包含头文件
**********************************/
#include
#define uint unsigned int
#define uchar unsigned char
/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^7;
sbit LCD1602_RW=P2^5;
sbit LCD1602_RS=P2^6;
/**********************************
函数声明
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Delay1us(uint a);
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat);
/*LCD1602初始化子程序*/
void LcdInit();
#endif
b.c程序文件
#include"lcd.h"
/*******************************************************************************
* 函数名 : Delay1us
* 函数功能 : 延时函数,延时1us
* 输入 : a
* 输出 : 无
*******************************************************************************/
void Delay1us(uint a)
{
uint b,c;
for(c=a;c>0;c--)
for(b=110;b>0;b--);
}
/*******************************************************************************
* 函数名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输入 : com
* 输出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#else
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E=0;
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DATAPINS=com;//由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
Delay1us(10);
LCD1602_DATAPINS=com<<4;
Delay1us(10);
LCD1602_E=1;
Delay1us(10);
LCD1602_E=0;
}
#endif
/**************************************************************************