/******************************************************************************** PUCK: 函数功能:获取屏幕显示信息,并显示 入口: type-----模式参数;curs-----光标位置 返回: ********************************************************************************/ void screen (u8 type, curs_t curs) { const scrn_t* p; //在此前,vlist的信息已经更新-----PUCK static scrn_t scrn={0xff,0xff,"",{0}}; //不为0,保证第一次就能更新,因为0x000000有可能第一次就是0---PUCK if(scrn.code != vlist.code) //按照全显代码检索:编码已经更新,需要根据vlist的编码获取新的显示元素-----------PUCK { for (p=&table[0];p!=&table[MAXCOUNT];++p) { if ( p->code==vlist.code) //按照显示代码检索 { scrn = *p; break; } } } if(p==&table[MAXCOUNT]) //找不到显示的代码,只显示代码,事件,其他不显示-------PUCK { lcd_code (vlist.user, curs, vlist.dlen); lcd_events(); lcd_update(); return ; } curs %= vlist.dlen; lcd_data (scrn.item, scrn.frmt,scrn.elem.signpos); //18ms lcd_code (vlist.user, curs, vlist.dlen); //26ms lcd_mode (type); ///A/B/C 3种模式 lcd_total (scrn.elem.total ); ///< "总", lcd_phase (scrn.elem.phase ); ///< "A/B/C相", lcd_voltage (scrn.elem.voltage ); ///< "电压", lcd_current (scrn.elem.current ); ///< "电流", lcd_positive (scrn.elem.positive ); ///< mode4.bit4 ? "输入" : "正向"; lcd_negative (scrn.elem.negative ); ///< mode4.bit4 ? "输出" : "反向"; lcd_reactive (scrn.elem.reactive ); ///< "无功", lcd_active (scrn.elem.active ); ///< "有功", lcd_power (scrn.elem.power ); ///< "功率", lcd_factor (scrn.elem.factor ); ///< "因数", lcd_angle (scrn.elem.angle ); ///< "相角", lcd_energy (scrn.elem.energy ); ///< "电量", lcd_demand (scrn.elem.demand ); ///< "需量", lcd_time (scrn.elem.time ); ///< "时间", lcd_charge (scrn.elem.charge ); ///< "电费", lcd_lostvolt (scrn.elem.lostvolt ); ///< "失压", lcd_lostcurt (scrn.elem.lostcurt ); ///< "失流", lcd_periods (scrn.elem.periods ); ///< "时段", lcd_feerate (scrn.elem.feerate ); ///< "费率", lcd_thismonth(scrn.elem.thismonth); ///< "本月", lcd_lastmonth(scrn.elem.lastmonth); ///< mode4.bit5 ? "上月", "上上月" : "上1月", "上2月"; lcd_assemble (scrn.elem.assemble ); ///< "无功组合方式1 or 2", mode4.bit7 ? "逆时针" : "顺时针"; lcd_quadrant (scrn.elem.quadrant ); ///< "XX象限", lcd_tariff (scrn.elem.tariff ); ///< 显示"费率Tx", lcd_times (scrn.elem.times ); ///< 显示"上XX次", lcd_events (); //8ms lcd_update (); }
void lcd_clr_pic(void) { /* 液晶清屏 参数: 空 返回: 空 调用: lcd_write_cmd() 说明: 写指令0x01 */ unsigned char x=0,y=0; for (y=0; y<4; y++) for (x=0; x<8; x++) lcd_negative(0,x,y); }