标题:
lcd1602显示的单片机子程序 模块化可多次调用 分享给大家
[打印本页]
作者:
xws245925587
时间:
2018-4-19 19:10
标题:
lcd1602显示的单片机子程序 模块化可多次调用 分享给大家
给大家分享一个lcd1602显示的子程序模块化可多次调用,非常方便移植,不改或改一点就可以用到自己的程序中
0.jpg
(28.2 KB, 下载次数: 42)
下载附件
2018-4-19 21:43 上传
单片机源程序如下:
#include "lcd1602.h"
/*LCD1602忙碌等待*/
void LCD1602Wait()
{
unsigned char sta;//读取LCD1602状态字
/*读取液晶状态字之前必须将P2口全部拉高*/
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
LCD1602_EN = 0;
do
{
LCD1602_EN = 1;
sta = LCD1602_DB;//读状态字
LCD1602_EN = 0;
} while (sta & 0x80); //检测最高位是否为1,1忙碌,0空闲
}
/*LCD1602写命令*/
void LCD1602WriteCmd(unsigned char cmd)
{
//读写前要进行液晶的忙碌等待
LCD1602Wait();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_DB = cmd;
LCD1602_EN = 1;//高脉冲
LCD1602_EN = 0;//关闭液晶输出
}
/*LCD1602写数据*/
void LCD1602WriteData(unsigned char dat)
{
LCD1602Wait();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_EN = 0;
LCD1602_DB = dat;//送入数据
LCD1602_EN = 1;//高脉冲
LCD1602_EN = 0;//关闭液晶输出
}
/*液晶初始化*/
void InitLCD1602()
{
LCD1602WriteCmd(0x38); //写指令38H
LCD1602WriteCmd(0x0C); //开显示不显示光标
LCD1602WriteCmd(0x06); //写入字符时字符指针++且光标++
LCD1602WriteCmd(0x01); //显示清屏
}
/*在LCD1602的坐标(x, y)位置显示一个字节*/
void LcdShowData(unsigned char x, unsigned char y, unsigned char byte)
{
unsigned char addr;
if (y == 0)
{
addr = 0x00 + x; //第一行的x位置显示
}
else
{
addr = 0x40 + x; //第二行x的位置显示
}
LCD1602WriteCmd(addr + 0x80);
LCD1602WriteData(byte);
}
/*在LCD1602的坐标(x, y)位置显示str*/
void LcdShowStr(unsigned char x, unsigned char y, unsigned char * str)
{
unsigned char addr;
if (y == 0)
{
addr = 0x00 + x; //第一行的x位置显示
}
else
{
addr = 0x40 + x; //第二行x的位置显示
}
LCD1602WriteCmd(addr + 0x80);
while (*str != '\0')
{
LCD1602WriteData(*str++);
}
}
//*设置光标的位置为(x, y)
void LcdSetCoursor(unsigned char x, unsigned char y)
{
unsigned char addr;
if (y == 0)
{
addr = 0x00 + x;
}
else
{
addr = 0x40 + x;
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
1602显示函数.zip
(27.6 KB, 下载次数: 38)
2018-4-19 19:10 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
hhdsdy
时间:
2019-11-14 23:40
下载一个参考一下,谢谢了!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1