資源簡介
Arduino的LCD12864例程,含串行和并行兩種驅(qū)動(dòng)模式,其庫文件可以直接使用,注釋詳細(xì),甚至不用看驅(qū)動(dòng)器的Datasheet即可驅(qū)動(dòng)LCD12864。

代碼片段和文件信息
#include?“LCD12864_S.h“
int?LCD12864_SCLK_PORT?=?10; //E引腳串行模式別名
int?LCD12864_SID_PORT?=?11; //RW引腳串行模式別名
int?LCD12864_CS_PORT?=?12; //RS引腳串行模式別名??
//********************************************************************
//LCD12864清屏
//********************************************************************
void?LCD12864_Clear()
{
LCD12864_COM_Write(0x01);
}
//********************************************************************
//LCD12864地址設(shè)置
//********************************************************************
void?LCD12864_SET_Address(?unsigned?char?iunsigned?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;
}
}
/*************************************************************************************
發(fā)送一個(gè)字節(jié)
*************************************************************************************/
void?LCD12864_SendByte(unsigned?char?bbyte)?//發(fā)送一個(gè)字節(jié)
{
unsigned?char?i;
for(i=0;i<8;i++)
{
if((bbyte&0x80)?==?0) //取出最高位
{
digitalWrite(LCD12864_SID_PORTLOW);?
}
else
{
digitalWrite(LCD12864_SID_PORTHIGH);?
}
digitalWrite(LCD12864_SCLK_PORT?LOW);
delayMicroseconds(1);
digitalWrite(LCD12864_SCLK_PORT?HIGH);
delayMicroseconds(1);
digitalWrite(LCD12864_SCLK_PORT?LOW);
delayMicroseconds(1);
bbyte<<=1;?//左移
}??
}
//********************************************************************
//檢測忙信號寫入命令字?ddate?為待寫入的命令字
//********************************************************************
void?LCD12864_COM_Write(?unsigned?char?ddata?)
{
unsigned?char?HdataLdata;??
Hdata=ddata&0xf0; ??//取高四位
Ldata=(ddata<<4)&0xf0;??//取低四位
LCD12864_SendByte(0xf8); ??//發(fā)送起始信號
delayMicroseconds(1);?//延時(shí)是必須的
LCD12864_SendByte(Hdata); ??????//發(fā)送高四位
delayMicroseconds(1);??//延時(shí)是必須的
LCD12864_SendByte(Ldata); ??//發(fā)送低四位
delayMicroseconds(1);??//延時(shí)是必須的
}
//********************************************************************
//數(shù)據(jù)寫入 ddata??為待寫入的8位數(shù)據(jù)
//********************************************************************
void?LCD12864_Data_Write(unsigned?char?ddata)
{
unsigned?char?HdataLdata;??
Hdata=ddata&0xf0; ??//取高四位
Ldata=(ddata<<4)&0xf0;??//取低四位
LCD12864_SendByte(0xfa); ??//發(fā)送起始信號
delayMicroseconds(1);?//延時(shí)是必須的
LCD12864_SendByte(Hdata); ??????//發(fā)送高四位
delayMicroseconds(1);??//延時(shí)是必須的
LCD12864_SendByte(Ldata); ??//發(fā)送低四位
delayMicroseconds(1);??//延時(shí)是必須的
}
//*************************************************************************************
//寫連續(xù)字符函數(shù)
//*************************************************************************************
void?LCD12864_write_word(const?char?*s)
{
while(*s>0)
{
LCD12864_Data_Write(*s);
s++;
????????delay(1);
}
}
//*********************************************
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????????2??2013-08-16?19:30??并行模式\LCD12864_P_MAIN\Debug\li
?????文件??????????2??2013-08-16?19:30??并行模式\LCD12864_P_MAIN\Debug\li
?????文件???????2037??2013-08-16?19:30??并行模式\LCD12864_P_MAIN\Debug\MAIN.log
?????文件???????5303??2013-08-16?19:41??并行模式\LCD12864_P_MAIN\LCD12864_P.cpp
?????文件????????562??2013-08-16?19:38??并行模式\LCD12864_P_MAIN\LCD12864_P.h
?????文件???????2945??2013-08-16?19:40??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.ino
?????文件???17584128??2013-08-16?19:12??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.sdf
?????文件????????896??2013-08-16?18:32??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.sln
????..A..H.?????12800??2013-08-16?19:12??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.suo
?????文件???????4292??2013-08-16?18:32??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.vcxproj
?????文件???????1267??2013-08-16?18:32??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.vcxproj.filters
?????文件????????143??2013-08-16?18:20??并行模式\LCD12864_P_MAIN\LCD12864_P_MAIN.vcxproj.user
?????文件???14635008??2013-08-16?19:55??并行模式\LCD12864_P_MAIN\MAIN.sdf
?????文件????????874??2013-08-16?18:06??并行模式\LCD12864_P_MAIN\MAIN.sln
????..A..H.?????15360??2013-08-16?19:55??并行模式\LCD12864_P_MAIN\MAIN.suo
?????文件???????4244??2013-08-16?18:10??并行模式\LCD12864_P_MAIN\MAIN.vcxproj
?????文件???????1256??2013-08-16?18:10??并行模式\LCD12864_P_MAIN\MAIN.vcxproj.filters
?????文件????????143??2013-08-16?16:50??并行模式\LCD12864_P_MAIN\MAIN.vcxproj.user
?????文件????????995??2013-08-16?18:31??并行模式\LCD12864_P_MAIN\Visual?Micro\.LCD12864_P_MAIN.vsarduino.h
?????文件????????962??2013-08-16?18:09??并行模式\LCD12864_P_MAIN\Visual?Micro\.MAIN.vsarduino.h
?????文件???????2801??2013-08-16?19:41??并行模式\LCD12864_P_MAIN\Visual?Micro\Compile.vmps.xm
?????文件???????2674??2013-08-16?19:41??并行模式\LCD12864_P_MAIN\Visual?Micro\Configuration.Debug.vmps.xm
?????文件???????2801??2013-08-16?19:40??并行模式\LCD12864_P_MAIN\Visual?Micro\Upload.vmps.xm
?????文件??????????2??2013-08-16?19:30??串行模式\LCD12864_S_MAIN\Debug\li
?????文件??????????2??2013-08-16?19:30??串行模式\LCD12864_S_MAIN\Debug\li
?????文件???????2037??2013-08-16?19:30??串行模式\LCD12864_S_MAIN\Debug\MAIN.log
?????文件??????27117??2016-06-14?13:29??串行模式\LCD12864_S_MAIN\hs_err_pid10100.log
?????文件???17584128??2013-08-16?19:12??串行模式\LCD12864_S_MAIN\LCD12864_P_MAIN.sdf
????..A..H.?????12800??2013-08-16?19:12??串行模式\LCD12864_S_MAIN\LCD12864_P_MAIN.suo
?????文件???????4340??2013-08-17?13:26??串行模式\LCD12864_S_MAIN\LCD12864_P_MAIN.vcxproj
............此處省略30個(gè)文件信息
評論
共有 條評論