版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目錄</b></p><p> 設計目的.............................................3</p><p> 設計要求.............................................3</p><p> 儀器設備...............
2、..............................3</p><p> 四、硬件線路圖及主要芯片說明.............................3</p><p> 系統(tǒng)所使用的開發(fā)板上的區(qū)域.................................3</p><p> 系統(tǒng)硬件電路圖......................
3、.....................3</p><p> 系統(tǒng)所用主要芯片說明......................................4</p><p> 3.1 STC89C52RC芯片介紹...................................4</p><p> 3.2 ULN2003A芯片介紹..........
4、...........................4</p><p> 3.3 LCD1602液晶介紹......................................4</p><p> 系統(tǒng)工作原理.........................................5</p><p> 步進電機介紹...............
5、..............................5</p><p> 2.控制原理基本框圖..........................................5</p><p> 程序框圖..............................................6</p><p> 程序清單............
6、..................................7</p><p> 設計體會.............................................12</p><p> 參考文獻.............................................12</p><p><b> 一、設計目
7、的</b></p><p> 通過具體小型測試系統(tǒng)設計,實踐單片機系統(tǒng)設計及調(diào)試的全過程,以加深對單片機內(nèi)部結構、功能和指令系統(tǒng)的理解,并進一步學習單片機開發(fā)系統(tǒng)的應用及一些外圍芯片的接口和編程方法,初步掌握單片機系統(tǒng)的硬、軟件設計技術及調(diào)試技巧。</p><p> 了解步進電機的構造、驅動、工作原理以及步進電機的一些指標術語,掌握步進電機的轉動控制方式和調(diào)速方法。<
8、/p><p> 加深對單片機開發(fā)試驗儀各部分功能的了解與使用,方便對以后的設計進行開發(fā)、編程與調(diào)試。</p><p> 熟練C語言以及函數(shù)、中斷的使用。</p><p><b> 二、設計要求</b></p><p> 1)電機轉速可以平穩(wěn)控制</p><p> 2)通過鍵盤可以選擇電機的轉
9、動方式</p><p> 3)通過鍵盤可以設置電機的轉速</p><p> 4)顯示器可以顯示步進電機的運行狀況 </p><p><b> 主要儀器設備</b></p><p> 硬件線路圖及主要芯片說明</p><p> 1.系統(tǒng)所使用的開發(fā)板上的
10、區(qū)域</p><p> 步進電機實驗區(qū)上面有一個四相步進電機及其驅動芯片,用戶可以在上面進行步進電機控制的相關實驗。步進電機將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移實現(xiàn)電機轉動。</p><p> 鍵盤實驗區(qū)的按鍵控制步進電機的啟動/停止,正/反轉,加/減速,本設計采用單鍵控制啟停、單鍵控制正反轉以及兩個按鍵分別控制加減速。</p><p> 用STC89C52RC單
11、片機實現(xiàn)控制整個步進電機系統(tǒng)的啟動/停止,正/反轉,加/減速以及驅動LCD1602顯示步進電機的運行狀況。</p><p><b> 2.系統(tǒng)硬件電路圖</b></p><p> 步進電機運動系統(tǒng)的硬件電路圖(用Proteus繪制)如下圖所示:</p><p> 3.系統(tǒng)所用主要芯片說明</p><p> 3.1
12、 STC89C52RC芯片介紹</p><p> STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標
13、準功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結構(兼容傳統(tǒng)51的5向量2級中斷結構),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存
14、,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。</p><p> 3.2 ULN2003A芯片介紹</p><p> 本設計采用ULN2003A作為步進電機的驅動芯片,ULN2003A電路具有以下特點: </p><p> ● 電流增益高(大于1000)</p><p>
15、 ● 帶負載能力強(輸出電流大于500mA)</p><p> ● 溫度范圍寬(-40℃—85℃)</p><p> ● 工作電壓高(大于50V)</p><p> 3.3 LCD1602液晶介紹</p><p> 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X1
16、1等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。 1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。 </p><p><b> 五、系統(tǒng)工作原理</b></p><p><b>
17、 1.步進電機介紹</b></p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進電機件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同
18、時可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調(diào)速的目的。</p><p> 步進電機是一種感應電機,它的工作原理是利用電子電路將直流電變成分時供電的多相時序控制電流,用這種電流為步進電機供電,步進電機才能正常工作,驅動器就是為步進電機分時供電的多相時序控制器。雖然步進電機已被廣泛地應用,但步進電機并不能像普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅動電路等組成控制系統(tǒng)方可
19、使用。</p><p> 四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A...),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-...),八拍(A-AB-B-BC-C-CD-D-DA-A...);當通電時序相反時,轉向相反。本設計采用的通電方式是八拍。</p><p> 2.控制原理基本框圖</p><p&
20、gt; 步進電機控制原理的基本框圖如下:</p><p> 其中P3.2、P3.3為外部中斷,本設計采用下降沿觸發(fā)方式,通過改變用m和n的值來控制電機的啟動/停止,正/反轉;P3.4、P3.5為定時/計數(shù)器中斷,本設計采用計數(shù)方式,并工作于方式2,將TH0、TL0、TH1、TL1都設為0xff,這樣和外部中斷是一樣的功能,通過改變脈沖之間的延遲時間T來控制電機的加/減速;P0口用以控制液晶指令與數(shù)據(jù)的傳輸,P
21、2.5、P2.6、P2.7連接液晶的三個控制接口從而實現(xiàn)對液晶的控制。</p><p><b> 程序框圖</b></p><p><b> 開始</b></p><p><b> 系統(tǒng)以及LCD</b></p><p><b> 初始化</b>&
22、lt;/p><p><b> N </b></p><p><b> m==0</b></p><p><b> Y </b></p><p> Yn==0 N</p><p><b> 正轉 反轉</b>
23、;</p><p><b> T0中斷T1中斷</b></p><p><b> YY</b></p><p><b> 減速加速</b></p><p><b> 結束</b></p><p><b>
24、 程序清單</b></p><p> #include<reg51.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p>&
25、lt;p> sbit RS=P2^6;</p><p> sbit RW=P2^5;</p><p> sbit EN=P2^7;</p><p> void DelayMS(uint ms)</p><p><b> {</b></p><p><b> uchar
26、i;</b></p><p> while(ms--) for(i=0;i<120;i++);</p><p><b> }</b></p><p> uchar Busy_Check()</p><p><b> {</b></p><p> u
27、char LCD_Status;</p><p><b> RS=0;</b></p><p><b> RW=1;</b></p><p><b> EN=1;</b></p><p> DelayMS(1);</p><p&g
28、t; LCD_Status=P0;</p><p><b> EN=0;</b></p><p> return LCD_Status;</p><p><b> }</b></p><p> void Write_LCD_Command(uchar cmd)</p><
29、;p><b> {</b></p><p> while((Busy_Check()&0x80)==0x80);</p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p><b> EN=0
30、;</b></p><p> P0=cmd;EN=1;DelayMS(1);EN=0;</p><p><b> }</b></p><p> void Write_LCD_Data(uchar dat)</p><p><b> {</b></p><p&
31、gt; while((Busy_Check()&0x80)==0x80);</p><p> RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;</p><p><b> }</b></p><p> void Initialize_LCD()</p><p><
32、;b> {</b></p><p> Write_LCD_Command(0x38);DelayMS(1);</p><p> Write_LCD_Command(0x01);DelayMS(1);</p><p> Write_LCD_Command(0x06);DelayMS(1);</p><p> Wr
33、ite_LCD_Command(0x0c);DelayMS(1);</p><p><b> }</b></p><p> void ShowString(uchar x,uchar y,uchar z,uchar *str)</p><p><b> {</b></p><p> uch
34、ar i=0;</p><p> if(y==0) Write_LCD_Command(0x80|x);</p><p> if(y==1) Write_LCD_Command(0xc0|x);</p><p> for(i=0;i<z;i++)</p><p><b> {</b></p
35、><p> Write_LCD_Data(str[i]);</p><p><b> }</b></p><p><b> }</b></p><p> for(i=0;i<z;i++)</p><p><b> {</b><
36、/p><p> Write_LCD_Data(str[i]);</p><p><b> }</b></p><p><b> }</b></p><p> LCD_Data(str[i]);</p><p><b> }</b></p>
37、;<p><b> }</b></p><p> #include<reg51.h></p><p> #include<string.h></p><p> #define uchar unsigned char </p><p> #define uint unsig
38、ned int</p><p> void Initialize_LCD();</p><p> void ShowString(uchar,uchar,uchar,uchar *);</p><p> sbit K1=P3^2;</p><p> sbit K2=P3^3;</p><p> sbit K3
39、=P3^4;</p><p> sbit K4=P3^5;</p><p><b> uint Sp;</b></p><p> float T=45;</p><p> bit m=1,n=1;</p><p> uchar LCD_DSP[]={"00.0 r/min&q
40、uot;};</p><p> uchar LCD_DSP1[]={" up "}; </p><p> uchar LCD_DSP2[]={"down"};</p><p> uchar LCD_DSP3[]={"<<"};</p><p> uchar LCD
41、_DSP4[]={">>"}; </p><p> uchar code FFW[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //八拍正轉</p><p> uchar code REV[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //八拍反轉</p&g
42、t;<p> void delay(uint t)</p><p> { </p><p><b> uchar i;</b></p><p> while(t--)</p><p> for(i=0;i<80;i++); </
43、p><p><b> }</b></p><p> void motor_ffw() //正轉</p><p><b> { </b></p><p> uchar i,j;</p><p> for(j=0;j<2;j++)</p><
44、;p><b> {</b></p><p> for(i=0;i<8;i++) </p><p><b> {</b></p><p> P1 = FFW[i]; </p><p> delay(T); //調(diào)節(jié)轉速</p>
45、<p><b> }</b></p><p> if(m==1) break;</p><p><b> }</b></p><p> } </p><p> void motor_rev()//反轉</p><p&g
46、t;<b> { </b></p><p> uchar i,j;</p><p> for(j=0;j<2;j++)</p><p><b> {</b></p><p> for(i=0;i<8;i++) </p><
47、p><b> { </b></p><p> P1 = REV[i]; </p><p> delay(T); //調(diào)節(jié)轉速</p><p><b> }</b></p><p> if(m==1) break;</p><p><b
48、> }</b></p><p> } </p><p> void Format_speed(uchar d,uchar *a) //速度轉換為數(shù)字字符</p><p><b> {</b></p><p> a[0]=d+'0';</p&
49、gt;<p><b> }</b></p><p> void main() </p><p><b> {</b></p><p> TMOD=0x66;</p><p> TH0=TL0=0xff;</p><p> TH1=TL1=0
50、xff;</p><p> TR0=1;</p><p><b> TR1=1;</b></p><p><b> IT0=1;</b></p><p><b> IT1=1;</b></p><p><b> IE=0x8
51、f;</b></p><p> Initialize_LCD();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> if(m==0)</b></p><p><
52、b> {</b></p><p><b> if(n==0)</b></p><p><b> {</b></p><p> ShowString(9,1,2,LCD_DSP3);</p><p> motor_ffw();</p><p><
53、;b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> ShowString(9,1,2,LCD_DSP4);</p><p> motor_rev();</p><p><b
54、> }</b></p><p> Sp=(uint)(9000/T);</p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b>
55、; P1=0xf9;</b></p><p><b> Sp=0; </b></p><p> ShowString(9,1,2," ");</p><p><b> }</b></p><p> Format_speed(Sp/100, LCD_DSP)
56、;</p><p> Format_speed(Sp%100/10, LCD_DSP+1);</p><p> Format_speed(Sp%10, LCD_DSP+3);</p><p> ShowString(3,0,10,LCD_DSP);</p><p><b> }</b></p>&l
57、t;p><b> }</b></p><p> void EX_INT0() interrupt 0</p><p><b> {</b></p><p><b> m=~m;</b></p><p><b> }</b></p&
58、gt;<p> void Timer0() interrupt 1</p><p><b> {</b></p><p><b> if(T<15)</b></p><p><b> T=T+0.2;</b></p><p> else if(
59、T<20)</p><p><b> T=T+0.5;</b></p><p> else if(T<30)</p><p><b> T=T+1;</b></p><p> else if(T<40)</p><p><b> T=T+
60、2;</b></p><p> else if(T<50)</p><p><b> T=T+3;</b></p><p> else if(T<100)</p><p><b> T=T+6;</b></p><p> else if(T&
61、lt;150)</p><p><b> T=T+18;</b></p><p> else if(T<200)</p><p><b> T=T+25;</b></p><p><b> else</b></p><p><b>
62、; T=200;</b></p><p> ShowString(2,1,4,LCD_DSP2);</p><p> delay(400);</p><p> ShowString(2,1,4," ");</p><p><b> }</b></p><
63、p> void EX_INT1() interrupt 2</p><p><b> {</b></p><p><b> n=~n;</b></p><p><b> }</b></p><p> void Timer1() interrupt 3&l
64、t;/p><p><b> {</b></p><p><b> if(T>150)</b></p><p><b> T=T-25;</b></p><p> else if(T>100)</p><p><b> T=T-
65、18;</b></p><p> else if(T>50)</p><p><b> T=T-6;</b></p><p> else if(T>40)</p><p><b> T=T-3;</b></p><p> else if(T&
66、gt;30)</p><p><b> T=T-2;</b></p><p> else if(T>20)</p><p><b> T=T-1;</b></p><p> else if(T>15)</p><p><b> T=T-0.5;
67、</b></p><p> else if(T>11)</p><p><b> T=T-0.2;</b></p><p><b> else</b></p><p><b> T=11;</b></p><p> ShowS
68、tring(2,1,4,LCD_DSP1);</p><p> delay(400);</p><p> ShowString(2,1,4," ");</p><p><b> }</b></p><p><b> 八、設計體會</b></p><
69、;p> 通過此次課程設計,首先,我更加扎實的掌握了有關單片機的控制、LCD1602液晶顯示、C語言編程等方面的知識以及步進電機原理、控制、驅動方面的知識;其次,我進一步懂得了如何對一個課程設計進行整體規(guī)劃和實行。在設計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查,終于找出了原因所在,但也暴露出了我前期在這方面的知識欠缺。實踐出真知,通過Proteus的仿真,外加開發(fā)板調(diào)試,使得設計的過程更加順暢,也使我掌握
70、的知識不再是紙上談兵。</p><p><b> 參考文獻</b></p><p> [1]徐煜明.《C51單片機及應用系統(tǒng)設計》.電子工業(yè)出版社</p><p> [2]彭偉.《單片機C語言程序設計實訓100例——基于8051+Proteus仿真》.電子工業(yè)出版社</p><p> [3]郭天祥.《51單片機C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設計步進電機
- 步進電機課程設計
- 步進電機課程設計--- 步進電機控制系統(tǒng)
- 步進電機課程設計--步進電機控制系統(tǒng)
- 課程設計---步進電機控制
- 步進電機課程設計報告
- 步進電機課程設計---步進電機控制系統(tǒng)的設計
- 課程設計-步進電機控制步進電機轉速實時控制
- 步進電機課程設計報告---步進電機控制系統(tǒng)
- 步進電機課程設計報告--步進電機控制系統(tǒng)設計
- 步進電機控制a課程設計報告
- 步進電機專業(yè)課程設計--步進電機控制系統(tǒng)設計
- 步進電機控制課程設計--步進電機脈沖分配電路的設計
- 單片機課程設計--步進電機
- 步進電機轉速實時控制課程設計
- 步進電機的控制課程設計報告
- 步進電機課程設計報告----步進馬達控制電路
- 步進電機的設計與控制課程設計
- 微機原理課程設計---步進電機設計
- 單片機課程設計---步進電機
評論
0/150
提交評論