?? copy of main.c
字號:
//***********************************************************
//*標題:自制板實驗 - ZZ005_12864LCD(帶漢字庫)菜單演示
//*硬件:自制板
//*文件:ZZ005.c
//*日期:2006-1-1
//*版本:1.0
//*作者:lluct
//*郵箱:lluct@hotmail.com
//*********************************************************
//*描述:
//*
//* 按KEY1鍵進行菜單選擇
//*********************************************************
//*【版權】 lluct, GPL
//*【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息!
//*********************************************************
//頭文件
#include <regx52.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char //自定義關鍵字
//-----------------------------------------------
//TS12864并口相關設定//
#define BUSY_FLAG P0_7 //液晶模塊忙標志
#define BG_LED_SET P1_7 //液晶背景光控制
#define MPU_RS_CH P2_0 //寄存器選擇輸入
#define MPU_RW_CH P2_1 //讀寫控制
#define MPU_ENABLE P2_2 //使能控制
#define MPU_PS_CH P2_3 //串/并傳輸控制
#define MPU_RESET P2_5 //液晶復位控制
#define LCD_DATA P0 //液晶數據口
//-----------------------------------------------
#define LOW 0 //低電平
#define HIGH 1 //高電平
#define OFF 0 //邏輯關
#define ON 1 //邏輯開
//-----------------------------------------------
//液晶模塊指令集定義
#define cClearDisplay 0x01 //清顯示指令
#define cEntryModeSet 0x06 //設置輸入模式
#define cDisplayOnCtrl 0x0c //設置開顯控制
#define cFunctionSetB 0x30 //功能設定(基本指令)
#define cFunctionSetE 0x34 //功能設定(擴充指令)
#define cFuncDrawOn 0x36 //設置繪圖功能
//-----------------------------------------------
uchar lcdPosX, lcdPosY; //X,Y坐標
uchar halfScr, halfLineCnt, basicBlock; //半屏,半屏行數,N*8塊
uchar data key1Times; //按鍵1次數
uchar key1Save, key1Check; //按鍵1保存和檢測
//-----------------------------------------------
uchar code powerOnPhoto [] = { //開機畫面
0xFF,0xFF,0xFF,0xFE,0x00,0x3E,0x18,0x00,
0x00,0x00,0x00,0x00,0x1F,0x3F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF2,0x00,0x1E,0x1C,0x00,
0x00,0x00,0x00,0x00,0x07,0xBF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF3,0x00,0x0E,0x0C,0x00,
0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF5,0x80,0x04,0x06,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0x80,0x00,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFE,0xC0,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7C,0x00,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFD,0x00,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFD,0x1C,0x03,0x00,
0x00,0x00,0x04,0x20,0x00,0x1F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
0x00,0x00,0x3E,0x2C,0x00,0x0F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,
0x00,0x00,0x7E,0xE9,0x00,0x0F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,
0x00,0x00,0xFF,0xFF,0x00,0x07,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,0xE0,0x00,
0x00,0x01,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xCF,0xF8,0xE0,0x00,
0x00,0x03,0xFF,0xFF,0xF0,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xEF,0xFC,0xE0,0x60,
0x00,0x03,0xDF,0xFF,0xF8,0x03,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x60,
0x00,0x03,0xFF,0xF9,0xFC,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x60,
0x00,0x00,0x7F,0xF3,0xFE,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x60,
0x00,0x00,0x1F,0x7F,0xFE,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x60,
0x00,0x00,0x08,0x1F,0xFA,0x01,0x7F,0xFF,
0xFF,0xFF,0xFF,0xB0,0x60,0x00,0x00,0xE0,
0x00,0x00,0x00,0x00,0x78,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x00,0xE0,
0x00,0x00,0x00,0x00,0x39,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x01,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x01,0xE0,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x01,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x03,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xFF,0xFF,0xFF,0x88,0x00,0x00,0x0E,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0x80,0x00,0x00,0x1C,0x30,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0xA0,0x00,0x00,0x1C,0x38,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0x90,0x00,0x00,0x18,0x38,
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,
0xFF,0xFF,0xFF,0x98,0x00,0x00,0x18,0xFC,
0x0E,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0x80,0x00,0x00,0x19,0xFD,
0x1F,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,
0xFF,0xFF,0xFF,0xC4,0x00,0x00,0x39,0xFE,
0xBF,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x31,0xFE,
0xFF,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x38,0xFF,
0xC7,0x80,0x00,0x00,0x00,0x00,0xBF,0xFF,
0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x38,0x75,
0x87,0x80,0x00,0x00,0x00,0x01,0xBF,0xFF,
0xFF,0xFF,0xFF,0xD0,0x00,0x00,0x38,0x70,
0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x3C,0xC0,
0x00,0x30,0x00,0x00,0x00,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x1F,0xE0,
0x00,0x20,0x00,0x00,0x00,0x02,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x06,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x05,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0B,0xF7,0xFE,
0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x13,0xF7,0xFF,
0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x13,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x11,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x11,0xFD,0xFF,
0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x01,0x18,
0x00,0x00,0x00,0x00,0x00,0x01,0xBC,0xF7,
0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x07,0x7F,
0xFE,0x00,0x00,0x00,0x00,0x03,0xBC,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xFF,
0xFE,0xC0,0x00,0x00,0x00,0x03,0xFE,0xEF,
0xFF,0xFF,0xFF,0xF9,0x00,0x00,0x7F,0xFF,
0xFF,0xC0,0x00,0x00,0x00,0x03,0xFE,0x6F,
0xFF,0xFF,0xFF,0xF9,0x00,0x00,0x7F,0xE3,
0x9F,0xC0,0x00,0x00,0x00,0x03,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xC0,
0x0F,0xF0,0x00,0x00,0x00,0x07,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFE,0xC0,
0x05,0xFC,0x00,0x00,0x00,0x07,0xCE,0xFF,
0xFF,0xFF,0xFF,0xFC,0x00,0x03,0xFF,0xCB,
0x4D,0xFF,0x80,0x00,0x00,0x07,0xFE,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFC,0x00,
0x00,0xFF,0xC0,0x00,0x00,0x0E,0x00,0xF7,
0xFF,0xFF,0xFF,0xFE,0x00,0x01,0xC0,0x00,
0x00,0x0F,0xC0,0x00,0x00,0x06,0x01,0xFF,
0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x1D,0x00,
0x00,0x01,0xC0,0x00,0x00,0x0E,0x03,0xFF
};
//-----------------------------------------------
sbit KEY1 = P3^2; //按鍵1定義
sbit KEY2 = P3^3; //按鍵2定義
sbit KEY3 = P3^4; //按鍵3定義
sbit KEY4 = P3^5; //按鍵4定義
sbit BEEP = P3^7; //蜂鳴器定義
//-----------------------------------------------
//子程序聲明和用法
bit scanKey1 (void);
//按鍵1檢測
void procKey (void);
//按鍵處理子程序
void lcdInit (void);
//初始化LCD子程序
void lcdClear (void);
//清除LCD文本屏幕子程序
void lcdWriteCommand (uchar Command);
//寫入控制命令到LCD子程序
//輸入參數:LCD控制指令
void lcdWriteData (uchar Data);
//寫入顯示數據到LCD子程序
//輸入參數:顯示數據
void checkLcdBusy (void);
//檢測LCD忙碌子程序
void displayPhoto (uchar *bmp, uchar bmpCls);
//全屏顯示圖形子程序
//輸入參數:*bmp=圖形數據
//bmpCls=清除圖形屏幕選項(OFF為不清屏,即顯示圖形,ON為清屏)
void convertChar (uchar CX, CY, width);
//字符反白顯示
//輸入參數:CX=要反白字符的行(0-3)
//CY=要反白字符的列(0-7)
//width=要反白字符的長度(1-16)
void wrPosition (void);
//坐標寫入子程序
void dispString (uchar X, Y, speed, uchar *msg);
//顯示字符串子程序
//輸入參數:X=行(0-3), Y=列(0-7), speed=顯示速度(毫秒), msg=字符數據
void beepBl (void);
//蜂鳴器響一聲子程序
void delayMs (uchar ms);
//延時(毫秒)子程序
//輸入參數:毫秒數
void delaySec (uchar sec);
//延時(秒)子程序
//輸入參數:秒數
//===============================================
void main (void)
{
uchar InitLine;
BG_LED_SET = LOW;
key1Times = 0;
key1Check = 0x01;
lcdInit ();
lcdClear();
displayPhoto(powerOnPhoto, OFF);
delaySec(6);
lcdClear();
dispString(0, 0, 1, "┏━━━━━━┓");
dispString(1, 0, 1, "┃12864LCD測試┃");
dispString(2, 0, 1, "┃畫面人物寶兒┃");
dispString(3, 0, 1, "┗━━━━━━┛");
delaySec(6);
lcdClear();
dispString(0, 1, 100, "請稍等片刻");
dispString(2, 0, 100, "系統初始化。。。");
for (InitLine = 0; InitLine < 17; InitLine++)
{
convertChar(2, 0, InitLine);
delaySec(2);
}
lcdClear();
dispString(2, 0, 1, "按K1鍵繼續。。。");
convertChar(2, 0, 16);
while(1)
{
if (scanKey1())
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -