PROTUES中12864源程序

1.12864.h
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define DATA P0 //LCD12864數(shù)據(jù)線
sbit RS=P2^7; // 數(shù)據(jù)、指令 選擇
sbit RW=P2^6; // 讀、寫選擇
sbit EN=P2^5; // 讀、寫使能,下降沿
sbit cs1=P2^1; // 片選1
sbit cs2=P2^0; // 片選2
uchar code Hzk[];
uchar code Szk[];
uchar code Fhk[];
uchar code Zmk[];
void CheckState();
void SendCommandToLCD(uchar com);
void SetLine(uchar page);
void SetStartLine(uchar startline);
void SetColumn(uchar column);
void SetOnOff(uchar onoff);
void WriteByte(uchar dat)?;
void SelectScreen(uchar screen);
void ClearScreen(uchar screen);
void InitLCD() ;
void Display_HZ(uchar screen,uchar page,uchar column,uchar number);
void Display_SZ(uchar screen,uchar page,uchar column,uchar number);
void Display_ZM(uchar screen,uchar page,uchar column,uchar number);
void Display_FH(uchar screen,uchar page,uchar column,uchar number);
#endif

2.12864.c
#include "12864.h"
/********************************************************************
功? ? 能:定義字庫:Hzk-漢字庫,Szk-數(shù)字庫,F(xiàn)hk-符號庫,Zmk-字母庫
參? ? 數(shù):無
返回值? :無
使用方法:根據(jù)需要自備
*********************************************************************/
uchar code Hzk[]={
/*--? 文字:? 單? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=16x16? ?--*/
0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,
/*--? 文字:? 片? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=16x16? ?--*/
0x00,0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,
/*--? 文字:? 機? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=16x16? ?--*/
0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x83,0x60,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x78,0x00,
/*--? 文字:? 入? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=16x16? ?--*/
0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x80,0x00,
/*--? 文字:? 門? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=16x16? ?--*/
0x00,0xF8,0x01,0x06,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,
};
uchar code Szk[]={
/*--? 文字:? 0? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
/*--? 文字:? 1? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,
/*--? 文字:? 2? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
/*--? 文字:? 3? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,
/*--? 文字:? 4? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,
/*--? 文字:? 5? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,
/*--? 文字:? 6? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,
/*--? 文字:? 7? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,
/*--? 文字:? 8? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
/*--? 文字:? 9? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,
};
uchar code Fhk[]={
/*--? 文字:? +? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,
/*--? 文字:? -? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
/*--? 文字:? *? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,
/*--? 文字:? /? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00,
/*--? 文字:? :? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,
/*--? 文字:? ?? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x38,0x34,0x02,0x82,0xC2,0x7C,0x00,0x00,0x00,0x00,0x00,0x37,0x37,0x00,
/*--? 文字:? ~? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x02,0x01,0x02,0x02,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--? 文字:? %? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,0x00,
/*--? 文字:? #? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x40,0xC0,0x78,0x40,0xC0,0x78,0x00,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x00,
/*--? 文字:? <? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,
/*--? 文字:? >? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,
};
uchar code Zmk[]={
/*--? 文字:? A? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
/*--? 文字:? B? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,
/*--? 文字:? C? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
/*--? 文字:? D? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,
/*--? 文字:? E? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,
/*--? 文字:? F? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,
/*--? 文字:? G? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,
/*--? 文字:? H? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,
/*--? 文字:? I? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*--? 文字:? J? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,
/*--? 文字:? K? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,
/*--? 文字:? L? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,
/*--? 文字:? M? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x01,0x3E,0x01,0x3F,0x20,0x00,
/*--? 文字:? N? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,
/*--? 文字:? O? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
/*--? 文字:? P? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,
/*--? 文字:? Q? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x28,0x28,0x30,0x50,0x4F,0x00,
/*--? 文字:? R? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
/*--? 文字:? S? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
/*--? 文字:? T? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
/*--? 文字:? U? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
/*--? 文字:? V? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,
/*--? 文字:? W? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,0x00,
/*--? 文字:? X? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
/*--? 文字:? Y? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
/*--? 文字:? Z? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,
/*--? 文字:? a? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x19,0x24,0x24,0x12,0x3F,0x20,0x00,
/*--? 文字:? b? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x10,0xF0,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,
/*--? 文字:? c? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,
/*--? 文字:? d? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x90,0xF0,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
/*--? 文字:? e? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x24,0x24,0x24,0x24,0x17,0x00,
/*--? 文字:? f? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x80,0x80,0xE0,0x90,0x90,0x20,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*--? 文字:? g? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,
/*--? 文字:? h? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x10,0xF0,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
/*--? 文字:? i? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*--? 文字:? j? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,
/*--? 文字:? k? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x10,0xF0,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x06,0x29,0x30,0x20,0x00,
/*--? 文字:? l? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
/*--? 文字:? m? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
/*--? 文字:? n? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
/*--? 文字:? o? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
/*--? 文字:? p? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0x91,0x20,0x20,0x11,0x0E,0x00,
/*--? 文字:? q? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x00,0x80,0x80,0x00,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0x91,0xFF,0x80,
/*--? 文字:? r? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
/*--? 文字:? s? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
/*--? 文字:? t? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x10,0x00,
/*--? 文字:? u? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
/*--? 文字:? v? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x03,0x0C,0x30,0x0C,0x03,0x00,0x00,
/*--? 文字:? w? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x01,0x0E,0x30,0x0C,0x07,0x38,0x06,0x01,
/*--? 文字:? x? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x20,0x31,0x0E,0x2E,0x31,0x20,0x00,
/*--? 文字:? y? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x81,0x86,0x78,0x18,0x06,0x01,0x00,
/*--? 文字:? z? --*/
/*--? 宋體12;? 此字體下對應的點陣為:寬x高=8x16? ?--*/
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,
};
/********************************************************************
函數(shù)名稱:CheckState
功? ? 能:狀態(tài)檢查,LCD判忙,RS=0寫指令,RS=1寫數(shù)據(jù)
參? ? 數(shù):無
返回值? :無
*********************************************************************/
void CheckState(void)
{
uchar dat; //狀態(tài)信息,判忙
RS=0; //DB7∽DB0為顯示指令數(shù)據(jù)?
RW=1; //數(shù)據(jù)被讀到DB7∽DB0?
do{
DATA=0x00;
EN=1; //EN下降沿
dat=DATA;
EN=0;
dat=0x80 & dat; //DB7為0可操作
}while(!(dat==0x00));
}
/********************************************************************
函數(shù)名稱:SendCommandToLCD
功? ? 能:寫命令到LCD,RS=0寫指令,RS=1寫數(shù)據(jù)
參? ? 數(shù):com 命令
返回值? :無
*********************************************************************/
void SendCommandToLCD(uchar com)
{
CheckState();//狀態(tài)檢查
RS=0; //向LCD發(fā)送命令
RW=0;
DATA=com; ?
EN=1; //EN下降沿
EN=0;
}
/********************************************************************
函數(shù)名稱:SetLine
功? ? 能:設置行(頁)
說? ? 明:0xb8是頁的首地址,1011 1xxx? 設定頁地址--xxx,8行=1頁,共8頁
參? ? 數(shù):page,取值0-7
返回值? :無
使用方法:必要時使用
*********************************************************************/
void SetLine(uchar page)
{
page=0xb8|page;?
SendCommandToLCD(page);
}
/********************************************************************
函數(shù)名稱:SetStartLine
功? ? 能:設置從哪行開始:0-63,一般從0 行開始顯示
說? ? 明:0xc0是行的首地址
參? ? 數(shù):startline,取值0-63
返回值? :無
使用方法:必要時使用
*********************************************************************/
void SetStartLine(uchar startline) ? ?
{
startline=0xc0|startline;?
SendCommandToLCD(startline);?
}
/********************************************************************
函數(shù)名稱:SetColumn
功? ? 能:設置從哪列開始:0-63
說? ? 明:0x40是列的首地址,column最大值為63,越出在0-63間循環(huán)?
參? ? 數(shù):column,取值0-63
返回值? :無
*********************************************************************/
void SetColumn(uchar column)
{
column=column &0x3f; //只取低6位
column= 0x40|column; //01xx xxxx
SendCommandToLCD(column);
}
/********************************************************************
函數(shù)名稱:SetOnOff
功? ? 能:開關顯示
說? ? 明:0x3f是開顯示,0x3e是關顯示?
參? ? 數(shù):onoff:0-關、1-開
返回值? :無
使用方法:必要時使用
*********************************************************************/
void SetOnOff(uchar onoff) ? ?
{
onoff=0x3e|onoff; //0011 111x
SendCommandToLCD(onoff);
}
/********************************************************************
函數(shù)名稱:WriteByte
功? ? 能:寫顯示數(shù)據(jù),RS=0寫指令,RS=1寫數(shù)據(jù),列地址自動加1
參? ? 數(shù):dat:按字節(jié)顯示數(shù)據(jù)
返回值? :無
*********************************************************************/
void WriteByte(uchar dat)
{
CheckState();//狀態(tài)檢查
RS=1;?
RW=0;
DATA=dat;
EN=1; //EN下降沿
EN=0;
}
/********************************************************************
函數(shù)名稱:SelectScreen
功? ? 能:選擇屏幕
參? ? 數(shù):screen: 0-全屏,1-左屏,2-右屏
返回值? :無
使用方法:初始化3或必要時使用
*********************************************************************/
void SelectScreen(uchar screen) ??
{
switch(screen)
? {
case 0: cs1=0;cs2=0;break; //全屏,左右半屏顯示相同
case 1: cs1=1;cs2=0;break;//左屏
case 2: cs1=0;cs2=1; break;//右屏
? }
}
/********************************************************************
函數(shù)名稱:ClearScreen
功? ? 能:清屏
參? ? 數(shù):screen: 0-全屏,1-左屏,2-右屏
返回值? :無
使用方法:初始化2或必要時使用
*********************************************************************/
void ClearScreen(uchar screen) ??
{
uchar i,j;
SelectScreen(screen);
for(i=0;i<8;i++) //頁
{
SetLine(i);
SetColumn(0);
for(j=0;j<64;j++) //列
{WriteByte(0x00);} //寫
}
}
/********************************************************************
函數(shù)名稱:InitLCD
功? ? 能:初始化LCD
參? ? 數(shù):無
返回值? :無
使用方法:初始化1
*********************************************************************/
void InitLCD() ??
{
CheckState();//狀態(tài)檢查
SelectScreen(0);
SetOnOff(0); //關顯示
SelectScreen(0);
SetOnOff(1); //開顯示
SelectScreen(0);
ClearScreen(0);//清屏
SetStartLine(0); //開始行:0
}
/********************************************************************
函數(shù)名稱:Display_HZ
功? ? 能:顯示全角漢字
參? ? 數(shù):screen-選擇屏幕: 0-全屏,1-左屏,2-右屏
page-選頁參數(shù),每次寫一頁(8行),一個漢字占兩頁
column-選列參數(shù)
number-漢字庫Hzk[]中的第幾漢字輸出
說? ? 明:宋體、字號12時漢字對應的點陣為:寬x高=16x16,先行再列
返回值? :無
*********************************************************************/
void Display_HZ(uchar screen,uchar page,uchar column,uchar number)
{
int i;
SelectScreen(screen);
column=column&0x3f;//0011 1111
SetLine(page); //寫第一頁
SetColumn(column); //控制列
for(i=0;i<16;i++)? //控制16列的數(shù)據(jù)輸出
{
WriteByte(Hzk[i+32*number]);
} //i+32*number漢字的前16個數(shù)據(jù)輸出
SetLine(page+1); //寫第二頁
SetColumn(column); ? ?//控制列
for(i=0;i<16;i++) ? //控制16列的數(shù)據(jù)輸出
{
WriteByte(Hzk[i+32*number+16]);
}//i+32*number+16漢字的后16個數(shù)據(jù)輸出
}?
/********************************************************************
函數(shù)名稱:Display_ZM
功? ? 能:顯示字母
參? ? 數(shù):screen-選擇屏幕: 0-全屏,1-左屏,2-右屏
page-選頁參數(shù),每次寫一頁(8行),一個字母占兩頁,先行再列
column-選列參數(shù)
number-字母庫Zmk[]中的第幾字母輸出
說? ? 明:宋體、字號12時字母對應的點陣為:寬x高=8x16
返回值? :無
*********************************************************************/
void Display_ZM(uchar screen,uchar page,uchar column,uchar number)
{
int i;
SelectScreen(screen);
column=column&0x3f;//0011 1111
SetLine(page); //寫上半頁
SetColumn(column); //控制列
for(i=0;i<8;i++)? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Zmk[i+16*number]);
} //i+16*number的前8個數(shù)據(jù)輸出
SetLine(page+1); //寫下半頁
SetColumn(column); ? ?//控制列
for(i=0;i<8;i++) ? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Zmk[i+16*number+8]);
}//i+16*number+8字母的后8個數(shù)據(jù)輸出
}
/********************************************************************
函數(shù)名稱:DisplaySZ
功? ? 能:顯示數(shù)字
參? ? 數(shù):screen-選擇屏幕: 0-全屏,1-左屏,2-右屏
page-選頁參數(shù),每次寫一頁(8行),一個數(shù)字占兩頁,先行再列
column-選列參數(shù)
number-數(shù)字庫Szk[]中的第幾數(shù)字輸出
說? ? 明:宋體、字號12時數(shù)字對應的點陣為:寬x高=8x16
返回值? :無
*********************************************************************/
void Display_SZ(uchar screen,uchar page,uchar column,uchar number)
{
int i;
SelectScreen(screen);
column=column&0x3f;//0011 1111
SetLine(page); //寫上半頁
SetColumn(column); //控制列
for(i=0;i<8;i++)? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Szk[i+16*number]);
} //i+16*number的前8個數(shù)據(jù)輸出
SetLine(page+1); //寫下半頁
SetColumn(column); ? ?//控制列
for(i=0;i<8;i++) ? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Szk[i+16*number+8]);
}//i+16*number+8數(shù)字的后8個數(shù)據(jù)輸出
}
/********************************************************************
函數(shù)名稱:DisplayFH
功? ? 能:顯示符號
參? ? 數(shù):screen-選擇屏幕: 0-全屏,1-左屏,2-右屏
page-選頁參數(shù),每次寫一頁(8行),一個符號占兩頁,先行再列
column-選列參數(shù)
number-符號庫Fhk[]中的第幾符號輸出
說? ? 明:宋體、字號12時符號對應的點陣為:寬x高=8x16
返回值? :無
*********************************************************************/
void Display_FH(uchar screen,uchar page,uchar column,uchar number)
{
int i;
SelectScreen(screen);
column=column&0x3f;//0011 1111
SetLine(page); //寫上半頁
SetColumn(column); //控制列
for(i=0;i<8;i++)? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Fhk[i+16*number]);
} //i+16*number的前8個數(shù)據(jù)輸出
SetLine(page+1); //寫下半頁
SetColumn(column); ? ?//控制列
for(i=0;i<8;i++) ? //控制8列的數(shù)據(jù)輸出
{
WriteByte(Fhk[i+16*number+8]);
}//i+16*number+8符號的后8個數(shù)據(jù)輸出
}