资源简介
已经调试通过的240128程序,底层驱动,写汉字,画图,等驱动程序
代码片段和文件信息
//**********************************************************************************T6963驱动程序,已调试通过
// LCM(OCM-240128)显示程序
//**********************************************************************************
#include “stc12c5a16s2.h“
#include “includes.h“
#include “intrins.h“
#include “math.h“
#include “ZIMO.H“
// T6963C 端口定义
//#define LCMDW XBYTE[0x0000] //数据口0x8000
//#define LCMDW XBYTE[0x0100] //命令口0x8100
#define LCMDW P0
#define LCMCW P0
sbit LCMCD = P1^5; //命令数据通道选择
sbit LCMWR = P1^3; //写
sbit LCMRD = P1^2; //读
sbit LCMRST = P1^6;
sbit LCMCE = P1^4;
sbit LCMFS = P1^7;
#define End 0xff //结束项
// T6963C 命令定义
#define CUR_POS 0x21 // 光标位置设置
#define CGR_POS 0x22 // CGRAM偏置地址设置
#define ADD_POS 0x24 // +地址指针位置
#define TXT_STP 0x40 // +文本区首址
#define TXT_WID 0x41 // +文本区宽度
#define GRH_STP 0x42 // +图形区首址
#define GRH_WID 0x43 // +图形区宽度
#define MOD_OR 0x80 // +显示方式:逻辑“或”
#define MOD_XOR 0x81 // 显示方式:逻辑“异或”
#define MOD_AND 0x82 // 显示方式:逻辑“与”
#define MOD_TCH 0x83 // 显示方式:文本特征
#define DIS_SW 0x90 // +显示开关:D0=1/0:光标闪烁启用/禁用;
// D1=1/0:光标显示启用/禁用;
// D2=1/0:文本显示启用/禁用;
// D3=1/0:图形显示启用/禁用;
#define CUR_SHP 0xA0 // +光标形状选择:0xA0-0xA7表示光标占的行数
#define AUT_WR 0xB0 // +自动写设置
#define AUT_RD 0xB1 // 自动读设置
#define AUT_OVR 0xB2 // +自动读/写结束
#define INC_WR 0xC0 // 数据一次写,地址加1
#define INC_RD 0xC1 // 数据一次读,地址加1
#define DEC_WR 0xC2 // 数据一次写,地址减1
#define DEC_RD 0xC3 // 数据一次读,地址减1
#define NOC_WR 0xC4 // 数据一次写,地址不变
#define NOC_RD 0xC5 // 数据一次读,地址不变
#define SCN_RD 0xE0 // 屏读
#define SCN_CP 0xE8 // 屏拷贝
#define BIT_OP 0xF0 // 位操作:D0-D2:定义D0-D7位;D3:1置位;0:清除
/*******************************************************
// 状态位STA1STA0判断(读写指令和读写数据)
********************************************************/
unsigned char fnST1(void)
{
unsigned char i;
LCMCW = 0xff;
LCMCD = 1; //打开指令通道
LCMRD = 0; //允许读
LCMWR = 1; //禁止写
for( i = 10; i > 0; i-- )
{
if((LCMCW & 0x03) == 0x03)
break;
}
LCMRD = 1;
return i; //若返回零,说明错误
}
/*******************************************************
// 状态位ST3判断(数据自动写状态)
********************************************************/
unsigned char fnST3(void)
{
unsigned char i;
LCMCW = 0xff;
LCMCD = 1; //打开指令通道
LCMRD = 0; //允许读
LCMWR = 1; //禁止写
for( i = 10; i > 0; i--)
{
if((LCMCW & 0x08) == 0x08)
break;
}
LCMRD = 1;
return i; // 若返回零,说明错误
}
/*-------------------------------------------------------
写数据 ,需要将LCMCD 置零
---------------------------------------------------------*/
void fnWrDat(unsigned char uDat)
{
LCMCD = 0; //数据通道打开
LCMRD = 1; //读数据无效
LCMDW = uDat; //返回数据
LCMWR = 0; //写数据有效
_nop_();
_nop_();
LCMWR = 1; //写数据禁止,产生一个上升沿
}
/*-------------------------------------------------------
写命令 ,需要将LCMCD 置1
------
- 上一篇:ListView异步加载图片
- 下一篇:鼠标获取OpenGL模型的坐标
评论
共有 条评论