資源簡(jiǎn)介
已經(jīng)調(diào)試通過的240128程序,底層驅(qū)動(dòng),寫漢字,畫圖,等驅(qū)動(dòng)程序
代碼片段和文件信息
//**********************************************************************************T6963驅(qū)動(dòng)程序,已調(diào)試通過
//?LCM(OCM-240128)顯示程序
//**********************************************************************************
#include?“stc12c5a16s2.h“
#include?“includes.h“
#include?“intrins.h“
#include?“math.h“
#include?“ZIMO.H“
//?T6963C?端口定義
//#define?LCMDW XBYTE[0x0000] //數(shù)據(jù)口0x8000
//#define?LCMDW XBYTE[0x0100] //命令口0x8100
#define???LCMDW???P0
#define???LCMCW???P0
sbit??????LCMCD?=?P1^5; //命令數(shù)據(jù)通道選擇
sbit??????LCMWR?=?P1^3; //寫
sbit??????LCMRD?=?P1^2; //讀
sbit??????LCMRST?=?P1^6;
sbit??????LCMCE?=?P1^4;
sbit??????LCMFS?=?P1^7;
#define??????End????????????0xff?//結(jié)束項(xiàng)
//?T6963C?命令定義
#define?CUR_POS 0x21 //?光標(biāo)位置設(shè)置
#define?CGR_POS 0x22 //?CGRAM偏置地址設(shè)置
#define?ADD_POS 0x24 //?+地址指針位置
#define?TXT_STP 0x40 //?+文本區(qū)首址
#define?TXT_WID 0x41 //?+文本區(qū)寬度
#define?GRH_STP 0x42 //?+圖形區(qū)首址
#define?GRH_WID 0x43 //?+圖形區(qū)寬度
#define?MOD_OR 0x80 //?+顯示方式:邏輯“或”
#define?MOD_XOR 0x81 //?顯示方式:邏輯“異或”
#define?MOD_AND 0x82 //?顯示方式:邏輯“與”
#define?MOD_TCH 0x83 //?顯示方式:文本特征
#define?DIS_SW 0x90 //?+顯示開關(guān):D0=1/0:光標(biāo)閃爍啟用/禁用;
//??D1=1/0:光標(biāo)顯示啟用/禁用;
//??D2=1/0:文本顯示啟用/禁用;
//??D3=1/0:圖形顯示啟用/禁用;
#define?CUR_SHP 0xA0 //?+光標(biāo)形狀選擇:0xA0-0xA7表示光標(biāo)占的行數(shù)
#define?AUT_WR 0xB0 //?+自動(dòng)寫設(shè)置
#define?AUT_RD 0xB1 //?自動(dòng)讀設(shè)置
#define?AUT_OVR 0xB2 //?+自動(dòng)讀/寫結(jié)束
#define?INC_WR 0xC0 //?數(shù)據(jù)一次寫,地址加1
#define?INC_RD 0xC1 //?數(shù)據(jù)一次讀,地址加1
#define?DEC_WR 0xC2 //?數(shù)據(jù)一次寫,地址減1
#define?DEC_RD 0xC3 //?數(shù)據(jù)一次讀,地址減1
#define?NOC_WR 0xC4 //?數(shù)據(jù)一次寫,地址不變
#define?NOC_RD 0xC5 //?數(shù)據(jù)一次讀,地址不變
#define?SCN_RD 0xE0 //?屏讀
#define?SCN_CP 0xE8 //?屏拷貝
#define?BIT_OP 0xF0 //?位操作:D0-D2:定義D0-D7位;D3:1置位;0:清除
/*******************************************************
//?狀態(tài)位STA1STA0判斷(讀寫指令和讀寫數(shù)據(jù))
********************************************************/
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; //若返回零,說(shuō)明錯(cuò)誤
}
/*******************************************************
//?狀態(tài)位ST3判斷(數(shù)據(jù)自動(dòng)寫狀態(tài))
********************************************************/
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; //?若返回零,說(shuō)明錯(cuò)誤
}
/*-------------------------------------------------------
???寫數(shù)據(jù)?,需要將LCMCD 置零
---------------------------------------------------------*/
void?fnWrDat(unsigned?char?uDat)
{
LCMCD?=?0;?????????????????????//數(shù)據(jù)通道打開
LCMRD?=?1; ???//讀數(shù)據(jù)無(wú)效
LCMDW?=?uDat; ???//返回?cái)?shù)據(jù)
LCMWR?=?0; ???//寫數(shù)據(jù)有效
_nop_();
_nop_();
LCMWR?=?1; ???//寫數(shù)據(jù)禁止,產(chǎn)生一個(gè)上升沿
}
/*-------------------------------------------------------
???寫命令?,需要將LCMCD 置1
------
評(píng)論
共有 條評(píng)論