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

📄 disp.c

📁 一整套电梯控制器源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "public.h"

void display(void)
{

    //做成楼层数字符
    make16_16text();    

    m_cLineIdx=0;
    while(1){
        //做成16x5的行缓冲
        make16_5line(m_RecData.cDirect);
        //做成16x16的行缓冲
        make16_16line(m_RecData.cDirect);
        //显示
        showtext();

        m_cLineIdx++;
        if(m_cLineIdx>=16)
            break;
    }
	
    //移动步数
    calmovecnt();

}

void calmovecnt(void)
{
    if((data5045.cF2==0)||(m_cOverloadFlg==1)){	    //固定显示 
        m_cWholeMoveOKFlg=0;
        m_cMoveCnt=0;        
        m_cMoveTimer=TIMER_ONELINE_NUM;
        m_cNewLineFlg=0;
    }else if(data5045.cF2==1){	//箭头滚动    
    	if(m_cNewLineFlg==1){
    		m_cMoveCnt++;
    		m_cNewLineFlg=0;
    		//整组移动完成
    		if(m_cMoveCnt>15){
    			m_cWholeMoveOKFlg=1;
    		}
    	}
    }else if(data5045.cF2==2){	//数字滚动    
    	if(m_cNewLineFlg==1){
    		m_cMoveCnt++;
    		m_cNewLineFlg=0;
    		//整组移动完成
    		if(m_cMoveCnt>15){
    			m_cWholeMoveOKFlg=1;
    		}
    	}    
    }else if(data5045.cF2==3){	//数字箭头滚动
    	if(m_cNewLineFlg==1){
    		m_cMoveCnt++;
    		m_cNewLineFlg=0;
    		//整组移动完成
    		if(m_cMoveCnt>15){
    			m_cWholeMoveOKFlg=1;
    		}
    	}
    }  
}

// cFlg: 0--下箭头  1--上箭头  2--空白
void make16_5line(uchar cFlg)
{ 

    m_cSrcDirect=0xFF;

	if(P1_7==1){	//跳线未接通
        if(m_cOverloadFlg==1){  //超载时仅作固定显示
            m_cSrcDirect = PR_OVERLOAD[m_cLineIdx][0];
            return;
        }
    	if(data5045.cF2==0){	//固定显示 
            if(cFlg==0){ 
                m_cSrcDirect = PRDDown[m_cLineIdx];
            }else if(cFlg==1){
                m_cSrcDirect = PRDUp[m_cLineIdx];
            }else if(cFlg==2){
                m_cSrcDirect = 0xFF;
            }
    	}else if(data5045.cF2==1){	//箭头滚动    
            if(cFlg==0){
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
                }else{
                    m_cSrcDirect = 0xFF;
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
                }else{
                    m_cSrcDirect = 0xFF;
                }
            }else if(cFlg==0xFF){
                m_cSrcDirect = 0xFF;
            }
    	}else if(data5045.cF2==2){	//数字滚动    
            if(cFlg==0){ 
                m_cSrcDirect = PRDDown[m_cLineIdx];
            }else if(cFlg==1){
                m_cSrcDirect = PRDUp[m_cLineIdx];
            }else if(cFlg==0xFF){
                m_cSrcDirect = 0xFF;
            } 
    	}else if(data5045.cF2==3){	//数字箭头滚动
            if(cFlg==0){ 
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcDirect=PRDDown[m_cLineIdx+16-m_cMoveCnt];
                }else{
                    m_cSrcDirect=0xFF;
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcDirect=PRDUp[m_cLineIdx-16+m_cMoveCnt];
                }else{
                    m_cSrcDirect=0xFF;
                }
            }else if(cFlg==0xFF){
                m_cSrcDirect = 0xFF;
            }
        }        
    }else{          //跳线接通
        m_cSrcDirect=0xFF;
    }

}

