單片機控制直流電機并測速電壓ADDA轉換以及pwm按鍵調速正轉反轉_第1頁
單片機控制直流電機并測速電壓ADDA轉換以及pwm按鍵調速正轉反轉_第2頁
單片機控制直流電機并測速電壓ADDA轉換以及pwm按鍵調速正轉反轉_第3頁
單片機控制直流電機并測速電壓ADDA轉換以及pwm按鍵調速正轉反轉_第4頁
單片機控制直流電機并測速電壓ADDA轉換以及pwm按鍵調速正轉反轉_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應用 課程設計報告書 題 目:用單片機控制直流電動機并測量轉速姓 名:徐銀浩學 號:1110702225專 業(yè):電子信息工程指導老師:沈兆軍設計時間:2014年 11月信息工程學院目 錄1.引 言11.1 設計意義11.2 系統(tǒng)功能要求12.方案設計13. 硬件設計13.1 AT89C51最小系統(tǒng)33.2 按鍵電路43.3 A/D轉換模塊43.4. D/A轉換模塊63.5 電機轉速測量電路73.6 顯示電路 83.7 總電路圖 104. 軟件設計114.1 系統(tǒng)主程序設計124.2 按鍵掃描程序設計124.3 顯示子程序124.4 定時中斷處理程序124.5 A/D轉換程序135.

2、 系統(tǒng)調試146.設計總結167.參考文獻178.附 錄A;源程序189.附 錄B;電路原理總圖、作品實物圖片23用單片機控制直流電動機并測量轉速1 引 言1.1. 設計意義電動機作為最主要的動力源,在生產和生活中占有重要地位。電動機的調速控制過去多用模擬法,隨著計算機的產生和發(fā)展以及新型電力電子功率器件的不斷涌現,電動機的控制也發(fā)生了深刻的變化,本系統(tǒng)利用直流電機的速度與施加電壓成正比的原理,通過滑動變阻器向ADC0809輸入控制電壓信號,經AD后,輸入到AT89C51中,AT89C51將此信號轉發(fā)給DAC0832,通過功放電路放大后,驅動直流電機。1.2. 系統(tǒng)功能要求單片機擴展有A/D轉

3、換芯片ADC0809和D/A轉換芯片DAC0832。通過改變A/D輸入端可變電阻來改變A/D的輸入電壓,D/A輸入檢測量大小,進而改變直流電動機的轉速。手動擴展。在鍵盤上設置兩個按鍵直流電動機加速鍵和直流電動機減速減。在手動狀態(tài)下,每按一次鍵,電動機的轉速按照約定的速率改變。 用顯示器LED或LCD顯示數碼移動的速度,及時形象地跟蹤直流電動機轉速的變化情況。2 方案設計為了使用單片機對電動機進行控制,對單片機的基本要求應有足夠快點速度;有捕捉功能??傮w設計方案如圖所示數碼顯示數碼驅動DAC0832按鍵控制單片機ADC0808信號放大電壓信號驅動電機 光電管脈沖計數圖2.1總體設計方案(1)鍵盤

4、向單片機輸入相應控制指令,由單片機通過P3.0口輸出信號,該編碼通過DAC0832譯成相應的模擬電壓,經過信號放大實現電動機轉向與轉速的控制。(2)可變電阻接ADC0808轉變成相應電壓的數字信號,單片機通過P1口讀取,再由P2口輸出與轉速相應的8位BCD編碼與DAC0832相接。電動機的運轉狀態(tài)則通過四位數碼管顯示出來。 (3)電機的測速顯示,采用光電傳感器測量電機的轉速,在設計中,在電機轉軸末梢上安裝紙卡,在紙卡上留出兩個孔。電機轉軸每轉一圈,發(fā)射二極管發(fā)出的光便通過紙卡的孔到達接受二極管,就可在接受二極管上產生相應的脈沖信號。計算下1s內輸出的脈沖信號的個數,把計數的結果取一半,就可得到

5、電動機的轉動速度。(4)通過Max7219驅動器驅動4位共陰極LED燈,這樣節(jié)省了許多I/O口。3硬件設計3.1AT89C51最小系統(tǒng)AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合

6、在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖3.1 單片機最小系統(tǒng)的設計AT89C51 提供以下標準功能:4k 字節(jié)Flash 閃速存儲器,128字節(jié)內部RAM,32 個I/O 口線,兩個16位定時/計數器,一個5向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但

7、振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。3.2 按鍵電路單片機的P3.6和P3。7口分別接一個按鍵用于控制電機。當按下“叫”鍵時,電機轉速提高,進入加速狀態(tài);當按下“減”鍵時,電機轉速減慢,進入減速狀態(tài)。通過“加”“減”兩個按鍵可以達到鍵盤控制電機的作用。3.3 A/D轉換模塊(1)ADC0808 ADC0808是美國國家半導體公司生產的CMOS工藝8通道,8位逐次逼近式A/D模數轉換器。其內部有一個8通道多路開關,它可以根據地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進行A/D轉換。是目前國內應用最廣泛的8位通用A/D芯片。 主要特性 1)8路輸入通道,8位A/D轉

8、換器,即分辨率為8位。 2)具有轉換起??刂贫恕?3)轉換時間為100s(時鐘為640kHz時),130s(時鐘為500kHz時) 4)單個+5V電源供電。 5)模擬輸入電壓范圍0+5V,不需零點和滿刻度校準。 6)工作溫度范圍為-40+85攝氏度。 7)低功耗,約15mW。 ADC0809的工作過程首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復位。下降沿啟動 A/D轉換,之后EOC輸出信號變低,指示轉換正在進行。直到A/D轉換完成,EOC變?yōu)楦唠娖?,指示A/D轉換結束,結果數據已存入鎖存器,這個信號可用作

9、中斷申請。當OE輸入高電平 時,輸出三態(tài)門打開,轉換結果的數字量輸出到數據總線上。 轉換數據的傳送 A/D轉換后得到的數據應及時傳送給單片機進行處理。數據傳送的關鍵問題是如何確認A/D轉換的完成,因為只有確認完成后,才能進行傳送。為此可采用下述三種方式。 (1)定時傳送方式 對于一種A/D轉換器來說,轉換時間作為一項技術指標是已知的和固定的。例如ADC0809轉換時間為128s,相當于6MHz的MCS-51單片機共64個機器周期。可據此設計一個延時子程序,A/D轉換啟動后即調用此子程序,延遲時間一到,轉換肯定已經完成了,接著就可進行數據傳送。 (2)查詢方式 A/D轉換芯片由表明轉換完成的狀態(tài)

10、信號,例如ADC0808的EOC端。因此可以用查詢方式,測試EOC的狀態(tài),即可確認轉換是否完成,并接著進行數據傳送。 (3)中斷方式 把表明轉換完成的狀態(tài)信號(EOC)作為中斷請求信號,以中斷方式進行數據傳送。 不管使用上述哪種方式,只要一旦確定轉換完成,即可通過指令進行數據傳送。首先送出口地址并以信號有效時,OE信號即有效,把轉換數據送上數據總線,供單片機接受。圖3.3 AD轉換電路的設計(2)工作原理 如圖3.3所示,外部電源通過滑動變阻器向ADC0808輸入控制電壓信號,經A/D處理后,輸入到AT89C51中,交由AT89C51處理,進行下一步動作。3.4 D/A轉換模塊(1)DAC08

11、32 DAC0832是8分辨率的D/A轉換集成芯片。與微處理器完全兼容。這個DA芯片以其價格低廉、接口簡單、轉換控制容易等優(yōu)點,在單片機應用系統(tǒng)中得到廣泛的應用。D/A轉換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉換電路及轉換控制電路構成。主要特性參數 1.分辨率為8位; 2.電流穩(wěn)定時間1us; 3.可單緩沖、雙緩沖或直接數字輸入; 4.只需在滿量程下調整其線性度; 5.單一電源供電(+5V+15V); 6.低功耗,20mW。DAC0832的工作方式DAC0832進行D/A轉換,可以采用兩種方法對數據進行鎖存。 第一種方法是使輸入寄存器工作在鎖存狀態(tài),而DAC寄存器工作在直通狀態(tài)。具

