




已閱讀5頁,還剩32頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
精品畢業論文下載盡在我的主頁基于單片機的直流電機測速、調速及顯示系統設計摘要本文主要研究了利用Quick51系列單片機控制PWM信號從而實現對直流電機轉速進行控制的方法。單片機具有體積小、功能強、成本低、應用面廣泛等優點,可以說,智能控制與自動控制的核心就是單片機。目前,一個學習與應用單片機的高潮在全社會大規模地興起。學習單片機的最有效方法就是理論與實踐并重,本文用8051單片機自制了一個采用了專門的芯片組成了PWM信號的發生系統,并且對PWM信號的原理、產生方法以及如何通過軟件編程對PWM信號占空比進行調節,從而控制其輸入信號波形等均作了詳細的闡述。還對直流電機的速度進行了測量和顯示。關鍵詞:單片機、 PWM、調速、測速、顯示系統 目錄摘要1目錄2第一章概述31.1概述31.2 Quick51的技術簡介和發展前景31.2.1 SmartSOPC與Quick5131.2.2 Quick51特性4第二章 總體方案設計52.1 8051單片機簡介62.2 PWM信號發生電路設計122.2.1 PWM的基本原理122.3 128*64液晶顯示13第三章 硬件設計與連接143.1傳感器電路設計143.2 信號處理電路設計163.3存儲器電路設計173.3.1 I2C總線概述173.3.2 存儲器電路183.4 顯示電路設計183.5 PWM信號發生電路設計19第四章 軟件設計204.1系統軟件總流程圖204.2程序清單21第五章 結論與展望31附錄32附一 速度控制子程序32附二 電路圖35參考文獻36答辯問題37第一章 概述1.1 概述本文主要研究了利用Quick51系列單片機,通過PWM方式控制直流電機調速的方法。沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同。PWM控制技術就是以該結論為理論基礎,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形。按一定的規則對各脈沖的寬度進行調制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。PWM控制的基本原理很早就已經提出,但是受電力電子器件發展水平的制約,在上世紀80年代以前一直未能實現。直到進入上世紀80年代,隨著全控型電力電子器件的出現和迅速發展,PWM控制技術才真正得到應用。隨著電力電子技術、微電子技術和自動控制技術的發展以及各種新的理論方法,如現代控制理論、非線性系統控制思想的應用,PWM控制技術獲得了空前的發展。到目前為止,已經出現了多種PWM控制技術。PWM控制技術以其控制簡單、靈活和動態響應好的優點而成為電力電子技術最廣泛應用的控制方式,也是人們研究的熱點。由于當今科學技術的發展已經沒有了學科之間的界限,結合現代控制理論思想或實現無諧振軟開關技術將會成為PWM控制技術發展的主要方向之一。本文就是利用這種控制方式來改變電壓的占空比實現直流電機速度的控制。1.2 Quick51的技術簡介和發展前景1.2.1 SmartSOPC與Quick51 SmartSOPC教學實驗開發平臺集眾多功能于一體,是SOPC、DSP、EDA、ARM、ARM7 SOC以及8051教學實驗、科研開發的最佳選擇。開發平臺采用“主板核心板”的模式,更換不同的核心板即可實驗不同平臺的功能。 Quick51正是跟SmartSOPC相配套的8051單片機核心板。Quick51是一款自由的、開放全部系統資源的單片機實驗板。單片機芯片采用Philips最新推出的擁有64KB Flash的增強型8052內核單片機P89LV51RD2,工作電壓3.3V(3V邏輯是大趨勢)。Quick51與SmartSOPC配合,可以做各種單片機教學實驗,如LED點陣掃描顯示、鍵盤檢測、動態數碼管、液晶屏、電機驅動、I2C總線、紅外收發、蜂鳴器、數字溫度計、電子鐘,等等。1.2.2 Quick51特性l 采用Philips半導體新型單片機P89LV51RD2,增強型Intel 8052 CPU內核。具有許多增強功能,如內置64KB用戶程序Flash,8KB引導Flash(用來支持ISP和IAP功能),1KB片內靜態RAM,雙倍速模式,雙DPTR,4個中斷優先級,進入掉電模式后外部中斷可喚醒(8052只有復位,不方便),硬件SPI,增強型UART,等等。 l 配備的P89LV51RD2單片機支持ISP(在系統可編程)方式下載用戶程序。Quick51只需要一根普通電腦RS-232通信電纜(該電纜已經隨SmartSOPC實驗箱標配)就能實現ISP下載,不需要制作專門的下載線。l 配備1片專門的仿真芯片。在目前最流行的8051內核單片機Windows環境軟件開發工具Keil C51的支持下,能夠方便地進行硬件在線仿真,而且并不需要安裝特別的驅動程序。該仿真芯片能夠全面支持單步、全速、斷點、跳出、變量觀察、外圍設備訪問等仿真功能。l 晶振(默認11.0592MHz)采用插座式安裝,為用戶替換成其它頻點的晶振來做實驗提供了方便。l 復位方式可選:RC復位、按鍵復位、看門狗復位。此外,看門狗芯片還內置有256B的EEPROM。l 單片機的4組I/O端口全部用雙排插針引出,方便用戶做實驗。l 擴展32KB靜態RAM。l 擴展512KB大容量Flash存儲器,可以用作程序Flash或者大容量數據存儲。l 擴展1個8位并行高阻輸入端口、1個8位并行推挽輸出端口。l 采用PLD器件作為譯碼器。提供8組輸出,地址范圍已經印在PCB上,一目了然。在產品光盤里提供譯碼器內部結構的等效電路原理圖。第二章 總體方案設計本速度表由信號預處理電路、8051單片機、LCD顯示電路、串口數據存儲電路和系統軟件組成。其中信號預處理電路包含信號放大、波形變換和波形整形。信號預處理電路中的放大器用于對待測信號進行放大,以降低對待測信號的幅度要求;波形變換和波形整形電路則用來將放大的信號轉換成可與單片機接口的TTL 信號;通過單片機的設置可使INT0 引腳能夠對內部定時器T0 的工作進行控制,這樣能精確地測出加到INT0 引腳的正脈沖寬度(即測出脈沖信號的周期);速度顯示部分采用數碼顯示模塊, 所得的數據采用I2C總線, 并通過E2PROM來存儲, 因而節省了所需單片機的口線和外圍器件, 同時也簡化了顯示部分的軟件編程。系統軟件包括單片機和液晶模塊的初始化模塊、液晶模塊的寫數據/ 命令子模塊、數據顯示模塊以及實時中斷服務模塊等。該設計能實時地將所測的速度顯示出來。該速度表能將傳感器輸入到單片機的脈沖信號的寬度(傳感器將車速轉變成相應寬度的脈沖信號) 實時地測量出來,然后通過單片機計算出速度, 再將所得的數據存儲到串口數據存儲器, 并由動態數碼顯示模塊實時顯示出所測速度。本設計用兩個按鍵來控制顯示速度。考慮到信號的衰減、干擾等影響,在信號送入單片機前應對其進行放大整形, 然后再輸入到單片機進行測速。系統方框圖如圖2-1所示。8051單片機PWM方波信號直流電機測速發電機LCD顯示圖2-1 系統方框圖2.1 8051單片機簡介一、8051單片機的基本組成 8051單片機由CPU和8個部件組成,它們都通過片內單一總線連接,其基本結構依然是通用CPU加上外圍芯片的結構模式,但在功能單元的控制上采用了特殊功能寄存器的集中控制方法。二、CPU及8個部件的作用功能介紹如下中央處理器CPU:它是單片機的核心,完成運算和控制功能。內部數據存儲器:8051芯片中共有256個RAM單元,能作為存儲器使用的只是前128個單元,其地址為00H7FH。通常說的內部數據存儲器就是指這前128個單元,簡稱內部RAM。特殊功能寄存器:是用來對片內各部件進行管理、控制、監視的控制寄存器和狀態寄存器,是一個特殊功能的RAM區,位于內部RAM的高128個單元,其地址為80HFFH。內部程序存儲器:8051芯片內部共有4K個單元,用于存儲程序、原始數據或表格,簡稱內部ROM。并行I/O口:8051芯片內部有4個8位的I/O口(P0,P1,P2,P3),以實現數據的并行輸入輸出。串行口:它是用來實現單片機和其他設備之間的串行數據傳送。定時器:8051片內有2個16位的定時器,用來實現定時或者計數功能,并且以其定時或計數結果對計算機進行控制。中斷控制系統:該芯片共有5個中斷源,即外部中斷2個,定時/計數中斷2個和串行中斷1個。振蕩電路:它外接石英晶體和微調電容即可構成8051單片機產生時鐘脈沖序列的時鐘電路。系統允許的最高晶振頻率為12MHz。三、8051單片機引腳圖 四、單片機系統中所用其他芯片簡介1 地址鎖存器74LS37374LS373片內是8個輸出帶三態門的D鎖存器。其結構如下圖所示:當使能端G呈高電平時,鎖存器中的內容可以更新,而在返回低電平的瞬間實現鎖存。如果此時芯片的輸出控制端為低,也即是輸出三態門打開,鎖存器中的地址信息便可以通過三態門輸出。以下是其引腳圖: 2程序存儲器27128(1)芯片引腳 (2)功能表 引腳 工作方式(片選)(允許輸出)VPP(編程控制)輸出讀LLVCCH數據輸出維持H*VCC*高阻編程LHVPPL數據輸入編程校驗LLVPPH數據輸出編程禁止H*VPP*高阻3數據存儲器6264(1)芯片引腳 (2)芯片功能表 引腳工作方式I/O0I/O7未選中H*高阻未選中*L*高阻輸出禁止LHHH高阻讀LHLH數據輸出寫LHHL數據輸入寫LHLL數據輸入五、8051單片機擴展電路及分析接線分析P0.7-P0.0:這8個引腳共有兩種不同的功能,分別使用于兩種不同的情況。第一種情況是8051不帶片外存儲器,P0口可以作為通用I/O口使用,P0.7-P0.0用于傳送CPU的I/O數據。第二種情況是8051帶片外存儲器,P0.7-P0.0在CPU訪問片外存儲器時先是用于傳送片外存儲器的低8位地址,然后傳送CPU對片外存儲器的讀寫數據。P2.7-P2.0:這組引腳的第一功能可以作為通用的I/O使用。它的第二功能和P0口引腳的第二功能相配合,用于輸出片外存儲器的高8位地址,共同選中片外存儲器單元,但是并不能像P0口那樣還可以傳送存儲器的讀寫數據。P3.7-P3.0:這組引腳的第一功能為傳送用戶的輸入/輸出數據。它的第二功能作為控制用,每個引腳不盡相同,如下表所示:P3口的位第二功能注釋P3.0RXD串行數據接收口P3.1TXD串行數據發送口P3.2外中斷0輸入P3.3外中斷1輸入P3.4T0計數器0計數輸入P3.5T1計數器1計數輸入P3.6外部RAM寫選通信號P3.7外部RAM讀選通信號VCC為+5V電源線,VSS為接地線。ALE/:地址鎖存允許/編程線,配合P0口引腳的第二功能使用,在訪問片外存儲器時,8051CPU在P0.7-P0.0引腳線上輸出片外存儲器低8位地址的同時還在ALE/線上輸出一個高電位脈沖,其下降沿用于把這個片外存儲器低8位地址鎖存到外部專用地址鎖存器,以便空出P0.7-P0.0引腳線去傳送隨后而來的片外存儲器的讀寫數據。在不訪問片外存儲器時,8051自動在ALE/線上輸出頻率為1/6 fOSC的脈沖序列。該脈沖序列可以用作外部時鐘源或者作為定時脈沖源使用。 / VPP:允許訪問片外存儲器/編程電源線,可以控制8051使用片內ROM還是片外ROM。如果=1,那么允許使用片內ROM;如果=0,那么允許使用片外ROM。:片外ROM選通線,在執行訪問片外ROM的指令MOVC時,8051自動在線上產生一個負脈沖,用于片外ROM芯片的選通。其他情況下,線均為高電平封鎖狀態。RST/VPD:復位備用電源線,可以使8051處于復位工作狀態。XTAL1和XTAL2:片內振蕩電路輸入線,這兩個端子用來外接石英晶體和微調電容,即用來連接8051片內OSC的定時反饋電路。石英晶振起振后,應能在XTAL2線上輸出一個3V左右的正弦波,以便于8051片內的OSC電路按石英晶振相同頻率自激振蕩,電容C1、C2可以幫助起振,調節它們可以達到微調fOSC的目的。2.2 PWM信號發生電路設計2.2.1 PWM的基本原理PWM(脈沖寬度調制)是通過控制固定電壓的直流電源開關頻率,改變負載兩端的電壓,從而達到控制要求的一種電壓調整方法。PWM可以應用在許多方面,比如:電機調速、溫度控制、壓力控制等等。在PWM驅動控制的調整系統中,按一個固定的頻率來接通和斷開電源,并且根據需要改變一個周期內“接通”和“斷開”時間的長短。通過改變直流電機電樞上電壓的“占空比”來達到改變平均電壓大小的目的,從而來控制電動機的轉速。也正因為如此,PWM又被稱為“開關驅動裝置”。如下圖所示: 設電機始終接通電源時,電機轉速最大為Vmax,設占空比為D= t1 / T,則電機的平均速度為Va = Vmax * D,其中Va指的是電機的平均速度;Vmax 是指電機在全通電時的最大速度;D = t1 / T是指占空比。由上面的公式可見,當我們改變占空比 D = t1 / T時,就可以得到不同的電機平均速度Vd,從而達到調速的目的。嚴格來說,平均速度Vd 與占空比D并非嚴格的線性關系,但是在一般的應用中,我們可以將其近似地看成是線性關系。2.3 128*64液晶顯示LCD顯示器工作原理就是利用液晶的物理特性;通電時排列變得有序,使光線容易通過;不通電時排列混亂,阻止光線通過,說簡單點就是讓液晶如閘門般地阻隔或讓光線穿透。 LCD的好處有:與CRT顯示器相比,LCD的優點主要包括零輻射、低功耗、散熱小、體積小、圖像還原精確、字符顯示銳利等。其接口信號說明如下:第三章 硬件設計與連接3.1傳感器電路設計在信號脈沖發生源上,本系統采用的是開關型霍爾傳感器。以磁場作為媒介,利用霍爾傳感器可以檢測多種物理量,如位移、振動、轉速、加速度、流量、電流、電功率等。它不僅可以實現非接觸測量,并且采用永久磁鐵產生磁場,不需附加能源。另外霍爾傳感器尺寸小、價格便宜、應用電路簡單、性能可靠,因而獲得極為廣泛的應用。除了直接利用霍爾傳感器外,還利用它開發出各種派生的傳感器。金屬或半導體薄片的兩個端面通以控制電流Ic,并在薄片的垂直方向上施加磁感應強度為B的磁場,則在垂直于電流和磁場的方向上將產生電勢Uh,稱為霍爾電勢或霍爾電壓(如圖l所示)。霍爾電勢Uh=KhIcB(其中Kh為霍爾元件靈敏度,它與所用的材料及幾何尺寸有關)。這種現象稱為霍爾效應,而用這種效應制成的元件稱為霍爾元件。由于霍爾元件輸出的電壓信號較小,并且有一定溫度誤差,目前已較少直接使用霍爾元件作傳感器。霍爾傳感器原理圖如圖3-6所示。圖3-6 霍爾傳感器磁場效應本系統采用開關型霍爾傳感器A04E。開關型霍爾傳感器是一種集成傳感器,它內部含有霍爾元件、放大器、穩壓電源、帶一定滯后特性的比較器及集電極開路輸出部分等,如圖3-7所示。開關型霍爾傳感器的工作特性如圖3-8 所示。 圖3-7 開關型霍爾傳感器內部結構圖圖3-8 開關型霍爾傳感器工作特性當外加的磁感應強度超過動作點Bop時,傳感器輸出低電平,但磁感應強度降到動作點Bop以下時,傳感器輸出電平不變,一直要降到釋放點BRE時,傳感器才由低電平躍變為高電平。Bop與Bre之間的滯后(或稱為回差)使開關動作更為可靠。 圖3-9 霍爾傳感器檢測轉速示意圖霍爾傳感器檢測轉速示意圖3-9如下。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉動一圈霍爾傳感器便輸出一個脈沖。通過單片機測量產生脈沖的頻率,就可以得出圓盤的轉速。同樣道理,根據圓盤(車輪)的轉速,再結合圓盤的周長就是計算出物體的位移。如果要增加測量位移精度,可以在圓盤(車輪)上多增加幾個磁鋼。由于傳感器內部為集電極開路輸出,所以需外接一個上拉電阻,其阻值與電源電壓大小有關,一般取12k,如圖3-10所示。圖3-10 傳感器輸出電路3.2 信號處理電路設計 系統的信號預處理電路由二級電路構成,第一級是由開關三極管組成的零偏置放大器,采用開關三極管可以保證放大器具有良好的高頻響應。當輸入信號為零或負電壓時,三極管截止,電路輸出高電平;而當輸入信號為正電壓時,三極管導通,此時輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由于放大器的放大功能降低了對待測信號的幅度要求,因此,系統能對任意大于0.5V的正弦波和脈沖信號進行測量。預處理電路的第二級采用帶施密特觸發器的反相器DM74LS14來把放大器生成的單相脈沖轉換成與COMS電平相兼容方波信號,同時將輸出信號加到單片機的P3.4口上。利用施密特觸發器狀態轉換過程中的正反饋作用,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于VT+,即可在施密特觸發器的輸出端得到同等頻率的矩形脈沖信號。從傳感器得到的矩形脈沖經傳輸后往往發生波形畸變。當傳輸線上的電容較大時,波形的上升沿將明顯變壞;當傳輸線較長,而且接受端的阻抗與傳輸線的阻抗不匹配時,在波形的上升沿和下降沿將產生振蕩現象;當其他脈沖信號通過導線間的分布電容或公共電源線疊加到矩形脈沖信號時,信號上將出現附加的噪聲。無論出現上述的那一種情況,都可以通過用施密特反相觸發器整形而得到比較理想的矩形脈沖波形。只要施密特觸發器的VT+和VT-設置得合適,均能受到滿意的整形效果。信號預處理電路如圖3-11所示。 圖3-11 信號預處理電路圖3.3存儲器電路設計 3.3.1 I2C總線概述I2C總線是一種用于IC器件之間連接的二線制總線。它通過SDA(串行數據線)及SCL(串行時鐘線)兩根線在連到總線上器件之間傳送信息,并根據地址識別每個器件,不管是單片機、存儲器、LCD驅動器還是鍵盤接口。采用I2C總線標準單片機或IC器件,其內部不僅有I2C接口電路,而且將內部各單元電路按功能劃分為若干相對獨立模塊,通過軟件尋址實現片選,減少了器件片選線連接。CPU不僅能通過指令將某個功能單元電路掛靠或摘離總線,還可對該單元的工作狀況進行檢測,從而實現對硬件系統的既簡單又靈活的擴展與控制。I2C總線則根據器件的功能通過軟件程序使其可工作于發送或接收方式。當某個器件向總線上發送信息時,它就是發送器(也叫主器件),而當其從總線上接收信息時,又成為接收器(也叫從器件)。主器件用于啟動總線上傳送數據并產生時鐘以開放傳送的器件,此時任何被尋址的器件均被認為是從器件。I2C總線的控制完全由掛接在總線上的主器件送出的地址和數據決定。在總線上,既沒有中心機,也沒有優先機。I2C總線的數據傳送格式是:在I2C總線開始信號后,送出的第一個字節數據是用來選擇從器件地址的,其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發送,即主器件把信息寫到所選擇的從器件;方向位為“1”表示主器件將從從器件讀信息。開始信號后,系統中的各個器件將自己的地址和主器件送到總線上的地址進行比較,如果與主器件發送到總線上的地址一致,則該器件即為被主器件尋址的器件,其接收信息還是發送信息則由第8位(R/W)確定。3.3.2 存儲器電路圖3-12 AT24CO2與單片機的接口電路3.4 顯示電路設計3.5 PWM信號發生電路設計PWM波可以由具有PWM輸出的單片機通過編程來得以產生,也可以采用PWM專用芯片來實現。當PWM波的頻率太高時,它對直流電機驅動的功率管要求太高,而當它的頻率太低時,其產生的電磁噪聲就比較大,在實際應用中,當PWM波的頻率在18KHz左右時,效果最好。在本系統內,采用了兩片4位數值比較器4585和一片12位串行計數器4040組成了PWM信號發生電路。兩片數值比較器4585,即圖上U2、U3的A組接12位串行4040計數輸出端Q2Q9,而U2、U3的B組接到單片機的P1端口。只要改變P1端口的輸出值,那么就可以使得PWM信號的占空比發生變化,從而進行調速控制。12位串行計數器4040的計數輸入端CLK接到單片機C51晶振的振蕩輸出XTAL2。計數器4040每來8個脈沖,其輸出Q2Q9加1,當計數值小于或者等于單片機P1端口輸出值X時,圖中U2的(AB)輸出端保持為低電平,而當計數值大于單片機P1端口輸出值X時,圖中U2的(AB)輸出端為高電平。隨著計數值的增加,Q2Q9由全“1”變為全“0”時,圖中U2的(AB)輸出端又變為低電平,這樣就在U2的(AB)端得到了PWM的信號,它的占空比為(255 -X / 255)*100%,那么只要改變X的數值,就可以相應的改變PWM信號的占空比,從而進行直流電機的轉速控制。第四章 軟件設計4.1系統軟件總流程圖開始設堆棧清標志清暫存清顯示T0初始化串行口初始化CPU開中斷掃描鍵盤速度采樣顯示圖4.1 系統軟件主程序流程圖4.2程序清單/*LCD.C12864 LCD驅動程序頭文件*/#ifndef LCD_H_#define LCD_H_#include/定義背光控制信號sbit LCD_BL=P14;/點亮背光燈void LcdLightOn();/熄滅背光燈void LcdLightOff();/清屏void LcdClear();/初始化void LcdInit();/顯示ASC碼void LcdPutChar(unsigned char c);/顯示字符串void LcdPuts(unsigned char*s);#endif /LCD_H_/*LCD.C12864 LCD驅動程序*/#include #include /#include LCD.H/定義屏幕光標(取值063,光標本身不可見)unsigned char LcdCursor;int i,j;/*函數:LcdLightOn()功能:點亮背光燈*/void LcdLightOn()LCD_BL = 1;/*函數:LcdLightOff()功能:熄滅背光燈*/void LcdLightOff()LCD_BL = 0;/*函數:LcdGetBF()功能:讀出狀態位BF返回:BF=1,表示忙,不可進行任何操作BF=0,表示不忙,可以進行正常操作*/bit LcdGetBF()unsigned char dat;dat = XBYTE0xD002;/XBYTE的定義見return (bit)(dat & 0x80);/*函數:LcdWriteCmd()功能:向LCD發送命令參數:cmd:命令字,詳見器件的數據手冊*/void LcdWriteCmd(unsigned char cmd)while ( LcdGetBF() );XBYTE0xD000 = cmd;/*函數:LcdWriteDat()功能:向LCD寫入數據參數:dat,要寫入的數據說明:目標地址由地址計數器AC隱含指定,寫完后AC自動加1*/void LcdWriteDat(unsigned char dat)while ( LcdGetBF() );XBYTE0xD001 = dat;/*函數:LcdReadDat()功能:從LCD讀出數據返回:讀出的數據*/*unsigned char LcdReadDat()volatile unsigned char dat;while ( LcdGetBF() );dat = XBYTE0xD003;dat = XBYTE0xD003;/需要連續執行兩次才能夠讀出真正的數據return dat;*/*函數:LcdSetAC()功能:設置DDRAM(顯示數據RAM)的AC(地址計數器)值參數:ac:地址計數器值,范圍063*/void LcdSetAC(unsigned char ac)ac &= 0x3F;ac |= 0x80;LcdWriteCmd(ac);/*函數:LcdClear()功能:LCD清屏,并使光標回到0*/void LcdClear()LcdWriteCmd(0x01);/清屏命令LcdCursor = 0;/*函數:LcdDelay()功能:延時(t*100)個機器周期*/void LcdDelay(unsigned char t)unsigned char n;don = 49;while ( -n != 0 ); while ( -t != 0 );/*函數:LcdInit()功能:LCD初始化*/void LcdInit()LcdWriteCmd(0x30);/設置基本指令集LcdDelay(3);LcdWriteCmd(0x30);/設置基本指令集(需要再執行一次)LcdDelay(1);LcdWriteCmd(0x0C);/開啟顯示LcdDelay(3);LcdClear();/清屏LcdDelay(250);LcdWriteCmd(0x06);/設置進入點LcdDelay(10);/*函數:LcdCheckAC()功能:根據光標位置調整AC*/void LcdCheckAC()switch ( LcdCursor )case 16:LcdSetAC(16);break;case 32:LcdSetAC(8);break;case 48:LcdSetAC(24);break;case 64:LcdCursor = 0;LcdSetAC(0);break;default:break;/*函數:LcdPutChar()功能:顯示ASCII碼參數:c為可顯示的ASCII碼(0x200x7F)*/void LcdPutChar(unsigned char c)LcdWriteDat(c);LcdCursor+;LcdCheckAC();/*函數:LcdPutHZ()功能:顯示漢字參數:ch,cl:漢字編碼*/void LcdPutHZ(unsigned char ch, unsigned char cl)if ( LcdCursor & 0x01 )/顯示漢字時,必須偶地址對準,即光標位置不能是奇數LcdPutChar( );/額外輸出一個空格LcdWriteDat(ch);LcdWriteDat(cl);LcdCursor += 2;LcdCheckAC();/*函數:LcdPuts()功能:顯示字符串參數:*s:要顯示的字符串(可同時包含ASCII碼和漢字)*/void LcdPuts(unsigned char *s)unsigned char ch, cl;for (;)ch = *s+;if ( ch = 0 ) break;if ( ch 0x80 )LcdPutChar(ch);elsecl = *s+;LcdPutHZ(ch,cl);/*顯示主程序*/#includeLCD.H#include/#include DELAY.H /* 包含延時函數的頭部文件delay_us();delay_ms(); */ /*函數:Delay()延時1ms 65.53st0時,延時(t*0.001)st=0時。延時65.53s*/*/unsigned char SD4=1,2,3,4;/速度設定unsigned char FK4=2,2,3,4;/速度反饋int D=0;/方向控制中間變量unsigned int Pwm=0;/速度產生中間變量 unsigned int p=0; unsigned int Value=0; unsigned int Pwm_Value=0; unsigned int m; /unsigned int a,b,c,d;sbit KEY1=P20;sbit KEY2=P21;sbit KEY3=P22;sbit MotorA=P16;sbit MotorB=P17; bit SWTR;bit SWTF;unsigned int SWTV; #define Pwm_MAX 255void Delay(unsigned int T)SWTV=T;SWTR=1;while(!SWTF);SWTR=0;SWTF=0;void KEY()if(KEY1=0)Value=Value+1;if(KEY2=0)Value=Value-1;if(KEY3=0)if(D=0)D=1; else D=0; void PWM_Init() staticunsigned char t=0;t+; if(tPwm_MAX)t=0;if(t=Pwm_Value) Pwm=1;else Pwm=0;if(D=0)MotorA=0;MotorB=Pwm;elseMotorA=Pwm;MotorB=0; void Show_Value(unsigned char CH) int i; for(i=0;iValue) Pwm_Value=Pwm_Value-1;if(mValue) Pwm_Value=Pwm_Value+1;FK3=(m%10)+48;FK2=(m/10%10)+48;FK1=(m/100%10)+48;FK0=(m/1000%10)+48;SD3=(Value%10)+48;SD2=(Value/10%10)+48;SD1=(Value/100%10)+48;SD0=(Value/1000%10)+48;void main() unsigned char i; MotorA=0; MotorB=0;EA=0; T_int(); Delay(50); LcdInit();/LCD初始化/*/ for(i=0;i2;i+)LcdLightOff();Delay(660);LcdLightOn();Delay(660); Delay(660); LcdClear(); Delay(660);/*/EA=1; Show_Init(); Delay(20);Value=200; Pwm_Value=Value; for(;) KEY();/按鍵處理MeasureSpeed();LcdWriteCmd(0x94);Show_Value(FK);LcdWriteCmd(0x84);Show_Value(SD);LcdWriteCmd(0x8c); if(D=0)LcdPuts(正向);if(D=1)LcdPuts(反向);void T1ZD() interrupt 3TR1=0;/KEY();/按鍵處理PWM_Init();if(SWTR) /延時 if(-SWTV=0) SWTF=1;TR1=1;第五章 結論與展望本設計以8051為核心,利用單片機的運算和控制功能,并采用系統化LCD顯示模塊實時顯示所測速度的設計方案,以及串口數據存儲電路和系統軟件。傳感器也是實現測量與控制不可缺少的環節,是測控系統的關鍵部件,如果沒有傳感器對原始被測信號進行準確可靠的捕捉和轉換,一切準確的測量和控制都將無法實現。工業生產過程的自動化測量和控制,幾乎主要依靠各種傳感器來檢測和控制生產過程中的各種參量,使設備和系統正常運行在最佳狀態,從而保證生產的高效率和高質量。本方案基本實現了直流電機的速度即時顯示,并可通過控制按鍵顯示速度,并通過PWM方波對直流電機的速度與轉向進行控制。這一方案可以在很多領域有很好的應用,例如我們現在交通不可缺少的代步工具電動車的車速表,采用數字式顯示不僅一目了然,還很精確。隨著科技的不斷發展,傳感器的廣泛應用,各種智能儀表都會采用數字式顯示,不僅讀取方便,而且精度更高,更可靠。 附錄附一 速度控制子程序void T_int();/定時器初始化Tmod=0x00;Tmod=0x25;TH1=TL1=0xa4;TH0=TL0=0;void Delay(unsigned int t)SWTV=T;SWTR=1;WHILE(!SWTF);SWTR=0;SWTF=0void MeasureSpeed();/速度計算int m;TH0=TL0=0TR0=1Delay(2500);TR0=0;TF0=0;m=TH0*255+TH0;/已知速度不吵過100a=m%10;b=m/10%10;c=m/100%10;d=m/100
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文創產品設計賞析
- 2024年電子涂料項目投資申請報告代可行性研究報告
- 統編版語文四年級下冊 7納米技術就在我們身邊(含解析)
- 2025年云南勐海縣工業園區投資開發建設有限公司招聘筆試參考題庫含答案解析
- 2025年貴州貴陽市貴安新區科創產業發展有限公司招聘筆試參考題庫含答案解析
- 2025年江蘇常熟市農業科技發展有限公司招聘筆試參考題庫附帶答案詳解
- 三國演義讀書活動設計
- 春天來了作文指導
- 科學減肥方案設計指南
- 家長如何塑造學霸-打造高效學習習慣的成功策略
- 中職學生國家安全教育課件
- 初中九年級數學課件-中考總復習-矩形的折疊問題
- 《國家審計準則解讀》課件
- 糖尿病患者的藥物治療指導與管理
- 2023醫美術后科學修護指南
- 2023年廣西物流職業技術學院教師招聘考試筆試題庫及答案
- 湖北省天門市2024屆中考聯考生物試題含解析
- 居民自建樁安裝告知書回執
- 廣佛環線佛山西站至廣州北站段項目輸電線路遷改工程環境影響報告表
- 翻譯中的文化因素及文化負載詞的處理
- 火龍罐技術課件
評論
0/150
提交評論