华夏认证 发表于 2018-7-5 12:57:56

如何让显示屏显示变量(红色部分),年月日,时间??

RTC_ReadDate(&sysTime);
printf("%02X-%02X-%02X%02X:%02X:%02X星期\r\n", \
sysTime.year, sysTime.month, sysTime.day, sysTime.hour,\
sysTime.minute, sysTime.second, sysTime.week);
delay_ms(500);


OLED_ShowStr(0,3,“sysTime.year”,10);


//--------------------------------------------------------------
// Prototype      : void OLED_ShowChar(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize)
// Calls          :
// Parameters   : x,y -- 起始点坐标(x:0~127, y:0~7); ch[] -- 要显示的字符串; TextSize -- 字符大小1:6*8 ; 2:8*16)
// Description    : 显示codetab.h中的ASCII字符,有6*8和8*16可选择
//--------------------------------------------------------------
void OLED_ShowStr(unsigned char x, unsigned char y, unsigned char ch[], unsigned char TextSize)
{
unsigned char c = 0,i = 0,j = 0;
switch(TextSize)
{
case 1:
{
   while(ch != '\0')
   {
    c = ch - 32;
    if(x > 126)
    {
   x = 0;
   y++;
    }
    OLED_SetPos(x,y);
    for(i=0;i<6;i++)
   WriteDat(F6x8);
    x += 6;
    j++;
   }
}break;
case 2:
{
   while(ch != '\0')
   {
    c = ch - 32;
    if(x > 120)
    {
   x = 0;
   y++;
    }
    OLED_SetPos(x,y);
    for(i=0;i<8;i++)
   WriteDat(F8X16);
    OLED_SetPos(x,y+1);
    for(i=0;i<8;i++)
   WriteDat(F8X16);
    x += 8;
    j++;
   }
}break;
}
}

发表于 2018-7-5 14:03:42

sprintf(str,"%02X-%02X-%02X%02X:%02X:%02X星期\r\n", \
sysTime.year, sysTime.month, sysTime.day, sysTime.hour,\
sysTime.minute, sysTime.second, sysTime.week);

OLED_ShowStr(0,3,str,strlen(str));

toofree 发表于 2018-7-5 16:26:18

二楼的答案,也是我想说的。:)

总之,先把要显示的内容想办法,凑或转换成一个字符串,然后用OLED_ShowStr函数显示字符串到屏

wolfgang2015 发表于 2018-7-5 16:46:52

BCD码转换为字符串,然后显示出来,就这么简单

华夏认证 发表于 2018-7-5 16:57:47

安 发表于 2018-7-5 14:03
sprintf(str,"%02X-%02X-%02X%02X:%02X:%02X星期\r\n", \
sysTime.year, sysTime.month, sysTime.day ...

谢谢,感激不尽!
页: [1]
查看完整版本: 如何让显示屏显示变量(红色部分),年月日,时间??