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

📄 disp.c

📁 一整套电梯控制器源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx+16-m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF;
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx-16+m_cMoveCnt];
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx-16+m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF;
                }
            }else if(cFlg==0xFF){
                m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
                m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx]; 
            }
    	}else if(data5045.cF2==3){	//数字箭头滚动
            if(cFlg==0){ 
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx+16-m_cMoveCnt];
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx+16-m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx-16+m_cMoveCnt];
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx-16+m_cMoveCnt];
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==0xFF){
                m_cSrcFloorHigh = PR[cIndexHigh][m_cLineIdx];
                m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx]; 
            }
        }
    }else{                  // 单字符
        m_c15_16singledoubleFlg=0;
    	if((data5045.cF2==0)||(P1_7==0)){	    //固定显示 
            m_cSrcFloorHigh = 0xFF;
            m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx];
    	}else if(data5045.cF2==1){	//箭头滚动   
            m_cSrcFloorHigh = 0xFF;
            m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx];
    	}else if(data5045.cF2==2){	//数字滚动
            if(cFlg==0){ 
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx+16-m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx-16+m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==0xFF){
                m_cSrcFloorHigh = 0xFF;
                m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx]; 
            }
    	}else if(data5045.cF2==3){	//数字箭头滚动
            if(cFlg==0){ 
                if(m_cLineIdx<m_cMoveCnt){
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx+16-m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==1){
                if(m_cLineIdx>(16-m_cMoveCnt)){
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx-16+m_cMoveCnt]; 
                }else{
                    m_cSrcFloorHigh = 0xFF;
                    m_cSrcFloorLow  = 0xFF; 
                }
            }else if(cFlg==0xFF){
                m_cSrcFloorHigh = 0xFF;
                m_cSrcFloorLow  = PR[cIndexLow][m_cLineIdx]; 
            }
        }
    }
}

void showtext(void)
{   
    uchar cC, cB, cA;
	uchar cMoveLineNum,j;
    uchar cLoopCnt=0;
    cC=0xFF;
    cB=0xFF;
    cA=0xFF;

    //行选择
    if(m_cLineIdx<=7){
        cMoveLineNum=7-m_cLineIdx;
        PD377=0x01<<cMoveLineNum;
        PE377=0x00;
//    }else if((m_cLineIdx>=8)&&(m_cLineIdx<=16)){
	  }else if((m_cLineIdx>=8)&&(m_cLineIdx<=15)){
//	 	cMoveLineNum=16-m_cLineIdx;
		cMoveLineNum=15-m_cLineIdx;
        PD377=0x00;
        PE377=0x01<<cMoveLineNum;
    }

    //列选择
    if(m_cOverloadFlg==1){  //超载
        //此处可将超载字符右移
        cC=(cC<<1)|0x01;
        cC=cC|((m_cSrcFloorHigh<<6)&0xC0);
        cB=(m_cSrcFloorHigh>>2)&0x3F;
        cB=cB|((m_cSrcFloorLow<<6)&0xC0);
        cA=0xC0;
        cA=cA|((m_cSrcFloorLow>>2)&0x3F);
    }else{
        if(m_c15_16singledoubleFlg==0){  //单字
			if(data5045.cF6==1){	//非居中显示
				cC=0x07;							//cC第1至3位空
				cC=cC|((m_cSrcDirect&0x1F)<<3);   	//第4至8位为方向的低5位
				cB=(m_cSrcDirect&0xE0)>>5;	 		//cB第1至3位为方向的高3位
				cB=cB|0x38;	 				 		//cB第4至6位空
				cB=cB|((m_cSrcFloorLow&0x03)<<6); 	//cB第7至8位为数字的低2位
				cA=(m_cSrcFloorLow&0xFC)>>2; 		//cA第1至6位为数字的高6位
				cA=cA|0xC0;	 						//cA第7至8位空
			}else{					//居中显示
				if((m_RecData.cDirect==0)||(m_RecData.cDirect==1)){
					cC=0x07;							//cC第1至3位空
					cC=cC|((m_cSrcDirect&0x1F)<<3);   	//第4至8位为方向的低5位
					cB=(m_cSrcDirect&0xE0)>>5;	 		//cB第1至3位为方向的高3位
					cB=cB|0x38;	 				 		//cB第4至6位空
					cB=cB|((m_cSrcFloorLow&0x03)<<6); 	//cB第7至8位为数字的低2位
					cA=(m_cSrcFloorLow&0xFC)>>2; 		//cA第1至6位为数字的高6位
					cA=cA|0xC0;	 						//cA第7至8位空
				}else{
					cC=0xFF;							//cC空
					cB=m_cSrcFloorLow;
					cA=0xFF;	 						//cA空
				}
			}
        }else{                            //双字
			if(data5045.cF6==1){	//非居中显示
				cC=0x01;							//cC第1位空
				cC=cC|((m_cSrcDirect&0x7F)<<1);		//cC第2至8位为方向的1至7位
				cB=0x01;							//cB第1位空
				cB=cB|((m_cSrcFloorHigh&0x7F)<<1);	//cB第2至8位为高字节的1至7位
				cA=m_cSrcFloorLow;					//cA第1至8位为低字节的1至8位
			}else{
				if((m_RecData.cDirect==0)||(m_RecData.cDirect==1)){
					cC=0x01;							//cC第1位空
					cC=cC|((m_cSrcDirect&0x7F)<<1);		//cC第2至8位为方向的1至7位
					cB=0x01;							//cB第1位空
					cB=cB|((m_cSrcFloorHigh&0x7F)<<1);	//cB第2至8位为高字节的1至7位
					cA=m_cSrcFloorLow;					//cA第1至8位为低字节的1至8位
				}else{
					cC=0x0F;							//cC第1至4位空
					cC=cC|((m_cSrcFloorHigh&0x0F)<<4);	//cC第5至8位为高字节的1至4位
					cB=(m_cSrcFloorHigh&0xF0)>>4;		//cB第1至4位为高字节的5至8位
					cB=cB|((m_cSrcFloorLow&0x0F)<<4);	//cB第5至8位为低字节的1至4位
					cA=(m_cSrcFloorLow&0xF0)>>4;		//cA第1至4位为低字节的5至8位
					cA=cA|0xF0;							//cA第5至8位空
				}
			}
        }
    }

    PA377=cA;
    PB377=cB;
    PC377=cC;
    
    if(m_cLockDarkFlg==1){  //变暗
        cLoopCnt=80;
    }else{                  //不变暗
        cLoopCnt=50;
    }

	for(j=0;j<=cLoopCnt;j++)
		{_nop_();}
    PA377=0xFF;
    PB377=0xFF;
    PC377=0xFF;

}