12、體地說,就是使 和 都為低電平,DAC寄存器的鎖存選通端得不到有效電平而直通;此外,使輸入寄存器的控制信號ILE處于高電平、 處于低電平,這樣,當 端來一個負脈沖時,就可以完成1次轉換。 第二種方法是使輸入寄存器工作在直通狀態(tài),而DAC寄存器工作在鎖存狀態(tài)。就是使和為低電平,LE為高電平,這樣,輸入寄存器的鎖存選通信號處于無效狀態(tài)而直通;當和端輸入1個負脈沖時,使得DAC寄存器工作在鎖存狀態(tài),提供鎖存數據進行轉換。 圖3.4 DA轉換電路的設計(2) 工作原理如上圖3.4所示,電壓信號輸入后經過AD轉換輸入到AT89C51,由單片機通過P1口輸出與轉速相應的8位BCD編碼,該編碼通過DAC08

13、32譯成相應的模擬電壓,經過信號放大實現電動機轉向與轉速的控制。3.5電機轉速測量電路圖3.5光電傳感器測速設計 采用光電傳感器測量電機的轉速,在設計中,在電機轉軸末梢上安裝紙卡,在紙卡上留出兩個孔。電機轉軸每轉一圈,發(fā)射二極管發(fā)出的光便通過紙卡的孔到達接受二極管,就可在接受二極管上產生相應的脈沖信號。計算下1s內輸出的脈沖信號的個數,把計數的結果取一半,就可得到電動機的轉動速度。3.6 顯示電路(1) MAX7219MAX7219/MAX7221是一種集成化的串行輸入/輸出共陰極顯示驅動器,它連接微處理器與8位數字的7段數字LED顯示,也可以連接條線圖顯示器或者64個獨立的LED。其上包括一

14、個片上的B型BCD編碼器、多路掃描回路,段字驅動器,而且還有一個8*8的靜態(tài)RAM用來存儲每一個數據。 只有一個外部寄存器用來設置各個LED的段電流。 MAX7221與SPI、 QSPI以及 MICROWIRE相兼容,同時它有限制回轉電流的段驅動來減少EMI(電磁干擾)。 一個方便的四線串行接口可以聯(lián)接所有通用的微處理器。 每個數據可以尋址在更新時不需要改寫所有的顯示。MAX7219/MAX7221同樣允許用戶對每一個數據選擇編碼或者不編碼。 整個設備包含一個150A的低功耗關閉模式,模擬和數字亮度控制,一個掃描限制寄存器允許用戶顯示1-8位數據,還有一個讓所有LED發(fā)光的檢測模式。功能特點:

15、1、10MHz連續(xù)串行口 2、獨立的LED段控制 3、數字的譯碼與非譯碼選擇 4、150A的低功耗關閉模式 5、亮度的數字和模擬控制 6、高電壓中斷顯示 7、共陰極LED顯示驅動 8、限制回轉電流的段驅動來減少EMI(MAX7221) 9、SPI, QSPI, MICROWIRE串行接口(MAX7221) (2) 工作原理如圖3.6所示,可變電阻接ADC0808轉變成相應電壓的數字信號,單片機通過P0口讀取,再由P1口輸出與轉速相應的8位BCD編碼到MAX7219。經由MAX7219處理后通過四位數碼管顯示出來。采用光電傳感器測量電機的轉速,在設計中,在電機轉軸末梢上安裝紙卡,在紙卡上留出兩個

16、孔。電機轉軸每轉一圈,發(fā)射二極管發(fā)出的光便通過紙卡的孔到達接受二極管,就可在接受二極管上產生相應的脈沖信號。計算下1s內輸出的脈沖信號的個數,把計數的結果取一半,就可得到電動機的轉動速度。 圖3.6 顯示電路的設計3.7 總電路圖 由各子模塊設計給得出總硬件電路設計如下圖3.7所示 圖3.7硬件總電路圖4 軟件設計4.1 系統(tǒng)主程序設計本系統(tǒng)編程部分工作采用KELI-C51語言完成,采用模塊化的設計方法,與各子程序做為實現各部分功能和過程的入口,完成鍵盤輸入、按鍵識別、ADC0809讀取和DAC0832輸出、脈沖計數以及數碼管顯示等部分的設計。開始 系統(tǒng)初始化 按鍵是否按下 N Y讀取鍵值 減

17、速加速電機減速電機加速 電機轉動產生脈沖脈沖計數 調用MAX7219驅動顯示速度返回圖4.1 主程序流程圖4.2 按鍵掃描程序設計 按鍵掃描程序采用中斷方式,按下鍵,完成延時去抖動、鍵碼識別、按鍵功能執(zhí)行。要實現按住加/減速鍵不放時恒加或恒減速直到放開停止,就需在判斷是否松開該按鍵時,每進行一次增加/減少一定的占空比。4.3顯示子程序Max7219驅動顯示子程序用于處理DAC0832處理出來的8位BCD,利用數組方式定義顯示緩存區(qū),緩存區(qū)有8位,分別存放各個數碼管要顯示的值。流程圖如下圖4.3所示開始 初始化MAX7219讀取計數數據調用顯示子程序數碼管顯示數據顯示完成 圖4.3 max721

18、9驅動顯示電路4.4 定時中斷處理程序定時中斷處理程序:采用定時方式1,因為單片機使用12M晶振,可產生最高約為65.5ms的延時。對定時器置初值B1E0H可定時20ms,即系統(tǒng)時鐘精度可達0.02s。當20ms定時時間到,定時器溢出則響應該定時中斷處理程序,完成對定時器的再次賦值,并對全局變量time加1,這樣,通過變量time可計算出系統(tǒng)的運行時間。4.5 A/D轉換程序首先判斷A/D轉換是否允許進行,當WR又低變高時AD開始轉換,再讀取轉換數據結果,把數據存到ad_data中,完成A/D轉換。流程圖如下圖4.4所示開始acds=0 N、 Y允許A/D轉換讀取轉換數據結果數據結果把數據存到

19、ad_data中停止A/D轉換圖4.5 A/D轉換程序流程圖5系統(tǒng)調試圖5.1 Keil c51編譯調試 因為代碼設計到的知識點比較多,并且很多知識我們都忘了,所以在編寫的時候,有很多不會的,但是最終自己通過查閱圖書館資料解決了那些問題。圖5.2 仿真結果圖5 設計總結上個學期的單片機課已經早早的上完了,但是理論純屬理論,沒有與實踐的結合總讓我們學的不踏實,感覺沒有達到學以致用的效果。這學期我們大四了,老師給我們安排了這次單片機課程設計,給了我們學以致用的做好的實踐。 關于這次課程設計,我花費了比較多的心思,既是對課程理論內容的一次復習和鞏固,還讓我們豐富了更多與該專業(yè)相關的其他知識,比如軟件

20、應用等,在摸索中學習,在摸索中成長,在學習的過程中帶著問題去學我發(fā)現效率很高,這是我做這次課程設計的又一收獲,在真正設計之前我們做了相當豐富的準備,首先鞏固一下課程理論,再一遍熟悉課程知識的構架,然后結合加以理論分析、總結,有了一個清晰的思路和一個完整的的軟件流程圖之后才著手設計。在設計程序時,我們不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經之路;養(yǎng)成注釋程序的好習慣是非常必要的,一個程序的完美與否不僅僅是實現功能,而應該讓人一看就能明白你的思路,這樣也能為資料的保存和交流提供了方便;我覺得在設計課程過程中遇到問題是很正常,但我們應該將每次遇到的問題記錄下來,以免下次再碰

21、到同樣的問題的課程設計又出錯了。 除了對此次設計的準備工作之外,我們還學到了很多平時難得的東西,首先是團隊協(xié)作,在這次設計當中,難免和同學產生觀點和意見的分歧,以及分工明細、時間安排等不合理,通過這次設計,我們體會到了團結合作的重要性及力量之強大,還有讓我們處理事情更加有條理,思路更加清晰明了了,發(fā)現、提出、分析、解決問題和實踐能力的提高都將受益于我在以后的學習、工作和生活中。 此次的設計,其實也是我們所學知識的一次綜合運用,讓我深深的認識到了學習單片機要有一定的基礎,要有電子技術方面的數字電路和模擬電路等方面的理論基礎,特別是數字電路;也要有編程語言的匯編語言或C語言。要想成為單片機高手,我

22、們首先要學好匯編語言,然后轉入C語言學習,所以我們不能學到后面就忘了前面的知識,更應該將所學的知識緊緊的結合在一起,綜合運用,所謂計,就是要求創(chuàng)新,只有將知識綜合運用起來才能真正的設計好。7參考文獻1 陳益飛,沈兆軍.單片機原理及應用技術.國防工業(yè)出版社,2011.2陳忠平. 基于proteus的51單片機設計和仿真.電子工業(yè)出版社.2013.3 Mark Nelson著.瀟湘工作室譯.串行通信開發(fā)指南M.中國水利水電出版社,2002. 4 王宜懷.單片機原理及其嵌入式應用教程M.北京希望電子出版社,2002. 5 韓潤萍,陳小萍.點陣LED顯示屏控制系統(tǒng)J.微計算機信息,2003,19(10

23、):50-51. 6 張毅剛,劉旺.單片機原理及應用.北京高等教育出版社,2013.6:287-291.8附 錄A;源程序#include<reg51.h>#include<stdio.h>#define uint unsigned int#define uchar unsigned char#define da1_7 P2 /da轉換口#define ad1_7 P0 /ad轉換口sbit ST=P13; sbit OE=P17;sbit EOC=P16; /ad轉換完成標志sbit LOAD=P11; /max7219 loadsbit DIN=P10; /max7

24、219輸入sbit CLK=P12; /max7219clksbit Motor=P30;sbit Inc=P36; /速度增加sbit Dec=P37; /速度減小uchar flag_add=0,flag_dec=0;uchar speed=90,t=0;uint motorspeed,counter=0,calsp;uint temp; uchar disp4;uchar code dispaly_list= 0x00,0x01,0x02,0x03,0x04, 0x05,0x06,0x07,0x08 ;void key();void display(); /max7219顯示void c

25、alspeed();/速度計數void delay(uint z); /延時void InitDis(); /max7219 初始化void init_timer0(); /中斷初始void w_max7219(unsigned char addr,unsigned char wdata);void main (void ) InitDis(); init_timer0(); while(1) key(); ST=0; ST=1; ST=0; /start 降 ,AD開始轉換 delay(10); OE=0; while(EOC=0); /等待轉換結束 OE=1; temp=ad1_7; da

26、1_7=temp;/ OE=0; / display(); calspeed(); /*按鍵檢測函數 */void key() /按鍵檢測函數 if(flag_add=0) if(!Inc) /p3.6 加 flag_add=1; /標志 speed+=5; if(speed>=100) speed=100; if(Inc) flag_add=0; if(flag_dec=0) if(!Dec) flag_dec=1; speed-=5; if(speed<=5) speed=5; if(Dec) flag_dec=0; /*初始化 定時*/ void init_timer0()

27、EA=1; EX0=1; IT0=1; /外中斷1 TMOD=0X01; TH0=(65535-10000)/256; /10MS TL0=(65535-10000)%256; TR0=1; /定時1 ET0=1; /*脈沖計數*/void calspeed() if(calsp>=100) /100*10ms=1s motorspeed=counter; counter=0;/計數清零 calsp=0; /標志清零 void _timer0 () interrupt 1 /硬件調用 TH0=(65535-10000)/256; /10MS TL0=(65535-10000)%256;calsp+; /定時次數 等待100次 及1s/ t+; /10ms加1 if(t>=100) t=0; if(t<speed) Motor=1; else Motor=0; void _INT0() interrupt 0 counter+; /外中斷計數void delay(uint z)/延時uint

溫馨提示

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

評論

0/150

提交評論