基于stm32的電梯控制器_第1頁
基于stm32的電梯控制器_第2頁
基于stm32的電梯控制器_第3頁
基于stm32的電梯控制器_第4頁
基于stm32的電梯控制器_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、濟(jì)南大學(xué)畢業(yè)設(shè)計畢業(yè)設(shè)計題 目 基于STM32的多層電梯控制器的設(shè)計 學(xué) 院 信息科學(xué)與工程學(xué)院 專 業(yè) 電子信息科學(xué)與技術(shù) 班 級 電信0902 學(xué) 生 鄒強(qiáng) 學(xué) 號 20091221572 指導(dǎo)教師 孔 祥 玉 二一三年 六 月 七 日-35-濟(jì)南大學(xué)畢業(yè)設(shè)計摘 要世界上第一臺電梯是由美國的奧的斯公司制造的。自從這第一臺電梯于1987年問世以來,對生活在城市的樓宇中特別是高樓大廈中的人們的生活和工作帶來了巨大的便利。隨著社會經(jīng)濟(jì)的飛速發(fā)展,電梯與人們的生活越來越密不可分。本設(shè)計的電梯系統(tǒng)采用的是stm32微處理器。STM32處理器是基于Cortex-M3架構(gòu)的嵌入式微處理器MCU,其中Co

2、rtex-M3架構(gòu)是ARM公司推出的。STM32處理器具有高速、高集成度、低功耗、高可靠性等優(yōu)點。正是由于STM32處理器具有這些優(yōu)點,它正適合運(yùn)用于電梯控制。本設(shè)計中的電梯控制系統(tǒng)主要運(yùn)用了STM32處理器GPIO口操作和其精確地定時功能。該電梯系統(tǒng)一共分6個部分,它們是 STM32處理器、電源系統(tǒng)、數(shù)碼管顯示器、鍵盤、LED小燈、直流電機(jī)驅(qū)動模塊。這些部分是直接與STM32的GPIO口連接的,所以它們占用的GPIO口較多。關(guān)鍵詞:STM32處理器;Cortex-M3架構(gòu);直流電機(jī)驅(qū)動模塊ABSTRACTThe world's first elevator is manufactur

3、ed by the United States Otis. Since the first lift inception in 1987, the way of people who live in the buildings in the city especially in the high-rise buildings and work has brought great convenience. With the rapid socioeconomic development, the elevator becomes increasingly inseparable in peopl

4、e's lives.The designs of the elevator system use the STM32 microprocessor. The STM32 processor is based on Cortex-M3-based embedded microprocessor MCU, and Cortex-M3 architecture is ARM introduced. STM32 processor has the advantages of high-speed, high integration, low power consumption, high re

5、liability and so on. Because of the STM32 processor has these advantages; it is suitable used in elevator control. The designs of the elevator control system mainly utilize the STM32 processor GPIO port operation and accurate timing functions. The elevator system is divided into six parts which are

6、STM32 processors, power systems, digital display, keyboard, LED lights and DC motor driver module. These parts are connected directly with the STM32 GPIO ports that take more part of GPIO port.Keywords: STM32 processor; Cortex-M3 architecture; DC motor drive module 目 錄摘 要IABSTRACTII第1章 緒論11.1 課題背景11

7、.1.1 選題背景11.1.2國內(nèi)外現(xiàn)狀11.1.3 本課題的意義及研究內(nèi)容2第2章 系統(tǒng)設(shè)計方案32.1 系統(tǒng)硬件總體組成32.1.1總體框圖32.2 系統(tǒng)硬件方案32.2.1 STM32選擇方案3(2)STM32的原理圖及特性42.2.2 鍵盤設(shè)計方案62.2.3 LED指示燈設(shè)計方案62.2.4數(shù)碼管顯示器設(shè)計方案62.2.5電機(jī)驅(qū)動設(shè)計方案6第3章 系統(tǒng)硬件設(shè)計73.1 硬件系統(tǒng)的總體設(shè)計73.2 硬件系統(tǒng)的部分設(shè)計73.2.1 鍵盤硬件電路設(shè)計73.2.2 LED指示燈硬件電路設(shè)計83.2.3 八段數(shù)碼管硬件電路設(shè)計93.2.4電機(jī)驅(qū)動模塊硬件電路10第4章 系統(tǒng)軟件設(shè)計124.1

8、主程序設(shè)計124.2 顯示程序設(shè)計204.3 LED指示燈程序設(shè)計214.3 鍵盤查詢程序設(shè)計214.3 門控制程序設(shè)計234.3 電機(jī)驅(qū)動程序設(shè)計28結(jié) 論31參考文獻(xiàn)32致 謝33附錄1 系統(tǒng)運(yùn)行樣式33濟(jì)南大學(xué)畢業(yè)設(shè)計第1章 緒論1.1 課題背景1.1.1 選題背景電梯是一種由電動機(jī)作為驅(qū)動力的豎直升降設(shè)備,裝有立方體吊艙并設(shè)有電梯門,用于多層建筑乘人或載運(yùn)貨物。它的轎廂運(yùn)行在至少兩列平行豎直的或近似平行豎直的剛性軌道之間,一般服務(wù)與超過規(guī)定高度的樓宇內(nèi)。轎廂尺寸與結(jié)構(gòu)形式便于乘客出入或裝卸貨物。而自從第一臺電梯在美國問世100多年以來,由于社會科學(xué)與經(jīng)濟(jì)的不斷前進(jìn)以及人們物質(zhì)生活狀況的

