51微控制器C語言控制頻率原理,51微控制器改變頻率怎麼實現,最好是用C語言程式

時間 2022-06-07 11:55:08

1樓:

1全部假設你的51微控制器用的晶振是12mhz的,那麼可以得到如下結論:51執行一個指令的時間週期是1us,這個是51的基礎知識,就不深入講解了。

然後,如果用定時器0確定輸出頻率,假設定時器0的tl0初始值是0x01,那麼當tl0變為0x02時,就是經過了1us時間——這個懂吧?

那麼,設定定時器0為工作模式1(即16位定時器模式),16位定時器的最高值是0xff ff,也就是65535 us。

跟著,把定時器初始值設為十進位制60536,這個說明了什麼呢?經過以上推論,就知道設為這個初值之後,定時器0產生中斷的週期為5 ms(注:65536 - 60536 = 5 000)。

最後,你的問題,1hz時,週期為1000ms,你就每10個定時器中斷( 1000ms / 2 / 5ms = 100),對相關引腳執行一次取反操作;10hz時,週期為10ms,你就定義一下變數,然後對每個中斷週期,每10個定時器中斷( 100ms / 2 / 5ms = 10),對相關引腳執行一次取反操作;100hz時,週期為100ms,你就每10個定時器中斷( 10ms / 2 / 5ms = 1),對相關引腳執行一次取反操作。-完-

2樓:匿名使用者

頻率產生的概念:應該是指微控制器裡面時鐘的頻率乘以一定的倍數達到1hz標準。然後微控制器再以時脈頻率波動多少次為1hz。

3樓:

這個是中斷的概念,定時器到了預先設定的時間後,就會溢位產生中斷

怎麼用c語言編寫,使蜂鳴器發出不同頻率的聲音(51微控制器).

4樓:

對定時器輸入不同的值,並用自動載入模式

5樓:碎裂的記憶

定時時間段設定不同,開斷間隔不同,就可以。

6樓:

pwm控制就ok了!調整佔空比!

51微控制器改變頻率怎麼實現,最好是用c語言程式

7樓:匿名使用者

軟體無法改變頻率,除非是嵌入式;只能改變晶振大小來改變頻率

要麼你用定時器實現改變頻率,這樣定時器就被浪費了

8樓:匿名使用者

看下有暫存器能配置不,一般有暫存器可以修改頻率的。

9樓:

****據我所知 51的好像還沒有能夠用軟體修改**頻率的 不過可以通過軟體編寫模擬的時鐘訊號 這是可以的利用中斷 pic的可以直接修改分頻比 來改變頻率 不過也是改不了他原始**頻率額的****

10樓:佟佳智純納芹

利用定時器來控制查錶速度,

定時器中斷時查表輸出到da形成正弦波,

所以修改定時器的填充值就可以控制正弦波的頻率。

51微控制器c語言中delay函式是怎麼定義和使用的?

11樓:匿名使用者

定義一個延時xms毫秒的延時函式

void delay(unsigned int xms)// xms代表需要延時的毫秒數

使用:void delay10us(uchar ms)i=[(延時值-1.75)*12/ms-15]/41、在c51中進行精確的延時子程式設計時,儘量不要或少在延時子程式中定義區域性變數,所有的延時子程式中變數通過有參函式傳遞。

2、在延時子程式設計時,採用do…while,結構做迴圈體要比for結構做迴圈體好。

3、在延時子程式設計時,要進行迴圈體巢狀時,採用先內迴圈,再減減比先減減,再內迴圈要好。

12樓:天雲一號

delay函式是一般自己定義的一個延時函式。

c語言定義延時函式主要通過無意義指令的執行來達到延時的目的。下面給出一個經典的延時函式。

// 定義一個延時xms毫秒的延時函式

void delay(unsigned int xms)  // xms代表需要延時的毫秒數

13樓:匿名使用者

這是一個延時函式()

裡的unsigned int a是一個形參,為int型變數最 大值為32767;{}裡的unsigned int i和()裡的一樣 只是變數的名稱不同,為i;while就是迴圈語句 如果他後面的()裡的量不為零就執行他{}裡的內容,一旦為零就跳出該語句。for(i=0;i<600;i++);就是把i定為零,如果i在for裡小於600就跳到第三步i++(也就是i自增1);然後i=1但他還是小於600,接著就到第三步。。。。599次之後i=600,600就不小於600,這時就跳出for。

