新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2016-5-16
- 在线时间
- 7 小时
|
1金钱
下面是我编写的一部分程序,大体意思就是用stm32自带adc采集电压,然后将每时每刻采集到的电压值对应到lcd屏幕上的一个点,画出点,当画的点足够密集就形成电压波形了。当波形画完整个屏幕的时候,再往下画,就得用后面的点覆盖前面的波形,或者是先清屏再画后面的波形。这里我不太会,我写的程序是把整个屏幕都清了,再从头画,肯定很不理想,但我想先看看效果。结果问题来了,lcd是黑屏的直接。当我把 for(a=0;a<=750;a++) {Y1[a]=a+30;} 以及后面的语句注释掉后是可以正常显示的,那问题就出在这些数组的赋值上,但我不知道是什么问题,是否有大哥提示下?感激不尽。
int main(void)
{
u16 adcv;
u16 a,b=0,c=0,d,e;
u16 Y1[751];
u16 X1[751];
float temp1;
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
LCD_Init();
Adc_Init();
POINT_COLOR=BLUE;
LCD_ShowString(250,10,200,12,12,"V:");
for(a=0;a<=750;a++)
{Y1[a]=a+30;}
while(1)
{
adcv=Get_Adc(ADC_Channel_0);
temp1=(float)adcv*(3.3/4096);
X1[b]=temp1*10+250;
LCD_DrawPoint(X1[b],Y1[c]);
c++;
b++;
if(c>750)
{for(d=0;d<=749;d++)
{X1[d]=X1[d+1];}
LCD_Clear(0xFFFF);
for(e=0;e<=749;e++)
{LCD_DrawPoint(X1[e],Y1[e]);}
b=750;
c=750;
}
delay_us(4);
}
}
|
|