9、不斷改善,電梯與人們的生活越來越息息相關(guān),已成為人們工作和生活中不可或缺的一項十分重要的垂直交通運(yùn)輸工具。自20世紀(jì)以來,全球科學(xué)技術(shù)獲得了飛速的發(fā)展,尤其是計算機(jī)技術(shù)、電子技術(shù)自動控制技術(shù)、網(wǎng)絡(luò)技術(shù)、等都得到了質(zhì)的飛躍,并迅速轉(zhuǎn)換為先進(jìn)的生產(chǎn)力,滲透到了社會的各個領(lǐng)域和各個方面,深刻的影響了人們?nèi)粘5墓ぷ鞣绞郊吧罘绞?。電梯行業(yè)在科學(xué)技術(shù)飛速發(fā)展過程中也同樣獲益頗多。電梯的控制方式以及拖動方式均發(fā)生了很大的變化。1.1.2國內(nèi)外現(xiàn)狀100多年來,中國的電梯行業(yè)發(fā)展經(jīng)歷了下面幾個階段 :依賴電梯進(jìn)口階段(1950年以前),在這一階段我國的電梯全部來源于進(jìn)口,僅僅擁有大約1 101臺電梯;自主研

10、發(fā)生產(chǎn)階段(19501980年),在這個階段我國可以自主的研發(fā)、設(shè)計和生產(chǎn)電梯。在這個階段我國一共生產(chǎn)和安裝電梯大約1萬臺的電梯;建立合資企業(yè),整個行業(yè)飛速發(fā)展階段(自1980年改革開放至今),這個階段我國總共制造和安裝了多達(dá)40萬臺電梯?,F(xiàn)在,我國已成為全球最大的電梯制造國和最龐大的新裝電梯市場。2006年,在我國大陸的電梯總產(chǎn)量達(dá)到168萬臺,全國正在用的電梯達(dá)到了770314臺。在如此龐大的電梯市場需求的推動下電梯行業(yè)獲得了廣闊的發(fā)展舞臺。20世紀(jì)80年代初,日本三菱公司首次在電梯拖動控制系統(tǒng)中變壓變頻調(diào)速(VWF,Variable VoltageVariable Frequency),

11、這導(dǎo)致了電梯的拖動方式的一次重大變革,與之前的交流調(diào)壓調(diào)速驅(qū)動、交流雙速電機(jī)驅(qū)動等方式相比,WVF驅(qū)動方式具有電機(jī)發(fā)熱量小、高效率、節(jié)能、污染小、高性能等優(yōu)點。而近些年來,交流永磁同步電機(jī)的問世,被認(rèn)為是在變壓變頻調(diào)速技術(shù)出現(xiàn)以后,電梯拖動技術(shù)的又一項十分重大的技術(shù)變革。這是因為交流永磁同步電機(jī)具有基本無需維護(hù),結(jié)構(gòu)緊湊,更加安全可靠、節(jié)能、傳動效率高、更高的性價比的優(yōu)點,并減少了對環(huán)境的污染。同樣是在上個世紀(jì)80年代,微計算機(jī)技術(shù)被應(yīng)用于電梯控制系統(tǒng)中,單片機(jī)等微處理器及可編程邏輯控制器的出現(xiàn)把電梯控制技術(shù)推進(jìn)了一個全新高速的發(fā)展時期,電梯控制系統(tǒng)的網(wǎng)絡(luò)化、智能化開始進(jìn)入了人們的視野,并且成

12、為研究的新熱點。1.1.3 本課題的意義及研究內(nèi)容隨著社會的發(fā)展,利用堅固耐用的金屬梁作為建筑支撐物,建筑師和工程師可以建成數(shù)百米高、直沖云霄的摩天大樓。在如今各種高樓大廈已經(jīng)數(shù)不勝數(shù),如果沒有電梯,這些高樓大廈基本上將無法使用。因此乘坐電梯也必然成為眾生活中的一部分,而作為電梯的大腦電梯控制器,它的高效運(yùn)行和智能化已經(jīng)成為電梯運(yùn)行中必不可少的重要器件。本設(shè)計的電梯控制器是基于STM32來設(shè)計的。隨著信息化技術(shù)的發(fā)展,嵌入式系統(tǒng)已經(jīng)成為當(dāng)前IT產(chǎn)業(yè)界一個非常熱門的話題。因其高效、低成本、高可靠性、豐富的代碼以及應(yīng)用程序可擴(kuò)展性、可移植性等一系列優(yōu)點,越來越多地應(yīng)用在信息化產(chǎn)品中。本設(shè)計以一個實

13、際的應(yīng)用實例,從開發(fā)板、集成開發(fā)環(huán)境的構(gòu)建方式和作業(yè)方式、嵌入式系統(tǒng)的硬件和軟件設(shè)計、JTAG調(diào)試方法,掌握嵌入式系統(tǒng)開發(fā)方法。 本設(shè)計通過ARM微控制器模擬實現(xiàn)電梯的控制。(1)需研究ARM Cortex-M3微控制器結(jié)構(gòu),基于ARM Cortex-M3的stm32開發(fā)板及相關(guān)鍵盤控制模塊、GPIO模塊等,keil集成開發(fā)環(huán)境;(2)研究單部電梯調(diào)度算法,并選擇或設(shè)計一個合適的算法;(3)了解實驗開發(fā)板上相關(guān)硬件電路設(shè)計;(4)用c語言完成系統(tǒng)軟件設(shè)計,并在實驗開發(fā)板上調(diào)試,完成電梯的上行、下行、停止、開門、關(guān)門、等動作,要求每一個動作在規(guī)定時間內(nèi)完成。第2章 系統(tǒng)設(shè)計方案2.1 系統(tǒng)硬件總

