语句不懂

2019-08-23 14:14发布

 int main(void)  { u8 m=0; u16 Buf[240];       /*ADC数据缓冲区*/ int16_t xBuf[240]; /*x坐标*/ int16_t yBuf[240]; /*y坐标*/ int16_t i;        /* 有符号数 */     int16_t*px; int16_t*py; int16_t iTemp;     px=xBuf;     py=yBuf; SystemInit(); uart_init(9600); delay_init(72);     //延时初始化 NVIC_Configuration();   LED_Init(); Adc_Init(); LCD_Init(); POINT_COLOR=RED;

    while(1)    {       for(m=0;m<240;m++)       {     Buf[m]=Get_Adc(ADC_CH0);  }    for (i = 0; i < 240; i++)  { px = i; iTemp =150 + (int16_t)((1862-Buf)/50);  // 为什么这句要用这样的式子啊?
if (iTemp > 320) { iTemp = 320; } else if (iTemp < 20) { iTemp = 20; } py = iTemp;  }
    /* 清除波形 */    LCD_Clear(GREEN); /*  显示网格 */   _Display_Grid(RED); /* 显示更新的波形 */     _LCD_DrawPoints(xBuf,yBuf ,240,BLUE); delay_ms(500); LED1=!LED1;      } } 原子哥,上面是AD采集的单路数据动态曲线在2.8寸液晶屏上显示的代码,我怎么也看不懂iTemp =150 + (int16_t)((1862-Buf)/50)这句话是什么意思来着,我试了试在7寸屏上做动态曲线显示结果程序下载后屏幕不显示,我想可能和这句有关,还望帮我解答一下这句话的意思啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
qqcaiyin
1楼-- · 2019-08-23 17:47
iTemp =150 + (int16_t)((1862-Buf)/50)  
此句应该是计算Y轴的显示位置,和屏幕显示不显示应该没关系,

这个在哪个历程里?光盘里没看到啊?
lixulongren
2楼-- · 2019-08-23 22:43
主要是不知道iTemp =150 + (int16_t)((1862-Buf)/50) 中的1862是什么意思,为什么是这个数字。如果我想在800*480的液晶屏上显示动态曲线,我把代码改为如下,结果屏幕就是白屏,不知道为什么
    while(1)
   {
      for(m=0;m<800;m++)
      {
     Buf[m]=Get_Adc(ADC_CH0);
  }
     for (i = 0; i < 800; i++)
  {
px = i;
iTemp =230 + (int16_t)((1862-Buf)/50);  //这一句话不知道为什么这样写啊

if (iTemp > 480)
{
iTemp = 480;
}
else if (iTemp < 20)
{
iTemp = 20;
}
py = iTemp;
  }

    /* 清除波形 */
    LCD_Clear(GREEN);
/*  显示网格 */
//    _Display_Grid(RED);
/* 显示更新的波形 */
     _LCD_DrawPoints(xBuf,yBuf ,240,BLUE);
delay_ms(1000);
LED1=!LED1;
lixulongren
3楼-- · 2019-08-24 02:53
回复【3楼】lixulongren:
---------------------------------
_LCD_DrawPoints(xBuf,yBuf ,800,BLUE); 这一句忘改了 改过后还是不行
正点原子
4楼-- · 2019-08-24 06:06
Buf的值来自ADC采样,1862-Buf,应该是做电平便宜,具体还是要结合硬件和实际效果看代码,否则不好猜测。