⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datafax.c

📁 PHILIP LPC935MCU UART用于与传真模块通信,SPI用于与SL811的USB模块通信.该软件把U盘存储的文件通过传真发到对方相同的设备接收到U盘
💻 C
📖 第 1 页 / 共 5 页
字号:
//----------------------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 + -