14、體組成2.1.1總體框圖該電梯控制系統(tǒng)由stm32開發(fā)板、電源系統(tǒng)、鍵盤、LED指示小燈、4位8段數(shù)碼管、電機(jī)驅(qū)動模塊等組成。如圖2.14位8段數(shù)碼管 鍵盤STM32 電機(jī)驅(qū)動模塊LED指示小燈電源系統(tǒng)圖2.1 系統(tǒng)硬件結(jié)構(gòu)各功能模塊簡介:(1) 電源系統(tǒng):為整個系統(tǒng)提供+5V電源;(2) 鍵盤:每個鍵位互不影響用以控制電梯運(yùn)行狀態(tài);(3) LED指示小燈:用以指示小健是否被按下和電梯門開關(guān)狀態(tài);(4) 4位8段數(shù)碼管:用于顯示電梯內(nèi)部和每層電梯外部電梯所在的層數(shù);(5) 電機(jī)驅(qū)動模塊:用于驅(qū)動電機(jī)和控制電機(jī)正反轉(zhuǎn)及轉(zhuǎn)速;(6) STM32開發(fā)板:通過寫入程序代碼來控制電梯的運(yùn)行狀態(tài)。2.2

15、系統(tǒng)硬件方案2.2.1 STM32選擇方案(1)STM32內(nèi)核 STM32是基于ARM Cortex-M3內(nèi)核的32位處理器,具有杰出的功耗控制以及眾多的外設(shè),最重要的是其性價比。Cortex-M3是一個32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路勁是32位的,寄存器是32位的,存儲器借口也是32位的。Cortex-CM3使用了哈弗結(jié)構(gòu),擁有獨(dú)立的數(shù)據(jù)總線和指令總線,可以讓訪問數(shù)據(jù)和取指同時進(jìn)行互不影響。這樣一來,訪問數(shù)據(jù)時不會占用指令總線,從而提高了性能。為了實現(xiàn)這一特性,Cortex-CM3內(nèi)部有好幾條總線接口,每一條都為自己的應(yīng)用場合優(yōu)化過,并且可以并行工作。但是指令總線和數(shù)據(jù)總線共同享用同一個存儲空

16、間3。同時該內(nèi)核還具有高性能、低功耗、先進(jìn)的中斷處理功能。(2)STM32的原理圖及特性 圖2.2 stm32原理圖 ALIENTEK MiniSTM32開發(fā)板結(jié)構(gòu)如下:CPU:STM32F103RBT6,LQFP64,F(xiàn)LASH:128K,SRAM:20K;1個標(biāo)準(zhǔn)的JTAG/SWD調(diào)試下載口;1個IIC接口的EEPROM芯片,24C02,容量256字節(jié);1個標(biāo)準(zhǔn)的2.4/2.8寸LCD接口,支持觸摸屏;1個USB串口,可用于程序下載和代碼調(diào)試;1個USB SLAVE接口,用于USB通信;1組5V電源供應(yīng)/接入口;1組3.3V電源供應(yīng)/接入口1個復(fù)位按鈕,可用于復(fù)位MCU和LCD除晶振所占用

17、的IO口之外,其余所有IO口全部引出,其中GPIOA和GPIOB按順序引出STM32具有價格低、功能強(qiáng)、使用簡單、開發(fā)方便等幾個很有利的優(yōu)勢, 在應(yīng)用上,STM32設(shè)計的比較方便的地方有:IO口復(fù)用重映射功能。由于一些復(fù)用功能能夠重映射,使得在STM32的PCB設(shè)計的時候,方便很多。所有的引腳都能夠用作中斷輸入。所有的IO口都能夠當(dāng)作中斷輸入,這個方面和ARM比起來具有很大的優(yōu)勢,一旦需要中斷來解決問題時,任何一個GPIO口都可以作為中斷輸入,無需要連到幾個特殊的腳上,這樣給設(shè)計過程帶了極大的方便。支持SWD的調(diào)試。STM32可以SWD的調(diào)試,只需要2跟IO線,就可以用來下載程序和調(diào)試,對引腳

18、不多的型號尤其適用。串口下載程序。串口下載代碼很多ARM都具有這個功能,STM32也保留了這一優(yōu)秀設(shè)計,極大的降低了開發(fā)成本。(1)(3)STM32的GPIO口簡介STM32的每個IO端口都有7個寄存器來控制。他們分別是:配置模式的2個32位的端口配置寄存器CRL和CRH;2個32位的數(shù)據(jù)寄存器IDR和ODR;1個32位的置位/復(fù)位寄存器BSRR;一個16位的復(fù)位寄存器BRR;1個32位的鎖存寄存器LCKR。其中CRL和CRH控制著每個IO口的模式及輸出速率。STM32的IO口位配置表如表2.1所示: 配置模式 CNF1 CNF0MODE1MODE0PxODR寄存器通用輸出推挽式(Push-P

19、ull) 0 0 01 10 11 0或1開漏(Open-Drain) 1 0或1復(fù)用功能輸出推挽式(Push-Pull) 1 0 不使用開漏(Open-Drain) 1 不使用輸入 模擬輸入 0 0 00 不使用 浮空輸入 1 不使用 下輸入拉 1 0 0 上拉輸入 1表2.1 STM32的IO口位配置表2.2.2 鍵盤設(shè)計方案鍵盤由一組獨(dú)立的按鍵構(gòu)成的,由于彈性按鍵結(jié)構(gòu)簡單、價格低廉、使用方便,所以該設(shè)計采用了彈性按鍵。又由于電梯控制系統(tǒng)的按鍵相互獨(dú)立互不影響,所以在該設(shè)計中我采用了每個按鍵分別單獨(dú)與相應(yīng)的GPIO口相連。雖然這樣連接占用了較多的GPIO口,但是無需一些鍵盤鎖存掃描電路,極

20、大地簡化了鍵盤電路的設(shè)計、焊接、和掃描,降低了難度。2.2.3 LED指示燈設(shè)計方案由于該設(shè)計是一個模擬電梯控制系統(tǒng)電梯的開門關(guān)門狀態(tài)難以直接模擬出來。所以我用兩個不同顏色的LED小燈來模擬電梯在運(yùn)行過程中的開關(guān)門狀態(tài),使模擬過程更加直觀。同時在該設(shè)計中,對每一個按鍵分別用一個小燈來指示按鍵是否按下,使電梯在運(yùn)行過程中乘客能清楚的了解按鍵被按的狀態(tài)。這極大的減少了乘客按錯鍵或重復(fù)按鍵的情況。因為在該設(shè)計中每個LED小燈的明滅狀態(tài)和按鍵一樣互不影響,所以每個小燈分別與相應(yīng)的GPIO口相連。這樣雖然占用了較多的GPIO口,但是這樣做極大地降低了電路設(shè)計的難度和復(fù)雜性,也給編程帶來了一些方便。2.2

21、.4數(shù)碼管顯示器設(shè)計方案數(shù)碼管功耗雖然比液晶顯示器大而且顯示09及AF,但其驅(qū)動電路簡單,使用方法簡單并且價格便宜。本設(shè)計中電梯只有三層,因而在電梯運(yùn)行時只需顯示電梯所在層數(shù)為13。綜合考慮選擇數(shù)碼管用來顯示層數(shù)比較適合。同上述鍵盤和小燈一樣,在本設(shè)計中采用了4位8段數(shù)碼管的段選段直接和相應(yīng)的GPIO口相連接。這樣連接雖然占用了較多的GPIO口,但是這樣做省略了譯碼鎖存電路。極大地降低了電路設(shè)計的難度和復(fù)雜性。由于這四位數(shù)碼管用于顯示電梯內(nèi)部和每層電梯外部電梯所在的層數(shù)并且顯示的層數(shù)都一樣,所以將它們的為選段接到一塊,接上有效電平。2.2.5電機(jī)驅(qū)動設(shè)計方案本設(shè)計在電梯驅(qū)動過程中使用了電機(jī)驅(qū)動

22、模塊,使用了直流電機(jī)。這是因為直流電機(jī)價格低廉、控制簡單。在使用電機(jī)時通過電機(jī)驅(qū)動模塊只需兩個GPIO口引腳,并通過PWM脈沖就能很方便的控制直流電機(jī)的轉(zhuǎn)動、停止、正轉(zhuǎn)、反轉(zhuǎn)以及轉(zhuǎn)速。第3章 系統(tǒng)硬件設(shè)計在上一章中,通過討論獲得了最合適的設(shè)計方案。在這一章中,我們將通過在stm32開發(fā)板上實現(xiàn)這一方案。3.1 硬件系統(tǒng)的總體設(shè)計使用stm32開發(fā)板來完成設(shè)計,首先把鍵盤、LED指示小燈、4位8段數(shù)碼管、電機(jī)驅(qū)動模塊、電機(jī)與stm32開發(fā)板上的相應(yīng)引腳相連接。然后把stm32開發(fā)板與+5V電源相連。其連接方式如下:將PB.8PB.15分別與數(shù)碼管的啊a、b、c、d、e、f、g、dp段相連,將數(shù)碼

23、管的共陽端接高電平,為選段接地;將PB.0、PB.1、PB.5、PB.6、PC.10PC.13、PA.3、PA.4分別與相應(yīng)的LED小燈相連;將PC.0PC.8分別與鍵盤相應(yīng)的鍵位鏈接將PA.5、PA.6與電機(jī)驅(qū)動模塊連接并將模塊的輸出端與直流電機(jī)連接,將電機(jī)驅(qū)動模塊與高于+5V的電源相連。3.2 硬件系統(tǒng)的部分設(shè)計3.2.1 鍵盤硬件電路設(shè)計本設(shè)計的鍵盤有九個獨(dú)立的彈性小按鍵構(gòu)成,所有鍵盤的公共端接地另一端與分別與相應(yīng)的GPIO口相連。所有的GPIO口都設(shè)置成上拉輸入電平觸發(fā)模式。一旦小健按下相應(yīng)的引腳與地接通呈低電平,當(dāng)程序進(jìn)行按鍵查詢時到該引腳為低電平,表示按鍵被按下。此時系統(tǒng)點亮相應(yīng)的

24、指示燈,隨后按鍵彈起該引腳恢復(fù)高電平。系統(tǒng)根據(jù)小燈的狀態(tài)立即或等待執(zhí)行相應(yīng)的操作。之后系統(tǒng)繼續(xù)檢測其他按鍵,按鍵之間互不影響。鍵盤電路如下圖3.1。按鍵再按下時由于彈性小按鍵機(jī)械特性,在按鍵按下和彈起的瞬間會有抖動現(xiàn)象,抖動的時間一般為510ms。這個情況在stm32對按鍵進(jìn)行查詢時造成誤判,嚴(yán)重影響了按鍵的穩(wěn)定性和電梯運(yùn)行時系統(tǒng)判斷的準(zhǔn)確性。所以在編寫程序時要在按鍵查詢程序里加上去抖程序。 圖3.1鍵盤電路 圖3.2按鍵按下時電壓變化3.2.2 LED指示燈硬件電路設(shè)計LED指示等電路是由11個相互獨(dú)立的顏色不同的LED小燈構(gòu)成。它們的正極都通過一個510 接+5V電源,負(fù)極與stm32相應(yīng)

25、的引腳GPIO口連接。所有的GPIO口都設(shè)置成上拉的推挽輸出模式。其中兩個LED燈為系統(tǒng)模擬開門關(guān)門狀態(tài)的指示燈,剩下的九個LED指示燈分別用作鍵盤的九個獨(dú)立按鍵的指示燈來指示按鍵是否被按過的狀態(tài)。當(dāng)系統(tǒng)按鍵查詢程序查詢到有按鍵被按下時,系統(tǒng)立使stm32相應(yīng)的GPIO口輸出為低電平,點亮相應(yīng)的指示小燈。系統(tǒng)會一直保持該LED指示燈的點亮狀態(tài)直到系統(tǒng)完成電梯相應(yīng)的操作,然后熄滅小燈。小燈之間互不影響。LED指示燈的電路原理圖如下。圖3.2 LED指示燈電路原理圖3.2.3 八段數(shù)碼管硬件電路設(shè)計因此三級管基極接地,發(fā)射極接+5V電源。八段數(shù)碼管顯示器電路原理圖如下圖3.3.不管幾位數(shù)碼管,其顯

26、示原理都是一樣都是靠點亮內(nèi)部的發(fā)光二極管來發(fā)光。從圖3.4(a)可看出,一位數(shù)碼管的引腳10個顯示一個8字需要7個小段,另外還有一個小數(shù)點,所以其內(nèi)部一共有8個小的發(fā)光二極管,最后還有一個公共端生產(chǎn)商為了封裝統(tǒng)一單位數(shù)碼管都封裝10個引腳,其中第3個引腳和第8個引腳是連在一起的。而的公共端又可以分為共陽極和共陰極,圖3.1.4(b)為共陰極內(nèi)部原理圖,圖3.1.4(c)為共陽極內(nèi)部原理圖4。共陽極數(shù)碼管內(nèi)部所有發(fā)光的陽極連在一起的接高電平,陰極是互相獨(dú)立的。它的段選段有a、b、c、d、e、f、g、dp。當(dāng)想要某一段點亮?xí)r就使這一段輸入為低電平就行了。例如想要顯示數(shù)字1,那么給b、c低電平,其他

27、的給高電平就能夠顯示數(shù)字1了。因此我們在用數(shù)碼管為顯示器來顯示數(shù)字09時,首先要對其進(jìn)行編碼,當(dāng)要顯示某個數(shù)字式像數(shù)碼管送入相應(yīng)的編碼就可以顯示該數(shù)字了。然而共陰極的數(shù)碼管正好和共陽極的相反,要想點亮數(shù)碼管a、b、c、d、e、f、g、dp中的某一段即必須使該端的引腳輸出為高電平。 圖3.3數(shù)碼管顯示器電路原理圖 (a)引腳 (b)共陰極 (c)共陽極圖3.4數(shù)碼管內(nèi)部原理圖3.2.4電機(jī)驅(qū)動模塊硬件電路電機(jī)驅(qū)動模塊硬件電路主要由L298N直流電機(jī)驅(qū)動芯片和其外圍電路構(gòu)成,其電路原理圖如下圖3.5所示。L298N是SGS公司的產(chǎn)品,內(nèi)部包含4通道邏輯驅(qū)動電路,是一種二相和四相電機(jī)的專用驅(qū)動器,即

28、內(nèi)含二個H橋的高電壓大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn)TTL邏輯電平信號,可驅(qū)動46V、2A以下的電機(jī)。其引腳排列如下圖3.6所示。OUT1、OUT2和OUT3、OUT4之間分別接2個電機(jī)IN1、IN2、IN3、IN4引腳從單片機(jī)接輸入控制電平,控制電機(jī)的正轉(zhuǎn)反轉(zhuǎn)。圖3.5直流電機(jī)驅(qū)動模塊原理圖L298N邏輯狀態(tài)表表3.3如下:左電機(jī)右電機(jī)左電機(jī)右電機(jī)IN1IN2IN3IN41010正轉(zhuǎn)正轉(zhuǎn)1001正轉(zhuǎn)反轉(zhuǎn)1011正轉(zhuǎn)停0110反轉(zhuǎn)正轉(zhuǎn)1110停正轉(zhuǎn)0101反轉(zhuǎn)反轉(zhuǎn)表3.3第4章 系統(tǒng)軟件設(shè)計4.1 主程序設(shè)計電梯控制系統(tǒng)程序是在Keil的環(huán)境下使用C語音編寫的。由于使用的是stm32開發(fā)板,在編

29、程時可以進(jìn)行模塊化編程,即把程序分成一個個功能模塊進(jìn)行編寫。這樣使編程過程更加規(guī)范化,程序結(jié)構(gòu)更加清晰便于閱讀,程序在編譯過程中更易查錯與修改,也便于在日后編程時遇到需要使用相同或相似的子程序模塊時可以直接把以前編寫過的模塊直接拿來使用或修改后使用,使以后的編程更加方便容易。因此程序可分為樓層算法模塊、開門關(guān)門控制模塊、電機(jī)控制模塊、按鍵查詢模塊、顯示模塊。該電梯以共有3層。其中電梯的層數(shù)判斷是通過控制電機(jī)轉(zhuǎn)動時間來進(jìn)行的,即電梯轉(zhuǎn)動5s為電梯運(yùn)行通過一層的高度。其主程序流程圖如下圖4.1所示:當(dāng)前樓層是否是目的層下面是否需要電梯電梯當(dāng)前運(yùn)行方向上面是否需要電梯電梯下移顯示層數(shù)電梯停止顯示、開

30、門電梯上移顯示層數(shù)程序初始化判斷所在的樓層并顯示是否需要電梯反向是上行下行否當(dāng)前樓層是否是目的層電梯停止顯示、開門開始反向是是是否否否 圖4.1程序流程圖在主程序首先要對把各個字程序模塊的路徑加載進(jìn)去,然后在主函數(shù)中首先要進(jìn)行系統(tǒng)時鐘設(shè)置和延時初始化,然后要對LED指示燈、按鍵、電機(jī)驅(qū)動模塊、數(shù)碼管等與之連接的硬件接口進(jìn)行初始化。主程序如下:int main(void)u8 F=1;LED_O=1;LED_C=0;Stm32_Clock_Init(9); /系統(tǒng)時鐘設(shè)置delay_init(72); /延時初始化 LED_Init(); /初始化與LED連接的硬件接口KEY_Init(); /

31、初始化與按鍵連接的硬件接口uart_init(72,9600);motor_init();/ 初始化與motor連接的硬件接口disp_init();/ 初始化與disp連接的硬件接口在寫主函數(shù)時為了保證程序一直循環(huán)下去,要在主函數(shù)中寫一個while(1)是循環(huán)然后在這個死循環(huán)中寫出電梯控制系統(tǒng)的主程序。電梯系統(tǒng)在開始運(yùn)行時它的初始狀態(tài)有3種可能,電梯從第一層開始運(yùn)行,電梯從第二層開始運(yùn)行和電梯從第三層開始運(yùn)行。下面先介紹電梯從第一層開始時的運(yùn)行情況。系統(tǒng)在初始化時,默認(rèn)電梯是從第一層開始運(yùn)行。一但有人要到第二層或第三層,或者第二層第三層有人需要電梯就上行。在這之前,軟件系統(tǒng)會通過if語句進(jìn)行

32、判定,是否與上述情況相對應(yīng)的按鍵被按下,即是否存在LED2=0或LED2_U=0或LED2_D=0或LED3=0或LED3_D=0。若if語句判定條件成立,那么系統(tǒng)控制電梯上行。當(dāng)?shù)竭_(dá)第二層時,系統(tǒng)會再次通過if語句判定,是否第二層是電梯所要到的層數(shù),若是則電梯停止并打開電梯門,若不是則電梯繼續(xù)上行到達(dá)第三層。當(dāng)電梯在第二層停下時系統(tǒng)會再次通過if語句進(jìn)行判定,不過此時上行優(yōu)先。如果有上行的要求,即if語句查詢到LED3=0|LED3_D=0,那么電梯會先進(jìn)行上行,滿足上行要求。如沒有,則系統(tǒng)會再使用if語句進(jìn)行判定。若有下行要求,即if語句查詢到LED1=0|LED1_U=0,則系統(tǒng)執(zhí)行下行

33、命令。while(1)disp(F); /顯示當(dāng)前樓層KEY_LED();if(F=1) /如果處于第一層LED_O=1; /電梯門正處于關(guān)閉狀態(tài)LED_C=0;disp(F);if(LED1_U=0) /如果第一層電梯外有人按上行鍵delay_ms(100); LED_O=0; /延時100ms后開門上行鍵指示燈滅LED_C=1;LED1_U=1;door(F); /電梯轎廂開關(guān)門控制子程序調(diào)用door(F);if(LED2=0|LED2_U=0|LED2_D=0|LED3=0|LED3_D=0) /如果有人要到第2層或第3層,或者第二層第三層有人需要電梯motor1(F); /調(diào)用電機(jī)控制

34、子程序上行F+;disp(F); /顯示電梯當(dāng)前所在樓層if(LED2=0|LED2_U=0|LED2_D=0)/如果第二層是電梯所要到的層數(shù)LED_C_K=1;LED_C_K=1;IN1=1;IN2=1; /電機(jī)停止,電梯停止在第2層LED2=1;LED2_U=1;LED2_D=1; /熄滅第二層相對應(yīng)的鍵盤指示燈delay_scan_s(1);LED_O=0;LED_C=1; /電梯開門door(F);if(LED3=0|LED3_D=0) /如果有人要上第三層或第三層有人需要電梯 motor1(F); /電梯上行 F+; disp(F); /到達(dá)第三層后顯示電梯所在樓層 LED1=1;

35、LED2=1; LED3=1; LED3_D=1; LED_C_K=1; LED_C_K=1; /熄滅所有按鍵指示燈 IN1=1; IN2=1; /電梯停止 delay_scan_s(1); LED_O=0; LED_C=1; /電梯開門 door(F);else if(LED1=0|LED1_U=0) /另外在第二層時如果有人要到第第1層或第一層有人需要電梯motor1(F); /電梯下行F-;disp(F); /電梯到達(dá)第一層時顯示電梯所在樓層LED1=1;LED2=1;LED3=1;LED1_U=1;LED_C_K=1;LED_C_K=1; /熄滅所有按鍵指示燈 delay_scan_s

