?? lcdm_hd61202_128d64.lib
字號:
/*
****************************************************************************************
源程序文件名: LCDM_HD61202_128D64.C
源程序名稱: 128×64液晶模塊(控制芯片:HD61202/3)的源程序文件
程序版本: 1.0
程序功能:
本程序是用 ATmega16 控制128×64液晶模塊(控制芯片:HD61202/3)顯示
的源程序文件。
程序說明:
函數(shù)入口參數(shù):
函數(shù)出口參數(shù):
編譯工具軟件: CodeVision AVR C 版本:1.24.6 以上
鏈接子程序文件: 目標器件芯片的頭部文件
編作者: 磊元
編作者 E-Mail: PTZSW@163.COM
編制日期: 2005年5月18日
------------------------------------------------------------------------------
適用器件芯片類型: Atmel 公司生產(chǎn)的8位 RISC 單片機
器件芯片時鐘頻率:
存儲器模式: 小存儲器模式
外部擴展存儲器大小:0 【字節(jié)】
數(shù)據(jù)堆棧大小: 256 【字節(jié)】
------------------------------------------------------------------------------
源程序版本歷史:
2005年5月18日 -------- 版本 1.0 :發(fā)行版本
****************************************************************************************
*/
/*======================================================================================
本源程序包括的頭部文件
======================================================================================*/
#include "LCDM_HD61202_128D64.h" /* 本程序的頭部文件 */
#include "Delay.H" /* 包含延時函數(shù)的頭部文件 */
/*======================================================================================
程序指令代碼清單
======================================================================================*/
/*----------------------------------------------------------------------------
函數(shù)功能: 本函數(shù)用于控制液晶模塊的MCU輸入/輸出引腳的初始化操作。
備注: 本函數(shù)僅在主函數(shù)中調(diào)用一次即可,除非釋放各控制引腳作為其他用途,
如要再使用這些控制引腳來控制液晶模塊則需在主函數(shù)中再調(diào)用一次本函數(shù)。
----------------------------------------------------------------------------*/
void LCDM_initialization(void)
{
/* 下面這些語句用于設置液晶模塊的各控制引腳與MCU的連接定義 */
LCDM_BL_DDR |= LCDM_BL_PINNum; /* 設置液晶的背景燈控制端口為輸出引腳 */
LCDM_BL_PORT &= ~LCDM_BL_PINNum;
LCDM_DI_DDR |= LCDM_DI_PINNum; /* 設置液晶的寄存器選擇控制端口為輸出引腳 */
LCDM_DI_PORT &= ~LCDM_DI_PINNum;
LCDM_RW_DDR |= LCDM_RW_PINNum; /* 設置液晶的讀/寫選擇控制端口為輸出引腳 */
LCDM_RW_PORT &= ~LCDM_RW_PINNum;
LCDM_EN_DDR |= LCDM_EN_PINNum; /* 設置液晶的使能信號控制端口為輸出引腳 */
LCDM_EN_PORT &= ~LCDM_EN_PINNum;
LCDM_CS1_DDR |= LCDM_CS1_PINNum; /* 設置液晶的片選1控制端口為輸出引腳 */
LCDM_CS1_PORT &= ~LCDM_CS1_PINNum;
LCDM_CS2_DDR |= LCDM_CS2_PINNum; /* 設置液晶的片選2控制端口為輸出引腳 */
LCDM_CS2_PORT &= ~LCDM_CS2_PINNum;
LCDM_DATA_DDR = 0xFF; /* 設置液晶模塊的數(shù)據(jù)端口為輸出引腳 */
LCDM_DATA_PORT = 0x00;
#ifdef LCDM_Use_ResetPin /* 系統(tǒng)使用液晶復位控制引腳的條件編譯 */
LCDM_RST_DDR |= LCDM_RST_PINNum; /* 設置液晶的復位信號控制端口為輸出引腳 */
LCDM_RST_PORT &= ~LCDM_RST_PINNum;
/* 下面這些語句用于液晶模塊的初始化復位 */
LCDM_RST_PORT &= ~LCDM_RST_PINNum; /* 置復位信號為低電平 */
delay_ms(2);
LCDM_RST_PORT |= LCDM_RST_PINNum; /* 置復位信號為高電平 */
delay_ms(2);
#endif /* "LCDM_Use_ResetPin" 條件編譯結(jié)束 */
LCDM_AllScreenData(0x00,64,64); /* 清屏 */
}
/*----------------------------------------------------------------------------
函數(shù)功能: 本函數(shù)用于控制液晶模塊背景燈打開/關閉的操作。
函數(shù)入口參數(shù):BL_status ------ 僅可取二個值 ON 或 OFF 中的一個。
----------------------------------------------------------------------------*/
void LCDM_BackgroundLight(Uchar8 BL_status)
{
if (BL_status == ON)
{
LCDM_BL_DDR |= LCDM_BL_PINNum; /* 設置液晶的背景燈控制端口為輸出引腳 */
LCDM_BL_PORT |= LCDM_BL_PINNum; /* 打開液晶的背景燈 */
// delay_us(2); /* 延時2us */
}
if (BL_status == OFF)
{
LCDM_BL_DDR |= LCDM_BL_PINNum; /* 設置液晶的背景燈控制端口為輸出引腳 */
LCDM_BL_PORT &= ~LCDM_BL_PINNum; /* 關閉液晶的背景燈 */
// delay_us(2); /* 延時2us */
}
}
/*----------------------------------------------------------------------------
函數(shù)功能: 本函數(shù)用于控制液晶模塊顯示打開/關閉的操作。
函數(shù)入口參數(shù):Dpy_status ------ 僅可取二個值 ON 或 OFF 中的一個。
----------------------------------------------------------------------------*/
void LCDM_Display(Uchar8 Dpy_status)
{
#ifdef LCDM_DI_RW_EN_PinShare /* "LCDM_DI_RW_EN_PinShare" 條件編譯開始 */
LCDM_DI_DDR |= LCDM_DI_PINNum; /* 設置液晶的寄存器選擇控制端口為輸出引腳 */
LCDM_RW_DDR |= LCDM_RW_PINNum; /* 設置液晶的讀/寫選擇控制端口為輸出引腳 */
LCDM_EN_DDR |= LCDM_EN_PINNum; /* 設置液晶的使能信號控制端口為輸出引腳 */
#endif /* "LCDM_DI_RW_EN_PinShare" 條件編譯結(jié)束 */
LCDM_DATA_DDR = 0xFF; /* 設置液晶模塊的數(shù)據(jù)端口為輸出引腳 */
if (Dpy_status == ON)
{
LCDM_DI_PORT &= ~LCDM_DI_PINNum; /* 置寄存器選擇為L */
LCDM_RW_PORT &= ~LCDM_RW_PINNum; /* 置讀/寫選擇為L */
LCDM_CS1_PORT |= LCDM_CS1_PINNum; /* 置片選1為H */
/* 將打開液晶顯示的控制指令字輸出到片1的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_ON_Display;
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS1_PORT &= ~LCDM_CS1_PINNum; /* 置片選1為L */
LCDM_CS2_PORT |= LCDM_CS2_PINNum; /* 置片選2為H */
/* 將打開液晶顯示的控制指令字輸出到片2的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_ON_Display;
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS2_PORT &= ~LCDM_CS2_PINNum; /* 置片選2為L */
}
if (Dpy_status == OFF)
{
LCDM_DI_PORT &= ~LCDM_DI_PINNum; /* 置寄存器選擇為L */
LCDM_RW_PORT &= ~LCDM_RW_PINNum; /* 置讀/寫選擇為L */
LCDM_CS1_PORT |= LCDM_CS1_PINNum; /* 置片選1為H */
/* 將關閉液晶顯示的控制指令字輸出到片1的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_OFF_Display;
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS1_PORT &= ~LCDM_CS1_PINNum; /* 置片選1為L */
LCDM_CS2_PORT |= LCDM_CS2_PINNum; /* 置片選2為H */
/* 將關閉液晶顯示的控制指令字輸出到片2的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_OFF_Display;
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS2_PORT &= ~LCDM_CS2_PINNum; /* 置片選2為L */
}
}
/*----------------------------------------------------------------------------
函數(shù)功能: 本函數(shù)用于控制液晶模塊設置顯示開始行的操作。
函數(shù)入口參數(shù):line_num ------ 開始行數(shù)值。(數(shù)值范圍:line_num ≤63)
----------------------------------------------------------------------------*/
void LCDM_SetStartLine(Uchar8 line_num)
{
#ifdef LCDM_DI_RW_EN_PinShare /* "LCDM_DI_RW_EN_PinShare" 條件編譯開始 */
LCDM_DI_DDR |= LCDM_DI_PINNum; /* 設置液晶的寄存器選擇控制端口為輸出引腳 */
LCDM_RW_DDR |= LCDM_RW_PINNum; /* 設置液晶的讀/寫選擇控制端口為輸出引腳 */
LCDM_EN_DDR |= LCDM_EN_PINNum; /* 設置液晶的使能信號控制端口為輸出引腳 */
#endif /* "LCDM_DI_RW_EN_PinShare" 條件編譯結(jié)束 */
LCDM_DATA_DDR = 0xFF; /* 設置液晶模塊的數(shù)據(jù)端口為輸出引腳 */
LCDM_DI_PORT &= ~LCDM_DI_PINNum; /* 置寄存器選擇為L */
LCDM_RW_PORT &= ~LCDM_RW_PINNum; /* 置讀/寫選擇為L */
LCDM_CS1_PORT |= LCDM_CS1_PINNum; /* 置片選1為H */
/* 將設置的開始顯示行數(shù)值與控制指令字一同輸出到片1的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_StartLine_1 + line_num;
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS1_PORT &= ~LCDM_CS1_PINNum; /* 置片選1為L */
LCDM_CS2_PORT |= LCDM_CS2_PINNum; /* 置片選2為H */
/* 將設置的開始顯示行數(shù)值與控制指令字一同輸出到片2的數(shù)據(jù)端口 */
LCDM_DATA_PORT = LCDM_StartLine_1 + line_num;
// delay_us(2); /* 延時2us */
LCDM_EN_PORT |= LCDM_EN_PINNum; /* 使能信號為H */
// delay_us(2); /* 延時2us */
LCDM_EN_PORT &= ~LCDM_EN_PINNum; /* 使能信號為L */
LCDM_CS2_PORT &= ~LCDM_CS2_PINNum; /* 置片選2為L */
}
/*----------------------------------------------------------------------------
函數(shù)功能: 本函數(shù)用于向液晶模塊寫入控制指令代碼。
函數(shù)入口參數(shù):WriteCode ------ 向液晶模塊寫入的控制指令代碼 。
WC_CSNum ------- 片選數(shù)值,僅取值 LCDM_CS1 或 LCDM_CS2 中的一個。
----------------------------------------------------------------------------*/
void LCDM_WriteCode(Uchar8 WriteCode, Uchar8 WC_CSNum)
{
#ifdef LCDM_DI_RW_EN_PinShare /* "LCDM_DI_RW_EN_PinShare" 條件編譯開始 */
LCDM_DI_DDR |= LCDM_DI_PINNum; /* 設置液晶的寄存器選擇控制端口為輸出引腳 */
LCDM_RW_DDR |= LCDM_RW_PINNum; /* 設置液晶的讀/寫選擇控制端口為輸出引腳 */
LCDM_EN_DDR |= LCDM_EN_PINNum; /* 設置液晶的使能信號控制端口為輸出引腳 */
#endif /* "LCDM_DI_RW_EN_PinShare" 條件編譯結(jié)束 */
LCDM_DATA_DDR = 0xFF; /* 設置液晶模塊的數(shù)據(jù)端口為輸出引腳 */
LCDM_DI_PORT &= ~LCDM_DI_PINNum; /* 置寄存器選擇為L */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -