一切都正常,ADS里面编译能通过,AXD时面能仿真。程序是一个测试过的正常程序裁剪的。
问题:例如,当second在(x,y)点显示20时,加1计数后变成21,但(x,y)点21会把上次显示结果覆盖,导致0和1重叠显示。
当second满60进位后minute问题一样。
while(1)
{
GUI_Clear(); //GUI_Clear后问题会解决,但屏闪烁的厉害,欺骗不了眼睛,怎么办啊?
GUI_DrawBitmap(图像源码,319,0);
year = 0x2000 + rBCDYEAR;
month=rBCDMON;
day=rBCDDAY;
hour=rBCDHOUR;
minute=rBCDMIN;
second=rBCDSEC;
GUI_GotoXY(10,100);
GUI_SetFont(&GUI_FontComic24B_1);
GUI_DispHex(year,4);
GUI_DispChar('-');
GUI_DispHex(month,2);
GUI_DispChar('-');
GUI_DispHex(day,2);
GUI_GotoXY(10,140);
GUI_DispHex(hour,2);
GUI_DispChar(':');
GUI_DispHex(minute,2);
GUI_DispChar(':');
GUI_DispHex(second,2);
}
还有个小问题:为什么GUI_DispHex()显示的BCDyear....BCDsec的值会有20FF, 带A-F。BCDyear....BCDse不是只能取0-9的十六进制数么。
问题有点多,哪位前辈遇到过这些现像了可以关注关注。。谢谢。。
------解决方案--------------------
刷新后再显示
如果不想实现FF,将其转换为BCD码即可
------解决方案--------------------
不用全清屏幕 单独清楚时间显示区域