36、(1);LED_O=0;LED_C=1; /開門door(F);else if(LED3=0|LED3_D=0) / /另外在第二層時如果有人要到第第3層或第3層有人需要電梯motor1(F); /電梯上行 F+;disp(F); /電梯到達(dá)第3層時顯示電梯所在樓層LED1=1;LED2=1;LED3=1;LED3_D=1;LED_C_K=1;LED_C_K=1; /熄滅所有按鍵指示燈IN1=1;IN2=1;delay_scan_s(1);LED_O=0;LED_C=1; /開門door(F); 如果開始時電梯停在第二層,那么電梯會有兩種運(yùn)行狀態(tài),即上行和下行,但此時下行的優(yōu)先級比上行的高。系

37、統(tǒng)會通過if語句先行判斷是否有下行要求,即if是否查詢到LED2_U=0|LED2_D=0,若是則系統(tǒng)會控制電梯下行。否則,系統(tǒng)會通過if語句再次行判斷是否有下行要求,即if是否查詢到LED3=0|LED3_D=0,若是則系統(tǒng)會控制電梯上行。else if(F=2) disp(F); /顯示電梯所在的層數(shù)if(LED2_U=0|LED2_D=0) /如果電梯外有人按上行鍵或下行鍵delay_ms(100);LED_O=0;LED_C=1; /電梯開門LED2_U=1;LED2_D=0; door(F);door(F);if(LED3=0|LED3_D=0)/如果有人到第三層或第三層有人需要電梯

38、 motor1(F); /電梯上行F+;disp(F); /顯示電梯所到達(dá)的層數(shù)LED1=1;LED2=1;LED3=1;LED3_D=1;LED_C_K=1;LED_C_K=1; /熄滅所有按鍵燈delay_scan_s(1);LED_O=0;LED_C=1; /開門door(F);else if(LED1=0|LED1_U=0) /如果有人到第1層或第1層有人需要電梯motor1(F); /電梯下行F-;disp(F); /顯示電梯所到達(dá)的層數(shù)LED1=1;LED2=1;LED3=1;LED1_U=1;LED_C_K=1;LED_C_K=1; /熄滅所有按鍵燈delay_scan_s(1)

39、;LED_O=0;LED_C=1; /開門door(F);如果電梯開始時處于第三層,這時電梯只能下行。軟件系統(tǒng)會通過if語句進(jìn)行判定,是否與上述情況相對應(yīng)的按鍵被按下,即是否存在LED2=0或LED2_U=0或LED2_D=0或LED1=0或LED1_U=0。若if語句判定條件成立,那么系統(tǒng)控制電梯下行。當(dāng)?shù)竭_(dá)第二層時,系統(tǒng)會再次通過if語句判定,是否第二層是電梯所要到的層數(shù),若是則電梯停止并打開電梯門,若不是則電梯繼續(xù)上行到達(dá)第三層。當(dāng)電梯在第二層停下時系統(tǒng)會再次通過if語句進(jìn)行判定,不過此時下行優(yōu)先。如果有下行的要求,即if語句查詢到LED1=0|LED1_U=0,那么電梯會先進(jìn)行下行,滿

40、足下行要求。如沒有,則系統(tǒng)會再使用if語句進(jìn)行判定。若有上行要求,即if語句查詢到LED3=0|LED3_D=0,則系統(tǒng)執(zhí)行下行命令。else if(F=3) /如果開始時電梯停在第二層disp(F); /顯示電梯當(dāng)前所在層數(shù)if(LED3_D=0) /如果第三層有人按下行鍵delay_ms(100);LED_O=0; /電梯門打開LED_C=1;LED1_U=1;door(F);door(F);if(LED2=0|LED2_D=0|LED2_U=0|LED1=0|LED1_U=0) /如果有人要到第2層或第1層,或者第2層第1層有人需要電梯motor1(F);/電梯下行F-;disp(F);

41、 /到達(dá)第2層顯示層數(shù)if(LED2=0|LED2_D=0|LED2_U=0) /如果第二層時所要到達(dá)的樓層LED_C_K=1;LED_C_K=1;IN1=1;IN2=1;LED2=1;LED2_U=1;LED2_D=1; /電梯停止延時開門,熄滅相對應(yīng)的的按鍵指示燈delay_scan_s(1);LED_O=0;LED_C=1;door(F);if(LED1=0|LED1_U=0) /如果電梯還要到第一層 motor2(); /電梯下行 F-;disp(F); /到達(dá)第一層后顯示電梯到達(dá)第一層LED1=1;LED2=1;LED3=1;LED1_U=1;LED_C_K=1;LED_C_K=1;

42、 /熄滅相應(yīng)的按鍵指示燈IN1=1;IN2=1; /電梯停止delay_scan_s(1);LED_O=0;LED_C=1; /延時1s后開門door(F);else if(LED3=0|LED3_D=0) /如果電梯的目的層為第3層motor2(); /電梯上行 F+;disp(F); /到達(dá)第3層后顯示電梯到達(dá)第3層LED1=1;LED2=1;LED3=1;LED3_D=1;LED_C_K=1;LED_C_K=1; /熄滅相應(yīng)的按鍵指示燈IN1=1;IN2=1; /電梯停止delay_scan_s(1);LED_O=0;LED_C=1; /延時1s后開門door(F);else if(LE

43、D1=0|LED1_U=0) 如果電梯還要到第一層motor1(F); /電梯下行 F-;disp(F); /到達(dá)第一層后顯示電梯到達(dá)第一層LED1=1;LED2=1;LED3=1;LED1_U=1;LED_C_K=1;LED_C_K=1; /熄滅相應(yīng)的按鍵指示燈IN1=1;IN2=1; /電梯停止delay_scan_s(1);LED_O=0;LED_C=1; /延時1s后開門door(F); 4.2 顯示程序設(shè)計系統(tǒng)使用4位8段數(shù)碼管,來顯示電梯所在樓層的層數(shù)。在本設(shè)計中沒有使用譯碼器芯片,而是將數(shù)碼管段選端的a、b、c、d、e、f、g直接與stm32開發(fā)板的GPIO口的PB.8PB.15

