int main(void)
{
while(1)
{
SystemInit();
delay_init(72); //延时初始化
NVIC_Configuration();
uart_init(9600);
LED_Init();
//KEY_Init();
LCD_Init();
SM_SPI_Init();//自己写的IO配置函数
LCD_Clear(WHITE);
  OINT_COLOR=RED;
TN_GetData(0x4c);//这一段是测温函数
MBTemp=Data;
GPIO_SetBits(GPIOA,GPIO_Pin_4);
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
TN_GetData(0x66);
HJTemp=Data;
GPIO_SetBits(GPIOA,GPIO_Pin_4);
MB=MBTemp;
HJ=HJTemp;
BT=MBTemp-MB;
JT=HJTemp-HJ;
BT=BT*10;
JT=JT*10;
if(MBTemp>30)
{
LED0=0;
}
Display(MB,HJ,BT,JT);
}
}
void Display(int a,int b,float c,float d)
{
LCD_Clear(WHITE);
  OINT_COLOR=RED;
LCD_ShowString(30,50,"TN901");
LCD_ShowString(30,70,"Target:");
LCD_ShowNum(180,70,a,2,16);
LCD_ShowChar(200,70,0x2e,16,0);
LCD_ShowNum(205,70,c,1,16);
LCD_ShowString(215,70,"^C");
LCD_ShowString(30,90,"Environment:");
LCD_ShowNum(180,90,b,2,16);
LCD_ShowChar(200,90,0x2e,16,0);
LCD_ShowNum(205,90,d,1,16);
LCD_ShowString(215,90,"^C");
delay_ms(1000);
}
程序很简单,测温并LCD显示,如果温度大于30则LED0闪烁,都是调用的例程。
为什么不加while(1)主程序就不循环?LCD只显示第一个温度值,LED的亮暗只取决于第一个温度。
更纠结的是,即使加了while(1),主程序循环了,LED工作正常了,但LCD也是只显示第一个温度值? |