這兩天玩一下這個4線串口屏,想把溫度,時間和電壓采樣的數據發送到上面,但是溫度和時間(ds1302)的數據發送到上面去沒什么問題,但是當我把149自帶的ADC采樣電壓數據發送到上面時,其它的數據就不穩定了,我不知道是不是時間上有什么沖突,大家幫忙找一下原因!下面是主程序
//*************************************************************************
// ADC中斷服務程序
//*************************************************************************
#pragma vector = ADC_VECTOR //中斷名稱表示中斷的來源
__interrupt void ADC12ISR(void)
{
while((ADC12CTL1&0x01)==1); //如果ADC忙,則等待,否則讀取ADC轉換數值,如果為0則執行下面的程序
TEMP = ADC12MEM0;//讀取ADC轉換值,ADC12MEM0為通道存儲寄存器,這是模擬量存儲數據的地方,設置好相關的配置之后,可以直接讀取即可
sprintf((char*)buf,"main.t16.txt=\"%d\"",TEMP);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
Flag=1;
}
/*********************主函數*******************/
void main()
{
uint i=0;
WDT_Init();
UART_Init();
Clock_Init();
DS18B20_Reset();
delay_ms(100 );
Close_LED();
DS1302_init();
delay_ms(10);
DS1302_write_time(); //ds1302時間數據初始值設定
Flag=1;
while(1)
{
//delay_ms(100);//刷新速度
DS1302_read_time();//ds1302讀取時間函數
ds1820_start();
ds1820_read_temp();//下面sprintf的用法是,把j打印成一個 字符串保存在(char*)buf中
switch(i++)//一開始發送多組數據不能發,現在通過一個switch通過標志位來可以發了
{
case 0:sprintf((char*)buf,"main.t2.txt=\"%.1f\"",temp_value); //注意這里面要發送數據到指定界面時,只需要寫明界面名字就行了
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 1:sprintf((char*)buf,"main.t1.txt=\"%x%x\"",time_buf[0],time_buf[1]);//注意這里發送兩個數據所以需要兩個%x
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 2:sprintf((char*)buf,"main.t5.txt=\"%x\"",time_buf[2]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 3:sprintf((char*)buf,"main.t7.txt=\"%x\"",time_buf[3]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 4:sprintf((char*)buf,"main.t0.txt=\"%x\"",time_buf[4]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 5:sprintf((char*)buf,"main.t9.txt=\"%x\"",time_buf[5]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 6:sprintf((char*)buf,"main.t10.txt=\"%x\"",time_buf[6]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 7:sprintf((char*)buf,"main.t12.txt=\"%x\"",time_buf[7]);
Print_Str1((char*)buf);
HMISendstop();//這是串口屏接收指令結束符
case 8:if(Flag==1)
{
_EINT();
ADC12CTL0 |= ADC12SC; //開啟轉換
ADC12CTL0 &= ~ADC12SC; //清零,停止轉換
_DINT();
Flag=0;
}
}
_DINT();
if(i>=8)
i=0;
}
}
|