㈠ 51單片機「上電/按鍵復位電路」的原理及其電容C的作用
我認為說法1正確:51單片機是高電平復位,所以先看給單片機加5V電源(上電)啟動時的情況:這時電容充電相當於短路,你可以認為RST上的電壓就是VCC,這是單片機就是復位狀態。隨著時間推移電容兩端電壓升高,即造成RST上的電壓降低,當低至閾值電壓時,即完成復位過程。
如果按下SW,的確就是按鈕把C短路了,這時電容放電,兩端電壓都是VCC,即RST引腳電壓為VCC,如果超過規定的復位時間,單片機就復位了。當按鈕彈起後,RST引腳的電壓為0,單片機處於運行狀態。
51單片機復位要求是:RST上加高電平時間大於2個機器周期,你用的12MHz晶振,所以一個機器周期就是1us,要復位就加2us的高電平即可。
圖中的RC常數是51K×1uF=51ms,即51毫秒,這個常數足夠大了。
㈡ 單片機 中 IT0=1; EX0=0 是什麼意思,用在什麼時候
51單片機的IT0位是控制外部中斷0的觸發方式的。
外部中斷0觸發方式控制位,1表示邊沿觸發,0表示電平觸發。
如果IT0設置為0,則外部中斷0引腳被拉至低電平即可引發外部中斷。
如果IT0設置為1,則外部中斷0引腳需要檢測到下降沿才能引發外部中斷。
EX0是外部中斷0的使能控制位,如果EX0設置為0,則外部中斷0失效,無論外部中斷引腳如何變化,都不會發生外部中斷。
(2)單片機中的微積分擴展閱讀:
單片機中斷系統的作用——
不同的計算機其硬體結構和軟體指令是不完全相同的,因此,中斷系統也是不相同的。計算機的中斷系統能夠加強CPU對多任務事件的處理能力。
中斷機制是現代計算機系統中的基礎設施之一,它在系統中起著通信網路作用,以協調系統對各種外部事件的響應和處理。
中斷是實現多道程序設計的必要條件。 中斷是CPU對系統發生的某個事件作出的一種反應。 引起中斷的事件稱為中斷源。
中斷源向CPU提出處理的請求稱為中斷請求。發生中斷時被打斷程序的暫停點稱為斷點。CPU暫停現行程序而轉為響應中斷請求的過程稱為中斷響應。
處理中斷源的程序稱為中斷處理程序。CPU執行有關的中斷處理程序稱為中斷處理。而返回斷點的過程稱為中斷返回。中斷的實現實行軟體和硬體綜合完成,硬體部分叫做硬體裝置,軟體部分稱為軟體處理程序。
㈢ 在單片機中關於積分微分的函數是怎麼弄的!!!
用查表法吧,相當於把積分離散化
㈣ 微積分能不能應用在電子方面
可以,微積分在電子可以說成微分電路和積分電路(我好像在說廢話)。微分電路,顧名思義,就是輸出與輸入是微分關系,如單片機復位電路,見下圖。
上電時,單片機復位,RST引腳需要有高電平。一段時間後(很短)復位完成,RST引腳需要有低電平,此後,單片機可正常工作。微分電路正好可以滿足需求,此電路中,RST引腳會有一個從高到低的變化,即微分電路的輸出與輸入是微分關系(輸出電平由高到低變化)。
有些單片機是低電平復位,此時需要上電時,RST引腳有低電平,一段時間後(很短)復位完成,RST引腳需要有高電平,這樣單片機才能正常工作。積分電路可滿足需求(將上圖電阻電容換位置),保證RST引腳電平有一個由低到高的變化,即積分電路的輸出與輸入是積分關系(輸出電平由低到高變化)。
就說這一個例子吧,其它的同理。微積分電路的意思是根據電路算出的等式關系是數學上的微積分關系,所以才叫微分、積分電路吧。
上述純屬個人愚見,難免有誤,還望不吝賜教。
㈤ 只用單片機單獨一個晶元能進行積分,微分等復雜運算嗎不能的話怎麼辦
單片機當然可以進行積分/微分運算,關鍵還是看你的速度要求
㈥ 可以跟我講一下單片機的演算法需要高數的哪些重要類容呢
大學的高數是必須學的,單片機某些這也必學。
單片機需要預備知識很多,難
㈦ 51單片機「上電/按鍵復位電路」的原理及其電容C的作用
簡單來講電容在這里只起到了一個啟動的作用,就是按鍵按下後立即釋放電容內部的電荷,直接連接到單片機的復位端給復位端強行輸入一個電位使單片機復位~~
㈧ stm32單片機能運算微積分嗎,運算微積分的能力怎麼樣,大概需要多長時間運算一次,在此謝過。。。
關鍵問題不是MCU而是你能不能用C語言編出合理相應函數的演算法,如果能 51單片機也能實現
㈨ 不太懂微積分,怎麼做單片機PID啊,如果要學重點學那一部分
不用懂微積分,僅僅是一個PID算式而已,現在還有點印象
Pout = Pp*delta + Pi * (所有delta的和)+Pd*(delta1-delta2)
delta:給定和測量值之差
就是那個三角號,你要控制到的目標值和當前測量值只差,然後你就調P,I,D三個參數就可以了
你到網上隨便找一個單片機的PID程序,我給你注釋一下
int delta_PID(PID *pp, int next_point)//增量法
{
int error;
error = pp->set_point - next_point;
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = error;
return (KP*pp->ek[0] - KI*pp->ek[1] + KD*pp->ek[2]);
}
void PIDproc(PID *pp, int next_point) //帶死區控制以及抗積分飽和的PID
{
uint tmp[3] = {0, 0, 0};
uint PosSum = 0;
uint NegSum = 0;
uchar gain = 1;
if(pp->set_point > next_point){
tmp[0] = pp->set_point - next_point;//ek0
if(tmp[0] > pp->B){
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = tmp[0];
pp->ek_flag[2] = pp->ek_flag[1];
pp->ek_flag[1] = pp->ek_flag[0];
pp->ek_flag[0] = 0; //當前EK為正數
tmp[0] = KP * pp->ek[0] / dKP + KI * pp->ek[0] / dKI + KD * pp->ek[0] / dKD; // KP*EK0
tmp[1] = KP * pp->ek[1] / dKP + 2 * KD * pp->ek[1] / dKD; // KI*EK1
tmp[2] = KD * pp->ek[2] / dKD; // KD*EK2
}
}
else{ //反饋大於給定
tmp[0] = next_point - pp->set_point;//ek0
if(tmp[0] > pp->B){
//數值移位
pp->ek[2] = pp->ek[1];
pp->ek[1] = pp->ek[0];
pp->ek[0] = tmp[0];
//符號移位
pp->ek_flag[2] = pp->ek_flag[1];
pp->ek_flag[1] = pp->ek_flag[0];
pp->ek_flag[0] = 1; //當前EK為負數
tmp[0] = KP * pp->ek[0] / dKP + KI * pp->ek[0] / dKI + KD * pp->ek[0] / dKD; // KP*EK0
tmp[1] = KP * pp->ek[1] / dKP + 2 * KD * pp->ek[1] / dKD; // KI*EK1
tmp[2] = KD * pp->ek[2] / dKD; // KD*EK2
}
}
/*以下部分代碼是講所有的正數項疊加,負數項疊加*/
if(pp->ek_flag[0]==0){
PosSum += tmp[0]; //正數和
}
else{
NegSum += tmp[0]; //負數和
} // KP*EK0
if(pp->ek_flag[1]!=0){
PosSum += tmp[1]; //正數和
}
else{
NegSum += tmp[1]; //負數和
} // - kI * EK1
if(pp->ek_flag[2]==0){
PosSum += tmp[2]; //正數和
}
else{
NegSum += tmp[2]; //負數和
} // KD * EK2
PosSum += pp->uk; //
if(PosSum > NegSum){ // 是否控制量為正數
tmp[0] = PosSum - NegSum;
tmp[0] *= gain;
if( tmp[0] < (uint)65000){ //小於限幅值則為計算值輸出
pp->uk = tmp[0];
}
else{
pp->uk = (uint)65000; //否則為限幅值輸出
}
}
else{ //控制量輸出為負數,則輸出0
pp->uk = 0;
}
}
void PID_init(PID* pp)
{
pp->set_point = OBJ;
pp->B = 0;
pp->ek[0] = 0;
pp->ek[1] = 0;
pp->ek[2] = 0;
pp->ek_flag[0] = 0;
pp->ek_flag[1] = 0;
pp->ek_flag[2] = 0;
pp->uk = 0;
}
我以前用過的程序
㈩ 科學計算器究竟是單片機系統還是嵌入式系統
1.單片機系統就是嵌入式系統中的一個分支!
2.匯編開發是可以的,但計算器中涉及到浮點運算,用匯編的難度就非常大!比如三角函數和反三角函數,對數和指數,以及開方和微積分等,雖然有可以實際操作的數學公式,但是匯編的難度非常大,所以用C去開發才是可能的。至於JAVA,現在還沒有在這種單片機上運行的,至少要32位單片機才行。