基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn)_第1頁
基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn)_第2頁
基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn)_第3頁
基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn)_第4頁
基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、本科生實(shí)訓(xùn)總結(jié)報(bào)告(論文)( 2006 級)報(bào)告(論文)題目 基于單片機(jī)的紅外遙控步進(jìn)電機(jī)電路實(shí)現(xiàn) 作 者 徐漢揚(yáng) 系、 專業(yè) 電氣機(jī)械工程系電子信息工程 班 級 電子061 學(xué) 號 0665121036 聯(lián) 系 方 式 杭州師范大學(xué)錢江學(xué)院教學(xué)部制電子系統(tǒng)綜合實(shí)訓(xùn)總結(jié)報(bào)告基于紅外遙控步進(jìn)電機(jī)的設(shè)計(jì)電子信息專業(yè)電子061班 徐漢揚(yáng) 0665121036摘要:介紹了一種基于AT89S52單片機(jī)的紅外遙控步進(jìn)電機(jī)的設(shè)計(jì),系統(tǒng)分為紅外遙控編解碼、LCD顯示和驅(qū)動(dòng)步進(jìn)電機(jī)三個(gè)模塊,設(shè)計(jì)的系統(tǒng)能通過遙控器來控制步進(jìn)電機(jī),并且步進(jìn)電機(jī)的狀態(tài)能通過LCD液晶模塊實(shí)時(shí)顯示出來,使人們直觀的看出步進(jìn)電機(jī)的運(yùn)行狀

2、態(tài)。本報(bào)告對該系統(tǒng)的工作原理、硬件電路和軟件進(jìn)行了詳細(xì)介紹。關(guān)鍵詞:紅外遙控 LCD顯示 步進(jìn)電機(jī)一、引言本系統(tǒng)是基于單片機(jī)控制的綜合系統(tǒng),單片機(jī)通過對紅外信號的解碼來實(shí)現(xiàn)步進(jìn)電機(jī)的變速及LCD實(shí)時(shí)顯示步進(jìn)電機(jī)的轉(zhuǎn)速。它綜合了電子技術(shù)和單片機(jī)軟硬件技術(shù),本設(shè)計(jì)采用AT89S52單片機(jī)為核心包含紅外接收電路、LCD顯示電路和步進(jìn)電機(jī)驅(qū)動(dòng)電路。通過紅外遙控器發(fā)射不同的碼值來控制步進(jìn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn)、加速減速以及啟動(dòng)停止并通過LCD顯示出步進(jìn)電機(jī)的狀態(tài)。二、系統(tǒng)功能分析根據(jù)系統(tǒng)要求設(shè)計(jì)各個(gè)模塊。本設(shè)計(jì)中控制芯片采用AT89S52單片機(jī),各個(gè)功能通過不同模塊來得以實(shí)現(xiàn),主要有:紅外接收模塊、步進(jìn)電機(jī)驅(qū)動(dòng)

3、和LCD顯示模塊。系統(tǒng)基本架構(gòu)原理如圖1所示圖1 基本架構(gòu)原理圖各個(gè)模塊具體實(shí)現(xiàn)方式如下:1. 紅外發(fā)射模塊:本設(shè)計(jì)采用的是通過遙控器發(fā)射不同的碼值,紅外接收電路將接收到得信號送給單片機(jī)的外部中斷0,單片機(jī)接收到信號后通過解碼程序?qū)邮盏降眯盘栠M(jìn)行處理,使得這些信號成為相應(yīng)的碼值。經(jīng)過處理后這些信號就可以去控制步進(jìn)電機(jī)的正轉(zhuǎn)反轉(zhuǎn)、加速減速以及啟動(dòng)停止并在LCD上顯示出來。遙控發(fā)射器采用士蘭半導(dǎo)體的SC6121編碼芯片進(jìn)行紅外遙控發(fā)射電路的搭建。SC6121是一塊用于紅外遙控系統(tǒng)中的專用發(fā)射集成電路,采用CMOS工藝制造。它可外接32個(gè)按鍵,其中有三組雙重按鍵。工作電壓在2。其編碼方式采用一幀碼

