📄 datafax.c
字号:
//----------------------KB函数实现结束------------------------
void Delayus(int Time)
{
int i;
for(i=0;i<Time;i++)
_nop_();
}
// DataSheet Timing Diagram is error must correr it;
//向LCD里写数据,数据可以包含显示数据和命令数据
void LCD_Write(byte Ch, bit RS,bit CSA,bit CSB)
{
if (RS) LCD_Latch_DB|=LCD_RS; // set LCD_RS bit to 1
else LCD_Latch_DB&=(~LCD_RS); // set bit 0
if (CSA) LCD_Latch_DB|=LCD_CSA;
else LCD_Latch_DB&=(~LCD_CSA);
if (CSB) LCD_Latch_DB|=LCD_CSB;
else LCD_Latch_DB&=(~LCD_CSB);
LCD_E=0;
XBYTE[HC573_Addr]=LCD_Latch_DB;
LCD_RW=0;
XBYTE[LCD_Addr]=Ch;
LCD_E=1;
LCD_E=1;
LCD_E=0;
LCD_E=0;
LCD_RW=1;
LCD_RW=1;
}
/*
//从LCD里读出数据,数据可以有显示的数据和LCD的状态数据
unsigned char LCD_Read(bit RS,bit CSA,bit CSB)
{
unsigned char Ch;
if (RS) LCD_Latch_DB|=LCD_RS; // set LCD_RS bit to 1
else LCD_Latch_DB&=(~LCD_RS); // set bit 0
if (CSA) LCD_Latch_DB|=LCD_CSA;
else LCD_Latch_DB&=(~LCD_CSA);
if (CSB) LCD_Latch_DB|=LCD_CSB;
else LCD_Latch_DB&=(~LCD_CSB);
LCD_E=0;
LCD_Latch_DB|=LCD_RW;
P0=LCD_Latch_DB;
LCD_Latch=1;
LCD_Latch=0;
Ch=LCD_DB;
LCD_E=1;
LCD_E=1;
LCD_Latch_DB&=(~LCD_RW);
P0=LCD_Latch_DB;
LCD_Latch=1;
LCD_Latch=0;
LCD_E=0;
LCD_E=0;
//LCD_E=0;
//LCD_E=1;
return Ch;
}*/
//LCD块清屏,根据CSA和CSB的值来选定LCD的左、中、右三块区域
void LCD_Part_Clear(bit CSA,bit CSB)
{
int i,j;
for(i=0;i<8;i++)
{
LCD_Write(0x40,0,CSA,CSB); //Y地址
LCD_Write(0xB8+i,0,CSA,CSB); //X地址
for(j=0;j<64;j++)
// LCD_Write(0x40+j,0,CSA,CSB); //Y地址
LCD_Write(0x00,1,CSA,CSB);
}
}
//LCD清屏
void LCD_Clear(void)
{
LCD_Part_Clear(0,0);
LCD_Part_Clear(0,1);
LCD_Part_Clear(1,0);
}
//LCD块填充,根据CSA和CSB的值来选定LCD的左、中、右三块区域
void LCD_Part_Fill(bit CSA,bit CSB)
{
int i,j,k;
for(i=0;i<8;i++)
{
LCD_Write(0xB8+i,0,CSA,CSB); //X地址
LCD_Write(0x40,0,CSA,CSB); //Y地址
for(j=0;j<64;j++){
LCD_Write(0x40+j,0,CSA,CSB); //Y地址
LCD_Write(0x00,1,CSA,CSB);
k++;
}
}
}
//LCD填充
void LCD_Fill(void)
{
LCD_Part_Fill(0,0);
LCD_Part_Fill(0,1);
LCD_Part_Fill(1,0);
}
//LCD区域开显示
void LCD_Open(bit CSA,bit CSB)
{
LCD_Write(0x3F,0,CSA,CSB); //开显示
}
/*
//LCD区域关显示
void LCD_Close(bit CSA,bit CSB)
{
LCD_Write(0x3E,0,CSA,CSB); //关显示
}
*/
//LCD开显示
void LCD_ShowOpen(void)
{
LCD_Open(0,0);
LCD_Open(0,1);
LCD_Open(1,0);
}
/*
//LCD关显示
void LCD_ShowClose(void)
{
LCD_Close(0,0);
LCD_Close(0,1);
LCD_Close(1,0);
}*/
/*
//LCD块是否准备好?
bit Part_IsOK(bit CSA,bit CSB)
{
unsigned char Ch;
Ch=LCD_Read(0,CSA,CSB);
if ((Ch&0xDF)==0)
return 1;
else
return 0;
}
*/
//设置区域里首行(即LCD里的数据RAM的第0页)离屏幕顶端的偏移
void Set_ZAddress(bit CSA,bit CSB,byte Z)
{
LCD_Write(Z,0,CSA,CSB); //Z地址
}
//LCD复位
void LCD_Reset()
{
LCD_Write(0x40,0,0,0); //y=0;
LCD_Write(0xb8,0,0,0); //x=0;
LCD_Write(0xc0,0,0,0);
}
//LCD 初始化
void LCD_Init(void)
{
LCD_Reset();
//while (Part_IsOK(0,0));
//while (Part_IsOK(0,1));
//while (Part_IsOK(1,0));
LCD_Clear();
LCD_ShowOpen();
Set_ZAddress(0,0,0xC0);
Set_ZAddress(0,1,0xC0);
Set_ZAddress(1,0,0xC0);
RollSpace=0xC0;
}
/*
//滚屏
void Roll_Display(byte Row)
{
int i;
unsigned char Temp;
Temp=RollSpace;
for(i=0;i<8*Row;i++)
{
Temp=Temp+1;
if(Temp==0xFF)
Temp=0xC0;
Set_ZAddress(0,0,Temp);
Set_ZAddress(0,1,Temp);
Set_ZAddress(1,0,Temp);
}
RollSpace=Temp;
}
*/
//
unsigned char SelectXY(byte XY,byte Vaule)
{
unsigned char Ch;
if(XY==0x00) //算出在LCD数据RAM里X的位置
{
Ch=0x07 & Vaule;
Ch=0xB8 | Ch;
}
else //算出在LCD数据RAM里X的位置
{
Ch=0x07 & Vaule;
Ch=Ch<<3;
Ch=0x40 + Ch;
}
return Ch;
}
//LCD定位,X表示屏幕的纵向(0-7),Y表示屏幕的横向(0-24)
void LCD_GotoXY(byte X,byte Y)
{
unsigned char RAMX,RAMY;
bit CSA,CSB;
unsigned char TmpY;
//确定该字属于LCD的哪个区域(左、中、右)
if(Y>=0x00 && Y <=0x07)
{
CSA=0;
CSB=0;
}
else if(Y>=0x08 && Y<=0x0F)
{
CSA=0;
CSB=1;
}
else
{
CSA=1;
CSB=0;
}
TmpY=Y % 8;
RAMX = SelectXY(0x00,X); //取得X在LCD数据RAM里的位置
RAMY = SelectXY(0x01,TmpY); //取得Y在LCD数据RAM里的位置
LCD_Write(RAMX,0,CSA,CSB); //X地址
LCD_Write(RAMY,0,CSA,CSB); //Y地址
}
//显示一个字母
void DisplayByte(byte X,byte Y,byte *ByteCode)
{
int i;
bit CSA,CSB;
//确定该字属于LCD的哪个区域(左、中、右)
if(Y>=0x00 && Y <=0x07)
{
CSA=0;
CSB=0;
}
else if(Y>=0x08 && Y<=0x0F)
{
CSA=0;
CSB=1;
}
else
{
CSA=1;
CSB=0;
}
LCD_GotoXY(X,Y); //LCD显示位置定位
for(i=0;i<ByteNum;i++)
{
if(i==8)
{
LCD_GotoXY(X+1,Y);
}
LCD_Write(ByteCode[i],1,CSA,CSB); //写显示数据
}
LCD_Open(CSA,CSB);
}
//显示一个汉字
void DisplayWord(byte X,byte Y,byte *ByteCode)
{
int i;
bit CSA,CSB;
//确定该字属于LCD的哪个区域(左、中、右)
if(Y>=0x00 && Y <=0x07)
{
CSA=0;
CSB=0;
}
else if(Y>=0x08 && Y<=0x0F)
{
CSA=0;
CSB=1;
}
else
{
CSA=1;
CSB=0;
}
LCD_GotoXY(X,Y); //LCD显示位置定位
for(i=0;i<WordNum;i++)
{
if(i==16)
{
LCD_GotoXY(X+1,Y);
}
LCD_Write(ByteCode[i],1,CSA,CSB); //写显示数据
}
LCD_Open(CSA,CSB);
}
void LED_ShowOn(byte LEDD)
{
}
void SelectShow_Byte(byte X,byte Y,byte Values)
{
switch(Values) {
case 0: DisplayByte(X,Y,ZiMo_L_0); break;
case 1: DisplayByte(X,Y,ZiMo_L_1); break;
case 2: DisplayByte(X,Y,ZiMo_L_2); break;
case 3: DisplayByte(X,Y,ZiMo_L_3); break;
case 4: DisplayByte(X,Y,ZiMo_L_4); break;
case 5: DisplayByte(X,Y,ZiMo_L_5); break;
case 6: DisplayByte(X,Y,ZiMo_L_6); break;
case 7: DisplayByte(X,Y,ZiMo_L_7); break;
case 8: DisplayByte(X,Y,ZiMo_L_8); break;
case 9: DisplayByte(X,Y,ZiMo_L_9); break;
case 10: DisplayByte(X,Y,ZiMo_L_10); break;
case 11: DisplayByte(X,Y,ZiMo_L_11); break;
case 12: DisplayByte(X,Y,ZiMo_L_12); break;
case 13: DisplayByte(X,Y,ZiMo_L_13); break;
case 14: DisplayByte(X,Y,ZiMo_L_14); break;
case 15: DisplayByte(X,Y,ZiMo_L_15); break;
case 16: DisplayByte(X,Y,ZiMo_L_16); break;
case 17: DisplayByte(X,Y,ZiMo_L_17); break;
case 18: DisplayByte(X,Y,ZiMo_L_18); break;
case 19: DisplayByte(X,Y,ZiMo_L_19); break;
case 20: DisplayByte(X,Y,ZiMo_L_20); break;
case 21: DisplayByte(X,Y,ZiMo_L_21); break;
case 22: DisplayByte(X,Y,ZiMo_L_22); break;
case 23: DisplayByte(X,Y,ZiMo_L_23); break;
case 24: DisplayByte(X,Y,ZiMo_L_24); break;
case 25: DisplayByte(X,Y,ZiMo_L_25); break;
case 26: DisplayByte(X,Y,ZiMo_L_26); break;
case 27: DisplayByte(X,Y,ZiMo_L_27); break;
case 28: DisplayByte(X,Y,ZiMo_L_28); break;
case 29: DisplayByte(X,Y,ZiMo_L_29); break;
case 30: DisplayByte(X,Y,ZiMo_L_30); break;
case 31: DisplayByte(X,Y,ZiMo_L_31); break;
case 32: DisplayByte(X,Y,ZiMo_L_32); break;
case 33: DisplayByte(X,Y,ZiMo_L_33); break;
case 34: DisplayByte(X,Y,ZiMo_L_34); break;
case 35: DisplayByte(X,Y,ZiMo_L_35); break;
case 36: DisplayByte(X,Y,ZiMo_L_36); break;
case 37: DisplayByte(X,Y,ZiMo_L_37); break;
case 38: DisplayByte(X,Y,ZiMo_L_38); break;
case 39: DisplayByte(X,Y,ZiMo_L_39); break;
case 40: DisplayByte(X,Y,ZiMo_L_40); break;
case 41: DisplayByte(X,Y,ZiMo_L_41); break;
case 42: DisplayByte(X,Y,ZiMo_L_42); break;
case 43: DisplayByte(X,Y,ZiMo_L_43); break;
case 44: DisplayByte(X,Y,ZiMo_L_44); break;
case 45: DisplayByte(X,Y,ZiMo_L_45); break;
case 46: DisplayByte(X,Y,ZiMo_L_46); break;
case 47: DisplayByte(X,Y,ZiMo_L_47); break;
case 48: DisplayByte(X,Y,ZiMo_L_48); break;
case 49: DisplayByte(X,Y,ZiMo_L_49); break;
case 50: DisplayByte(X,Y,ZiMo_L_50); break;
case 51: DisplayByte(X,Y,ZiMo_L_51); break;
case 52: DisplayByte(X,Y,ZiMo_L_52); break;
case 53: DisplayByte(X,Y,ZiMo_L_53); break;
case 54: DisplayByte(X,Y,ZiMo_L_54); break;
case 55: DisplayByte(X,Y,ZiMo_L_55); break;
case 56: DisplayByte(X,Y,ZiMo_L_56); break;
case 57: DisplayByte(X,Y,ZiMo_L_57); break;
case 58: DisplayByte(X,Y,ZiMo_L_58); break;
case 59: DisplayByte(X,Y,ZiMo_L_59); break;
case 60: DisplayByte(X,Y,ZiMo_L_60); break;
case 61: DisplayByte(X,Y,ZiMo_L_61); break;
case 62: DisplayByte(X,Y,ZiMo_L_62); break;
case 63: DisplayByte(X,Y,ZiMo_L_63); break;
case 64: DisplayByte(X,Y,ZiMo_L_64); break;
case 65: DisplayByte(X,Y,ZiMo_L_65); break;
case 66: DisplayByte(X,Y,ZiMo_L_66); break;
case 67: DisplayByte(X,Y,ZiMo_L_67); break;
case 68: DisplayByte(X,Y,ZiMo_L_68); break;
case 69: DisplayByte(X,Y,ZiMo_L_69); break;
case 70: DisplayByte(X,Y,ZiMo_L_70); break;
case 71: DisplayByte(X,Y,ZiMo_L_71); break;
case 72: DisplayByte(X,Y,ZiMo_L_72); break;
case 73: DisplayByte(X,Y,ZiMo_L_73); break;
case 74: DisplayByte(X,Y,ZiMo_L_74); break;
case 75: DisplayByte(X,Y,ZiMo_L_75); break;
case 76: DisplayByte(X,Y,ZiMo_L_76); break;
case 77: DisplayByte(X,Y,ZiMo_L_77); break;
case 78: DisplayByte(X,Y,ZiMo_L_78); break;
case 79: DisplayByte(X,Y,ZiMo_L_79); break;
case 80: DisplayByte(X,Y,ZiMo_L_80); break;
case 81: DisplayByte(X,Y,ZiMo_L_81); break;
case 82: DisplayByte(X,Y,ZiMo_L_82); break;
case 83: DisplayByte(X,Y,ZiMo_L_83); break;
case 84: DisplayByte(X,Y,ZiMo_L_84); break;
case 85: DisplayByte(X,Y,ZiMo_L_85); break;
case 86: DisplayByte(X,Y,ZiMo_L_86); break;
case 87: DisplayByte(X,Y,ZiMo_L_87); break;
case 88: DisplayByte(X,Y,ZiMo_L_88); break;
case 89: DisplayByte(X,Y,ZiMo_L_89); break;
case 90: DisplayByte(X,Y,ZiMo_L_90); break;
default : break;
}
}
void SelectShow_Word(byte X,byte Y,byte Values)
{
switch(Values) {
case 0: DisplayWord(X,Y,ZiMo_H_0); break;
case 1: DisplayWord(X,Y,ZiMo_H_1); break;
case 2: DisplayWord(X,Y,ZiMo_H_2); break;
case 3: DisplayWord(X,Y,ZiMo_H_3); break;
case 4: DisplayWord(X,Y,ZiMo_H_4); break;
case 5: DisplayWord(X,Y,ZiMo_H_5); break;
case 6: DisplayWord(X,Y,ZiMo_H_6); break;
case 7: DisplayWord(X,Y,ZiMo_H_7); break;
case 8: DisplayWord(X,Y,ZiMo_H_8); break;
case 9: DisplayWord(X,Y,ZiMo_H_9); break;
case 10: DisplayWord(X,Y,ZiMo_H_10); break;
case 11: DisplayWord(X,Y,ZiMo_H_11); break;
case 12: DisplayWord(X,Y,ZiMo_H_12); break;
case 13: DisplayWord(X,Y,ZiMo_H_13); break;
case 14: DisplayWord(X,Y,ZiMo_H_14); break;
case 15: DisplayWord(X,Y,ZiMo_H_15); break;
case 16: DisplayWord(X,Y,ZiMo_H_16); break;
case 17: DisplayWord(X,Y,ZiMo_H_17); break;
case 18: DisplayWord(X,Y,ZiMo_H_18); break;
case 19: DisplayWord(X,Y,ZiMo_H_19); break;
case 20: DisplayWord(X,Y,ZiMo_H_20); break;
case 21: DisplayWord(X,Y,ZiMo_H_21); break;
case 22: DisplayWord(X,Y,ZiMo_H_22); break;
case 23: DisplayWord(X,Y,ZiMo_H_23); break;
case 24: DisplayWord(X,Y,ZiMo_H_24); break;
case 25: DisplayWord(X,Y,ZiMo_H_25); break;
case 26: DisplayWord(X,Y,ZiMo_H_26); break;
case 27: DisplayWord(X,Y,ZiMo_H_27); break;
case 28: DisplayWord(X,Y,ZiMo_H_28); break;
case 29: DisplayWord(X,Y,ZiMo_H_29); break;
case 30: DisplayWord(X,Y,ZiMo_H_30); break;
case 31: DisplayWord(X,Y,ZiMo_H_31); break;
case 32: DisplayWord(X,Y,ZiMo_H_32); break;
case 33: DisplayWord(X,Y,ZiMo_H_33); break;
case 34: DisplayWord(X,Y,ZiMo_H_34); break;
case 35: DisplayWord(X,Y,ZiMo_H_35); break;
case 36: DisplayWord(X,Y,ZiMo_H_36); break;
case 37: DisplayWord(X,Y,ZiMo_H_37); break;
case 38: DisplayWord(X,Y,ZiMo_H_38); break;
case 39: DisplayWord(X,Y,ZiMo_H_39); break;
case 40: DisplayWord(X,Y,ZiMo_H_40); break;
case 41: DisplayWord(X,Y,ZiMo_H_41); break;
case 42: DisplayWord(X,Y,ZiMo_H_42); break;
case 43: DisplayWord(X,Y,ZiMo_H_43); break;
case 44: DisplayWord(X,Y,ZiMo_H_44); break;
case 45: DisplayWord(X,Y,ZiMo_H_45); break;
case 46: DisplayWord(X,Y,ZiMo_H_46); break;
case 47: DisplayWord(X,Y,ZiMo_H_47); break;
case 48: DisplayWord(X,Y,ZiMo_H_48); break;
case 49: DisplayWord(X,Y,ZiMo_H_49); break;
case 50: DisplayWord(X,Y,ZiMo_H_50); break;
case 51: DisplayWord(X,Y,ZiMo_H_51); break;
case 52: DisplayWord(X,Y,ZiMo_H_52); break;
case 53: DisplayWord(X,Y,ZiMo_H_53); break;
case 54: DisplayWord(X,Y,ZiMo_H_54); break;
case 55: DisplayWord(X,Y,ZiMo_H_55); break;
case 56: DisplayWord(X,Y,ZiMo_H_56); break;
case 57: DisplayWord(X,Y,ZiMo_H_57); break;
case 58: DisplayWord(X,Y,ZiMo_H_58); break;
case 59:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -