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