基于單片機的步進電機(直流電機)控制器設計_第1頁
基于單片機的步進電機(直流電機)控制器設計_第2頁
基于單片機的步進電機(直流電機)控制器設計_第3頁
基于單片機的步進電機(直流電機)控制器設計_第4頁
基于單片機的步進電機(直流電機)控制器設計_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機原理及應用課程設計基于單片機的步進電機(直流電機)控制器設計 學 院: 物聯(lián)網工程學院 班 級: 自動化 姓 名: 學 號: 同組成員: 日 期: 2016.6.20-2016.6.24 一、設計目的通過具體小型測試系統(tǒng)設計,實踐單片機系統(tǒng)設計及調試的全過程,以加深對單片機內部結構、功能和指令系統(tǒng)的理解,并進一步學習單片機開發(fā)系統(tǒng)的應用及一些外圍芯片的接口和編程方法,初步掌握單片機系統(tǒng)的硬、軟件設計技術及調試技巧。二、設計要求1)電機轉速可以平穩(wěn)控制2)通過鍵盤和顯示器可以設置電機的轉速3)顯示電機的速度趨勢三、儀器設備1)IBMPC機 一臺2)DS-51PRO.NET單片機仿真器、編程

2、器、試驗儀三合一綜合開發(fā)平臺 一臺四、硬件線路圖及主要芯片說明1、AT89C5單片機芯片說明AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。VCC:AT89C51 電源正極輸入,接

3、+5V 電壓。GND:電源接地端。XTAL1:接外部晶振的一個引腳。在單片機內部,它是一反相放大器輸入端,這個放大器構成了片內振蕩器。它采用外部振蕩器時,些引腳應接地。XTAL2:接外部晶振的一個引腳。在片內接至振蕩器的反相放大器輸出端和內部時鐘發(fā)生器輸入端。當采用外部振蕩器時,則此引腳接外部振蕩信號的輸入。RST:AT89C51 的復位信號輸入引腳,高電位工作,當要對芯片又時,只要將此引腳電位提升到高電位,并持續(xù)兩個機器周期以上的時間,AT89C51 便能完成系統(tǒng)復位的各項工作,使得內部特殊功能寄存器的內容均被設成已知狀態(tài)。ALE/PROGALE:是英文"ADDRESS LATCH

4、 ENABLE"的縮寫,表示允許地址鎖存允許信號。當訪問外部存儲器時,ALE 信號負跳變來觸發(fā)外部的8 位鎖存器 (如74LS373),將端口P0 的地址總線(A0-A7)鎖存進入鎖存器中。在非訪問外部存儲器期間,ALE 引腳的輸出頻率是系統(tǒng)工作頻率的 1/16,因此可以用來驅動其他外圍芯片的時鐘輸入。當問外部存儲器期間,將以1/12 振蕩頻率輸出。EA/VPP:該引腳為低電平時,則讀取外部的程序代碼 (存于外部EPROM 中)來執(zhí)行程序。因此在8031 中,EA 引腳必須接低電位,因為其內部無程序存儲器空間。如果是使用AT89C51或其它內部有程序空間的單片機時,此引腳接成高電平使

5、程序運行時訪問內部程序存器,當程序指針PC 值超過片內程序存儲器地址(如8051/8751/89C51 的PC 超過0FFFH)時,將自動轉向外部程序存儲器繼續(xù)運行。此外,在將程序代碼燒錄至8751 內部EPROM、89C51 內部FALSH 時,可以利用此引腳來輸入提供編程電壓(8751 為2lV、AT89C51 為12V、8051 是由生產廠方一次性加工好)。PSEN:此為"Program Store Enable"的縮寫。訪問外部程序存儲器選通信號,低電平有效。在訪問外部程序存儲器讀取指令碼時,每個機器周期產生二次PSEN 信號。在執(zhí)行片內程序存儲器指令時,不產生PS

6、EN 信號,在訪問外部數(shù)據時,亦不產生PSEN 信號。P0:P0 口(P0.0P0.7)是一個8 位漏極開路雙向輸入輸出端口,當訪問外部數(shù)據時,它是地址總線(低8 位)和數(shù)據總線復用。外部不擴展而單片應用時,則作一般雙向IO 口用。P0 口每一個引腳可以推動8 個LSTTL 負載。P2:P2 口(P2.0P2.7)口是具有內部提升電路的雙向I/0 端口(準雙向并行I/O 口),當訪問外部程序存儲器時,它是高8 位地址。外部不擴展而單片應用時,則作一般雙向IO 口用。每一個引腳可以推動4 個LSTL 負載。P1:P1 口(P1.0P1.7)口是具有內部提升電路的雙向I/0 端口(準雙向并行I/O

7、 口),其輸出可以推動4 個LSTTL 負載。僅供用戶作為輸入輸出用的端口。P3:P3 口(P3.0P3.7)口是具有內部提升電路的雙向I/0 端口(準雙向并行I/O 口),它還提供特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部隨機存儲器內容的讀取或寫入控制等功能。其特殊功能引腳分配如下:P3.0 RXD 串行通信輸入P3.1 TXD 串行通信輸出P3.2 INT0 外部中斷0 輸入,低電平有效P3.3 INT1 外部中斷1 輸入,低電平有效P3.4 T0 計數(shù)器0 外部事件計數(shù)輸入端P3.5 T1 計數(shù)器1 外部事件計數(shù)輸入端P3.6 WR 外部隨機存儲器的寫選通,低電平有效P3.

8、7 RD 外部隨機存儲器的讀選通,低電平有效2、實驗接線原理圖五、系統(tǒng)工作原理(包括采樣原理、數(shù)據存放單元安排、按鍵和顯示處理原理、中斷處理等)1)采樣原理通過采集點不同電壓而執(zhí)行不同的功能。當不同的按鍵被按下時,AD轉換的電壓不同,通過AD轉換值便可以判斷出是哪個按鍵被按下。2)按鍵和顯示處理 鍵盤處理程序首先執(zhí)行有無鍵按下的程序段,當確認有按鍵按下后,下一步就要識別哪一個按鍵被按下。對鍵的識別常用逐行掃描查詢法或行列反轉法。在獲取鍵號后,繼續(xù)掃描端口,直到狀態(tài)改變,去抖動后,再次確認狀態(tài)改變,即可判斷按鍵釋放。六、程序框圖七、程序清單#include <reg52.h>#def

9、ine KeyPort P3#define DataPort P0 /定義數(shù)據端口 程序中遇到DataPort 則用P0 替換sbit LATCH1=P26;/定義鎖存使能端口 段鎖存sbit LATCH2=P27;/ 位鎖存unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 顯示段碼值09unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分別對應相應的數(shù)碼管點亮,即位碼unsign

10、ed char TempData8; /存儲顯示值的全局變量sbit A1=P10; /定義步進電機連接端口sbit B1=P11;sbit C1=P12;sbit D1=P13;#define Coil_AB1 A1=1;B1=1;C1=0;D1=0;/AB相通電,其他相斷電#define Coil_BC1 A1=0;B1=1;C1=1;D1=0;/BC相通電,其他相斷電#define Coil_CD1 A1=0;B1=0;C1=1;D1=1;/CD相通電,其他相斷電#define Coil_DA1 A1=1;B1=0;C1=0;D1=1;/D相通電,其他相斷電#define Coil_A1

11、 A1=1;B1=0;C1=0;D1=0;/A相通電,其他相斷電#define Coil_B1 A1=0;B1=1;C1=0;D1=0;/B相通電,其他相斷電#define Coil_C1 A1=0;B1=0;C1=1;D1=0;/C相通電,其他相斷電#define Coil_D1 A1=0;B1=0;C1=0;D1=1;/D相通電,其他相斷電#define Coil_OFF A1=0;B1=0;C1=0;D1=0;/全部斷電unsigned char Speed=1;bit StopFlag;void Display(unsigned char FirstBit,unsigned char

12、Num);void Init_Timer0(void);unsigned char KeyScan(void);/*- uS延時函數(shù),含有輸入參數(shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時請使用匯編,大致延時 長度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延時函數(shù),含有輸入參數(shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振

13、12M,精確延時請使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時1mS DelayUs2x(245); DelayUs2x(245); /*- 主函數(shù)-*/main() unsigned int i=512;/旋轉一周時間 unsigned char num; Init_Timer0(); Coil_OFF while(1) /正向 num=KeyScan(); /循環(huán)調用按鍵掃描 if(num=1)/第一個按鍵,速度等級增加 if(Speed<18) Speed+; else if(num=2)/第二個按鍵,速度等級減小 if(

14、Speed>1) Speed-; else if(num=3) Coil_OFF StopFlag=1; else if(num=4) StopFlag=0; TempData0=dofly_DuanMaSpeed/10;/分解顯示信息,如要顯示68,則68/10=6 68%10=8 TempData1=dofly_DuanMaSpeed%10; /*- 顯示函數(shù),用于動態(tài)掃描數(shù)碼管 輸入參數(shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數(shù)碼管開始顯示 如輸入0表示從第一個顯示。 Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2-*/void Display(

15、unsigned char FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0; /清空數(shù)據,防止有交替重影 LATCH1=1; /段鎖存 LATCH1=0; DataPort=dofly_WeiMai+FirstBit; /取位碼 LATCH2=1; /位鎖存 LATCH2=0; DataPort=TempDatai; /取顯示數(shù)據,段碼 LATCH1=1; /段鎖存 LATCH1=0; i+; if(i=Num) i=0;/*- 定時器初始化子程序-*/void Init_Timer0(void) TMOD |=

16、 0x01; /使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 /TH0=0x00; /給定初值 /TL0=0x00; EA=1; /總中斷打開 ET0=1; /定時器中斷打開 TR0=1; /定時器開關打開 PT0=1; /優(yōu)先級打開/*- 定時器中斷子程序-*/void Timer0_isr(void) interrupt 1 static unsigned char times,i; TH0=(65536-1000)/256; /重新賦值 1ms TL0=(65536-1000)%256; Display(0,8); if(!StopFlag)

17、 if(times=(20-Speed)/最大值18,所以最小間隔值20-18=2 times=0; switch(i) case 0:Coil_A1;i+;break;case 1:Coil_B1;i+;break;case 2:Coil_C1;i+;break;case 3:Coil_D1;i+;break;case 4:i=0;break; default:break; times+; /*-按鍵掃描函數(shù),返回掃描鍵值-*/unsigned char KeyScan(void) unsigned char keyvalue; if(KeyPort!=0xff) DelayMs(10); if(KeyPort!=0xff) keyvalue=KeyPort; while(KeyPort!=0xff);switch(keyvalue) case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; case 0xf7:return 4;break; case 0xef:return 5;break; case 0xdf:return 6;break; case 0xbf:r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論