關於單片機的算法

算法(Algorithm):計算機解題的基本思想方法和步驟。
算法的描述:是對要解決一個問題或要完成一項任務所採取的方法和步驟的描述,包括需要什麼數據(輸入什麼數據、輸出什麼結果)、採用什麼結構、使用什麼語句以及如何安排這些語句等。通常使用自然語言、結構化流程圖、僞代碼等來描述算法。ENROO產品系列

一、計數、求和、求階乘等簡單算法
  此類問題都要使用循環,要注意根據問題確定循環變量的初值、終值或結束條件,更要注意用來表示計數、和、階乘的變量的初值。
  例:用隨機函數產生100個[0,99]範圍內的隨機整數,統計個位上的數字分別爲1,2,3,4,5,6,7,8,9,0的數的個數並打印出來。
  本題使用數組來處理,用數組a[100]存放產生的確100個隨機整數,數組x[10]來存放個位上的數字分別爲1,2,3,4,5,6,7,8,9,0的數的個數。即個位是1的個數存放在x[1]中,個位是2的個數存放在x[2]中,……個位是0的個數存放在x[10]。
void main()
{
int a[101],x[11],i,p;
for(i=0;i<=11;i++)
x=0;
for(i=1;i<=100;i++)
{
a=rand() % 100;
printf(“%4d”,a);
if(i%10==0)printf(“\n”);
}
for(i=1;i<=100;i++)
{
p=”a”%10;
if(p==0) p=”10”;
x[p]=x[p]+1;
}
for(i=1;i<=10;i++)
{
p=”i”;
if(i==10) p=”0”;
printf(“%d,%d\n”,p,x);
}
printf(“\n”);
}

二、求兩個整數的最大公約數、最小公倍數
  分析:求最大公約數的算法思想:(最小公倍數=兩個整數之積/最大公約數)
(1) 對於已知兩數m,n,使得m>n;
(2) m除以n得餘數r;
(3) 若r=0,則n爲求得的最大公約數,算法結束;否則執行(4);
(4) m←n,n←r,再重複執行(2)。
例如: 求 m=”14” ,n=6 的最大公約數. m n r
14 6 2
6 2 0
void main()
{ int nm,r,n,m,t;
printf(“please input two numbers:\n”);
scanf(“%d,%d”,&m,&n);
nm=n*m;
if (m

include “math.h”

int prime(int m)
{ int i,k;
k=sqrt(m);
for(i=2;i

define A 10

char value;
char filter()
{ char new_value;
new_value = get_ad();
if ( ( new_value - value > A ) || ( value - new_value > A )) return value;
return new_value;
}

九、中位值濾波法
中位值濾波法能有效克服偶然因素引起的波動或採樣不穩定引起的誤碼等脈衝干擾;
對溫度 液位等緩慢變化的被測參數用此法能收到良好的濾波效果 ,但是對於流量壓力等快速變化的參數一般不宜採用中位值濾波法;
基本方法:對某一被測參數連續採樣 n次(一般 n 取奇數) ,然後再把採樣值按大小排列 ,取中間值爲本次採樣值。
下面是中位值濾波程序:

define N 11

char filter()
{ char value_buf[N], count,i,j,temp;
for ( count=0;count

define N 12

char filter()
{int sum = 0,count;
for ( count=0;count

define N 12

char value_buf[N],i=0;
char filter()
{ char count; int sum=0;
value_buf[i++] = get_ad();
if ( i == N ) i = 0;
for ( count=0;count

define a 50

char value;
char filter()
{ char new_value;
new_value = get_ad();
return (100-a)*value + a*new_value;
}

十三、PID控制算法
在過程控制中,按偏差的比例(P)、積分(I)和微分(D)進行控制的PID控制器(亦稱PID調節器)是應用最爲廣泛的一種自動控制器;
對於過程控制的典型對象──“一階滯後+純滯後”與“二階滯後+純滯後”的控制對象,PID控制器是一種最優控制;
PID調節規律是連續系統動態品質校正的一種有效方法,它的參數整定方式簡便,結構改變靈活(PI、PD、…)。
一 模擬PID調節器

模擬PID控制系統原理框圖

PID調節器各校正環節的作用:
比例環節:即時成比例地反應控制系統的偏差信號e(t),偏差一旦產生,調節器立即產生控制作用以減小偏差;
積分環節:主要用於消除靜差,提高系統的無差度。積分時間常數TI越大,積分作用越弱,反之則越強;
微分環節:能反應偏差信號的變化趨勢(變化速率),並能在偏差信號的值變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減小調節時間。
PID調節器是一種線性調節器,它將給定值r(t)與實際輸出值c(t)的偏差的比例(P)、積分(I)、微分(D)通過線性組合構成控制量,對控制對象進行控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章