?? c_lcd19264_driver.c
字號:
/****************************************************************************
* 文 件 名:c_lcd19264driver.c
* 版 本: V1.0
* 功 能:字符液晶模塊驅(qū)動程序,采用模擬總線方式工作。
* 連 接:
* D0 -- P0.8 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.15 // DB7
*
* R/S -- P0.2 // RS
* R/W -- P0.3 // RW
* E -- P0.4 // E
* CS1 -- P0.5 //CS1
* CS2 -- P0.6 //CS2
* CS3 -- P0.7 //CS3
* R/W 為0進行寫操作,為1時進行讀操作
* D/I 為1表示數(shù)據(jù)傳送,為0表示命令傳送
* E 讀寫脈沖
*
* 作者:黃振升
* 日期:2005/10/31
*---------------歷史版本信息-------------------------------------------------
* 修 改 人: 黃振升
* 版 本: V1.1
* 日 期: 2007.1.20
* 描 述:
****************************************************************************/
#include "config.h"
#if LCD19264_INTERFACE_EN >0
/***********************************************************************************************
*** 數(shù)字用字庫
*********************************************************************************************/
uint8 const Number[] =
{/*0 */
0xF8,0x04,0x04,0x04,0xF8,0x00,0x01,0x02,
0x02,0x02,0x01,0x00,
/*1 */
0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,
/*2 */
0x18,0x84,0x44,0x44,0x38,0x00,0x03,0x02,
0x02,0x02,0x02,0x00,
/*3 */
0x88,0x04,0x24,0x24,0xD8,0x00,0x01,0x02,
0x02,0x02,0x01,0x00,
/*4 */
0xC0,0xB0,0x88,0xFC,0x80,0x00,0x00,0x00,
0x00,0x03,0x00,0x00,
/*5 */
0x3C,0x14,0x14,0x14,0xE4,0x00,0x01,0x02,
0x02,0x02,0x01,0x00,
/*6 */
0xF0,0x28,0x24,0x24,0xC8,0x00,0x01,0x02,
0x02,0x02,0x01,0x00,
/*7 */
0x04,0x04,0x04,0xE4,0x1C,0x00,0x00,0x00,
0x03,0x00,0x00,0x00,
/*8 */
0xD8,0x24,0x24,0x24,0xD8,0x00,0x01,0x02,
0x02,0x02,0x01,0x00,
/*9 */
0x38,0x44,0x44,0x44,0xF8,0x00,0x01,0x02,
0x02,0x01,0x00,0x00
};
uint8 const dot[]=
{
/*. */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00
};
uint8 const zero[]=
{/*. */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00
};
unsigned char const V[12] = {
/*V */
0x00,0x30,0xC0,0x00,0xC0,0x30,0x00,0x00,
0x01,0x02,0x01,0x00
};
uint8 const ynumber[] = { //8*16數(shù)值庫
/*0 */
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*1 */
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*2 */
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*3 */
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
/*4 */
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
/*5 */
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
/*6 */
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*7 */
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
/*8 */
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*9 */
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
/*X */
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
/*. */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
0x00,0x00,0x00,0x00
};
uint8 const ynumber16b[] = {
/*0 */
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*1 CHAR_31 */
0x00,0x00,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0x10,0x00,0x00,0x00,
/*2 CHAR_32 */
0x00,0x30,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x00,0x18,0x14,0x13,0x10,0x08,0x00,
/*3 CHAR_33 */
0x00,0x00,0x10,0x08,0x88,0x78,0x00,0x00,
0x00,0x00,0x10,0x20,0x20,0x11,0x0E,0x00,
/*4 CHAR_34 */
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
0x00,0x03,0x02,0x02,0x02,0x1F,0x02,0x00,
/*5 CHAR_35 */
0x00,0x00,0x70,0x48,0xC8,0x88,0x00,0x00,
0x00,0x10,0x10,0x20,0x10,0x0F,0x00,0x00,
/*6 CHAR_36 */
0x00,0x00,0xE0,0x90,0x88,0x80,0x00,0x00,
0x00,0x07,0x18,0x20,0x20,0x19,0x06,0x00,
/*7 CHAR_37 */
0x00,0x10,0x08,0x08,0x88,0x78,0x00,0x00,
0x00,0x00,0x00,0x18,0x07,0x00,0x00,0x00,
/*8 CHAR_38 */
0x00,0x00,0x78,0x88,0x88,0x78,0x00,0x00,
0x00,0x0C,0x12,0x21,0x21,0x1E,0x00,0x00,
/*9 CHAR_39 */
0x00,0x60,0x98,0x08,0x08,0xF8,0xC0,0x00,
0x00,0x00,0x21,0x12,0x09,0x07,0x00,0x00,
/*A CHAR_41 */
0x00,0x00,0xC0,0x28,0xF0,0x00,0x00,0x00,
0x00,0x1C,0x03,0x02,0x03,0x1F,0x10,0x00,
/*B CHAR_42 */
0x00,0x00,0xF8,0x08,0x88,0x88,0x70,0x00,
0x00,0x00,0x1F,0x11,0x10,0x11,0x1E,0x00,
/*C CHAR_43 */
0x00,0xE0,0x18,0x08,0x08,0x08,0x38,0x00,
0x00,0x0F,0x18,0x20,0x20,0x10,0x08,0x00,
/*D CHAR_44 */
0x00,0xF8,0x08,0x08,0x08,0x18,0xF0,0x00,
0x00,0x1F,0x10,0x10,0x10,0x18,0x0F,0x00,
/*E CHAR_45 */
0x00,0x00,0xF8,0x88,0x88,0xD8,0x00,0x00,
0x00,0x00,0x1F,0x10,0x10,0x11,0x18,0x00,
/*F CHAR_46 */
0x00,0x00,0xF8,0x88,0x88,0x88,0x08,0x00,
0x00,0x00,0x1F,0x00,0x00,0x01,0x00,0x00
};
//16進制字庫
uint8 const NONE[] = { //10權(quán)開方表
/*. */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
};
uint32 const SQURE10[] = { //10權(quán)開方表
1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000
};
/***********************************************************************************************
*** 外圍接口,定義
*********************************************************************************************/
#define DISPON 0X3f //顯示ON
#define DISPOFF 0X3e //顯示0FF
#define DISPFIRST 0Xc0 //顯示起始行定義
#define SETX 0X40 //x定位指令(頁)
#define SETY 0XB8 //x定位指令(頁)
#define Lcdbusy 0x80 //LCM忙判斷標志
/***********************************************************************************************
*** 顯示邊界位置
*********************************************************************************************/
#define MODL 0X00 //左區(qū) 40.
#define MODM 0X40 //左區(qū)和中區(qū)邊界
#define MODR 0X80 //中區(qū)和右區(qū)邊界
#define LCMLIMIT 0XC0 //顯示右區(qū)邊界
/***********************************************************************************************
*** 定義全局變量
*********************************************************************************************/
uint8 X,Y,WR_Data; //列,行,輸出數(shù)據(jù)
uint8 xy; //畫線標志
uint32 LCDreset_flage; //長時間液晶沒有啟動,液晶復(fù)位
uint32 test;
/***********************************************************************
* 名 稱:LCd19264_DispIni()
* 功 能:LCd19264顯示初始化
* 入口參數(shù):無
* 出口參數(shù):無
* 說明 :占用
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
void LCD19264_Init(void)
{
PINSEL0 &= 0x003FFFFF;//根據(jù)需要修改
PINSEL1 &= 0xFFFF0000;
//IO0DIR =IO0DIR &0xff << LCD19264_BusLSB |1 << LCD19264_E |1 << LCD19264_RS | 1 << LCD19264_DI;
IO0DIR =IO0DIR |(0xFF << LCD19264_BusLSB) |(1 << LCD19264_E ) |(1 << LCD19264_DI)|(1 << LCD19264_RW) |( 1 << LCD19264_CS1)|( 1 << LCD19264_CS2)|( 1 << LCD19264_CS3);
LCD19264_BusData(0XFF);
LCD19264_BusData(0XF0);
LCD19264_SCS1();
LCD19264_SCS2();
LCD19264_SCS3();
LCD19264_SDI();
LCD19264_SRW();
LCD19264_SE();
//LCD19264_Writecommand_L(DISPOFF);//關(guān)閉顯示
//LCD19264_Writecommand_M(DISPOFF);
//LCD19264_Writecommand_R(DISPOFF);
LCD19264_Writecommand_L(DISPON);//打開顯示
LCD19264_Writecommand_M(DISPON);
LCD19264_Writecommand_R(DISPON);
LCD19264_Writecommand_L(DISPFIRST);//定義顯示起始行為零
LCD19264_Writecommand_M(DISPFIRST);//定義顯示起始行為零
LCD19264_Writecommand_R(DISPFIRST);//定義顯示起始行為零
LCD19264_Cls(); //清屏
//清屏
X = 0;
Y = 0;
LCD19264_Fix_point(); //定位,坐標00
}
/***********************************************************************
* 名 稱:LCd19264_Busy()
* 功 能:LCd19264左中右讀忙子程序群,兼作選擇HD61202用
* 入口參數(shù):無
* 出口參數(shù):無
* 說明 :占用
* R/S -- P0.3 // RS
* R/W -- P0.4 // RW
* E -- P0.5 // E
* CS1 -- P0.6 //CS1
* CS2 -- P0.7 //CS2
* CS3 -- P0.8 //CS3
* D0 -- P0.9 // DB0
* . -- .
* . -- .
* . -- .
* D7 -- P0.16 // DB7
***********************************************************************/
void Lcd19264_Busy(void)
{
uint32 i,reset_flage;
IO0DIR =IO0DIR & ~(0xFF << LCD19264_BusLSB) ; //設(shè)成輸入方式
DelayNS(1);
LCD19264_CE(); //拉低電平
LCD19264_CDI(); //命令
LCD19264_SRW(); //讀
LCD19264_SE(); //使能
test = LCD19264_BusData_Read();
for(i=0;i<108000;i++)
{
reset_flage = 1;
if ( (LCD19264_BusData_Read() & Lcdbusy)==0)
{
reset_flage = 0;
break;//等待忙完
}
}
if(reset_flage == 1) LCDreset_flage = 1; //重新初始化液晶
IO0DIR =IO0DIR | (0xFF << LCD19264_BusLSB) ; //重新設(shè)成輸出方式
//DelayNS(1);
LCD19264_CE(); //禁能
}
void lcd19264busy_L(void)
{
LCD19264_CCS1() ;LCD19264_SCS2();LCD19264_SCS3();//清零選擇左區(qū)
//DelayNS(1);
Lcd19264_Busy();
}
void lcd19264busy_M(void)
{
LCD19264_SCS1() ;LCD19264_CCS2();LCD19264_SCS3();//清零選擇中區(qū)
//DelayNS(4);
Lcd19264_Busy();
}
void lcd19264busy_R(void)
{
LCD19264_SCS1() ;LCD19264_SCS2();LCD19264_CCS3();//清零選擇右區(qū)
//DelayNS(4);
Lcd19264_Busy();
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -