#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
int main(void)
{
double x=0,y=0,j,i;
u8 lcd_id[12];
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
LED_Init();
LCD_Init();
POINT_COLOR=RED;
sprintf((char*)lcd_id,"LCD ID:%04X",lcddev.id);
LCD_Clear(WHITE);
while(1)
{
u16 color[5]={BLUE,BLACK,RED,MAGENTA,WHITE};
POINT_COLOR=BRED;
LCD_ShowString(30,40,210,24,24,"WarShip STM32 ^_^");
LCD_ShowString(30,70,200,16,16,"TFTLCD TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,lcd_id);
LCD_ShowString(30,130,200,12,12,"2014/5/4");
LCD_ShowNum(30,150,x,3,24);
POINT_COLOR=RED;
LCD_Draw_Circle(60,160,20);
// LCD_Fill(0,0,240,320,color[3]);
if(x==0)
{
for(i=0;i<240;i++)
{
delay_ms(100);
LCD_Clear(WHITE);
x++;
y=(4/3)*x ;
LCD_Fill(0,0,x,y,color[3]);
}
}
if(x==240)
{
for(i=x;i>0;i--)
{
delay_ms(100);
LCD_Clear(WHITE);
x--;
y=(4/3)*x;
LCD_Fill(0,0,x,y,color[3]);
}
}
LED0=!LED0;
delay_ms(100);
}
}
1. 想用这个函数从左上角坐标(0,0)开始逐渐铺满整个2.8寸液晶屏(也就是对角线坐标(sx,sy)==(0,0)——>(ex,ey) ==(240,320))。
2. 因为2.8寸液晶屏分辨率为320 x 240,则 240/320=x/y 推出 y=(4/3)*x。也就是说x=x+1 y=(4/3)*(x+1),最后 x 加到240,那么 y=(4/3)*240=320。这个过程就是随着 x 增加填充的颜 {MOD}块就逐渐铺开直到铺满全屏。
3. 问题:最后的实验结果是 屏幕 x轴方向 铺满,但 y轴方向 只铺到240的位置。请问原子哥这是为什么????
谢谢哥们,你说得对。我试了试C语言中无论是什么数据类型(4/3)都等于1,所以y=(4/3)*x也就等于y=x;写成 y=x*4/3就对。
哎,还是我c语言基础太差
一周热门 更多>