?? main2.c
字號:
/********************************************************************************************
* 文 件 名:test019.c
* 功 能:LCM12864液晶模塊驅動。
* 硬件條件:1.CPU型號:AT89S52
* 2.晶振:12.000MHz
* 3.用跳線帽短接JP4跳線,即P0口全部接上拉電阻。
* 4.LCM12864與AT89S52的連接如下:
*
* LCM12864 AT89S52 備 注
* ==================================================================================
* RS P2.7 0:寫指令或讀狀態; 1:數據操作
* R/W P2.6 0:進行寫操作; 1:進行讀操作
* E P2.5 讀寫脈沖:在E下降沿,數據被鎖存(寫)入KS0108
* 在E高電平期間,數據被讀出。
* DB0 P0.0 數據線0
* DB1 P0.1 數據線1
* DB2 P0.2 數據線2
* DB3 P0.3 數據線3
* DB4 P0.4 數據線4
* DB5 P0.5 數據線5
* DB6 P0.6 數據線6
* DB7 P0.7 數據線7
* CS1 P2.4 高電平選通,選中左半屏。.
* RESET P2.2 低電平有效,復位信號有效時,關閉液晶顯示,使顯示
* 起始行為0,該引腳可與MCU相連,由MCU控制;也可以
* 直接接VDD,使之不起作用。
* LEDK(BLK) P2.1 背光控制,高電平點亮。
* 注意:LEDK與P2.1不是直接連接!P2.1應通過一個1K的
* 電阻接8050三極管的B極,LEDK接8050的C極,8050
* 的E極接地。
* ==================================================================================
*
*
* 說 明:用戶可根據實際情況,改變上述的連接關系。
* 作 者:POWER
* 日 期:2006年12月12號
* 斯凱科技主頁:http://www.armsky.net/
* 斯凱科技論壇:www.armsky.net/bbs
*********************************************************************************************/
#include "config.h" // 包含頭文件
/* 與編譯器無關的數據類型定義 */
/********************************************************************************************/
//typedef unsigned char uint8; // 無符號8位整型變量
//typedef signed char int8; // 有符號8位整型變量
//typedef unsigned short uint16; // 無符號16位整型變量
//typedef signed short int16; // 有符號16位整型變量
//typedef unsigned int uint32; // 無符號32位整型變量
//typedef signed int int32; // 有符號32位整型變量
//typedef float fp32; // 單精度浮點數(32位長度)
//typedef double fp64; // 雙精度浮點數(64位長度)
/********************************************************************************************/
#define LCM12864_DB7_DB0 0xff<<8 //p0.8-15 // 定義LCM12864的數據總線
/* 定義位變量 */
#define LCM12864_RS 0x1<<20 // 定義LCM12864的RS控制線
#define LCM12864_RW 0x1<<21 // 定義LCM12864的RW控制線
#define LCM12864_E 0x1<<22 // 定義LCM12864的E控制線
#define LCM12864_CS1 0x1<<23 // 定義LCM12864的CS1控制線
#define LCM12864_CS2 0x1<<24 // 定義LCM12864的CS2控制線
#define LCM12864_RESET 0x1<<25 // 定義LCM12864的RESET控制線
#define LCM12864_LEDK 0x1<<26 // 定義LCM12864的LEDK(BLK)控制線
/* 定義LCM12864的命令字 */
#define LCM12864_DISP_ON 0x3f // 打開LCM12864顯示
#define LCM12864_DISP_OFF 0x3e // 關閉LCM12864顯示
#define LCM12864_START_ROW 0xc0 // 顯示起始行0,可以用LCM12864_START_ROW+x設置起始行。(x<64)
#define LCM12864_PAGE_START_ADDR 0xb8 // 頁起始地址,可以用LCM12864_PAGE_START_ADDR+x設置當前頁。(x<8)
#define LCM12864_COL_START_ADDR 0x40 // 列起始地址,可以用LCM12864_COL_START_ADDR+x設置當前列。(x<64)
/* 定義LCM12864的狀態屏蔽碼 */
/* 在BUSY和REST狀態時,除讀狀態指令外,其他指令均不對LCM12864產生作用。 */
/* 在對LCM12864操作之前要查詢BUSY狀態,以確定是否可以對LCM12864進行操作。*/
#define LCM12864_STATUS_BUSY 0x80 // LCM12864忙狀態屏蔽碼
#define LCM12864_STATUS_DISP_OFF 0x20 // LCM12864顯示關閉狀態屏蔽碼
#define LCM12864_STATUS_REST 0x10 // LCM12864復位狀態屏蔽碼
/*-- 文字: 歡 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
/* 縱向取模,字節倒序 */
uint8 huan1[]={
0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,
0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00,
};
/*-- 文字: 迎 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
/* 縱向取模,字節倒序 */
uint8 ying2[]={
0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00,
};
/*-- 文字: 使 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
/* 縱向取模,字節倒序 */
uint8 shi3[]={
0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,
0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00,
};
/*-- 文字: 用 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=16x16 --*/
/* 縱向取模,字節倒序 */
uint8 yong4[]={
0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,
};
/*-- 文字: A --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_A[]={
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
};
/*-- 文字: R --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_R[]={
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
};
/*-- 文字: M --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_M[]={
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,
};
/*-- 文字: S --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_S[]={
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
};
/*-- 文字: K --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_K[]={
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,
};
/*-- 文字: Y --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_Y[]={
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
};
/*-- 文字: - --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_shortline[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
};
/*-- 文字: 5 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_5[]={
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
};
/*-- 文字: 1 --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_1[]={
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
};
/*-- 文字: E --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_E[]={
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,
};
/*-- 文字: a --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_a_[]={
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,
};
/*-- 文字: s --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_s_[]={
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
};
/*-- 文字: y --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_y_[]={
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
};
/*-- 文字: w --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_w_[]={
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,
};
/*-- 文字: . --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_dot[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};
/*-- 文字: r --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_r_[]={
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
};
/*-- 文字: m --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_m_[]={
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
};
/*-- 文字: k --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_k_[]={
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,
};
/*-- 文字: n --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_n_[]={
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
};
/*-- 文字: e --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -