1. A/D采集 在例程中提供A/D采集功能,它是通過采集外接的電位器來模擬電位變化,進而來獲得數據的變化。此外,它通過串口通信來輸出采集結果。
1.jpg (5.62 KB, 下載次數: 65)
下載附件
2020-8-12 10:49 上傳
圖1 電位器調節電位 經編譯下載,程序的運行效果如圖2所示。
2.jpg (55.87 KB, 下載次數: 72)
下載附件
2020-8-12 10:49 上傳
圖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.jpg (46.02 KB, 下載次數: 48)
下載附件
2020-8-12 10:49 上傳
圖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.jpg (26.1 KB, 下載次數: 64)
下載附件
2020-8-12 10:49 上傳
圖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.jpg (20.51 KB, 下載次數: 84)
下載附件
2020-8-12 10:49 上傳
圖5 波形曲線繪制
|