蓝桥杯单片机省赛第十届 难点
本屆賽題的難點就在于NE555頻率的測量。
目錄
NE555定時器的概述:
NE555周期、頻率的測量:
NE555定時器的概述:
在NE555內部,有3個5K的電阻分壓,故稱555定時器。
555定時器的基本原理:
低電平觸發端TRIG和高電平觸發端THR:
兩者電壓均小于各自的參考電壓時,U0=1,放電管截至。
兩者電壓均大于各自的參考電壓時,U0=0,放電管導通。
NE555是一個純硬件的設計,一旦硬件電路確定了,其功能也確定了,沒有可編程的部分。
在藍橋杯的板子上,555定時器是一個信號發生電路,通過電位器Rb3可改變輸出信號的頻率。
以上來源:B站小蜜蜂老師
信號輸出的頻率放在了P34引腳,而P34引腳恰好對應著定時器0的計數信號輸入引腳。
NE555周期、頻率的測量:
需要兩個定時器:一個定時器0來計數,計數P34引腳外面有多少脈沖信號;再用另一個定時器來實現計時功能(定時1秒,檢測1秒內的周期)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?頻率方波圖?
測量周期方法:紅色代表正周期(高電平 1),藍色代表反周期(低電平 0)。測量正反周期就知道了整個周期的時間。
(1)規定多長的檢測時間進入周期來分別檢測正負周期的時長?
這個時間一定要比最小的周期短,否則就不會準確的分別檢測到正負周期的時長
理論上來說:進行檢測的時間=2倍 最高頻率的周期 (至少)
在說明書中,NE555頻率在200HZ—20KHZ之間,所以我們檢測的時間就是40KHZ的周期,t=1/40000=0.000025秒=25微秒。也就是每25微秒檢測一次。
以上是理論值,這個板子我們最低可以用5微秒的定時器0來進行檢測。(這樣檢測會更加的精確)
(2)測量周期:
① zheng_now=0
? ? ?flag由0變為1
? ? ?反周期時間增加,fan++
② 正周期時間增加,zheng++
? ? ?flag由1變為0
? ? ?fan_now=fan
③ 反周期時間增加,fan++,一直加到圖中綠點處
? ? ?這一段的反周期的時間會等到下進入正周期的時候賦給fan_now
? ? ?flag由0變為1
? ? ?zheng_now=zheng;
? ? ?
?????這樣反周期的時間就是fan_how,正周期的時間就是zheng_now
? ? ?這樣無論如何我們對于正反周期的數據測量都是從一個完整的周期開始的。
? ? 程序:
void timer0() interrupt 1 {if(P34==0)//P34輸出低電平{fan++;if(t_flag==0){t_flag=1;zheng_now=zheng;zheng=0;}}else if(P34==1)//P34輸出高電平{zheng++;if(t_flag==1){t_flag=0;fan_now=fan;fan=0;}} }(3)規定的檢測時間多長才能檢測出一整個周期?
這個時間一定比最長周期長,來確保能夠完整地測量出一整個NE555信號的周期.
最低頻率:200HZ,周期為5毫秒。以上只是理論值,實際情況下,最低頻率可以達到100HZ,周期為10毫秒。(我們可以適當延長這個時間)所以我們可以規定使用30毫秒,也就是說每一秒鐘內,花30毫秒的時間來進行周期的采集。
用1毫秒定時器1,每一秒鐘進行 采集一次,采集時間為30毫秒。
在中斷1中寫30毫秒采集一次周期的程序:在一秒鐘之內,到了969毫秒,開啟定時器0;到999毫秒的時候關閉定時器0,讀取周期數據。
注意:在stc軟件上復制過來的時候,要把定時器1的開始計時注釋掉。我們用的時候再打開。
程序:
void timer1() interrupt 3 {intr++;if(intr==969)//開始進行采集{TR0=1;ET0=1;//開啟計時和中斷}else if(intr==999)//采集完畢{intr=0;TR0=0;ET0=0;time=(fan_now+zheng_now)*5;frep=1000000/time;} }這樣周期和頻率就測量完畢了。
總結
以上是生活随笔為你收集整理的蓝桥杯单片机省赛第十届 难点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【maya】骨骼绑定与蒙皮权重调整
- 下一篇: maya中adv插件绑定1