?? lph7366.c
字號:
//LPH7366液晶應用 ISP總線
//文件包含
#include <config.h>
//參數定義
sbit SCLK=P2^3; //時鐘信號
sbit SDIN=P2^2; //數據輸入
sbit D_C=P2^1; //數據或指令
sbit RES=P2^0; //復位
sbit LED=P1^5;
#define COM 0 //指令
#define DAT 1 //數據
//-------------------
#define STR 1 //字符
#define HAN 2 //漢字
//--------------------------LPH7366指令集---------------------------
#define LPH7366_basic_fun_set 0x20 //基本功能設置
#define LPH7366_expand_fun_set 0x21 //擴展功能設置
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 1 0 0 PD V H
// | | |_______1->擴展指令集 0->基本指令集
// | |___________1->垂直尋址 0->水平尋址
// |_______________1->低功耗模式 0->正常模式
//-------------------------------------------------------------------
//基本指令集
#define LPH7366_dis_set 0x0c//顯示模式設置
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 0 0 1 D 0 E
// | |_______0 0 1 1
// |_______________0 1 0 1
// 白屏 正常顯示 全顯 反轉
//-------------------------------------------------------------------
#define LPH7366_add_Yset 0x40 //設置Y地址
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 1 0 0 0 Y1 Y2 Y3
//-------------------------------------------------------------------
#define LPH7366_add_Xset 0x80 //設置X地址
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 1 X6 X5 X4 X3 X2 X1
//-------------------------------------------------------------------
//擴展指令集
#define LPH7366_tem_set 0x06 //溫度系數設置
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 0 0 0 1 TC1 TC0
//-------------------------------------------------------------------
#define LPH7366_vot_set 0xD7 //電壓系數設置
// D7 D6 D5 D4 D3 D2 D1 D0
// 1 vo6 vo5 vo4 vo3 vo2 vo1 vo0
//-------------------------------------------------------------------
//函數說明
void LPH7366_init(); //LPH7366初始化
void LPH7366_write(unsigned char type,unsigned char in_data); //LPH7366讀函數
void LPH7366_clr(); //顯示屏幕清屏
void LPH7366_flash(unsigned int delay_time); //LPH7366閃屏函數
void LPH7366_write_str(unsigned char line,unsigned char row,unsigned char str); //LPH7366任意寫入字符函數
void LPH7366_write_han(unsigned char symbol_line,unsigned char symbol_row,unsigned char han); //LPH7366任意寫入漢字函數
void LPH7366_write_doc(unsigned char symbol_line,unsigned char symbol_row,unsigned char doc); //LPH7366任意寫入字節(jié)函數
void data_tick(unsigned char i_data); //數據拆分函數
void LPH7366_doc_move(unsigned char symbol_line); //屏幕上的任意一行水平移動
unsigned char row(unsigned char stye,unsigned char i); //計算屏幕的列地址 類型
bit data_flag=0; //是否動態(tài)顯示數據標志位 0:不動態(tài) 1:動態(tài)
unsigned char ge,shi; //數據拆分
//外部函數說明
//********************delay.c********************
extern void delay(unsigned int delay_time); //延時子程序
//--------------------time.c--------------------------
extern bit second_flag; //秒信號標志位
//---------------------------------------
//--------------The standard ASCLL characters in a 5x7 dot format-------------
unsigned char code ASCLL[][5]=
{
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // !
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // %
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // -
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // /
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55
{ 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 } // z
};
//-------------------------漢字字庫----------------------------------
unsigned char code HZK[][24]={
//氣
{0X80,0X40,0Xb0,0Xa0,0Xa0,0Xa0,0Xa0,0Xa0,0Xa0,0Xa0,0X00,0X00,
0X00,0X02,0X02,0X02,0X02,0X02,0X02,0X02,0X02,0X3e,0X40,0X60},
//溫
{0X90,0X20,0X00,0X00,0Xf0,0X50,0X50,0X50,0X50,0Xf0,0X00,0X00,
0X78,0X07,0X40,0X7c,0X45,0X7d,0X45,0X7d,0X45,0X7d,0X40,0X00},
};
//---------------------------------------------------------
/***************************LPH7366初始化函數**************************/
/*函數原型:void LPH7366_init()
/*函數功能:LPH7366初始化
/*輸入參數:無
/*輸出參數:無
/*調用模塊:LPH7366_clr(),delay(),LPH7366_write()
/**********************************************************************/
void LPH7366_init()
{
RES=1;
D_C=1;
SDIN=1;
SCLK=1;
delay(1000);
RES=0;
delay(1000);
RES=1; //模塊復位
LPH7366_write(COM,LPH7366_expand_fun_set); //顯示模塊擴展指令
LPH7366_write(COM,LPH7366_vot_set); //顯示模塊對比度電壓設置
LPH7366_write(COM,LPH7366_tem_set); //顯示模塊溫度參數設置
LPH7366_write(COM,LPH7366_basic_fun_set); //顯示模塊基本指令
LPH7366_write(COM,LPH7366_dis_set); //顯示模塊顯示模式設置
LPH7366_write(COM,LPH7366_add_Yset); //顯示模塊行地址設置
LPH7366_write(COM,LPH7366_add_Xset); //顯示模塊列地址設置
LPH7366_clr(); //顯示屏幕清屏
}
/***************************LPH7366寫函數*****************************/
/*函數原型:void LPH7366_write(unsigned char type,unsigned char in_data)
/*函數功能:LPH7366寫
/*輸入參數:要寫數據的類型 type,要寫的數據 in_data
/*輸出參數:無
/*調用模塊:_crol_()
/**********************************************************************/
void LPH7366_write(unsigned char type,unsigned char in_data)
{ unsigned char i,k;
unsigned char out_data;
SCLK=1;
if(type==1)
D_C=1; //要寫的是數據
else
D_C=0; //要寫的是指令
out_data=in_data;
for(i=1;i<9;i++) //串行發(fā)送數據
{
k=out_data&0x80;
if(k==0x80) //判斷數據
SDIN=1;
else
SDIN=0;
_nop_();
SCLK=0;
_nop_();
SCLK=1;
_nop_();
out_data=_crol_(out_data,1); //循環(huán)左移1位
}
}
/***************************LPH7366清屏函數****************************/
/*函數原型:void LPH7366_clr()
/*函數功能:LPH7366清屏
/*輸入參數:無
/*輸出參數:無
/*調用模塊:LPH7366_write()
/**********************************************************************/
void LPH7366_clr()
{
unsigned int i;
for(i=1;i<505;i++) //整個屏幕白屏
{
LPH7366_write(DAT,0x00);
}
}
/***************************LPH7366任意寫入字符函數****************************/
/*函數原型:void LPH7366_write_str(unsigned char symbol_line,unsigned char symbol_row,unsigned char str)
/*函數功能:可以在屏幕的任意位置寫入所需字符(6行,每行13個字符)
/*輸入參數:第幾行(line),第幾列(row),字符(str)
--這里的行列不是屏幕實際的行列,是字符所在的位置.
/*輸出參數:無
/*調用模塊:LPH7366_write()
/**********************************************************************/
void LPH7366_write_str(unsigned char symbol_line,unsigned char symbol_row,unsigned char str)
{
unsigned char symbol_i; //在字符表的位置
unsigned char i;
LPH7366_write(COM,LPH7366_basic_fun_set); //顯示模塊基本指令
LPH7366_write(COM,LPH7366_add_Yset+(symbol_line-1)); //顯示模塊行地址設置
LPH7366_write(COM,LPH7366_add_Xset+row(STR,symbol_row)); //顯示模塊列地址設置
if(data_flag==0) //不動態(tài)顯示字符
symbol_i=str-32; //在ASCLL表是那個元素
if(data_flag==1) //動態(tài)顯示字符
symbol_i=str;
while(1)
{ for(i=0;i<5;i++)
{
LPH7366_write(DAT,ASCLL[symbol_i][i]);
}
LPH7366_write(DAT,0x00);
break;
}
}
/***********************LPH7366任意寫入漢字函數************************/
/*函數原型:void LPH7366_write_han(unsigned char symbol_line,unsigned char symbol_row,unsigned char han)
/*函數功能:可以在屏幕的任意位置寫入所需字符(3行,每行7個漢字)
/*輸入參數:第幾行(line),第幾列(row),漢字(han)
/*輸出參數:無
/*調用模塊:LPH7366_write()
/******************************************************************/
void LPH7366_write_han(unsigned char symbol_line,unsigned char symbol_row,unsigned char han)
{
unsigned char symbol_i; //在字符表的位置
unsigned char i;
LPH7366_write(COM,LPH7366_basic_fun_set); //顯示模塊基本指令
LPH7366_write(COM,LPH7366_add_Yset+(symbol_line-1)*2); //顯示模塊行地址設置
LPH7366_write(COM,LPH7366_add_Xset+row(HAN,symbol_row)); //顯示模塊列地址設置
symbol_i=han;
while(1)
{ for(i=0;i<24;i++)
{
if(i==12) //漢字顯示是兩行的 16*12 重新設置行列地址
{
LPH7366_write(COM,LPH7366_basic_fun_set); //顯示模塊基本指令
if(symbol_line==1)
LPH7366_write(COM,LPH7366_add_Yset+1); //顯示模塊行地址設置
if(symbol_line==2)
LPH7366_write(COM,LPH7366_add_Yset+3); //顯示模塊行地址設置
if(symbol_line==3)
LPH7366_write(COM,LPH7366_add_Yset+5); //顯示模塊行地址設置
LPH7366_write(COM,LPH7366_add_Xset+row(HAN,symbol_row)); //顯示模塊列地址設置
}
LPH7366_write(DAT,HZK[symbol_i][i]);
}
if(i==24)
break;
}
}
/***********************LPH7366任意寫入一個字節(jié)函數************************/
/*函數原型:void LPH7366_write_doc(unsigned char symbol_line,unsigned char symbol_row,unsigned char doc)
/*函數功能:可以在屏幕的任意位置寫入所需字節(jié)(6行,每行84個字節(jié))
/*輸入參數:第幾行(line),第幾列(row),字節(jié)(doc)
/*輸出參數:無
/*調用模塊:LPH7366_write()
/******************************************************************/
void LPH7366_write_doc(unsigned char symbol_line,unsigned char symbol_row,unsigned char doc)
{
LPH7366_write(COM,LPH7366_basic_fun_set); //顯示模塊基本指令
LPH7366_write(COM,LPH7366_add_Yset+symbol_line-1); //顯示模塊行地址設置
LPH7366_write(COM,LPH7366_add_Xset+symbol_row-1); //顯示模塊列地址設置
LPH7366_write(DAT,doc);
}
/*******************************數據拆分函數*********************************/
/*函數原型:void data_tick(unsigned char i_data)
/*函數功能:數據拆分
/*輸入參數:i_data (將輸入的數據拆分成十位和個位)
/*輸出參數:改變ge和shi兩個數據
/*調用模塊:無
/**********************************************************************/
void data_tick(unsigned char i_data)
{
unsigned char y;
y=i_data;
shi=i_data/10;
ge=y%10;
}
/***************************列計算函數****************************/
/*函數原型:unsigned char row(unsigned char stye,unsigned char i)
/*函數功能:類型,計算屏幕的列地址
/*輸入參數:stye,symbol_row
/*輸出參數:無
/*調用模塊:無
/******************************************************************/
unsigned char row(unsigned char stye,unsigned char i) //計算屏幕的列地址 類型
{
if(stye==1) //字符
{
if(i==1)
return 3;
return (row(stye,i-1)+6);
}
if(stye==2) //漢字
{
if(i==1)
return 0;
return (row(stye,i-1)+12);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -