1. A/D采集 在例程中提供A/D采集功能,它是通过采集外接的电位器来模拟电位变化,进而来获得数据的变化。此外,它通过串口通信来输出采集结果。 图1 电位器调节电位 经编译下载,程序的运行效果如图2所示。 图2 调整前的数据显示 为了改善观察效果,特添加了延时函数,修改后程序内容为: - void mdelay(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=100;y>0;y--);
- }
复制代码
- int main(void)
- {
- RETARGET_Configuration();
- ADC_Configuration();
- ADC_Cmd(HT_ADC0, ENABLE);
- ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);
-
- while (1)
- {
- if (gADC_SingleEndOfConversion)
- {
- printf("\rPotentiometer level is %04d \r\n", (int)gPotentiometerLevel); //115200
- }
- mdelay(100);
- }
- }
复制代码
修改后的运行效果如图3所示,这样数据的变化就很便于观察了。 图3 调整后的数据显示 2.数据显示 前面为数据的显示,已经增添了数值显示函数,此时就可以排上用场了,实现图4显示效果的主程序如下: - int main(void)
- {
- RETARGET_Configuration();
- ADC_Configuration();
- ADC_Cmd(HT_ADC0, ENABLE);
- ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);
-
- LCD_Init();
- LCD_Config();
- LCD_Clear(0x2c5c);
- LCD_BackColorSet(0x2c5c)
- LCD_TextColorSet(Yellow);
- LCD_StringLineDisplay(Line9, " ADC=");
- while (1)
- {
- if (gADC_SingleEndOfConversion)
- {
- LCD_ShowNum(Line9,180,adc,4);
- }
- mdelay(100);
- }
- }
复制代码
图4 采集数据显示 3.波形绘制 为了能更直观地观察数据的变化趋势,绘制数据的波形曲线是一种有效的方法。 在利用前面完成的画线函数和区域填充函数的检测上,实现图5所示效果的主程序如下: - int main(void)
- {
- int adc,p,q,t,l,k;
-
- RETARGET_Configuration();
- ADC_Configuration();
- ADC_Cmd(HT_ADC0, ENABLE);
- ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);
-
- LCD_Init();
- LCD_Config();
- LCD_Clear(0x2c5c);
- LCD_BackColorSet(0x2c5c);
- LCD_TextColorSet(Yellow);
- LCD_RectDraw(10, 10, 200, 300);
- LCD_DrawLine(105,12 , 105,308 ,Red);
- LCD_DrawLine(10,25 , 210,25 ,Red);
- LCD_StringLineDisplay(Line9, " n= adc=");
- mdelay(50000);
-
- for(t=0;t<60;t++)
- {
- l=t*5+10;
- LCD_DrawLine(210,l,214,l,Yellow);
- }
-
- for(t=0;t<10;t++)
- {
- l=t*21;
- LCD_DrawLine(210-l,6,210-l,10,Yellow);
- }
- t=10;
- l=15;
- q=210;
- p=210;
- k=21;
- while (1)
- {
- mdelay(50000);
- if(gADC_SingleEndOfConversion)
- {
- adc=(int)gPotentiometerLevel;
- LCD_ShowNum(Line9,220,adc,4);
- p=adc/21;
- l=t+5;
- LCD_ShowNum(Line9,60,t/5-1,3);
- LCD_DrawLine(q,t,p,l,Yellow);
- t=l;
- q=p;
-
- if(t>=305)
- {
- LCD_fill(11,11,199,297,0x2c5c);
- LCD_DrawLine(105,12 , 105,308 ,Red);
- LCD_DrawLine(10,25 , 210,25 ,Red);
- t=10;
- l=15;
- q=210;
- }
- }
- }
- }
复制代码
图5 波形曲线绘制
|