4、中含有一個(gè)引導(dǎo)碼,16位的用戶碼和8位的鍵數(shù)據(jù)碼。鍵數(shù)據(jù)碼的反碼也同時(shí)被傳送,數(shù)據(jù)反碼的傳送可以大大減小系統(tǒng)的誤碼率。引導(dǎo)碼由一個(gè)9ms的載波波形和4.5ms的關(guān)斷時(shí)間構(gòu)成,編碼采用脈沖位置調(diào)制方式(PPM)。利用脈沖之間的時(shí)間間隔來區(qū)分“0”和“1”。具體的遙控發(fā)射應(yīng)用電路圖如圖2所示圖2 遙控發(fā)射應(yīng)用電路2. 紅外接收模塊:本系統(tǒng)采用的接收模塊其核心是與SC6121相對應(yīng)的HS0038紅外接收頭。HS0038是一顆集接收電路、調(diào)制解調(diào)電路、低通濾波、放大電路和控制電路為一體的集成接收頭,一共有三個(gè)引腳輸出其中一個(gè)是電源一個(gè)是接地另一個(gè)則是輸出,這樣就大大方便了我們的使用。HS0038內(nèi)部結(jié)

5、構(gòu)如圖3所示圖3 HS0038內(nèi)部結(jié)構(gòu)圖由于HS0038內(nèi)部集成了強(qiáng)大的信號處理功能,所以在本系統(tǒng)中使用這個(gè)HS0038的接收頭的時(shí)候我們只需要在外部加上一個(gè)濾波電路就可以了,這個(gè)RC濾波電路是為了濾除電源端的干擾信號。具體應(yīng)用電路圖如圖4所示圖4 HS0038應(yīng)用電路3. 液晶顯示模塊在本系統(tǒng)中我們采用1602字符型液晶顯示模塊來顯示步進(jìn)電機(jī)的轉(zhuǎn)速、起停以及正反轉(zhuǎn)等步進(jìn)電機(jī)的狀態(tài)。字符型液晶顯示模塊是專門用于顯示字母、數(shù)字、符號等的點(diǎn)陣型液晶顯示模塊。分4位和8位數(shù)據(jù)傳輸方式。提供5*7點(diǎn)陣+光標(biāo)和5*10點(diǎn)陣+光標(biāo)的顯示模式??梢燥@示兩行每行8個(gè)字符。提供內(nèi)部自動(dòng)上電復(fù)位電路,+5V工作電

6、壓。一共有16個(gè)引腳,其中一對電源引腳、一對LED背光電源引腳、LCD驅(qū)動(dòng)電壓引腳、一個(gè)模式選擇引腳、一個(gè)讀寫操作引腳、一個(gè)使能引腳以及7個(gè)數(shù)據(jù)引腳。其中LCD驅(qū)動(dòng)電壓V0可通過滑動(dòng)變阻器進(jìn)行調(diào)節(jié),一般V0為零伏。具體應(yīng)用電路圖如圖5所示圖5 LCD顯示模塊應(yīng)用電路4. 步進(jìn)電機(jī)驅(qū)動(dòng)模塊本系統(tǒng)采用額定電壓為5VDC,相數(shù)為4相的步進(jìn)電機(jī),驅(qū)動(dòng)方式為4相8拍。一共有5跟線連接,其中紅色的為電源線。采用單極性直流電源供電。只要對步進(jìn)電機(jī)的各相繞組按合適的時(shí)序通電,就能使步進(jìn)電機(jī)步進(jìn)轉(zhuǎn)動(dòng)。由于單片機(jī)P口輸出的電流比較弱不能驅(qū)動(dòng)步進(jìn)電機(jī),所以要加一個(gè)ULN2003芯片來放大電流使之能驅(qū)動(dòng)步進(jìn)電機(jī)工作。

7、ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN 達(dá)林頓管組成。ULN2003 的每一對達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。步進(jìn)電機(jī)驅(qū)動(dòng)電路如圖6所示圖6 步進(jìn)電機(jī)驅(qū)動(dòng)電路三、硬件電路設(shè)計(jì)本系統(tǒng)采用的核心器件是AT89S52單片機(jī),有4個(gè)P口,其中P1 P2 P3內(nèi)部含有上拉電阻,P0口內(nèi)部不含上拉電阻。在本系統(tǒng)中用P0口來控制LCD液晶顯示模塊,p1口來控制步進(jìn)電機(jī)的驅(qū)動(dòng),外部中斷0(P3.2)來接3收

8、紅外控制信號。AT89S52單片機(jī)引腳圖如圖7所示圖7 AT89S52單片機(jī)復(fù)位電路的設(shè)計(jì)。當(dāng)AT89S52單片機(jī)的復(fù)位引腳RST(全稱RESET出現(xiàn)2個(gè)機(jī)器周期以上的高電平時(shí),單片機(jī)就執(zhí)行復(fù)位操作。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。89S52單片機(jī)提供了上電復(fù)位和按鍵復(fù)位兩種方式,本系統(tǒng)中采用按鍵復(fù)位電路。具體復(fù)位電路如圖8所示,其中C4是104陶瓷電容,C3是22uf/25V的電解電容,R1的阻值為10K歐。單片機(jī)時(shí)鐘電路的設(shè)計(jì)。89S52提供了外部時(shí)鐘電路和內(nèi)部時(shí)鐘電路兩種方式,本系統(tǒng)采用11.0592MHz晶振的外部時(shí)鐘電路方式,在晶振兩端接2個(gè)30pf的陶瓷電容。這兩

9、個(gè)電容成為晶振的負(fù)載電容,它會(huì)影響晶振的諧振頻率和輸出幅度。具體晶振電路如圖9所示 圖8 復(fù)位電路 圖9 晶振電路該系統(tǒng)的硬件電路原理圖見附錄2四、系統(tǒng)軟件設(shè)計(jì)本系統(tǒng)的軟件設(shè)計(jì)分LCD顯示子程序、紅外解碼判斷子程序、步進(jìn)電機(jī)控制程序和主程序組成。整個(gè)系統(tǒng)采用C語言進(jìn)行編寫。1. 主程序主程序包括系統(tǒng)的初始化、LCD子程序的調(diào)用以及定時(shí)器中斷函數(shù)和步進(jìn)電機(jī)控制函數(shù)組成。系統(tǒng)初始化包括對LCD顯示模塊數(shù)據(jù)位、命令位,紅外解碼標(biāo)志位以及步進(jìn)電機(jī)停止轉(zhuǎn)速為的定義與初始化,LCD顯示程序顯示靜態(tài)的“STEP MOTOR SPEED”和動(dòng)態(tài)的不同速度水平式步進(jìn)電機(jī)的轉(zhuǎn)速以及正反轉(zhuǎn)的標(biāo)志,定時(shí)器中斷函數(shù)主要

10、設(shè)定定時(shí)器中斷間隔和步進(jìn)電機(jī)的轉(zhuǎn)速,步進(jìn)電機(jī)控制函數(shù)由步進(jìn)電機(jī)索引函數(shù)和對索引值的加減函數(shù)組成。系統(tǒng)的主程序流程圖如圖10所示圖10 主函數(shù)流程圖2. LCD子程序LCD子程序主要實(shí)現(xiàn)的功能是顯示步進(jìn)電機(jī)的狀態(tài)。顯示動(dòng)態(tài)字符函數(shù)是用來顯示步進(jìn)電機(jī)的轉(zhuǎn)速計(jì)轉(zhuǎn)向狀態(tài),顯示靜態(tài)字符函數(shù)是用來顯示步進(jìn)電機(jī)轉(zhuǎn)速單位“rpm”和“STEP MOTOR SPEED”。系統(tǒng)LCD顯示子程序流程圖如圖11所示圖11顯示動(dòng)態(tài)字符函數(shù)是用來顯示步進(jìn)電機(jī)的轉(zhuǎn)速計(jì)轉(zhuǎn)向狀態(tài),顯示靜態(tài)字符函數(shù)是用來顯示步進(jìn)電機(jī)轉(zhuǎn)速單位“rpm”和“STEP MOTOR SPEED”。3. 紅外解碼判斷子程序紅外解碼判斷子程序包括對碼值的判

11、斷程序和外部中斷0程序,紅外接收電路將接收到的信號送到外部中斷0,然后紅外解碼程序?qū)κ盏降男盘栠M(jìn)行解碼,若解碼失敗則重新進(jìn)行解碼,若解碼成功則判斷器碼值,然后調(diào)用步進(jìn)電機(jī)控制和LCD顯示程序?qū)崿F(xiàn)步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)和顯示。從而實(shí)現(xiàn)紅外遙控對步進(jìn)電機(jī)的控制及顯示。系統(tǒng)紅外解碼判斷子程序流程圖如圖12所示圖12 紅外解碼判斷子程序流程圖五、總結(jié)通過該系統(tǒng)的制作我擴(kuò)充了自己的理論知識也增加了我的實(shí)際動(dòng)手能力,在制作與調(diào)試電路中也讓我體會(huì)到了快樂與艱辛,制作的過程遠(yuǎn)比我們原先想象的那么簡單,整個(gè)系統(tǒng)是在不斷的調(diào)試中得到完善的,剛開始制作的整個(gè)系統(tǒng)不能工作,于是我們就開始用萬用表查電源查線路,但這些都沒問題,

