?? st7920_c.c
字號:
/*************************************************************
FUNCTION: LCD driver 6800
AUTHOR: 耀宇科技
DESCRIPTION: ST7920
E-mail: szyaoyujs@126.com
CREAT DATE: 2006-2-28
MODIFICATION DATE:
***************************************************************/
#include <AT89X52.H>
#include <INTRINS.H>
#define RS P3_0
#define RW P3_2
#define E1 P3_1
#define PS P3_6
#define RST P3_3
#define DATA_BUS P1
#define CLEAR_DISPLAY_MEMORY() Write_Instruction(0x01) //清除顯示
#define RETRUN_HOME_ADDRESS() Write_Instruction(0x02) //返回DDRAM初始地址
#define SET_SHIFT_DIRECTION() Write_Instruction(0x06) //指針右移,display不變
#define SET_FUNCTION_BASIC() Write_Instruction(0x30) //基本指令集
#define SET_FUNCTION_EXTEND_ON() Write_Instruction(0x36) //擴(kuò)充指令集
#define SET_FUNCTION_EXTEND_OFF() Write_Instruction(0x34) //擴(kuò)充指令集
#define DISPLAY_ON() Write_Instruction(0x0c) //開顯示,關(guān)游標(biāo)
#define DISPLAY_OFF() Write_Instruction(0x08) //關(guān)顯示,關(guān)游標(biāo)
#define REVERSE_DISPLAY_0() Write_Instruction(0x04)
#define REVERSE_DISPLAY_1() Write_Instruction(0x05)
#define REVERSE_DISPLAY_2() Write_Instruction(0x06)
#define REVERSE_DISPLAY_3() Write_Instruction(0x07)
unsigned char code font[]=
{
0xd2,0xab,0xbf,0xc6,0xd3,0xee,0xbc,0xbc,/*耀宇科技*/
};
unsigned char code ft[]=
{
0xce,0xc2,0xc9,0xcf,0xce,0xc2,0xcf,0xc2,/*溫上下*/
};
unsigned char code pic[]=
{
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x81,0x81,0x81,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x41,0x81,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x81,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x81,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x08,0x38,0x80,0x81,0xFF,0xA0,0x9C,0x00,0x20,0x25,0xA1,0x81,0x1F,
0x40,0xD2,0x0C,0x08,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x60,0x3C,0x08,0x08,0x08,
0x88,0x88,0xC8,0xC9,0x45,0x44,0x44,0x44,0x04,0x04,0x16,0x0C,0x0C,0x08,0x00,0x00,
0x00,0x00,0x80,0x80,0x88,0x88,0xC4,0xC4,0xFA,0x42,0x63,0x00,0x00,0x48,0xC8,0x98,
0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x60,0xFF,0x21,
0x20,0x00,0x00,0x20,0x20,0x30,0xFF,0x11,0x10,0x18,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x81,0x41,0x21,0x11,0x0C,0x07,0xFF,0xC4,0x20,0x08,0x04,0x02,0xFD,0x00,0x28,
0x29,0xFF,0xA5,0xA5,0x81,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x08,0x08,
0x08,0x08,0x08,0x0F,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,
0x00,0x40,0x21,0x31,0x18,0x0C,0x06,0xC1,0x7F,0x03,0x03,0x00,0x08,0x04,0x04,0x04,
0x04,0xFF,0x02,0x02,0x02,0x02,0x02,0x02,0x10,0x30,0x30,0x18,0x08,0x0C,0xFF,0x02,
0x02,0x00,0x02,0x0A,0x92,0xD2,0x61,0x59,0xCF,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x0E,0x03,0x01,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x04,0x0C,0x1C,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x07,0x00,
0x00,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x02,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x00,
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,
0x80,0x00,0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x80,
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,
0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x03,0x00,0x00,
0x00,0xF0,0x2C,0x27,0x78,0x80,0x00,0x00,0x7F,0x80,0x00,0x80,0x7F,0x00,0x00,0x00,
0x0F,0xFC,0x03,0x00,0x00,0x00,0x7F,0x80,0x00,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF7,0x88,0x88,0x88,0x81,
0x00,0x00,0x7F,0x80,0x00,0x00,0x81,0x00,0x00,0xFF,0x10,0x10,0x10,0xFF,0x00,0x00,
0xFF,0x03,0x0C,0x30,0xFF,0x00,0x00,0x7F,0x80,0x00,0x80,0x7F,0x00,0x00,0xFF,0x80,
0x80,0x80,0x80,0x00,0x00,0x7F,0x80,0x00,0x80,0x7F,0x00,0x00,0x7F,0x80,0x00,0x13,
0xF0,0x00,0x00,0x00,0x0F,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
};
/***********************************
** 函數(shù)名稱: Delay
** 功能描述: 延時時間=(n*9+17)*12/F
** 輸 入: n
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊: 無
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
void Delay(unsigned int n)
{
while(n--);
return;
}
/***********************************
** 函數(shù)名稱: Write_Data
** 功能描述: 傳送數(shù)據(jù)
** 輸 入: dat
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Delay
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
#pragma disable
void Write_Data(unsigned char idata dat) //6800
{
RS=1;
RW=0;
E1=1;
Delay(3);
DATA_BUS=dat;
E1=0;
Delay(5);
return;
}
/***********************************
** 函數(shù)名稱: Write_Instruction
** 功能描述: 傳送命令
** 輸 入: cmd
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊: Delay
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
#pragma disable
void Write_Instruction(unsigned char idata cmd)
{
RS=0;
RW=0;
E1=1;
Delay(3);
DATA_BUS=cmd;
E1=0;
Delay(5);
return;
}
/***********************************
** 函數(shù)名稱: SET_CGRAM_ADDRESS
** 功能描述:
** 輸 入: add
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
void Set_CGRAM_Address(unsigned char idata add)
{
Write_Instruction(add|0x40);
return;
}
/***********************************
** 函數(shù)名稱: Set_DDRAM_Address
** 功能描述:
** 輸 入: add
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
void Set_DDRAM_Address(unsigned char idata add)
{
Write_Instruction((0x80|add));
return;
}
/***********************************
** 函數(shù)名稱: Set_GDRAM_Address
** 功能描述:
** 輸 入: add
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊: Write_Instruction
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
void Set_GDRAM_Address(unsigned char idata add_page,unsigned char idata add_seg)
{
Write_Instruction((0x80|add_page));
Write_Instruction((0x80|add_seg));
return;
}
/***********************************
** 函數(shù)名稱: Initial
** 功能描述: LCD初始化
** 輸 入: 無
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:CLEAR_DISPLAY_MEMORY,SET_SHIFT_DIRECTION,SET_FUNCTION_BASIC,DISPLAY_ON
**
** 作 者: 耀宇科技
** 日 期: 2006-2-28
******************************************/
void Initial(void)
{
Delay(2000);
RST=0;
Delay(1000);
RST=1;
Delay(100);
PS=1;
E1=0;
Delay(1000);
CLEAR_DISPLAY_MEMORY();
Delay(5000);
SET_SHIFT_DIRECTION();
Delay(100);
SET_FUNCTION_BASIC();
Delay(100);
DISPLAY_ON();
Delay(100);
}
/***********************************
** 函數(shù)名稱: Display_Chinese
** 功能描述: 顯示漢字
** 輸 入: fnt
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Write_Data_1,Write_Data_2,Set_DDRAM_Address
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Display_Chinese(unsigned char fnt[])
{
register unsigned char i,j;
Set_DDRAM_Address(0x00);
for(i=0;i<0x08;i+=2)
{
for(j=0;j<0x08;j++)
{
Write_Data(fnt[i]);
Write_Data(fnt[i+1]);
}
}
return;
}
/***********************************
** 函數(shù)名稱: Display_Chinese
** 功能描述: 顯示漢字
** 輸 入: fnt
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Write_Data_1,Write_Data_2,Set_DDRAM_Address
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Display_Character(unsigned char dat)
{
register unsigned char i;
Set_DDRAM_Address(0x00);
for(i=0;i<0x40;i++)
{
Write_Data(dat++);
}
return;
}
/***********************************
** 函數(shù)名稱: Display_Chess
** 功能描述: 顯示棋盤
** 輸 入: 無
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Set_DDRAM_Address,Write_Data
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Display_Chess(void)
{
register unsigned char i;
Set_DDRAM_Address(0x00);
for(i=0;i<0x20;i++)
{
Write_Data(0x00);
Write_Data(0x00);
}
return;
}
/***********************************
** 函數(shù)名稱: Create_CGRAM
** 功能描述: 建棋盤圖形16*16
** 輸 入: dat
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Write_Data,Set_CGRAM_Address
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Create_CGRAM(unsigned char idata dat)
{
register unsigned char i,j;
Set_CGRAM_Address(0x00);
for(i=0;i<0x04;i+=2)
{
dat=~dat;
for(j=0;j<0x08;j++)
{
Write_Data(dat);
Write_Data(~dat);
}
}
return;
}
/***********************************
** 函數(shù)名稱: Create_CGRAM
** 功能描述: 建棋盤圖形16*16
** 輸 入: dat
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Write_Data,Set_CGRAM_Address
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Create_CGRAM1(unsigned char idata dat1,unsigned char idata dat2)
{
register unsigned char i;
Set_CGRAM_Address(0x00);
for(i=0;i<0x10;i++)
{
Write_Data(dat1);
Write_Data(dat1);
Write_Data(dat2);
Write_Data(dat2);
}
return;
}
/***********************************
** 函數(shù)名稱: Create_CGRAM
** 功能描述: 建棋盤圖形16*16
** 輸 入: dat
** 輸 出 : 無
** 全局變量:無
** 調(diào)用模塊:Write_Data,Set_CGRAM_Address
**
** 作 者: 耀宇科技
** 日 期: 2006-2-10
******************************************/
void Create_CGRAM2(unsigned char idata dat)
{
register unsigned char i,j;
Set_CGRAM_Address(0x00);
for(i=0;i<0x40;i++)
{
Write_Data(dat);
}
return;
}
void main(void)
{
Initial();
Delay(10000);
while(1)
{
Create_CGRAM1(0x55,0x55);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM1(0xaa,0xaa);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM1(0xff,0x00);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM1(0x00,0xff);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM1(0x55,0xaa);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM1(0xaa,0x55);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Display_Character(0x41);
Delay(65000);
Delay(25000);
Display_Chinese(font);
Delay(65000);
Delay(25000);
Display_Chinese(ft);
Delay(65000);
Delay(25000);
Create_CGRAM(0xff);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
Create_CGRAM(0x00);
Delay(10000);
Display_Chess();
Delay(65000);
Delay(15000);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -