while((AD0DR&0x80000000)==0); //等待转换结束
AD0CR=AD0CR|(1<<24); //再次转换
while((AD0DR&0x80000000)==0); //等待转换结束
ADC_Data=AD0DR; //读取ADC结果
ADC_Data=(ADC_Data>>6)&0x3FF;
ADC_Data=ADC_Data *3300/1024;
sprintf(str,"Vin0=%dmV\r",ADC_Data) ;
GUI_PutString(150,50,str);
OSTimeDlyHMSM(0,0,0,50); //任务切换,交出cpu使用权
}
(3)用LCD显示实现图形的显示
这一部分的原理比较简单,本人就不再画流程图了,在本人的仿真系统上有两种方式来观看信号的情况和了解数据,一个是LCD显示,还有SPI七段显示器 。就美观,样式,以及编程难度的各方面本人都进行了考虑。LCD显示器美观大方,而且屏幕大,看起来较为清晰,也符合本人的要求,而且因为是仿真系统。并不用考虑成本以及稳定性的问题,本人果断选择了LCD显示器。
下面是代码:
//TASK 任务0/***/
void Task0 (void *pdata)
{
uint8 i,x,y;
char str[40];
extern uint8 *title0[];//
extern uint8 *helpall[][4];
pdata=pdata;
TargetInit();
GUI_Initialize();
GUI_SetColor(1,0); // 设置前景色和背景色
GUI_PutString(0,10,"OSStatInit delay 1 second.Please wait...") ;
GUI_PutString(0,30,"Set Clock tick and interrupt vectors...") ;
GUI_PutString(0,50,"Initialize the TargetBoard...waiting!...") ;
OSTimeDlyHMSM(0,0,0,50); //任务切换,交出cpu使用权
GUI_FillSCR(0x00); //全屏填充,清屏
while (1)
{
x=70;
y=0;
for(i=0;i<5;i++)
{GUI_PutHZ(x+18*i,y,(uint8 *)title0[i],16,16);
}
GUI_Rectangle(0,17,239,127,1);
sprintf(str,"#Tasks:");
GUI_PutString(96,109,str);
sprintf(str,"%02d",OSTaskCtr);
GUI_PutString(137,109,str);
sprintf(str,"#CPU Usage:");
GUI_PutString(159,109,str);
sprintf(str,"%02d",OSCPUUsage);
GUI_PutString(223,109,str);
sprintf(str,"#Task switch/sec:");
GUI_PutString(96,119,str);
sprintf(str,"%04d",OSCtxSwCtr);
GUI_PutString(197,119,str); 基于uCOS-II的多功能数据采集系统的开发+源代码+流程图(10):http://www.751com.cn/zidonghua/lunwen_771.html