12、我們就上網(wǎng)查資料學(xué)習(xí)一些調(diào)試系統(tǒng)的方法。最后我們用示波器查晶振電路是發(fā)現(xiàn)其沒有工作,然后又查晶振電路的連接焊點(diǎn)是否完好,最后發(fā)現(xiàn)晶振的負(fù)載電容用了104,電容太大導(dǎo)致晶振的諧振都被綠除掉了,換了2個(gè)30pf的電容后電路就能正常工作了。還有在做步進(jìn)電機(jī)驅(qū)動(dòng)的時(shí)候發(fā)現(xiàn)上電復(fù)位后只能用收感覺到電機(jī)在抖而它的軸不能轉(zhuǎn)動(dòng),于是我們考慮可能是驅(qū)動(dòng)能里不足的原因,用示波器測輸入輸出的電壓,最后發(fā)現(xiàn)步進(jìn)電機(jī)的上拉能力不足,在P0口加上拉電阻之后,電機(jī)能正常工作。在調(diào)試系統(tǒng)的過程中我明白了學(xué)電子光光看書時(shí)不行的,最好的方法就是去實(shí)踐自己動(dòng)手去焊接連接電路在這個(gè)過程中去發(fā)現(xiàn)問題去解決問題。該紅外遙控步進(jìn)電機(jī)的制作