//buffer做成(7x11)
void make16_16text(void)
{
    uchar cDispVal=0;   //显示值
    uchar cDataHigh=0;
    uchar cDataLow=0;
    uchar cAsciiHigh=0; 
    uchar cAsciiLow=0;

    if(P1_7==0){    // "F0 F1 F2 F3 F4"

        if(m_cFuncCnt==0){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '0';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF0+1;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==1){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '1';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF1+1;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==2){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '2';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF2+1;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==3){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '3';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF3;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==4){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '4';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF4;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==5){    //此处暂时被封 2004 11.03, 对应功能改为直接接受报站楼层
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '5';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                //距地楼层数(0~55), 显示(-8-47)
                if(data5045.cF5<8){
                    cDataLow   = 8-data5045.cF5;
                    cAsciiHigh = '-';
                    cAsciiLow  = __toascii(cDataLow);
                }else{
                    cDataHigh  = (data5045.cF5-8)/10;
                    cDataLow   = (data5045.cF5-8)%10;
                    cAsciiHigh = __toascii(cDataHigh);
                    cAsciiLow  = __toascii(cDataLow);
                }
            }
        }else if(m_cFuncCnt==6){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '6';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF6;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }else if(m_cFuncCnt==7){
            if((m_cSettingFuncFlg==1)&&(m_cSettingSubFuncFlg==0)){
                cAsciiHigh = 'F';
                cAsciiLow  = '7';
            }else if((m_cSettingFuncFlg==0)&&(m_cSettingSubFuncFlg==1)){
                cDispVal  = data5045.cF7;
                cDataHigh = cDispVal/10;
                cDataLow  = cDispVal%10;
                cAsciiHigh = __toascii(cDataHigh);
                cAsciiLow  = __toascii(cDataLow);
            }
        }
    }else{          // 显示楼层(-1~-9,1-48,B1~B9)
        
        if(m_cOverloadFlg==1){  //超载时仅作固定显示
            return;
        }

        if((m_RecData.cCurFloor>=0) && (m_RecData.cCurFloor<=8)){			//-1~-9
            cDataHigh = (9-m_RecData.cCurFloor)/10;
            cDataLow  = (9-m_RecData.cCurFloor)%10;
            cAsciiHigh = '-';
            cAsciiLow  = __toascii(cDataLow);
        }else if((m_RecData.cCurFloor>=9) && (m_RecData.cCurFloor<=56)){	//1-48
            cDataHigh = (m_RecData.cCurFloor-8)/10;
            cDataLow  = (m_RecData.cCurFloor-8)%10;
            cAsciiHigh = __toascii(cDataHigh);
            cAsciiLow  = __toascii(cDataLow);
        }else if((m_RecData.cCurFloor>=69) && (m_RecData.cCurFloor<=77)){   //B1~B9
            cDataHigh = (m_RecData.cCurFloor-68)/10;
            cDataLow  = (m_RecData.cCurFloor-68)%10;
            cAsciiHigh = 'B';
            cAsciiLow  = __toascii(cDataLow);
        }else{
            cAsciiHigh = '-';
            cAsciiLow  = '-';
        }
    }

    m_cAsciiHigh=cAsciiHigh; 
    m_cAsciiLow=cAsciiLow;

}

void make16_16line(uchar cFlg)
{
    uchar cIndexHigh=getindex(m_cAsciiHigh);
    uchar cIndexLow =getindex(m_cAsciiLow);
    
    m_cSrcFloorHigh=0xFF;    //楼层高字符缓冲区
    m_cSrcFloorLow=0xFF;     //楼层低字符缓冲区


    if(m_cOverloadFlg==1){  //超载时仅作固定显示
        m_cSrcFloorHigh = PR_OVERLOAD[m_cLineIdx][1];
        m_cSrcFloorLow  = PR_OVERLOAD[m_cLineIdx][2];
        return;
    }
    
    if(cIndexHigh != 0){    // 双字符
        m_c15_16singledoubleFlg=1;
    	if((data5045.cF2==0)||(P1_7==0)){	    //固定显示 
            m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
            m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx];
    	}else if(data5045.cF2==1){	//箭头滚动   
            m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
            m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx]; 
    	}else if(data5045.cF2==2){	//数字滚动
            if(cFlg==0){ 
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx+16-m_cMoveCnt];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -