?? 240160b.c
字號:
/****************************************Copyright (c)**************************************************
** 重慶東電通信技術有限公司
** 生產技術部
**
** http://www.dodem.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: 240160b.c
** 創 建 人: 陳龍永
** 最后修改日期: 2004年7月5日
** 描 述: 臺灣晶采光電液晶240x160B,控制器SED1335F的驅動模塊,包括圖形方式下字符,漢字的顯示程式
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳龍永
** 版 本: V1.0
** 日 期: 2004年7月5日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 陳龍永
** 日 期: 2004年7月5日
** 描 述: 240x160B液晶驅動函數
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*******************************************************************************************************
** 液晶接口情況表述:
** No: LCM ----- F022
** ---------------------
** 1...RESET..... 復位 復位信號,低電平有效,阻容式復位電路
** 2.../RD ..... P13 讀有效
** 3.../WR ..... P14 寫有效
** 4.../CS ..... P15 液晶片選信號,低有效
** 5...A0 ..... P16 寄存器選擇信號,命令數據方式選擇
** 6...D0 ..... P6.0 數據總線 D0
** 7...D1 ..... P6.1 數據總線 D1
** 8...D2 ..... P6.2 數據總線 D2
** 9...D3 ..... P6.3 數據總線 D3
** 10..D4 ..... P6.4 數據總線 D4
** 11..D5 ..... P6.5 數據總線 D5
** 12..D6 ..... P6.6 數據總線 D6
** 13..D7 ..... P6.7 數據總線 D7
** 14..VDD ..... +3.3V 電源
** 15..VSS ..... GND 地線
** 16..VLCD ..... +25V 25V電壓輸出
** 17..VADJ ..... VO 對比度調整輸入
** 18..ELON ..... P17 背光打開/關閉
19,20 ..... NC
** 間接方式,無須上拉電阻,所以數據口和控制口應設置為推挽輸出方式
********************************************************************************************************/
#include "c8051F020.h"
#include "dotlib1.h"
#define Uchar unsigned char
#define Uint unsigned int
//240x160b,SED1335定義
#define paraP9 0x1e //相對于240x160
//光標移動方向設置,后續參數:無
#define CsrDirR 0x4c
#define CsrDirL 0x4d
#define CsrDirU 0x4e
#define CsrDirD 0x4f
/* 該指令規定了光標指針CSR在計算機讀寫顯示數據后自動修復的方向,從顯示效果來說,
就是光標移動的方向設置.該指令的兩個參數位DR1,DR0:
===========================
DR1 DR0 自動定位方向
===========================
0 0 右
0 1 左
1 0 上
1 1 下
===========================
*/
//光標指針設置
#define CsrW 0x46
/* 該指令設置了光標指針CSR.該指針有兩個功能:1.作為當前光標顯示的位置;2.作為
顯示存儲器當前的地址指針.2個參數:CSRL,CSRH
[說明]:當光標指針指向有效顯示區域之外時,光標將自動消失,但不影響顯示數據的讀寫.
光標指針在計算機的每次讀寫顯示數據操作后,將根據最近設置的光標指針移動方向而自動
修正.光標指針不受畫面滾動操作的影響.
*/
//讀取光標指針
#define CsrR 0x47
/* 該指令代碼寫入后,計算機將從SED1335等數據通道讀出當前的光標指針值.光標指針讀
出的順序是先CSRL再CSRH.
*/
//數據寫入設置,后續參數N字節
#define mWrite 0x42
/*該指令寫入后將允許計算機連續的向顯示存儲器內寫入數據,寫入的單元地址由光標指針
CSR提供,寫操作完成后光標指針自動根據所設置的光標指針移動方向進行修改,顯示數據
寫入操作在計算機寫入下一指令代碼后結束.
*/
//數據讀取設置,后續參數N字節
#define mRead 0x43
/*該指令寫入將允許計算機連續地從顯示存儲器內讀取數據,讀取的單元地址由光標指針
CSR提供讀操作完成后,光標指針自動根據所設定的光標移動方向進行修改.顯示數據讀取
操作在計算機寫入下一個指令代碼后結束.
*/
////////////////////////////////////////////////////////////////////
//
/////////////液晶MODULE 240x160b,SED1335F0B驅動函數/////////////////
//
////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
// 函數:void WriteCmd(unsigned char cmd)(私有函數,其他模塊不能調用)
//-----------------------------------------------------------------------------
/******************************************************************************
調用方式(Function):WriteCmd()
函數描述(Description):指令寫入函數
入口參數(Parameters):無
返回值(Returns):無
創建時間:16:07,PM,2004.4.19
修改時間:無
修改原因:無
******************************************************************************/
void WriteCmd(Uchar cmd)
{
RD=1;
A0=1;
P6=cmd;
CS=0;
WR=0;
WR=1;
CS=1;
}
//-----------------------------------------------------------------------------
// 函數:void WriteData(unsigned char datalcd) (私有函數,其他模塊不能調用)
//-----------------------------------------------------------------------------
/******************************************************************************
調用方式(Function):WriteData(datalcd)
函數描述(Description):數據和指令的附屬參數寫入函數
入口參數(Parameters):
datalcd--待寫入的顯示數據或指令的附屬參數
返回值(Returns):無
創建時間:16:07,PM,2004.4.19
修改時間:無
修改原因:無
******************************************************************************/
void WriteData(Uchar datalcd){
RD=1;
A0=0;
P6=datalcd;
CS=0;
WR=0;
WR=1;
CS=1;
}
//-----------------------------------------------------------------------------
// 函數:unsigned char ReadfromLcd(void) (私有函數,其他模塊不能調用)
//-----------------------------------------------------------------------------
/******************************************************************************
調用方式(Function):ReadfromLcd()
函數描述(Description):數據和光標地址讀出函數
入口參數(Parameters):無
返回值(Returns):數據或光標地址
創建時間:16:07,PM,2004.4.19
修改時間:無
修改原因:無
******************************************************************************/
Uchar ReadfromLcd(void){
Uchar rdata;
P6=0xff;
A0=1;
RD=0;
rdata=P6;
CS=0;
RD=1;
CS=1;
return(rdata);
}
//-----------------------------------------------------------------------------
// 函數:void LcdInit(void)
//-----------------------------------------------------------------------------
/******************************************************************************
調用方式(Function):LcdInit()
函數描述(Description):液晶初始化函數
入口參數(Parameters):無
返回值(Returns):無
創建時間:16:07,PM,2004.4.19
修改時間:無
修改原因:無
******************************************************************************/
void LcdInit(void){
WriteCmd(0x40); //進行system set,要寫入8個參數
WriteData(0x30); //單屏結構,8×8點陣
WriteData(0x87); //字符寬度位7
WriteData(0x07); //字符高度為7
WriteData(0x1d); //一行顯示30個字符 (C/R)
WriteData(0x42); //頻率轉化
WriteData(0x9f); //每幀掃描160行 (L/F)
WriteData(0x1e); //一行共有30個字符
WriteData(0);
WriteCmd(0x44); //進行Scroll,要寫入10個參數
WriteData(0x00);
WriteData(0x00);
WriteData(0xa0); //第一顯示區地址和所占的行數160行
WriteData(0xc0);
WriteData(0x12);
WriteData(0xa0); //第二顯示區地址和所占的行數160行
WriteData(0x80);
WriteData(0x25); //第三顯示區地址高8位、低8位和所占的行數160行
// WriteData(0x00);
// WriteData(0x00); //第四顯示區地址高8位、低8位和所占的行數160行
WriteCmd(0x5a); //以點為單位的水平移動量
WriteData(0x00); //水平卷動,初始化時必須清零
WriteCmd(0x5b); //顯示合成方式設置
WriteData(0x0c); //三屏圖形方式相加,或邏輯
WriteCmd(0x59); // 寫入指令代碼0x59
WriteData(0x04); // 顯示1區開顯示,2、3、4區關顯示;光標關顯示
}
//-----------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -