标题:
LCD1602的单片机库文件
[打印本页]
作者:
i66580
时间:
2020-2-13 12:38
标题:
LCD1602的单片机库文件
写了一个1602 库希望可以方便大家开发
有不足之处请指出,谢谢!
测试机型
STC8A8K64S4A12
单片机源程序如下:
#include "delay.h"
#include "stc8.h"
sbit rs=P3^5;
sbit rw=P3^6; //1602 IO口定义 这里用的数据口是P0口
sbit ep=P3^7;
unsigned char lcd_busy() //查忙 这部很重要 否则有的显示容易出现乱码
{
unsigned char result;
rs = 0;
delay(100);
rw = 1;
delay(100);
ep = 1;
delay(100);
result = (P0&0x80);
delay(100);
ep = 0;
delay(100);
return result; //返回值
}
void lcd_com(unsigned char com)// 地址
{
while(lcd_busy());
rs=0;
delay(100);
ep=0;
delay(100);
rw=0;
delay(100);
P0=com;
delay(100);
ep=1;
delay(100);
ep=0;
delay(100);
}
void lcd_date(unsigned char date)//采集输出数据
{
while(lcd_busy());
rs=1; //1是些数据 0是写指令
delay(100);
rw=0; // 1是读 0是写
delay(100);
ep=0; //E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令
delay(100);
P0=date;
delay(100);
ep=1;
delay(100);
ep=0;
delay(100);
}
void lcd_pos(unsigned char pos)
{
lcd_com(pos+0x80); //数据指针=80+地址变量
}
void lcddisplay(int posision,char e[]){
int i=0;
delay(300);
lcd_pos(posision);
while(e[i]!='\0') //显示字母
{
lcd_date(e[i]);
i++;
}
}
void lcddisplayl2(int posision,char e[]){
lcddisplay(0x40+posision,e);
}
void lcddisplaycodel2(int posision,char e){
delay(300);
lcd_pos(0x40+posision);
delay(300);
lcd_date(e);
}
void lcddisplaycode(int posision,char e){
delay(300);
lcd_pos(posision);
delay(300);
lcd_date(e);
}
void init()//1602初始化
{
unsigned char code v[]={""};
lcd_com(0x38);
delay(50);
lcd_com(0x38);
delay(50);
lcd_com(0x38);
delay(50);
lcd_com(0x0c);
delay(50);
lcd_com(0x06);
delay(50);
lcd_com(0x01);
delay(600);
lcddisplay(0,v);
}
复制代码
所有资料51hei提供下载:
LCD - 副本.rar
(59.97 KB, 下载次数: 6)
2020-2-13 12:37 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
i66580
时间:
2020-2-15 18:38
代码更新
lcd lib v2添加屏幕清除
u 上
d下
其他 全清
添加延时函数
LCD lib v2.rar
2020-2-15 18:36 上传
点击文件名下载附件
下载积分: 黑币 -5
188.79 KB, 下载次数: 10, 下载积分: 黑币 -5
LCD lib v2.rar
作者:
桃源客
时间:
2020-2-15 21:12
代码有特色,下来学下。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1