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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

9、ine KeyPort P3#define DataPort P0 /定義數(shù)據(jù)端口 程序中遇到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;/分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsign

10、ed char TempData8; /存儲(chǔ)顯示值的全局變量sbit A1=P10; /定義步進(jìn)電機(jī)連接端口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ù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí) 長(zhǎng)度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無(wú)返回值 unsigned char 是定義無(wú)符號(hào)字符變量,其值的范圍是 0255 這里使用晶振

13、12M,精確延時(shí)請(qǐng)使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時(shí)1mS DelayUs2x(245); DelayUs2x(245); /*- 主函數(shù)-*/main() unsigned int i=512;/旋轉(zhuǎn)一周時(shí)間 unsigned char num; Init_Timer0(); Coil_OFF while(1) /正向 num=KeyScan(); /循環(huán)調(diào)用按鍵掃描 if(num=1)/第一個(gè)按鍵,速度等級(jí)增加 if(Speed<18) Speed+; else if(num=2)/第二個(gè)按鍵,速度等級(jí)減小 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ù),用于動(dòng)態(tài)掃描數(shù)碼管 輸入?yún)?shù) FirstBit 表示需要顯示的第一位,如賦值2表示從第三個(gè)數(shù)碼管開始顯示 如輸入0表示從第一個(gè)顯示。 Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2-*/void Display(

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

16、 0x01; /使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 /TH0=0x00; /給定初值 /TL0=0x00; EA=1; /總中斷打開 ET0=1; /定時(shí)器中斷打開 TR0=1; /定時(shí)器開關(guān)打開 PT0=1; /優(yōu)先級(jí)打開/*- 定時(shí)器中斷子程序-*/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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論