#include#include #include #include #include #include #include "Test.h"/* 地址定義 */#define d_c_add XBYTE[0x00] //數據口 命令口/* 常數定義 */#define uchar unsigned char#define uint unsigned int/* T6963C 命令定義 */#define LCD_CUR_POS 0x21 /* 光標位置設置(只有設置到有效顯示地址并打開顯示時才看到) */#define LCD_CGR_POS 0x22 /* CGRAM偏置地址設置(可以增加自已的符號) */#define LCD_ADR_POS 0x24 /* 地址指針位置(設置讀寫操作指針) */#define LCD_TXT_STP 0x40 /* 文本區首址(從此地址開始向屏幕左上角顯示字符) */#define LCD_TXT_WID 0x41 /* 文本區寬度(設置顯示寬度,N/6或N/8,其中N為x軸的點數) */#define LCD_GRH_STP 0x42 /* 圖形區首址(從此地址開始向屏幕左上角顯示點) */#define LCD_GRH_WID 0x43 /* 圖形區寬度(設置顯示寬度,N/6或N/8,其中N為x軸的點數) */#define LCD_MOD_OR 0x80 /* 顯示方式:邏輯或 */#define LCD_MOD_XOR 0x81 /* 顯示方式:邏輯異或 */#define LCD_MOD_AND 0x82 /* 顯示方式:邏輯與 */#define LCD_MOD_TCH 0x83 /* 顯示方式:文本特征 */#define LCD_DIS_SW 0x90 /* 顯示開關:D0=1/0,光標閃爍啟用/禁用 *// * D1=1/0,光標顯示啟用/禁用 *//* D2=1/0,文本顯示啟用/禁用(打開后再使用) *//* D3=1/0,圖形顯示啟用/禁用(打開后再使用) */#define LCD_CUR_SHP 0xA0 /* 光標形狀選擇:0xA0-0xA7表示光標占的行數 */#define LCD_AUT_WR 0xB0 /* 自動寫設置 */#define LCD_AUT_RD 0xB1 /* 自動讀設置 */#define LCD_AUT_OVR 0xB2 /* 自動讀/寫結束 */#define LCD_INC_WR 0xC0 /* 數據一次寫,地址加1 */#define LCD_INC_RD 0xC1 /* 數據一次讀,地址加1 */#define LCD_DEC_WR 0xC2 /* 數據一次寫,地址減1 */#define LCD_DEC_RD 0xC3 /* 數據一次讀,地址減1 */#define LCD_NOC_WR 0xC4 /* 數據一次寫,地址不變 */#define LCD_NOC_RD 0xC5 /* 數據一次讀,地址不變 */#define LCD_SCN_RD 0xE0 /* 屏讀 */#define LCD_SCN_CP 0xE8 /* 屏拷貝 */#define LCD_BIT_OP 0xF0 /* 位操作:D0-D2--定義D0-D7位,D3--1為置位,0為清除 *//* 定義標志位 */sbit CD = P1^0;sbit CE = P1^1;sbit light = P1^2;extern uchar code HZTable[ ][32];extern uchar code ASCII_DOT_LIB[][16];/********************************************************************************************************//************************************************************************ 名稱:LCD_TestStaBit01()* 功能:判斷讀寫指令和讀寫數據是否允許。* 入口參數:無* 出口參數:返回0表示禁止,否則表示允許***********************************************************************/uchar LCD_TestStaBit01(void){ uchar i;CD=1;for(i=100; i>0; i--){ if( (d_c_add&0x03)==0x03 ) break;}return(i);}/************************************************************************ 名稱:LCD_TestStaBit02()* 功能:查詢是否可數據自動讀狀態* 入口參數:無* 出口參數:返回0表示禁止,否則表示允許***********************************************************************/uchar LCD_TestStaBit02(void){ uchar i;CD=1;for(i=100; i>0; i--){ if( (d_c_add&0x04)==0x04 ) break;}return(i);}/************************************************************************ 名稱:LCD_TestStaBit03()* 功能:數據自動寫狀態是否允許。* 入口參數:無* 出口參數:返回0表示禁止,否則表示允許***********************************************************************/uchar LCD_TestStaBit03(void){ uchar i;CD=1;for(i=100; i>0; i--){ if( (d_c_add&0x08)==0x08 ) break;}return(i);}/********************************************************************************************************//************************************************************************ 名稱:LCD_ReadState()* 功能:讀取狀態字子程序。* 入口參數:無* 出口參數:返回值即為讀出的狀態字* 說明:函數會設置LCM數據總線為輸入方式***********************************************************************/LCD_WriteCommand(uchar command){CD=1;d_c_add=command;}/********************************************************************************************************//************************************************************************ 名稱:LCD_WriteData()* 功能:寫數據子程序。(發送數據前,不檢查液晶模塊的狀態)* 入口參數:dat 要寫入LCM的數據* 出口參數:無* 說明:函數會設置LCM數據總線為輸出方式***********************************************************************/LCD_WriteData(uchar dat){CD=0;d_c_add=dat;}/********************************************************************************************************//************************************************************************ 名稱:LCD_ReadData()* 功能:讀取數據子程序。* 入口參數:無* 出口參數:返回值即為讀出的數據* 說明:函數會設置LCM數據總線為輸入方式***********************************************************************/uchar LCD_ReadData(void){uchar dat;CD=0;dat=d_c_add;return dat;}
評論