这两天玩一下这个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;
}
}
|