📄 ym_160128.txt
字号:
//*********1***************************************************
//Copyright(C)2009,桂林电子科技大学
// YM_160128A液晶驱动头文件
//文件名称:YM_160128A.h
//文件标识:(内参)
//摘 要:
// 1.配合源文件使用;
// 2.硬件参考作品;
// 3.
//
//当前版本:1.0
//作 者: 张志明
//完成日期:
//
//取代版本:无
//原 作 者:
//完成日期:无
//
//硬件连接:
//
// LCD_YM_160128A_WR(6) ---------- P2^3
// LCD_YM_160128A_RD(7) ---------- P2^2
// LCD_YM_160128A_CE(8) ---------- P2^1
// LCD_YM_160128A_CD(9) ---------- P2^0
// LCD_YM_160128A_RESET(11) --------- P2^4
// LCD_YM_160128A_DATA(12~19) ------- P0
//
// LCD_YM_160128A_(1) ---------- GND(框架)
// LCD_YM_160128A_(2) ---------- GND(系统)
// LCD_YM_160128A_(3) ---------- VDD(+5V )
// LCD_YM_160128A_(4) ---------- VADJ(LCD对比度调整电压-12.5V)
// LCD_YM_160128A_(5) ---------- VEE(-15V)
// LCD_YM_160128A_(10) ---------- HALT(时钟操作暂停信号)
// LCD_YM_160128A_(20) ---------- NC
//
//*************************************************************
#ifndef LCD_YM_160128A_H
#define LCD_YM_160128A_H
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
#define LCD_YM_160128A_DATA P0
sbit LCD_YM_160128A_WR = P2^0; // 命令和数据写信号:"低"有效
sbit LCD_YM_160128A_RD = P2^1; // 命令和数据读信号:"低"有效
sbit LCD_YM_160128A_CE = P2^2; // 片 选信号:"低"有效
sbit LCD_YM_160128A_CD = P2^3; // "高":写命令,读状态
sbit READCLK = P3^3;
// "低":数据读写
sbit LCD_YM_160128A_RESET = P2^4; // 复 位信号:"低"复位
#define CursorPointer 0x21 // 光标地址设置
#define OffsetReg 0x22 // CGRAM偏移地址设置
#define AddrSet 0x24 // 地址指针位置显示地址设置
#define TextHomeAddr 0x40 // 文本首地址
#define TextArea 0x41 // 文本宽度设置
#define GraHomeAddr 0x42 // 图形首地址设置
#define GraArea 0x43 // 图形宽度设置
#define OrMode 0x80 // 或模式显示
#define ExorMode 0x81 // 异或模式显示
#define AndMode 0x83 // 与模式显示
#define TextAttMode 0x84 // 文本属性模式
#define InterCGROM 0 // 内部CGROM
#define ExCGRAM 0x08 // 外部CGRAM
#define DisplayOff 0x90 // 显示关闭
// 显示开关: D0=1/0:光标闪烁启用/禁用;
// D1=1/0:光标显示启用/禁用;
// D2=1/0:文本显示启用/禁用;
// D3=1/0:图形显示启用/禁用;
#define CursorOn 0x92 // 光标显示,但不闪烁
#define CursorBlink 0x93 // 光标闪烁
#define TextOn 0x94 // 文本模式打开
#define GraOn 0x98 // 图形模式打开
#define TGAllOn 0x9c // 文本图形模式都打开
#define DataAutoWrite 0xb0 // 数据自动写
#define DataAutoRead 0xb1 // 数据自动读
#define ExitAutoRW 0xb2 // 退出数据自动读写模式
#define DataWAddrI 0xc0 // 数据写,地址加1
#define DataWAddrD 0xc2 // 数据写,地址减1
#define DataWAddrNV 0xc4 // 数据写,地址不变
#define DataRAddrI 0xc1 // 数据读,地址加1
#define DataRAddrD 0xc3 // 数据读,地址减1
#define DataRAddrNV 0xc5 // 数据读,地址不变
#define ScreenPeek 0xe0 // 屏读
#define ScreenCopy 0xe8 // 屏拷贝
#define LineChar 32 // 设置宽度
#endif
//***************************************文件结束******************************************************
#include<reg52.h>
#include"YM_160128A.h"
uchar Cursor_X,Cursor_Y; //光标的坐标
//*******************************************
//函数名称:uchar LCD_YM_160128A_ReadStatus(void)
//函数功能:读取液晶YM_160128A当前状态
//形式参数:无
//行参说明:无
//返回参数:读回的状态
//使用说明:
// 状态字格式: STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0
// 状态字说明:
// STA0:指令读写状态 1准备好 0忙
// STA1:数据读写状态 1准备好 0忙
// STA2:数据自动读状态 1准备好 0忙
// STA3:数据自动写状态 1准备好 0忙
// STA4:未用
// STA5:控制器运行检测可能性 1可能 0不能
// STA6:屏读/拷贝出错状态 1出错 0正确
// STA7:闪烁状态检测 1正常显示 0关显示
//
//*******************************************
uchar LCD_YM_160128A_ReadStatus(void)
{
uchar ucDecode;
LCD_YM_160128A_DATA = 0xff;
LCD_YM_160128A_CE = 0; //片选有效
LCD_YM_160128A_CD = 1;
LCD_YM_160128A_RD = 0; //**********01**********
ucDecode = LCD_YM_160128A_DATA;
LCD_YM_160128A_RD = 1;
LCD_YM_160128A_CD = 0;
LCD_YM_160128A_CE = 1;
return ucDecode;
}
//*******************************************
//函数名称:void LCD_YM_160128A_CheckRW(void)
//函数功能:液晶YM_160128A读写查忙
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:
// 判断状态位STA1,STA0子程序(读写指令和读写数据状态),在写指令的读,
// 写数据之前这两个标志位必须同时为1
//*******************************************
void LCD_YM_160128A_CheckRW(void)
{
uchar databusy;
do //**********02**********
{
databusy = LCD_YM_160128A_ReadStatus();
}
while( !(databusy&0x03) );
}
//*******************************************
//函数名称:void LCD_YM_160128A_AutoRcheck(void)
//函数功能:液晶YM_160128A自动读查忙
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:
// 判断状态位STA2的子程序(数据自动读状态),该位在数据自动读操作过程中
// 取代STA0和STA1有效.在连续读过程中每读一次之前都要确认STA2=1
//*******************************************
void LCD_YM_160128A_AutoRcheck(void)
{
uchar databusy;
do
{ //**********03**********
databusy = LCD_YM_160128A_ReadStatus();
}
while( !(databusy&0x04) );
}
//*******************************************
//函数名称:void LCD_YM_160128A_AutoWcheck(void)
//函数功能:液晶YM_160128A自动写查忙
//形式参数:无
//行参说明:无
//返回参数:无
//使用说明:
// 判断状态位STA3子程序(数据自动写状态)
//*******************************************
void LCD_YM_160128A_AutoWcheck(void)
{
uchar databusy;
do //**********04**********
{
databusy = LCD_YM_160128A_ReadStatus();
}
while( !(databusy&0x08) );
}
//*******************************************
//函数名称:void LCD_YM_160128A_WriteData(uchar ucDat)
//函数功能:向液晶YM_160128A写数据
//形式参数:uchar ucDat
//行参说明:要写的数据
//返回参数:无
//使用说明:无
//*******************************************
void LCD_YM_160128A_WriteData(uchar ucDat)
{
LCD_YM_160128A_CheckRW();
LCD_YM_160128A_CE = 0; //片选有效
LCD_YM_160128A_CD = 0;
LCD_YM_160128A_DATA = ucDat; //**********向液晶DMF5001写数据**********
LCD_YM_160128A_WR = 0;
LCD_YM_160128A_WR = 1;
LCD_YM_160128A_CD = 1;
LCD_YM_160128A_CE = 1;
}
//*******************************************
//函数名称:void LCD_YM_160128A_WriteCommand(uchar ucCom)
//函数功能:向液晶YM_160128A写命令
//形式参数:uchar ucCom
//行参说明:要写的命令
//返回参数:无
//使用说明:无
//*******************************************
void LCD_YM_160128A_WriteCommand(uchar ucCom)
{
LCD_YM_160128A_CheckRW();
LCD_YM_160128A_CE = 0; //片选有效
LCD_YM_160128A_CD = 1; //**********向液晶DMF5001写命令**********
LCD_YM_160128A_DATA = ucCom;
LCD_YM_160128A_WR = 0;
LCD_YM_160128A_WR = 1;
LCD_YM_160128A_CD = 0;
LCD_YM_160128A_CE = 1;
}
//*******************************************
//函数名称:uchar LCD_YM_160128A_ReadData(void)
//函数功能:从液晶YM_160128A读数据
//形式参数:
//行参说明:
//返回参数:无
//使用说明:无
//*******************************************
uchar LCD_YM_160128A_ReadData(void)
{
uchar ucDat;
LCD_YM_160128A_CheckRW();
LCD_YM_160128A_CE = 0; //片选有效
LCD_YM_160128A_CD = 0;
LCD_YM_160128A_WR = 1;
LCD_YM_160128A_DATA = 0xff;
LCD_YM_160128A_RD = 0;
ucDat = LCD_YM_160128A_DATA;
LCD_YM_160128A_RD = 1;
LCD_YM_160128A_CD = 1;
LCD_YM_160128A_CE = 1;
return ucDat;
}
//*******************************************
//函数名称:void LCD_YM_160128A_WriteMode1(uchar ucData,uchar ucCom)
//函数功能:YM_160128A写方式1
//形式参数:uchar ucData,uchar ucCom
//行参说明: 参数1 , 指令
//返回参数:无
//使用说明:无
//*******************************************
void LCD_YM_160128A_WriteMode1(uchar ucData,uchar ucCom)
{
LCD_YM_160128A_WriteData(ucData); //**********LcdDMF5001写方式1**********
LCD_YM_160128A_WriteCommand(ucCom);
}
//*******************************************
//函数名称:void LCD_YM_160128A_WriteMode2(uchar ucData1,uchar ucData2,uchar ucCom)
//函数功能:YM_160128A写方式2
//形式参数:uchar ucData1,uchar ucData2,uchar ucCom
//行参说明: 参数1 , 参数2 , 指令
//返回参数:无
//使用说明:无
//*******************************************
void LCD_YM_160128A_WriteMode2(uchar ucData1,uchar ucData2,uchar ucCom)
{
LCD_YM_160128A_WriteData(ucData1); //**********LcdDMF5001写方式2**********
LCD_YM_160128A_WriteData(ucData2);
LCD_YM_160128A_WriteCommand(ucCom);
}
//*******************************************
//函数名称:void LCD_YM_160128A_AutoWriteData(uchar ucDat)
//函数功能:YM_160128A自动写数据
//形式参数:uchar ucDat
//行参说明:数据
//返回参数:无
//使用说明:无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -