導航:首頁 > 操作系統 > ft60f021單片機功能

ft60f021單片機功能

發布時間:2023-07-31 04:26:31

① 如何使usb游戲手柄與單片機通信,當手柄上的某位按鍵按下後,單片機的某個發光二極體點亮

既然硬體都連接起了,接下來就給單片機編程啊,接收USB信號,然後做出相應的動作。
如果不知道手柄每個鍵的信號的話,可以做個測試程序,讓單片機接收到信息後,通過RS232串口發送信息到電腦上,用串口助手工具來查看手柄的各個按鍵的編碼啊。得到編碼後,還不簡單了嗎?
若知道手柄的按鍵碼的話,單片機就只需USB和手柄通信就成了,就不需要MAX232了。直接用FT232搭成USB介面和手柄通信就行了

② 51單片機c語言如何把浮點型轉為字元串

使用stdio.h中的sprintf函數轉化即可:

#include<stdio.h>

floata=1.234;
charstr[10];
sprintf(str,"%f",a);

③ 單片機的最小系統晶振電路的兩個電阻作用,為什麼

晶振電路需要2個10-30pF級別的電容作為起振用途,10-30pF具體的值根據不同的晶振頻率不同的單片機而有所不同,作用都是使晶振起振,如果去掉這2個電容,晶振就不會起振,就沒有頻率輸出,單片機就不會工作。這樣說你懂了嗎?

也有串並連電阻的案例,正常我們不需要那麼做,官方的Deom里也是沒有的,以下內容來自網路,講解的很詳細,你可以自習讀讀,以後對這部分電路會有更詳細的認識。

一份電路在其輸出端串接了一個22K的電阻,在其輸出端和輸入端之間接了一個10M的電阻,這是由於連接晶振的晶元端內部是一個線性運算放大器,將輸入進行反向180度輸出,晶振處的負載電容電阻組成的網路提供另外180度的相移,整個環路的相移360度,滿足振盪的相位條件,同時還要求閉環增益大於等於1,晶體才正常工作。

晶振輸入輸出連接的電阻作用是產生負反饋,保證放大器工作在高增益的線性區,一般在M歐級,輸出端的電阻與負載電容組成網路,提供180度相移,同時起到限流的作用,防止反向器輸出對晶振過驅動,損壞晶振。

和晶振串聯的電阻常用來預防晶振被過分驅動。晶振過分驅動的後果是將逐漸損耗減少晶振的接觸電鍍,這將引起頻率的上升,並導致晶振的早期失效,又可以講drive level調整用。用來調整drive level和發振餘裕度。

Xin和Xout的內部一般是一個施密特反相器,反相器是不能驅動晶體震盪的.因此,在反相器的兩端並聯一個電阻,由電阻完成將輸出的信號反向 180度反饋到輸入端形成負反饋,構成負反饋放大電路.晶體並在電阻上,電阻與晶體的等效阻抗是並聯關系,自己想一下是電阻大還是電阻小對晶體的阻抗影響小大?

電阻的作用是將電路內部的反向器加一個反饋迴路,形成放大器,當晶體並在其中會使反饋迴路的交流等效按照晶體頻率諧振,由於晶體的Q值非常高,因此電阻在很大的范圍變化都不會影響輸出頻率。過去,曾經試驗此電路的穩定性時,試過從100K~20M都可以正常啟振,但會影響脈寬比的。

晶體的Q值非常高, Q值是什麼意思呢? 晶體的串聯等效阻抗是 Ze = Re + jXe, Re<< |jXe|, 晶體一般等效於一個Q很高很高的電感,相當於電感的導線電阻很小很小。Q一般達到10^-4量級。

避免信號太強打壞晶體的。電阻一般比較大,一般是幾百K。

串進去的電阻是用來限制振盪幅度的,並進去的兩顆電容根據LZ的晶振為幾十MHZ一般是在20~30P左右,主要用與微調頻率和波形,並影響幅度,並進去的電阻就要看 IC spec了,有的是用來反饋的,有的是為過EMI的對策

可是轉化為 並聯等效阻抗後,Re越小,Rp就越大,這是有現成的公式的。晶體的等效Rp很大很大。外面並的電阻是並到這個Rp上的,於是,降低了Rp值 -----> 增大了Re -----> 降低了Q

精確的分析還可以知道,對頻率也會有很小很小的影響。

總結並聯電阻的四大作用:

1、配合IC內部電路組成負反饋、移相,使放大器工作在線性區;
2、限流防止諧振器被過驅;
3、並聯降低諧振阻抗,使諧振器易啟動;
4、電阻取值影響波形的脈寬。

有源晶振與無源晶振以及無源晶振起振電容的選擇:
無源晶振(Crystal):內只有一片按一定軸向切割的石英晶體薄片,供接入運放(或微處理器的Xtal端)以形成振盪。(依靠配合其他IC內部振盪電路工作)

有源晶振(Oscillator):內帶運放,工作在最佳狀態,送入電源後,可直接輸出一定頻率的等副正弦波。(晶振+振動電路,封裝在一起,加上電源,就有波形輸出)

1.無源晶振是有2個引腳的無極性元件,需要藉助於時鍾電路才能產生振盪信號,自身無法振盪起來 無源晶振需要用DSP片內的振盪器,在datasheet上有建議的連接方法。無源晶振沒有電壓的問題,信號電平是可變的,也就是說是根據起振電路來決定的,同樣的晶振可以適用於多種電壓,可用於多種不同時鍾信號電壓要求的DSP,而且價格通常也較低,因此對於一般的應用如果條件許可建議用晶體,這尤其適合於產品線豐富批量大的生產者。無源晶振相對於晶振而言其缺陷是信號質量較差,通常需要精確匹配外圍電路(用於信號匹配的電容、電感、電阻等),更換不同頻率的晶體時周邊配置電路需要做相應的調整。使用時建議採用精度較高的石英晶體,盡可能不要採用精度低的陶瓷晶體。

2.有源晶振有4隻引腳,是一個完整的振盪器,裡面除了石英晶體外,還有晶體管和阻容元件 。有源晶振不需要DSP的內部振盪器,信號質量好,比較穩定,而且連接方式相對簡單(主要是做好電源濾波,通常使用一個電容和電感構成的PI型濾波網路,輸出端用一個小阻值的電阻過濾信號即可),不需要復雜的配置電路。相對於無源晶體,有源晶振的缺陷是其信號電平是固定的,需要選擇好合適輸出電平,靈活性較差,價格相對較高。對於時序要求敏感的應用,還是有源的晶振好,因為可以選用比較精密的晶振,甚至是高檔的溫度補償晶振。有些DSP內部沒有起振電路,只能使用有源的晶振,如TI的6000系列等。有源晶振相比於無源晶體通常體積較大,但現在許多有源晶振是表貼的,體積和晶體相當,有的甚至比許多晶體還要小。

在電子學上,通常將含有晶體管元件的電路稱作「有源電路」(如有源音箱、有源濾波器等),而僅由阻容元件組成的電路稱作「無源電路」。電腦中的晶體振盪器也分為無源晶振和有源晶振兩種類型。無源晶振與有源晶振的英文名稱不同,無源晶振為crystal(晶體),而有源晶振則叫做oscillator(振盪器)。無源晶振是有2個引腳的無極性元件,需要藉助於時鍾電路才能產生振盪信號,自身無法振盪起來,所以「無源晶振」這個說法並不準確;有源晶振有4隻引腳,是一個完整的振盪器,其中除了石英晶體外,還有晶體管和阻容元件,因此體積較大。

有源晶振型號縱多,而且每一種型號的引腳定義都有所不同,接發也不同,下面我介紹一下有源晶振引腳識別,以方便大家

有個點標記的為1腳,按逆時針(管腳向下)分別為2、3、4。

有源晶振通常的用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。

有源晶振不需要DSP的內部振盪器,信號質量好,比較穩定,而且連接方式相對簡單(主要是做好電源濾波,通常使用一個電容和電感構成的PI型濾波網路,輸出端用一個小阻值的電阻過濾信號即可),不需要復雜的配置電路。相對於無源晶體,有源晶振的缺陷是其信號電平是固定的,需要選擇好合適輸出電平,靈活性較差,而且價格高。

有源晶振是右石英晶體組成的,石英晶片之所以能當為振盪器使用,是基於它的壓電效應:在晶片的兩個極上加一電場,會使晶體產生機械變形;在石英晶片上加上交變電壓,晶體就會產生機械振動,同時機械變形振動又會產生交變電場,雖然這種交變電場的電壓極其微弱,但其振動頻率是十分穩定的。當外加交變電壓的頻率與晶片的固有頻率(由晶片的尺寸和形狀決定)相等時,機械振動的幅度將急劇增加,這種現象稱為「壓電諧振」。

壓電諧振狀態的建立和維持都必須藉助於振盪器電路才能實現。圖3是一個串聯型振盪器,晶體管T1和T2構成的兩級放大器,石英晶體XT與電容C2構成LC電路。在這個電路中,石英晶體相當於一個電感,C2為可變電容器,調節其容量即可使電路進入諧振狀態。該振盪器供電電壓為5V,輸出波形為方波。

有源晶振型號縱多,而且每一種型號的引腳定義都有所不同,接發也不同,下面我介紹一下有源晶振引腳識別,以方便大家

有個點標記的為1腳,按逆時針(管腳向下)分別為2、3、4。

有源晶振通常的用法:一腳懸空,二腳接地,三腳接輸出,四腳接電壓。

有源晶振不需要DSP的內部振盪器,信號質量好,比較穩定,而且連接方式相對簡單(主要是做好電源濾波,通常使用一個電容和電感構成的PI型濾波網路,輸出端用一個小阻值的電阻過濾信號即可),不需要復雜的配置電路。相對於無源晶體,有源晶振的缺陷是其信號電平是固定的,需要選擇好合適輸出電平,靈活性較差,而且價格高。

有源晶振是右石英晶體組成的,石英晶片之所以能當為振盪器使用,是基於它的壓電效應:在晶片的兩個極上加一電場,會使晶體產生機械變形;在石英晶片上加上交變電壓,晶體就會產生機械振動,同時機械變形振動又會產生交變電場,雖然這種交變電場的電壓極其微弱,但其振動頻率是十分穩定的。當外加交變電壓的頻率與晶片的固有頻率(由晶片的尺寸和形狀決定)相等時,機械振動的幅度將急劇增加,這種現象稱為「壓電諧振」。

壓電諧振狀態的建立和維持都必須藉助於振盪器電路才能實現。

石英晶體振盪器的頻率穩定度可達10^-9/日,甚至10^-11。例如10MHz的振盪器,頻率在一日之內的變化一般不大於0.1Hz。因此,完全可以將晶體振盪器視為恆定的基準頻率源(石英錶、電子表中都是利用石英晶體來做計時的基準頻率)。從PC誕生至現在,主板上一直都使用一顆14.318MHz的石英晶體振盪器作為基準頻率源。 主板上除了這顆14.318MHz的晶振,還能找到一顆頻率為32.768MHz的晶振,它被用於實時時鍾(RTC)電路中,顯示精確的時間和日期

方形有源晶振引腳分布:

1、正方的,使用DIP-8封裝,打點的是1腳。

1-NC; 4-GND; 5-Output; 8-VCC

2、長方的,使用DIP-14封裝,打點的是1腳。

1-NC; 7-GND; 8-Output; 14-VCC

BTW:

1、電源有兩種,一種是TTL,只能用5V,一種是HC的,可以3.3V/5V

2、邊沿有一個是尖角,三個圓角,尖角的是一腳,和打點一致。

Vcc out

NC(點) GND

現在提供一些實際數據:

測試樣品為TOYOCOM的711SC 1.000M的輸出頻率,1腳懸空,2腳接地,3腳輸出,4叫接+5V;

1.4V就開始起振,峰值電壓1.64V,但是工作頻率會有一定的偏差;3V時峰值電壓3.24V,工作頻率1.000M,輸出頻率准確;5V時峰值電壓為5.6V,工作頻率1.000M,輸出頻率准確

關於晶振的匹配電容問題

晶振還是晶體?
晶振的話好像不用電容吧?
晶體的話0.1u和0.01u的電容有些大了,
一般應該100p到20p之間

nod
晶振的標稱值在測試時有一個「負載電容」的條件,在工作時滿足這個條件,振盪頻率才與標稱值一致。一般來講,有低負載電容(串聯諧振晶體)
高負載電容(並聯諧振晶體)之分。在電路上的特徵為:晶振串一隻電容跨接在IC兩只腳上的,則為串聯諧振型;一隻腳接IC,一隻腳接地的,則為並聯型。如確實沒有原型號,需要代用的可採取串聯諧振型電路上的電容再並一個電容,並聯諧振電路上串一隻電容的措施。例如:4.433MHz晶振,並一隻3300PF電容或串一隻70P的微調電容。另一種說法是「損耗值」與「激勵電平」之說:

其實,上述原因都可以作為選擇晶振的條件作為考慮。

常見的晶振大多是二隻腳,3腳的晶振是一種集晶振和電容為一體的復合元件。由於在集成電路振盪端子外圍電路中總是以一個晶振(或其它諧振元件)和兩個電容組成迴路,為便於簡化電路及工藝,人們便研製生產了這種復合件。其3個引腳中,中間的1個腳通常是2 個電容連接一起的公共端,另外2個引腳即為晶振兩端,也是兩個電容各自與晶振連接的兩端。由此可見,這種復合件可用一個同頻率晶振和兩個100~200pF的瓷片電容按常規連接後直接予以代換。

*********************************************************************************

怎樣選擇一款合適的晶體振盪器21ic.com
發信站: 瀚海星雲 (2003年11月04日10:18:05 星期二), 站內信件

---- 本文介紹了一些足以表現出一個晶體振盪器性能高低的技術指標,了解這些指標的含義,將有助於通訊設計工程師順利完成設計項目,同時也可以大大減少整機

---- 總頻差:在規定的時間內,由於規定的工作和非工作參數全部組合而引起的晶體振盪器頻率與給定標稱頻率的最大頻差。

---- 說明:總頻差包括頻率溫度穩定度、頻率溫度准確度、頻率老化率、頻率電源電壓穩定度和頻率負載穩定度共同造成的最大頻差。一般只在對短期頻率穩定度關心,而對其他頻率穩定度指標不嚴格要求的場合採用。例如:精密制導雷達。

---- 頻率溫度穩定度:在標稱電源和負載下,工作在規定溫度范圍內的不帶隱含基準溫度或帶隱含基準溫度的最大允許頻偏。

---- fT=±(fmax-fmin)/(fmax+fmin)
---- fTref =±MAX[|(fmax-fref)/fref|,|(fmin-fref)/fref|] fT:頻率溫度穩定度(不帶隱含基準溫度)
---- fTref:頻率溫度穩定度(帶隱含基準溫度)
---- fmax :規定溫度范圍內測得的最高頻率
---- fmin:規定溫度范圍內測得的最低頻率
---- fref:規定基準溫度測得的頻率

---- 說明:採用fTref指標的晶體振盪器其生產難度要高於採用fT指標的晶體振盪器,故fTref指標的晶體振盪器售價較高。

---- 幾種電子系統使用的晶體振盪器典型頻率溫度穩定度指標見下表:

---- 表中有一部分頻率溫度穩定度指標應是帶隱含基準溫度的頻率溫度穩定度指標,但沒表示出來。 (1ppm=1×10-6;1ppb=1×10-9)。

---- 頻率穩定預熱時間:以晶體振盪器穩定輸出頻率為基準,從加電到輸出頻率小於規定頻率允差所需要的時間。

---- 說明:在多數應用中,晶體振盪器是長期加電的,然而在某些應用中晶體振盪器需要頻繁的開機和關機,這時頻率穩定預熱時間指標需要被考慮到(尤其是對於在苛刻環境中使用的軍用通訊電台,當要求頻率溫度穩定度≤±0.3ppm(-45℃~85℃),採用OCXO作為本振,頻率穩定預熱時間將不少於5分鍾,而採用DTCXO只需要十幾秒鍾)。

---- 頻率老化率:在恆定的環境條件下測量振盪器頻率時,振盪器頻率和時間之間的關系。這種長期頻率漂移是由晶體元件和振盪器電路元件的緩慢變化造成的,可用規定時限後的最大變化率(如±10ppb/天,加電72小時後),或規定的時限內最大的總頻率變化(如:±1ppm/(第一年)和±5ppm/(十年))來表示。

---- 說明:TCXO的頻率老化率為:±0.2ppm~±2ppm(第一年)和±1ppm~±5ppm(十年)(除特殊情況,TCXO很少採用每天頻率老化率的指標,因為即使在實驗室的條件下,溫度變化引起的頻率變化也將大大超過溫度補償晶體振盪器每天的頻率老化,因此這個指標失去了實際的意義)。OCXO的頻率老化率為:±0.5ppb~±10ppb/天(加電72小時後),±30ppb~±2ppm(第一年),±0.3ppm~±3ppm(十年)。

---- 頻率壓控范圍:將頻率控制電壓從基準電壓調到規定的終點電壓,晶體振盪器頻率的最小峰值改變數。

---- 說明:基準電壓為+2.5V,規定終點電壓為+0.5V和+4.5V,壓控晶體振盪器在+0.5V頻率控制電壓時頻率改變數為-110ppm,在+4.5V頻率控制電壓時頻率改變數為+130ppm,則VCXO電壓控制頻率壓控范圍表示為:≥±100ppm(2.5V±2V)。

---- 壓控頻率響應范圍:當調制頻率變化時,峰值頻偏與調制頻率之間的關系。通常用規定的調制頻率比規定的調制基準頻率低若干dB表示。

---- 說明:VCXO頻率壓控范圍頻率響應為0~10kHz。

---- 頻率壓控線性:與理想(直線)函數相比的輸出頻率-輸入控制電壓傳輸特性的一種量度,它以百分數表示整個范圍頻偏的可容許非線性度。

---- 說明:典型的VCXO頻率壓控線性為:≤±10%,≤±20%。簡單的VCXO頻率壓控線性計算方法為(當頻率壓控極性為正極性時):

---- 頻率壓控線性=±((fmax-fmin)/ f0)×100%
---- fmax:VCXO在最大壓控電壓時的輸出頻率
---- fmin:VCXO在最小壓控電壓時的輸出頻率
---- f0:壓控中心電壓頻率

---- 單邊帶相位雜訊£(f):偏離載波f處,一個相位調制邊帶的功率密度與載波功率之比。

*****************************************************************************************
請問單片機晶震旁的2個電容有什麼要求嗎?

這個是晶體的匹配電容,只有在外部所接電容為匹配電容的情況下,
振盪頻率才能保證在標稱頻率附近的誤差范圍內。

最好按照所提供的數據來,如果沒有,一般是30pF左右。太小了不容易
起振。

在某些情況下,也可以通過調整這兩個電容的大小來微調振盪頻率,當然
可調范圍一般在10ppm量級。

④ 用單片機對步進電機進行控制

呵呵 兄弟可以參考某些部分 呵呵
自己做的課程設計 還沒有做完 完了發給你參考參考
題 目:單片機控制步進電機系統

摘 要

很多工業控制設備對位移和角度的控制精度要求較高, 一般電機很難實現, 而步進電機可精確實現所設定的角度和轉數。本設計主要是運用51 單片機控制六線4 相步進電機系統, 由單片機產生驅動脈沖信號, 控制步進電機以一定的轉速向某一方向產生一定的轉動角度。同時能夠利用單片機實現電機的正、反轉及速度控制,並能在數碼管上顯示出相應的速度。
本文中給出了該系統設計的硬體電路,軟體設計,人機交互等。並對各個功能模塊進行了詳細的說明。主要內容包括以下幾個方面:
單片機控制步進電機的一般原理。
電機驅動及控制的實現。
控制系統整體設計以及模塊劃分說明。
原理圖。
代碼。

關鍵詞:單片機;步進電機;系統;驅動

Abstract
Many Instrial control equipment have a highly requirement in displacement and angle with control accuracy, the most motor can't carry out .but the step motor can carry out the displacement and angle that you enactmented in accuracy. This design mainly used SCM to control step motor system.The step motor is formed six lines and four phasic.Through SCM generate the drive pulse signal.Control stepper motor through a certain speed in a direction to get a certain degree of rotation angle.
At the same time, It can use SCM to realization of the motor is , reverse and speed control. and showed the speed in the digital tube.
In this paper, given the design of the system hardware circuit,software design, human-computer interaction and so on.and it given the details description of each functional mole.the main contents include the following:

(1) The general principles of signal_chip controlling step motor.
(2) The realization of motor driving and controlling
(3) Control system overall design and description mole division
(4) Schematic Diagram
(5) Code

Key Words:SCM; stepper motor; system; drive

目錄

引言 4
1 單片機控制步進電機的一般原理 4
1.1 步進電機 4
1.1.1 步進電機介紹 4
1.1.2 步進電機分類 5
1.1.3 技術指標 5
1.1.4 步進電機工作原理 5
1.2 單片機 7
2 步進電機驅動實現 8
2.1簡介 8
2.2驅動選擇 8
3 系統硬體設計 9
3. 1 單片機控制電機 9
3.2 鍵盤 9
3.3 顯示部分 10
程序流程圖 11
總結 12
致 謝 13
參考文獻 13
附錄 13
C代碼 13

引言
目前,在工業控制生產以及儀器上應用十分廣泛。通常都要對一些機械部件平移和轉動,對移動的位移和角度控制要求較高,一般的電機很難實現對位置和角度的精確控制,在一些智能化要求較高的場合,用模擬晶元控制器及信號發生器來控制有一定局限性。而用單片機控制步進電機可以改善性能,步進電機能實現精確的角度和轉數,具有良好的步進特性,最適合數字控制。在工控設備中得到了廣泛的應用。而單片機具有晶元體積小,兼容性強,低電壓地,低功耗等特點,使單片機成為驅動步進電機的最佳空盒子單元。所以單片機控制步進電機系統控制精度高,運行穩定,得以廣泛運用。
1 單片機控制步進電機的一般原理
1.1 步進電機
1.1.1 步進電機介紹
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件。在非超載的情況下,電機的轉速、停止的位置只取決於脈沖信號的頻率和脈沖數,而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。雖然步進電機已被廣泛地應用,但步進電機並不能象普通的直流電機、交流電機在常規下使用。它必須由雙環形脈沖信號、功率驅動電路等組成控制系統方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業知識。
1.1.2 步進電機分類
永磁式(PM)。一般為二相,轉矩和體積都很小,步距角一般為7.5或15°
反應式(VR)。一般為三相,實現大轉矩輸出,步距角為1.5°。
混合式(HB)。兼具永磁式和反應式的優點,分二相和五相,二相步距角為1.8°五相步距角為0.72°。
1.1.3 技術指標
靜態指標

相數
步距角
拍數
定位轉矩
保持轉矩

步進電機動態指標
步距角精度
失步
失調角
最大空載啟動頻率
最大空載運行頻率
運行頻距特性
電機共振點

1.1.4 步進電機工作原理
分析(步進電機展開圖)

以反應式步進電機為例,其典型結構圖如圖1所示。這是一個四相步進電機,當相控制繞組接通脈沖電流時,在磁拉力作用下使相的定、轉子對齊,相鄰的B 相和D 相的定、轉子小齒錯開。若換成B 相通電,則磁拉力使B 相定、轉子小齒對齊(轉過) ,而與B 相相鄰的C 相和A 相的定、轉子小齒又錯開,即步進電機轉過一個步距角。若按A →B →C →D →A ⋯規律循環順序通電,則步進電機按一定方向轉動。若改變通電順序為A →D →C →B →A ,則電機反向轉動。這種控制方式稱為四相單四拍。若按AB →BC →CD →DA →AB或A →AB →B →BC →C →CD →D →DA →A 順序通電則稱為四相雙拍或四相單、雙八拍。無論採用哪種控制方式,在一個通電循環內,步進電機的轉角恆為一個齒距角。所以,可以通過改步進電機通電循環次序來改變轉動方向,可以通過改變通電頻率來改變其角頻率。運用單片機的輸出功能,通過編程實現輸出四個信號分別給步進電機的四相A、B、C、D ,並通過輸出時信號的循環次序,來設定步進電機的轉動方向及輸出信號的頻率以便設定步進電機的轉動頻率。

圖1 反應式步進電機結構圖

實現原理
採用單片機產生A、B、C、D 的四相信號,當採用單片機進行控制時,需要在單片機和步進電機中間設隔離電路以使強弱電分離。由於步進電機的驅動電流相對較大,可增設放大電路來提供步進電機的工作電流。系統電路由五部分組成,即單片機、隔離、放大、電源及步進電機。
1.2 單片機

功能特性描述

AT89S52是一種低功耗、高性能CMOS8位微控制器,
具有8K 在系統可編程Flash 存儲器。使用Atmel 公
司高密度非易失性存儲器技術製造,與工業80C51
產品指令和引腳完全兼容。片上Flash允許程序存儲
器在系統可編程,亦適於常規編程器。在單晶元上,
擁有靈巧的8 位CPU 和在系統可編程Flash,使得
AT89S52為眾多嵌入式控制應用系統提供高靈活、超
有效的解決方案。AT89S52具有以下標准功能:8k字
節Flash,256位元組RAM,32 位I/O 口線,看門狗定時
器,2 個數據指針,三個16 位定時器/計數器,一個6
向量2級中斷結構,全雙工串列口,片內晶振及時鍾電
路。另外,AT89S52 可降至0Hz 靜態邏輯操作,支持
2種軟體可選擇節電模式。空閑模式下,CPU停止工作,
允許RAM、定時器/計數器、串口、中斷繼續工作。掉
電保護方式下,RAM內容被保存,振盪器被凍結,單
片機一切工作停止,直到下一個中斷或硬體復位為止。

2 步進電機驅動實現
2.1簡介
步進電機在單單僅給予電壓時,電機是不會動作的,必須由脈沖產生器提供位置(脈波數)、速度的脈沖信號指令,以及驅動器驅動電流流過電機內部線圈、依順序切換激磁相序的方式才能夠讓電機運 轉。所以欲使步進電機動作的必要系統組成有:
(1)脈沖產生器:給予角度(位置移動量)、動作速度及運轉方向之脈沖信號的電機驅動指令。
(2)步進驅動器:依控制器所投入的脈沖信號指令,提供電流來驅動步進電機動作。
(3)步進電機:提供轉矩動力輸出來帶動負載。所以步進電機系統構成簡單,不需要速度感應器、位置感測器, 即能依照脈沖產生器所輸入的脈沖來做到速度及位置的控制。

2.2驅動選擇
步進電機可以選用專用的電機驅動模塊,也可以自己構建驅動電路。一般有以下幾種選擇:
專用驅動模塊,如L298,FT5754等,這類驅動介面簡單,這類可以驅動步進電機,直流電機等。
達林頓驅動器ULN2803,這個晶元可以一次驅動八線步進電機。
自己構建,通過三極體,74als04,等系列元件構成。但這樣系統可靠性會降低,會另外給系統帶來誤差。

3 系統硬體設計
1 單片機控制電機
如圖3

說明:
這個部分為單片機控制步進電機部分,80s52單片機通過達林頓驅動器ULN2803來驅動步進電機,80s52的P1.0-P1.4發送控制信號給驅動器,然後驅動器的四根線把信號傳遞給電機,使電機實現正反轉等。電機部分接12V直流電源。
3.2 鍵盤
如圖4

說明:
本系統中採用了四個按鍵,分別與80s52的四個引腳相連,分別為LCDEN,RS,WR,RD;分別實現的功能是電機加速,減速,正反轉。鍵盤一旦按下則表示向單片機發送了有效信號,單片機就相應的進行調節。對於鍵盤的鍵按下的時候分為幾個步驟,當鍵盤按下的時候,接通電路,鍵盤掃描檢測低電平,但檢測到低電平之後不能夠判斷鍵是否被按下,因為抖動可能引起這個變化,所有大概延時5~10ms之後再進行檢測。如果再次檢測到低電平之後說明鍵被按下。這個過程就是所說的消除抖動。
3.3 顯示部分
如圖5

說明:
對於顯示部分,因為這個系統只是顯示轉速,所以採用了LED共陽極數碼管。
並且用了74HC573鎖存器,74HC573鎖存器輸出電流大,介面電路簡單。本系統採用了兩個74HC573鎖存器,分別為段選和位選。段選為數碼管的顯示數字,位選為選中相應的數碼管。
程序流程圖

總結
通過本次的課程論文,讓我真實的感受到一個完整的系統設計過程。這次的的論文從開始的整體布局,排版,到內容中的系統設計直到最後完成。每個流程下來,都帶給了我很多的新東西,特別在設計完系統之後做硬體部分中,先是用protel99se畫圖,好多圖在庫中找不到,找不到就自己畫,然後封裝,封裝的時候還要用游標卡紙對買來的元件進行精確的測量,然後才能在封裝的過程中保證精度。最後做完圖之後還要布線,布線完成後再發到廠家去做。事實上這個過程我用買好的空板做的,因為元件不多。所以就買了相應的元件直接再PCB板上焊接好的。在焊接的過程中也會感受到很多東西,因為很多需要注意的。不過這個過程多多嘗試就會有進步的。焊接完後就是代碼調試階段。最後就完成了這個小型系統的設計。

致 謝
在此,感謝我的老師以及周圍的同學。本次的論文得益於同學們的幫助。最後還要感謝我的父母,是他們一直在背後支持著我。
謹以此文獻給他們!

參考文獻
[1] 張永楓,王靜霞,楊宏利. 單片機應用實訓教程. 西安電子科技大學出版社,2005.
[2] 郭天祥. 51單片機C語言教程. 電子工業出版社 2008

附錄
C代碼
單片機控制步進電機
實現功能:
定時器中斷:定時時間設置為30秒,首先給的初值每次中斷為5ms,經過20次中斷為1秒,半分鍾三十秒則要中斷600次,所有到達六百次後就把計數n中的值讀取到數碼管中顯示出來。
鍵盤檢測:進行速度控制的時候按下相應的鍵則會對應的進行速度調節。
數碼管顯示:
驅動部分:
#include <reg52.h>
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
sbit jia_key=P3^6;
sbit jian_key=P3^7;
sbit zf_key=P3^5;
sbit stop_key=P3^4;
bit flag=0;
uchar num1,n;
uchar num=0,show_num=2,maichong=4,table_begin=0;
uchar code table1[]={0x01,0x02,0x04,0x08,0x08,0x02,0x01};
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
// 延時部分
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=110;k>0;k--);
}
// 顯示部分
void display()
{
la=0;
P0=table[show_num];
la=1;
la=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[0];
la=1;
la=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
// 鍵盤檢測部分
void key()
{
if(jia_key==0)
{
delay(5);
if(jia_key==0)
{
num++;
if(num==4)
num=3;
while(jia_key==0)
}
}
if(jian_key==0)
{
delay(5);
if(jian_key==0)
{
if(num!=0)
num--;
else
num==0;
while(jian_key==0);
}
}
if(zf_key==0)
{
delay(5);
if(zf_key==0)
{
flag=~flag;
while(zf_key==0);
}

}
if(stop_key==0)
{
delay(4);
if(stop_key==0)
{
show_num=0;
maichong=0;
}
while(stop_key==0)
}
}
// 鍵盤檢測結果
void dispose()
{
switch(num)
{
case 0:
maichong=5;
break;
case 1:
maichong=4;
break;
case 2:
maichong=3;
break;
case 3:
maichong=2;
break;
}
if(flag==0)
{
table_begin=0;
}
else
table_begin=4;
}
// 數碼管驅動部分
void qudong()
{
uchar i,j;
for(j=0+table_begin;j<4+table_begin;j++)
{
P1=table[j];
for(i=0;i<maichong;i++)
{
dispaly();
}
}
}
// 主函數部分
void main()
{
while(1)
{ init();
key();
dispose();
qudong();
n++;
}
}
// 定時器中斷初始化
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1; // 開總中斷
ET0=1;// 開定時器0中斷
TR0=1;// 啟動定時器0
}
// 定時器中斷調用
void T0_time() intterrupt 1 // T0中斷
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num1++;
if(num1==600)
{
show_num=n;
num1=0;
n=0;
}

}

⑤ rtc喚醒日期每天喚醒寫什麼

周期性喚醒標志由 16 位可編程自動重載遞減計數器生成。喚醒定時器范圍可擴展至 17 位。

可通過 RTC_CR 寄存器中的 WUTE 位來使能此喚醒功能。

喚醒定時器的時鍾輸入可以是:  2、4、8 或 16 分頻的 RTC 時鍾 (RTCCLK)。

當 RTCCLK 為 LSE (32.768 kHz) 時,可配置的喚醒中斷周期介於 122 µs 和 32 s 之 間,且解析度低至 61 µs。

· ck_spre(通常為 1 Hz 內部時鍾)。

當 ck_spre 頻率為 1 Hz 時,可得到的喚醒時間為 1s 到 36h 左右,解析度為 1 秒。這 一較大的可編程時間范圍分為兩部分:

– WUCKSEL [2:1] = 10 時為 1s 到 18h

– WUCKSEL [2:1] = 11 時約為 18h 到 36h。在後一種情況下,會將 216 添加到 16 位計數器當前值。完成初始化序列後(請參見第 600 頁的編程喚醒定時器),定時 器開始遞減計數。在低功耗模式下使能喚醒功能時,遞減計數保持有效。此外,當 計數器計數到 0 時,RTC_ISR 寄存器的 WUTF 標志會置 1,並且喚醒寄存器會使用其重載值(RTC_WUTR 寄存器值)動重載。 之後必須用軟體清零 WUTF 標志。

通過將 RTC_CR2 寄存器中的 WUTIE 位置 1 來使能周期性喚醒中斷時,它會使器件退出低功耗模式。

如果已通過 RTC_CR 寄存器的位 OSEL[1:0] 使能周期性喚醒標志,則該標志可連接到RTC_ALARM 輸出。可通過 RTC_CR 寄存器的 POL 位配置 RTC_ALARM 輸出極性。

系統復位以及低功耗模式(睡眠、停機和待機)對喚醒定時器沒有任何影響。

 

二、配置周期喚醒

配置步驟如下:

1. 禁用周期喚醒功能,復位RTC_CR2中WUTE位;

2. 等待RTC_ISR1中WUTWF位置位,表示喚醒計數器可配置;

3. 配置喚醒時鍾,設置RTC_CR1中WUCKSEL[2:0]位:

- 000: RTCCLK/16

- 001: RTCCLK/8

- 010: RTCCLK/4

- 011: RTCCLK/2

- 10x: ck_spre(1Hz,WUT計數范圍:0x0000~0xFFFF)

- 11x: ck_spre(1Hz,WUT計數范圍:0x10000~0x1FFFF)

4. 配置喚醒周期,裝載寄存器RTC_WUTRH和RTC_WUTRL;

5. 使能周期喚醒功能,置位RTC_CR2中WUTE位。(該中斷會使MCU退出低功耗狀態,進入運行狀態。)

 

 

RTCCLK,預分頻2,4,8或16。如果RTCCLK為LSE,即32768Hz,則可配置喚醒周期為:(61us ~ 32s)

 

ck_spre, 1Hz時鍾,則可配置喚醒周期為:(1s ~ 36h)

 

三、RTC時鍾配置

1、時鍾源選擇:RTC時鍾源可選HSE,LSE,HSI或LSI。

為確保RTC精確工作,要求系統時鍾(SYSCLK)必須等於或大於4*RTCCLK值。如果系統時鍾(SYSCLK)為LSE或LSI,則RTC時鍾必須等於系統時鍾(SYSCLK),並且禁用RTC同步機制(置位RTC_CR1寄存器RATIO位)。

 

2、配置RTC時鍾源:配置RTC時鍾源為LSE,1分頻,即32768Hz。

 

3、配置ck_spre時鍾; ck_spre時鍾,默認1Hz時鍾。

(1) 設置7位非同步預分頻,RTC_APREG:PREDIVA,默認127;

(2) 設置13(Medium)或15位同步預分頻,RTC_SPRERx:PREDIV_S,默認255。

即:1Hz=32768/((127+1)*(255+1))

 

ck_spre時鍾可用於日歷和定時喚醒時鍾。

 

代碼參考
//參數time 秒

void APP_EnterLP(uint32_t time )

{

         MX_GPIO_Init_stop();

 /* Enable Ultra low power mode */

          HAL_PWREx_EnableUltraLowPower(); //使能超低功耗

          /* Enable Fast WakeUP */

          HAL_PWREx_EnableFastWakeUp();            //使能快速喚醒

           /* Disable Wakeup Counter */

         HAL_RTCEx_DeactivateWakeUpTimer(&hrtc);

         

      

      /* Clear Wake Up Flag */

        __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

        

    //    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, (uint32_t)(time * 2048), RTC_WAKEUPCLOCK_RTCCLK_DIV16);//rtc LSE=32.768k   2048Hz   488us-- 32秒

 

        HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, time-1, RTC_WAKEUPCLOCK_CK_SPRE_16BITS); //wangxl@20190814  時鍾選擇1Hz  65535/60/60 ~18  可得到的喚醒時間為 1s 到 18h 左右

        

        printf("進入停止模式\r\n");

        

        /* Select MSI as system clock source after Wake Up from Stop mode */

        __HAL_RCC_WAKEUPSTOP_CLK_CONFIG (RCC_STOP_WAKEUPCLOCK_HSI);

        

        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON , PWR_STOPENTRY_WFI);

              

        MX_GPIO_Init();

       

        HAL_Delay(5);  //wangxl@20190814  穩定時鍾 必免串口列印亂碼

        printf("wake up\r\n");

}

打開CSDN,閱讀體驗更佳

STM32---RTC實時時鍾,隨機數發生器和待機喚醒_碼字但很菜的博客-CSDN博...
void RTC_AlarmSubSecondConfig(uint32_t RTC_Alarm, uint32_t RTC_AlarmSubSecondValue,uint32_t RTC_AlarmSubSecondMask) uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm); RTC周期喚醒相關函數 void RTC_WakeUpClockConfig(...
繼續訪問
STM32L051低功耗STOP模式下RTC喚醒_TonyIOT的博客_stm32l05...
很多MCU都有低功耗模式,以滿足對功耗要求苛刻的應用場景。STM32系列MCU的低功耗模式根據其內核與類型的不同也各不相同,網上有很多文章介紹。本文總結下STM32L051的STOP模式,通過RTC喚醒。
繼續訪問
最新發布 GD32F4—RTC鬧鍾及自動喚醒中斷配置詳解
GD32F4RTC鬧鍾及自動喚醒中斷配置
繼續訪問

【STM32】RTC休眠喚醒(停機模式)、獨立看門狗開啟狀態下
本文章基於STM32F103RC; 在開啟獨立看門狗的狀態下,進入停機模式,由RTC定時鬧鍾喚醒系統。 直接上代碼: #include "main.h" static void RTC_NVIC_Config(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;
繼續訪問
stm32f103 RTC周期性待機喚醒(一)_luck_horse的博客
我的RTC初始化部分有個「保存在備份寄存器的RTC標志是否已經被配置過的判斷」,如果已經配置過,則進入else部分,但是這個else部分沒有「要使能電源時鍾,使能備份時鍾,取消後備區的防寫」這些配置語句,而待機喚醒後程序從主函數執行,會執行...
繼續訪問
...RTC實時時鍾_基爾霍夫原來是碼農的博客_stm32 rtc 時間
RTC簡介 STM32F4的RTC,是一個獨立的BCD 定時器/計數器。STM32F4的RTC 提供一個日歷時鍾(包含年月日時分秒信息)、兩個可編程鬧鍾(ALARM A和ALARM B)中斷,以及一個具有中斷功能的周期性可編程喚醒標志。RTC 還包含用於管理低功耗模式...
繼續訪問
STM32L031低功耗深度睡眠RTC喚醒注意事項
1. 發現進入睡眠後,電流1.2uA,滿足要求。結果喚醒後,第二次進入睡眠後,電流跳到了19uA,且一直保持下去。結果看了https://blog.csdn.net/zzw3255/article/details/54342878的介紹,把串口乾掉了,電流下降到了2.6uA。2. 去掉了串口,第一次進入睡眠1.2uA,第二次進入睡眠2.6uA。有陷入了僵局,沒開串口、沒開GPIO,啥事都沒干,怎麼...
繼續訪問
STM32L053RTC——喚醒定時器定時喚醒睡眠
L053RTC——喚醒定時器定時喚醒睡眠
繼續訪問

CM3計算板RTC鬧鍾喚醒系統_jianwang16的博客_bios rtc...
rtcctlshowalarm1 /* rtcctl 啟用鬧鍾1 */ rtcctlonalarm1 /* rtcctl 清除鬧鍾1 */ rtcctl clear alarm1 /* rtcctl 設置鬧鍾1時間 2019/06/01 15:30:00 鬧鍾產生中斷*/ rtcctlset06/01/201915:30:00 ...
繼續訪問
RTC自動喚醒_Ftworld21的博客_rtc喚醒
RTC喚醒低功耗(standby)模式 這段時間在公司最一個低功耗的項目,採用的的STM32F103的最低功耗standby模式,進入最低功耗模式後,電流降到了3uA,和晶元手冊上的大致相同。對進入低功耗模式,網上有很多程序,我在這里把我的粘貼上來,僅供參...
繼續訪問
熱門推薦 STM32復習筆記(十二)RTC實時時鍾(低功耗待機喚醒)
聲明:本篇文章只是個人知識盲區、知識弱點、重點部分的歸納總結,望各位大佬不喜勿噴。梳理順序是按照正點原子的視頻和文檔的實際順序梳理,轉載請註明出處。 作者:sumjess 適用:這個視頻我已經看過3遍了,總會有忘記的,所以來寫這本書的隨手筆記,記錄重點、易忘點。該博客可以當做字典,也可以當做筆記。 目前內容:RTC實時時鍾(低功耗待機喚醒)   一、RTC實時時鍾特徵與原理: ★  R...
繼續訪問
STM32----RTC實時時鍾,隨機數發生器和待機喚醒
RTC實時時鍾 RTC是個獨立的BCD定時器/計數器。RTC 提供一個日歷時鍾,兩個可編程鬧鍾中斷,以及一個具有中斷功能的周期性可編程喚醒標志。RTC還包含用於管理低功耗模式的自動喚醒單元。 兩個32位寄存器包含二進碼十進制格式(BCD)的秒,分鍾,小時(12或24小時制),星期幾,日期,月份和年份。此外,還可以 提供二進制的亞秒值。 系統可以自動將月份的天數補...
繼續訪問

hal 外部喚醒腳喚醒_【STM32】HAL庫開發教程(六)—低功耗喚醒
前言不必害怕未知,無需恐懼犯錯,做一個Creator!本文主要介紹STM32_HAL庫開發中低功耗喚醒的使用。一、開發步驟1.STM32CubeMX配置在左側引腳配置處勾選RTC進行配置在RTC模式處勾選「Wakeup」喚醒使能RTC喚醒模式在RTC參數配置處進行參數配置:RTC時鍾、Wakeup喚醒時鍾、Wakeup喚醒計數器以及勾選」NVIC Settings」使能外部中斷 2.進低功耗程序編...
繼續訪問
STM32Cube STM32L053配置RTC WAKEUP中斷喚醒
晶元手冊中提到的從停止模式喚醒說明 晶元手冊中提到的從待機模式喚醒說明 配置 LL_RTC_InitTypeDef RTC_InitStruct = {0}; LL_RCC_EnableRTC(); NVIC_SetPriority(RTC_IRQn,0); NVIC_EnableIRQ(RTC_IRQn); RTC_InitStruct.HourFormat = LL_RTC_HOURFORMAT_24HOUR; RTC_InitStruct.AsynchPrescaler = 12
繼續訪問

STM32L0系列單片機低功耗(STOP)使用+RTC喚醒+LPUART(DMA方式)喚醒+LPTIM喚醒
文章目錄STM32L0低功耗應用1.睡眠模式2.低功耗運行模式3.低功耗睡眠模式4.帶RTC的停止模式5.不帶RTC的停止模式6.帶RTC待機模式7.不帶RTC待機模式留更設定內容居中、居左、居右SmartyPants創建一個自定義列表如何創建一個注腳注釋也是必不可少的KaTeX數學公式新的甘特圖功能,豐富你的文章UML 圖表FLowchart流程圖導出與導入導出導入 STM32L0低功耗應用 S...
繼續訪問

STM32 STOP模式開發問題集錦
STM32 STOP模式開發問題集錦 晶元:STM32L151RBT6 庫:HAL庫 ①晶振不起振問題 項目過程中,遇到了晶振不起振問題,看了很多帖子,還是不能確定到底是什麼問題。我個人建議是使用有源晶振或者是內部晶振(自帶晶振不會黑自己吧…) 由於內部低速晶振並非是32.768,所以對RTC要求高的,考慮有源的32.768K晶振,我在實驗過程中換了一個無源的KDS(株式會社-大真空)目前也沒有發現不起振的情況。高速晶振可以內部,也可以有源。 ②HAL庫 中RTC喚醒STOP模式問題 和時間相關的喚醒,一種
繼續訪問
STM32L151C8T6筆記2:RTC喚醒的STOP模式
嘗試在保留RAM數據的前提下進行低功耗定時運行,Stop模式帶RTC成為唯一選擇,上圖來自《AN3193:STM32L1xx超低功耗功能概述》。 梳理工作邏輯: (1)需要進入低功耗之前,先配置RTC的Wakeup(也可以用鬧鍾Alarm,類似,不贅述): //to set wake up interval if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc,( RTC_WKUP_INTVAL_IN_SECOND*1000000 /W...
繼續訪問

RTC定時開機鬧鍾
RTC是Real Time Clock的簡稱,它在硬體電路上單獨供電,當系統關機時,CPU和其他外部硬體設備全部掉電,但是RTC仍然繼續工作. HWCR (Hibernate Wakeup Control Register)是一個控制休眠喚醒的寄存器,如果我們要使用休眠狀態下RTC喚醒的功能,我們需要打開它的第0位ELAM(RTC Alarm Wakeup enable),當ELAM置1...
繼續訪問
STM32F030使用RTC周期性喚醒STOP模式
首先,F030與F072的RTC喚醒功能是不一樣的,在相關定義文件stm32f0xx_exti.h中有如下定義: #define EXTI_Line17 ((uint32_t)0x00020000) /*!< Internal interrupt line 17 Con...
繼續訪問
stm32f103 RTC周期性待機喚醒(一)
轉載於http://blog.csdn.net/u011732167/article/details/50958520 今天終於發現問題出在哪裡了,對待機喚醒的問題做一個總結(只針對我遇到的問題,其他部分網上都有,基於stm32f103) 1、解決我遇到的問題        我的RTC初始化部分有個「保存在備份寄存器的RTC標志是否已經被配置過的判斷」,如果已經配置過,則
繼續訪問
hal庫開啟中斷關中斷_技術筆記STM32CubeL4 固件庫V1.13.0版的RTC喚醒
因為STM32L4極其出色的低功耗性能,越來越多的用戶在使用STM32L4系列開發產品。談到低功耗,就少不了低功耗模式。進入低功耗模式,自然需要能夠喚醒。很多用戶在產品開發中會使用RTC把系統從低功耗模式定時喚醒。問題客戶在產品的設計中,使用STM32L476RGT6。客戶使用RTC的定時喚醒來將系統從STOP2模式中喚醒,但是發現無法喚醒。調研01了解問題客戶參考\STM32Cube_...
繼續訪問

stm32中斷源有哪些_STM32低功耗待機模式+RTC鬧鍾中斷喚醒
很多單片機都有低功耗模式,STM32 也不例外。在系統或電源復位以後,微控制器處於運行狀態。運行狀態下的HCLK為CPU提供時鍾,內核執行程序代碼。當CPU不需繼續運行時,可以利用多個低功耗模式來節省功耗,例如等待某個外部事件時。用戶需要根據最低電源消耗,最快速啟動時間和可用的喚醒源等條件,選定一個最佳的低功耗模式。 單片機內部功率是各功能部分功率的總和,低功耗模式是通過關掉部分內部功能達到...
繼續訪問

STM32開發筆記30:STM32L0低功耗設計——STOP_RTC模式下的休眠時間
單片機型號:STM32L053R8T6     本文介紹STOP_RTC模式下,設置進入低功耗休眠時間的方法。     低功耗的休眠時間的設置首先需要確定RTC的基準時間,我們一般將其設置為1秒,這在《STM32L0低功耗設計4: RTC模塊1秒時鍾的產生方法》中已經介紹過,大家看一下就好。     接下來,就需要對HAL_RTCEx_SetWakeUpTimer_IT函數的第2個參數進行設...
繼續訪問
基於STM32通過RTC喚醒低功耗模式
RTC自動喚醒低功耗模式

⑥ 基於單片機的單按鍵實現電機正反轉控制,如何實現最好有C語言程序代碼,主要是Main函數 謝謝

/*基於雙轉鏡片的步進電機控制的程序說明*/

/*FP20、FP21、FP22、FP23分別接步進電機的A、B、C、D四相*/
/*FP10、FP11、FP12分別接主機控制的ON/OFF(0/1)、方向(0正轉/1反轉)、循環變速(0有效)*/
/*變數定義*/
unsigned int motorenb=0;
unsigned int ccw=0;
unsigned int su_keyenb=0;
unsigned int su=2;
unsigned int su_cv=0;
unsigned int su_num=26;
unsigned int wfa=0;
/*變數定義結束*/
/*中斷函數*/
__interrupt ints (void) //中斷入口 ;1ms
{
unsigned int a,b,c,d;
FGIE=0;//關閉總中斷
if(FTC0IRQ) //一次定時1mS
{
FTC0IEN=0;//禁止TC1中斷
FTC0IRQ=0;//清中斷請求標志位
FTC0IEN=1;//開TC1中斷
if(motorenb==1)
{
su_cv++;
if(su_cv>=su_num)
{
su_cv=0;
if(ccw==1) //正轉
{
a=wfa;
a++;
if(a>7) a=0;
wfa=a;
}
else if(ccw==0)//反轉
{
a=wfa;
if(a==0) a=8;
a-=1;
wfa=a;
}
switch(a)
{
case 0: FP23=0;
FP22=0;
FP21=1;
FP20=1;
break;
case 1: FP23=0;
FP22=0;
FP21=1;
FP20=0;
break;
case 2: FP23=0;
FP22=1;
FP21=1;
FP20=0;
break;
case 3: FP23=0;
FP22=1;
FP21=0;
FP20=0;
break;
case 4: FP23=1;
FP22=1;
FP21=0;
FP20=0;
break;
case 5: FP23=1;
FP22=0;
FP21=0;
FP20=0;
break;
case 6: FP23=1;
FP22=0;
FP21=0;
FP20=1;
break;
case 7: FP23=0;
FP22=0;
FP21=0;
FP20=1;
break;
}
}
}
else P2=0X00;
}
}
/*主函數*/
void main(void)
{
FP20M=1;
FP21M=1;
FP22M=1;
FP23M=1;
FP10M=0;
FP12M=0;
P2UR=0XFF;
P1UR=0XFF;
/*TC0作為計時器*/
FTC0IEN=0;//禁止TC0中斷
FTC0ENB=0;//禁止TC0
FPWM0OUT=0;//禁止PWM1
FTC0OUT=0;//禁止TC0輸出
FALOAD0=1;//TC0自動重裝
FTC0CKS=0;//選用內部時鍾
FTC0RATE0=1;//設置TC0分頻為Fcpu/32
FTC0RATE1=1;
FTC0RATE2=0;
TC0C=0xF3;//給TC0賦初值,TC0C=256-(1mS*16M/4/32)
TC0R=0xF3;//給TC0賦自動重裝值
FTC0IRQ=0;//清TC0中斷標志位
FTC0IEN=1;//使能TC0中斷
FGIE=1;//開總中斷
FTC0ENB=1;//開TC0
while(1)
{
WDTR=0x5A;
if(FP10==0) motorenb=1;
else motorenb=0;
if(FP12==0)ccw=1;
else ccw=0;
if(FP11==1) su_keyenb=1;
if(su_keyenb==1)
{
if(FP11==0)
{
su_keyenb=0;
su++;
if(su>2) su=0;
switch(su)
{
case 0 : su_num=26;
break;
case 1 : su_num=14;
break;
case 2 : su_num=6;
break;
}
}
}
}
}
給你做個參考,我自己用的,試過了,你把IO口改下,定時器也改成你的型號的

閱讀全文

與ft60f021單片機功能相關的資料

熱點內容
stc模擬器編程器 瀏覽:155
伺服器銷售怎麼做好 瀏覽:87
什麼是com編程 瀏覽:848
演算法工程師最新資訊 瀏覽:608
郵政銀行卡怎麼在app簽約綁定 瀏覽:49
壓縮卷一直轉 瀏覽:976
初一編程小程序怎麼做 瀏覽:826
bt軟體文件夾名稱 瀏覽:157
unix創建命令 瀏覽:622
devc是多少位的編譯器 瀏覽:980
怎麼樣能快點升安卓系統 瀏覽:976
奇跡mu用什麼伺服器 瀏覽:605
如何讓軟體在多個安卓系統上運行 瀏覽:574
java判斷半形 瀏覽:880
java判斷正負 瀏覽:320
刷頭條程序員的日常 瀏覽:103
吉林程序員吐槽 瀏覽:243
單片機溫度范圍 瀏覽:420
程序員為什麼素質低 瀏覽:898
可愛的程序員小姐姐 瀏覽:147