大家好 ,不知道你们在钻研原子哥的开发板的同时是否拥有这样子的困惑?就是在使用LCD时,你并没有在程序里写小数点 但是在显示屏上却可以出现小数点?例如:
int main(void)
{
u16 adcx;
float temp;
float temperate;
Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,115200); //串口初始化为115200
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init(); //初始化LCD
Adc_Init(); //ADC初始化
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(30,50,200,16,16,"WarShip STM32");
LCD_ShowString(30,70,200,16,16,"ADC TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2015/1/14");
//显示提示信息
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowString(30,130,200,16,16,"ADC_CH0_VAL:");
// printf("ADC_CH0_VAL: %d\n",Get_Adc_Average(ADC_CH1,10));
LCD_ShowString(30,150,200,16,16,"ADC_CH0_VOL:0.000V");
// printf("ADC_CH0_VOL: %.2f\n",(float)Get_Adc_Average(ADC_CH1,10)*(3.3/4096));
LCD_ShowString(60,170,200,16,16,"TEMPERATE:00.00C");
while(1)
{
adcx=Get_Adc_Average(ADC_CH1,10);
printf("ADC_CH0_VAL: %d\n",adcx);
LCD_ShowxNum(126,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096); //12位的转换器 这里的3.3v是参考电压
printf("ADC_CH0_VOL: %.2f\n",temp);
adcx=temp;
LCD_ShowxNum(126,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(142,150,temp,3,16,0X80);
temperate=(1.43-temperate)/0.0043+35;
printf("temperate:%.2f\n",temperate);
LCD_ShowNum(140,170,(u8)temperate,2,16,0);
temperate-=(u8)temperate;
LCD_ShowNum(164,170,temperate*100,2,16,0x80);
LED0=!LED0;
delay_ms(250);
}
|