引自EDN博客:
mingyuexin1981
说明:
单片机是华邦的78E516B,液晶屏是T6963控制器的240×128点阵的,单片机总线方式访问。基本功能见各个函数的说明:
#include "W78E516.h"
#include
#include
#include "LCD.h"
//#include "matrix.h"
//#include "main.h"
//------------------------------------------------------------
// 函数: 无参数指令写入函数
// 入口参数:
// 返回值 :
// 函数说明:
//------------------------------------------------------------
void LcdWriteCommand_withZero(unsigned char Command)
{
//Check_CDRW();
n_NOP(
);
LCD_COMMAND = Command;
}
//------------------------------------------------------------
// 函数: 1参数指令写入函数
// 入口参数:
// 返回值 :
// 函数说明:
//------------------------------------------------------------
void LcdWriteCommand_withOne(unsigned char Par_data,unsigned char Command)
{
//Check_CDRW();
n_NOP();
LCD_DATA = Par_data;
//Check_CDRW();
n_NOP();
LCD_COMMAND = Command;
}
//------------------------------------------------------------
// 函数: 2参数指令写入函数
// 入口参数:
// 返回值 :
// 函数说明:
//------------------------------------------------------------
void LcdWriteCommand_withTwo(unsigned char Par_data1,unsigned char Par_data2,unsigned char Command)
{
//Check_CDRW();
n_NOP();
LCD_DATA = Par_data1;
//Check_CDRW();
n_NOP();
LCD_DATA = Par_data2;
//Check_CDRW();
n_NOP();
LCD_COMMAND = Command;
}
//------------------------------------------------------------
// 函数: 检测LCD状态
// 入口参数:
// 返回值 :
// 函数说明:
//------------------------------------------------------------
//状态位ST1,ST0 判断函数,读写指令和读写数据
void Check_CDRW(void)
{
while((LCD_COMMAND & 0x03) != 0x03)
{
}
}
//状态位ST2,ST3 判断函数数据自动写
void CheckAutoW(void)
{
while((LCD_COMMAND & 0x08) != 0x08)
{
}
}
//状态位ST5 判断控制器可用
void Check_ERROR(void)
{
while((LCD_COMMAND & 0x20) != 0x20)
&nb