#include "LCD12864_P.h"
int LCD12864_E_PORT = 10;
int LCD12864_RW_PORT = 11;
int LCD12864_RS_PORT = 12;
int DB[] = {2, 3, 4, 5, 6, 7, 8, 9};
//********************************************************************
//LCD12864地址设置
//********************************************************************
void LCD12864_Clear()
{
LCD12864_COM_Write(0x01);
}
//********************************************************************
//LCD12864地址设置
//********************************************************************
void LCD12864_SET_Address( unsigned char i,unsigned char j)
{
switch(i)
{
case 1:
LCD12864_COM_Write(0x80+(j-1));
break;
case 2:
LCD12864_COM_Write(0x90+(j-1));
break;
case 3:
LCD12864_COM_Write(0x88+(j-1));
break;
case 4:
LCD12864_COM_Write(0x98+(j-1));
break;
default: break;
}
}
//********************************************************************
//BUS OUTPUT
//********************************************************************
void LCD12864_DA_PORT(unsigned char value)
{
unsigned char i;
for (i=0; i < 8; i++)
{
digitalWrite(DB[i],value & 01);
value >>= 1;
}
}
//********************************************************************
//LCD12864 忙 信号检测
//********************************************************************
void LCD12864_WaitIdle()
{
unsigned char i;
for (i = 0; i < 8; i++)
{
pinMode(DB[i], OUTPUT);
}
// LCD12864_DA_PORT(0xff);
digitalWrite(LCD12864_RS_PORT, LOW);
// delayMicroseconds(8);
digitalWrite(LCD12864_RW_PORT, HIGH);
// delayMicroseconds(8);
digitalWrite(LCD12864_E_PORT, HIGH);
// delayMicroseconds(8);
for (i = 0; i < 8; i++)
{
pinMode(DB[i], INPUT);
}
while(digitalRead(DB[7])==1); /*等待BF 不为1*/
for (i = 0; i < 8; i++)
{
pinMode(DB[i], OUTPUT);
}
digitalWrite(LCD12864_E_PORT, LOW);
for(i=0;i<50;i++);
}
//********************************************************************
//检测忙信号写入命令字 com_da 为待写入的命令字
//********************************************************************
void LCD12864_COM_Write( unsigned char com_da)
{
LCD12864_WaitIdle();
digitalWrite(LCD12864_RS_PORT, LOW);
// delayMicroseconds(8);
digitalWrite(LCD12864_RW_PORT, LOW);
// delayMicroseconds(8);
LCD12864_DA_PORT(com_da);
digitalWrite(LCD12864_E_PORT, HIGH);
delayMicroseconds(8);
digitalWrite(LCD12864_E_PORT, LOW);
delayMicroseconds(8);
}
//********************************************************************
//不检测忙信号写入命令字 com_da 为待写入的命令字
//********************************************************************
void LCD12864_NoWaitIdle_COM_Write(unsigned char com_da)
{
digitalWrite(LCD12864_RS_PORT, LOW);
// delayMicroseconds(8);
digitalWrite(LCD12864_RW_PORT, LOW);
// delayMicroseconds(8);
LCD12864_DA_PORT(com_da);
digitalWrite(LCD12864_E_PORT, HIGH);
delayMicroseconds(8);
digitalWrite(LCD12864_E_PORT, LOW);
delayMicroseconds(8);
}
//********************************************************************
//数据写入 da 为待写入的8位数据
//********************************************************************
void LCD12864_Data_Write(unsigned char da)
{
LCD12864_WaitIdle(); /*检测忙信号*/
digitalWrite(LCD12864_RS_PORT, HIGH);
// delayMicroseconds(8);
digitalWrite(LCD12864_RW_PORT, LOW);
LCD12864_DA_PORT(da);
digitalWrite(LCD12864_E_PORT, HIGH);
delayMicroseconds(8);
digitalWrite(LCD12864_E_PORT, LOW);
delayMicroseconds(8);
}
//*************************************************************************************
//写连续字符函数
//*************************************************************************************
void LCD12864_write_word(const char *s)
{
while(*s>0)
{
LCD12864_Data_Write(*s);
s++;
delay(1);
}
}
//********************************************************************
//LCD12864初始化
//********************************************************************
void LCD12864_Reset()
{
unsigned char i;
for (i = 0; i < 8; i++)
{
pinMode(DB[i], OUTPUT);
}
pinMode(LCD12864_E_PORT,OUTPUT);
pinMode(LCD12864_RS_PORT,OUTPUT);
pinMode(LCD12864_RW_PORT,OUTPUT);
delay(100); /*适当延时待LCD自动复位完成*/
LCD12864_COM_Write(0x30); /*使用8位并口通讯*/
delay(10);
LCD12864_COM_Write(0x30); /*使用8位并口通讯*/
delay(10);
LCD12864_COM_Write(0x0c); /*显示开及光标设置*/
delay(10);
LCD12864_COM_Write(0x01); /*显示清屏*/
delay(30);
LCD12864_COM_Write(0x06); /*DDRAM的地址计数器(AC)加1*/
delay(30);
}
//void LCD12864_PHOTO_SET()
//{
// LCD12864_COM_Write(0x36);
// lcd_delay_ms(10);
// LCD12864_COM_Write(0x36);
// lcd_delay_ms(10);
//}
//
void LCD12864_HAIZI_SET()
{
LCD12864_COM_Write(0x30);
delay(10);
LCD12864_COM_Write(0x30);
delay(10);
}
没有合适的资源?快使用搜索试试~ 我知道了~
arduino源代码LCD12864例程包含库
共23个文件
xml:3个
h:3个
tlog:2个
4星 · 超过85%的资源 需积分: 50 57 下载量 87 浏览量
2018-12-28
21:58:29
上传
评论 2
收藏 9.33MB ZIP 举报
温馨提示
在arduino开发板上开发LCD12846的源代码包括库文件,下载就能直接用
资源推荐
资源详情
资源评论
收起资源包目录
lcd12864arduino例程序(含库)并行模式.zip (23个子文件)
并行模式
LCD12864_P_MAIN
MAIN.vcxproj.filters 1KB
MAIN.vcxproj.user 143B
MAIN.vcxproj 4KB
LCD12864_P_MAIN.suo 13KB
MAIN.sln 874B
Debug
MAIN.log 2KB
link.read.1.tlog 2B
link.command.1.tlog 2B
ipch
main-9574ecc9
LCD12864_P_MAIN.vcxproj 4KB
MAIN.sdf 13.96MB
LCD12864_P.h 562B
LCD12864_P_MAIN.vcxproj.filters 1KB
LCD12864_P_MAIN.ino 3KB
LCD12864_P_MAIN.sln 896B
Visual Micro
Upload.vmps.xml 3KB
Configuration.Debug.vmps.xml 3KB
.LCD12864_P_MAIN.vsarduino.h 995B
.MAIN.vsarduino.h 962B
Compile.vmps.xml 3KB
LCD12864_P_MAIN.sdf 16.77MB
LCD12864_P.cpp 5KB
MAIN.suo 15KB
LCD12864_P_MAIN.vcxproj.user 143B
共 23 条
- 1
资源评论
- 均凡丨宏2020-05-26学习了,一直没用上
- hi_young2019-10-21学习了,一直没用上
wwwlixin
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功