while後的()如果為零就跳出while

14樓:匿名使用者

5 51微控制器c語言中delay函式是怎麼定義和使用的?

voiddelay(unsignedinta){unsignedinti;while(--a!=0)

15樓:匿名使用者

c的話其實時間沒有辦法完全定性地計算的

如果非得精確的話只能使用定時器了,或者彙編的也行不過時間要求精度不是很高的話使用下面的**就行了當時使用示波器把時間完全調準的,65536ms範圍內還是比較準的,已經可以滿足通常的要求了:

#include "reg51.h" //標頭檔案包含//巨集定義

#define uint unsigned int#define uchar unsigned charvoid delay(uint ms) // 毫秒級延時(at89c52 @ 11.0592mhz)

//112}}

呼叫方式如下:

delay(400); //開機延時400ms夠詳細了吧?!

16樓:神奇號

假如說執行for(i = 0; i < 600; i++); 要1s,那a決定了執行1s的次數,這個延時就是a秒,懂了嗎?

不過12m晶振的話,大家一般是for(i = 0; i < 114; i++); 執行這句要1ms

17樓:匿名使用者

這是個延遲函式,delay 括號中的表示式是定義的無符號的整形變數,它是形參,你只要知道它是定義一個變數既可,它的值由main 函式傳遞過來,a的值有了,就進入了while 迴圈。不知你是否學過c語言,如果沒有,就看看while 迴圈。

18樓:匿名使用者

delay後面的()當中的a,是呼叫函式時,傳遞過來的變數,此值越大,延遲的時間就越長。

想用51微控制器做一個波形發生器,頻率幅度可調,最高頻率20khz,用c語言寫能實現嗎?

19樓:匿名使用者

可以,如果只是方波、正弦波和三角波就可以,先選擇波形,設定頻率,

然後計算波形週期,和波形上每個點的數值

設定一個十幾微妙的中斷,

每個定時中斷中輸出波形上的一個點,通過dac,加上高頻濾波輸出比較平滑的模擬量。

如果用c8051系列的高速微控制器可以輸出更好的波形

需要一個c語言程式。51微控制器控制:按鍵按一下,延遲1分鐘後開燈,燈亮半個小時就熄滅的程式?急需!

51微控制器c語言程式設計如何實現長按按鍵實現數值的累加

20樓:匿名使用者

先設定一定時器,比如定時0.5s加一,再設定一個標誌位,當加數達到一個標準值時,定時器定時改為更短時間。

關鍵是設定定時器,標誌位,在中端程式檢驗按鍵的電位。

21樓:匿名使用者

你可以這樣去試試:

if (k1==0)

if (k2==0)

51微控制器c語言延時函式 void delay 1ms un

杜哥是個小天才 c程式中可使用不同型別的變數來進行延時設計。經實驗測試,使用unsigned char型別具有比unsigned int更優化的 在使用時應該使用unsigned char作為延時變數。以某晶振為12mhz的微控制器為例,晶振為12mhz即一個機器週期為1us。void delay ...

STC89C51微控制器復位,51微控制器復位後各暫存器狀態是怎樣的

該微控制器正常工作時復位端電壓應保持低電平狀態,復位時給復位端加上一個短暫的高電平即可使微控制器程式復位。該復位電路的工作原理是,電源通過電解電容再通過電阻串聯到地,電容兩段並聯一按鍵開關,正常工作時電容隔斷電源電壓,微控制器復位端相當於通過電阻接地。因電路中無電流,所以復位端電壓為0伏。當執行過程...

本科學歷,工作3年,懂得C語言,51微控制器原理,請問可以在電子行業裡能找到些什麼樣的好工作?請大家指引

現在純粹用51做開發的公司已經不多了,要找的話基本上就是一些老點的工廠,招的基本上是產品維護。要想從事微控制器開發的話,最好能轉arm方向,再學下作業系統,最好是linux。現在這個行業比較吃香,但是大都要求專案經驗。 你和我差不多,我搞電子6年,懂得c語言但前三年都不是搞開發,只是現在搞桌面開發,...