//取得字库索引
uchar getindex(uchar szText)
{
    uchar ret=0;
    switch(szText){
        case '0':   ret=0;  break;
        case '1':   ret=1;  break;
        case '2':   ret=2;  break;
        case '3':   ret=3;  break;
        case '4':   ret=4;  break;
        case '5':   ret=5;  break;
        case '6':   ret=6;  break;
        case '7':   ret=7;  break;
        case '8':   ret=8;  break;
        case '9':   ret=9;  break;
        case 'B':   ret=10; break;
        case 'F':   ret=11; break;
        case '-':   ret=12; break;
    }
    return ret;
}

// 16进制数字转换为ASCII
uchar __toascii(uchar c)
{
	uchar ret;
	if(c>9)
		ret=0x37+c; 
	else
		ret=0x30+c;
	return ret;
}

void led(void)                                     //can总线正在通讯状态和通讯错误状态显示灯赋值片断。
{
if((XBYTE[((P2&0xe0)|0x0F)*256+2]&0x80)==0x80)     //总线状态为关闭时
   {P3_1=0;
    P2_7=0;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();

    P2_7=1;
    can_init();
  }
if((XBYTE[((P2&0xe0)|0x0F)*256]&0x01)!=0x00)     //总线状态为复位时
   {P3_1=0;
    P2_7=0;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();

    P2_7=1;
    can_init();
  }
 if((XBYTE[((P2&0xe0)|0x0F)*256+2]&0x40)==0x40)    //错误寄存器为1时
   {P3_1=0;
    P2_7=0;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();

    P2_7=1;
    can_init();
  }
 else
  {P3_1=1;    
  }
 if(((XBYTE[((P2&0xe0)|0x0F)*256+2]&0x20)==0x20)||((XBYTE[((P2&0xe0)|0x0F)*256+2]&0x10)==0x10))//正在发送或正在接收时
   {P3_0=0;}
 else
   {P3_0=1;}

}

⌨️ 快捷键说明

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