13、讓我學(xué)會(huì)了怎樣去設(shè)計(jì)一個(gè)系統(tǒng),對一個(gè)系統(tǒng)的基本架構(gòu)有了一定的認(rèn)識,在通過對紅外編解碼電路的設(shè)計(jì)也讓我對紅外遙控的基本知識有了新的認(rèn)識,知道了紅外發(fā)碼的原理掌握了紅外解碼程序的編寫,對LCD現(xiàn)實(shí)模塊的使用也讓我對LCD有了新的認(rèn)識,交接了要調(diào)節(jié)LCD的驅(qū)動(dòng)電壓使其達(dá)到0V左右才能讓字符顯示出來,通過對步進(jìn)電機(jī)驅(qū)動(dòng)電路的設(shè)計(jì)也讓我認(rèn)識到要在步進(jìn)電機(jī)的P口加上拉電阻才能驅(qū)動(dòng)步進(jìn)電機(jī)??傊@次實(shí)訓(xùn)讓我收獲了很多也為我以后的工作奠定了一定的基礎(chǔ)。附錄1:源代碼void ShowChar(unsigned char pos,unsigned char c /*顯示動(dòng)態(tài)字符函數(shù)*/unsigned cha

14、r p;if (pos>=0x10p=pos+0xb0; /是第二行則命令代碼高4位為0xcelse p=pos+0x80; /是第二行則命令代碼高4位為0x8WriteCommand (p;/write commandWriteData (c; /write data/*/void ShowString (unsigned char line,char *ptr /*顯示靜態(tài)字符函數(shù)*/unsigned char l,i;l=line<<4;for (i=0;i<16;i+ShowChar (l+,*(ptr+i; /循環(huán)顯示16個(gè)字符/*/void InitLcd(

15、 /*LCD初始化*/DelayMs(15;WriteCommand(0x38; /display modeWriteCommand(0x38; /display modeWriteCommand(0x38; /display modeWriteCommand(0x06; /顯示光標(biāo)移動(dòng)位置WriteCommand(0x0c; /顯示開及光標(biāo)設(shè)置WriteCommand(0x01; /顯示清屏void IR_decode( /*紅外解碼程序*/uchar i,j;while(IR_RE=0;delay2400(;if(IR_RE=1 /延時(shí)2.4ms后如果是高電平則是新碼for(i=0;i&l

16、t;4;i+for(j=0;j<8;j+while(IR_RE=0; /等待地址碼第1位高電平到來delay882(; /延時(shí)882ms判斷此時(shí)引腳電平/CY=IR_RE;if(IR_RE=0 datei>>=1;datei=datei&0x7f; else if(IR_RE=1delay1000(;datei>>=1;datei=datei|0x80; /1位數(shù)據(jù)接收結(jié)束 /32位二進(jìn)制碼接收結(jié)束 if (date2=0x16/停止TR0 = 0;else if(date2=0x33/開始TR0 = 1;else if(date2=0x01/加速if (

17、speedlevel>1speedlevel-;elsespeedlevel=1;else if(date2=0x05/減速if(speedlevel<5speedlevel+;elsespeedlevel=5;else if(date2=0x11/反向turn=turn;void int0( interrupt 0 using 1 /*外部中斷0函數(shù)*/ uint i;for(i=0;i<4;i+ delay1000(;if(IR_RE=1k=k; /剛開始為4.5ms的引導(dǎo)碼,如果4ms內(nèi)出現(xiàn)高電平則退出解碼程序if(k=0 EX0=0; /檢測到有效信號關(guān)中斷,防止干擾

18、IR_decode(; /如果接收到的是有效信號,則調(diào)用解碼程序/解碼成功,調(diào)用顯示程序,顯示該鍵值EX0=1; /開外部中斷,允許新的遙控按鍵void main(void InitLcd(;/DelayMs(15;sprintf(Test1,"STEP MOTOR SPEED" /*LCD第一行顯示的字符*/ShowString(0,Test1;ShowChar(0x19,'r'ShowChar(0x1a,'p'ShowChar(0x1b,'m'count = 0;step_index = 0;spcount = 0;sto

19、p_flag = 0;P1_0 = 0;P1_1 = 0;P1_2 = 0;P1_3 = 0;SP=0x60; EA = 1; /允許CPU中斷 TMOD = 0x11; /設(shè)定時(shí)器0和1為16位模式1 ET0 = 1; /定時(shí)器0中斷允許 EX0=1;TH0 = 0xFE;TL0 = 0x0C; /設(shè)定時(shí)每隔0.5ms中斷一次TR0 = 1; /開始計(jì)數(shù)turn=0;speedlevel=1;while(1if(turn=0ShowChar(0x14,'+'elseShowChar(0x14,'-'if(TR0 =0ShowChar(0x15,'0&#

20、39;ShowChar(0x16,'0'ShowChar(0x17,'0'ShowChar(0x18,'0' elseif(speedlevel=1ShowChar(0x15,'3'ShowChar(0x16,'0'ShowChar(0x17,'0'ShowChar(0x18,'0'else if(speedlevel=2ShowChar(0x15,'1'ShowChar(0x16,'5'ShowChar(0x17,'0'ShowCha

21、r(0x18,'0'else if(speedlevel=3ShowChar(0x15,'1'ShowChar(0x16,'0'ShowChar(0x17,'0'ShowChar(0x18,'0'else if(speedlevel=4ShowChar(0x15,'0'ShowChar(0x16,'7'ShowChar(0x17,'5'ShowChar(0x18,'0'else if(speedlevel=5ShowChar(0x15,'0'ShowChar(0x16,'6'ShowChar(0x17,'0'ShowChar(0x18,'0'/定時(shí)器0中斷處理 void timeint(void interrupt 1 using 0 TH0=0xFE;TL0=0x0C; /設(shè)定時(shí)每隔0.5ms中斷一次count+;spcount-;if(spcount<=0spcoun

溫馨提示

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

評論

0/150

提交評論