//================================================
//函数功能:根据指针读出要显示的数据
//
//==============================================
void refreshdisp_formtable(void)
{ uint8 i;
uint8 xdata *point;
uint8 temp_type,num_data;
for(i=0;i<8;i++)
{ disp_buffer[i]=0; //显示缓存 ?
tempLCD[i]=0; //?
}
data_addr.word[1]=dis_table[curent_dispoint].data_ID; //获取数据ID号 //读写地址 //显示内容列表//共82项
if(addr_from_coreID(0,data_addr.word[1])!=0);
{ data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr; //数据存贮地址
temp_type=(*ID_coretalbpoint[0]).stortype; //数据存贮类型
}
data_addr.word[1]=data_addr.word[1]+dis_table[curent_dispoint].offset; //计算偏移量 //偏移
num_data=dis_table[curent_dispoint].datalong; //数据长度
Read_data(temp_type,num_data); //获取显示数据
swap_higtlow(wr_buff,num_data); //数组高低位互换 高低位互换
for(i=0;i<num_data;i++)
{ disp_buffer[2*i]=wr_buff[i]&0x0f;
disp_buffer[2*i+1]=(wr_buff[i]>>4)&0x0f;
}
for(i=0;i<6;i++) //最后一位小数不显示
disp_buffer[i]=disp_buffer[i+1];
num_data=6; //显示数据个数
for(i=0;i<4;i++) //高位为0,不显示
{ if(disp_buffer[5-i]==0)
{ disp_buffer[5-i]=0xff;
num_data--;
}
else
{ break;
}
}
for(i=0;i<num_data;i++)
{ if(i<3)
{ if(disp_buffer[i]!=0xff)
{ tempLCD[i]|=LCD_NNumber[disp_buffer[i]]>>4;
tempLCD[i+1]|=LCD_NNumber[disp_buffer[i]]<<4;
}
}
else
{
tempLCD[i+1]=LCD_NNumber[disp_buffer[i]];
}
}
// tempLCD[2]|=0x08;
// tempLCD[2]|=0x08; //kw
tempLCD[1]|=0x08; //小数点
if(mark_mode_jiaobiao) //判断是否为厂内模式
{
mark_flash=!mark_flash;
if(mark_flash) tempLCD[0]|=0x08; //1000 0000
}
else
tempLCD[0]|=0x08; //h
for(i=0;i<7;i++) //刷新显示
{ point=LCD_DISaddr[i];
*point=tempLCD[i];
}
}
这个部分是用指针来刷新显示的,对其中的程序不是很理解,请各个帮解释下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>