44、連接。在編寫顯示子程序模塊時要對其進(jìn)行編碼,其中數(shù)字09的編碼依次分別為:0xC0FF、0xF9FF、0xA4FF、0xB0FF、0x99FF、0x92FF、0x82FF、0xF8FF、0x80FF、0x90FF。然后要初始化PB.8PB.9為輸出端口,設(shè)置為高電平,并使能GPIOB端口的時鐘。數(shù)碼管的顯示程序如下:void disp_init()RCC->APB2ENR|=1<<3; /使能PORTB時鐘GPIOB->CRH&=0X00000000; GPIOB->CRH|=0X33333333;/PB0PB7 推挽輸出 GPIOB->ODR|=0

45、X0000FF00;/PA8 輸出高void disp(u8 num) GPIOB->ODR|=0X0000FF00;GPIOB->ODR&=tablenum;/送入要顯示的數(shù)據(jù)4.3 LED指示燈程序設(shè)計在該電梯控制系統(tǒng)中一共使用11個不同顏色的LED指示燈,其中有三種顏色紅、黃、綠。在程序中我給每個小燈都命了以名稱,每個小燈都代表了電梯在運(yùn)行過程中不同的情況,這使我們在編程時更加簡便。其中有三個黃色的小燈被命名為LED1、LED2、LED3,它們分別是KEY0、KEY1、KEY2這三個按鍵的指示燈,和按鍵代表電梯內(nèi)部1、2、3按鍵;有兩個綠色小燈被命名為LED_O和LE

46、D_O_K,其中LED_O代表電梯運(yùn)行時的電梯開門狀態(tài),另一個LED_O_K作為KEY3按鍵的指示燈,它們合在一起代表電梯內(nèi)部的開門鍵。有6個紅色的小燈它們分別被命名為LED_C、LED_C_K、LED1_U、LED2_U、LED2_D、LED3_D,其中LED_C代表電梯運(yùn)行時的電梯關(guān)門狀態(tài),其余的分別是按鍵KEY4KEY8指示燈。在這些紅色小燈和按鍵中,KEY4和與之對應(yīng)的小燈LED_C_K代表著電梯內(nèi)部的關(guān)門鍵,LED1_U與KEY5代表電梯外部第一層的上行鍵,LED2_U與KEY6代表電梯外部第二層的上行鍵,LED2_D與KEY7代表電梯外部第二層的下行鍵,LED3_D與KEY8代表電

47、梯外部第三層的下行鍵。LED指示燈的程序如下:void LED_Init(void)RCC->APB2ENR|=1<<2; / 使能時鐘PORTARCC->APB2ENR|=1<<3; /使能PORTB時鐘RCC->APB2ENR|=1<<4; /使能PORTC時鐘 GPIOA->CRL&=0XFFF00FFF;/PA.3,PA.4推挽輸出GPIOA->CRL|=0X00033000;GPIOA->ODR|=0X00000018; /PA.3,PA.4輸出高 GPIOB->CRL&=0XF00FFF0

48、0; GPIOB->CRL|=0X03300033;/PB.0PB.1,PB.5PB.6 推挽輸出 GPIOB->ODR|=0X00000063; /PB.0PB.1,PB.5 輸出高 GPIOC->CRH&=0XFF00000F;GPIOC->CRH|=0X00333330;/PC.9PC.13推挽輸出GPIOC->ODR|=0X00003E00; /PC.9PC.13輸4.3 鍵盤查詢程序設(shè)計在電梯控制系統(tǒng)中,各個按鍵是互不影響相互獨(dú)立的。因而在編寫按鍵查詢時程序時要使每一個按鍵的查詢程序互不影響。所以不能使用else if或else等相互間有影響的語

49、句。同時還要設(shè)置某一個按鍵按下其相應(yīng)的按鍵指示燈就被點亮。在按鍵的硬件設(shè)計中還提到了彈性按鍵的抖動情況,為了消除抖動在編程過程中用if語句和延時函數(shù)設(shè)計當(dāng)系統(tǒng)查詢到有按鍵按下時延時10ms后再對該鍵查詢一次,這樣就可以避免了接抖動對鍵盤穩(wěn)定性的影響。將與鍵盤連接的GPIO口PC.0PC.8設(shè)置成上拉輸入,并使能GPIOC的時鐘。鍵盤查詢程序如下:void KEY_LED(void)if(KEY0=0|KEY1=0|KEY2=0|KEY3=0|KEY4=0|KEY5=0|KEY6=0|KEY7=0|KEY8=0)delay_ms(10);if(KEY0=0)LED1=0;if(KEY1=0)LED2=0;if(KEY2=0)LED3=0;if(KEY3=0)LED_O_K=0;if(KEY4=0)LED_C_K=0;if(KEY5=0)LED1_U=0;if(KEY6=0)LED2_U=0;if(KEY7=0)LED2_D=0;if(KEY8=0)LED3_D=0;4.3 門控制程序設(shè)計電梯的門控制是一個復(fù)雜的過程,她需要按鍵有非常高的靈敏度,因此在設(shè)計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論