📄 disp.c
字号:
#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 + -