51單片機主控的停車場車位管理系統設計的實物圖:
0.jpg (53.01 KB, 下載次數: 208)
下載附件
2018-4-14 15:37 上傳
0.png (25.18 KB, 下載次數: 169)
下載附件
2018-4-14 15:37 上傳
資料包文件 含設計報告等:
0.jpg (12.8 KB, 下載次數: 184)
下載附件
2018-4-14 15:37 上傳
目錄
摘要1
1前言 2
11研究的背景及意義 2
12系統概述3
2方案的設計與選擇3
21電源模塊的設計4
22傳感器的選擇4
23主芯片的選擇 4
3系統的硬件設計5
31微處理器電路模塊5
32顯示模塊6
33報警部分8
34停車位模擬停車模塊8
系統的軟件設計9
41主程序設計9
42倒計時中斷程序設計10
43鍵盤中斷程序設計11
系統分析與調試12
51keil運行圖12
52 proteus仿真圖13
53實物圖13
6成果總結14
結束語15
參考文獻16
附錄:源代碼17
停車場車輛管理系統設計與開發 摘要:伴隨著科技的飛速發展,交通工具的越來越普及。汽車作為人類社會中最主要的交通工具之一,起著重大作用。隨著人們生活水平的提高,汽車的數量也與日俱增,于是停車正在成為世界性的問題。以前落后的人力停車管理即將被高科技化的自動停車管理系統所取代,高度自動化的停車場管理系統節省了大量時間和人力物資消耗,大大提高了效率。 本論文介紹了利用單片機控制的一種停車場管理系統。它能在任意時間內,根據有效的停車空間,計算能夠停泊的車輛數量,并且使用自動而可靠的完成車輛的進出。還能夠顯示是否有停放的場地以及是否有車輛進、出停車場。 本設計具有結構簡單,計數準確,經濟效益高,造價低廉,可靠性高,維修方便,研制周期短,操作簡單等優點。經實驗證明,這套系統軟硬件設計合理,各項性能良好,經過系統擴展與升級,可以有效的滿足各種流量統計的需要。
1.1研究的背景及意義隨著經濟的增長及城市化進程的加快,小汽車進入家庭,私人擁有量越來越多。由調查研究發現許多的小區在停車管理上存在著一定的局限性,為了方便有效的實現小區車輛管理系統使小區停車場安全、快捷運轉,必須配備一套綜合小區車輛統計計數系統。 單片微型計算機(簡稱單片機)也叫做微型控制器,自從20世紀70年代問世以來,得到了快速發展,從早期的8位機到現在的32位機,其硬件資源和軟件資源在不斷豐富與完善。單片機由于其集成度高、體積小、抗干擾能力強和價格低廉、具有獨特的控制功能,它已經成為計算機世界中的重要成員。在一個應用系統中,只用一個單片機。但是單片機應用的意義絕不僅限于它的廣闊范圍以及所帶來的經濟效益上,更重要的還在于,單片機的應用正從根本上改變著傳統的控制系統設計思想和設計方法。從前必須由模擬電路或數字電路實現的大部分控制功能,現在已能使用單片機通過軟件(編程序)方法實現了。這種以軟件取代硬件并能提高系統性能的控制技術必將隨著單片機應用的推廣普及而不斷發展完善。 隨著社會的發展,數據統計的重要性也是十分顯著的。它是計算機與外部物理世界連接的橋梁。是統計管理的關鍵步驟,它在現代信息領域發揮著重要作用,是信息產品不可或缺的重要組成部分。因此選擇基于單片機數據流量統計系統設計是很有意義也是很有必要的。 本設計就是利用“單片機”控制的車輛流量統計系統。隨著國民經濟的增長,人民生活質量的提高,私家車逐漸走進人們的生活,可是隨之而來的問題也擺在了人們面前,那就是城市的空間越來越緊張,停車位難求,特別是到了法定假日出去自駕游,進入停車場卻發現已滿,只能去另尋車位。該設計就是針對此類問題而做,該設計不僅能直觀的顯示停車場的車流量,還能在車位滿時發出報警。不但可方便車主了解停車場車位情況,做出適當的選擇,又方便物業公司的管理。 該設計價格低廉,計數準確,可廣泛應用于停車場、商場、房地產公司以及物業管理部門等。由于該設計的價格優勢、安全性以及大量應用后可導致管理成本的下降,中國人口眾多,可想而知其可以為產品生產企業創造多少經濟價值。
1.2系統概述 本系統包括:電源模塊、傳感器模塊、顯示模塊、手動鍵盤輸入模塊、車輛車位模擬模塊等。它可以實現控制的開啟、顯示停車場現有車輛數和已停放過車輛數、人工的設置總車位數以及剩余車位數的數值顯示等功能。并且擁有16個模擬的停車位,用來顯示車輛停放的具體位置。 系統的特點: (1)由于本系統采用電子元件無需人工管理。 (2)自動顯示停車場的車位狀態,進出和停放車輛統計。 (3)統計小區當天已停放車輛總數,并且顯示停放位置。 (4)本系統適用于任意停車場。 (5)檢測小區車位車輛是否已滿,報警指示燈閃爍。 系統的模擬框圖: 
第2節方案設計及選擇
該系統用于檢測是否有車輛進出,是否有空余車位,應用單片機來控制其他模塊以實現對車輛的數目、狀態等的加減計數和狀態顯示,并利用單片機中的定時系統對車輛進出的時間限制以及設定,鍵盤系統的輸入可以人工控制總車位數以及剩余車位數數值的顯示。
2.1電源模塊的設計 整個系統中電源模塊主要的是提供穩定的電壓。 方案一:整個系統中電源模塊主要的是提供穩定的電壓。該電路輸入單相220v交流電,經過變壓器,全橋整流,穩壓后輸出穩定的5v直流電。 方案二: 該電路直接使用USB 5V供電,直接接入有USB接口的電源適配器即可! 可以具有外接元件少,使用方便,性能穩定,價格低廉等優點,因而得到廣泛應用。因為此系統設計要輸出5V的電壓。 綜上所述:為了簡化電路,使用方便。我們采用現在非常成熟的電源適配器供電。直接接適配器電源5V電。 
2.2傳感器的選擇 方案一:超聲波傳感器發送聲波出去,當有汽車經常時通過反射回來的聲波消耗的時間進行計算。這樣通過不同的距離來判斷是否有汽車經過。優點精度高,小巧方便。 缺點就是使用起來比較復雜,而且也不宜安裝。 方案二:采用紅外線光電傳感器,只要在所測距離內,有障礙物經過時。則輸出一個高電平。當沒有障礙物時輸出低電平。這樣就很好判斷是否有汽車經過。 綜上所述:我們采用了方案二,直接使用光電傳感器來判斷是否有車駛入。
2.3主芯片的的選取 方案一:采用8位微控制器。8位微控制器的典型代表是8051微控制器。8051微控制器是一款入門級微控制器,它內核簡易,應用廣泛,資料齊全,非常適合入門學習。同時它的價格低廉,是一款適用于追求低成本,不追求實時性的電子產品。在我國很長一段時間內,8051微控制器占據了小型家電市場,其中的原因正是超低的成本. 方案二:采用16位微控制器。MSP430微控制器是一款以低功耗聞名的16位微控制器,有許多低功耗的工作模式,采用了精簡指令集(RISC)結構,具有豐富的尋址方式,高效率的查表處理指令。這些特點都保證了用它可以編寫出高效率的源程序。 方案三:采用32位微控制器。Cortex-M0+內核基于ARMv6架構,支持Thumb/Thumb-2子集ISA,單核心,采用低成本的90nmLP工藝制造,核心面積僅0.04mm2,每MHz單位頻率消耗的電流、功耗分別有9μA、11μW,是現今其它8/16位微控制器的大約三分之一,而性能上又比它們高出很多。飛思卡爾的Kinetis L系列微控制器基于ARM Cortex-M0+內核,是目前市場上能效極高的32位微控制器,每微安數據吞吐量居業內領先水平;超低功耗模式多種靈活的功率模式,適合不同的應用情形,可最大限度延長電池壽命;多種技術優化功耗,包括90nm薄膜存儲(TFS)技術、時鐘和電源門控技術,以及帶有位處理引擎、外圍交叉橋和零等待閃存控制器的高效平臺等;深度睡眠模式下,可在不喚醒內核的情況下進行智能決策并處理數據。 綜合上述幾種單片機優缺點并且根據實驗要求,就地取材選擇了由STC公司生產的一種價格便宜、低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。
3.1微處理器電路模塊 STC89C52是STC公司生產的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統可編程Flash存儲器。STC89C52使用經典的MCS-51內核,但做了很多的改進使得芯片具有傳統51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統可編程Flash,使得STC89C52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。 具有以下標準功能: 8k字節Flash,512字節RAM, 32 位I/O 口線,看門狗定時器,內置4KB EEPROM,MAX810復位電路,3個16 位定時器/計數器,4個外部中斷,一個7向量4級中斷結構(兼容傳統51的5向量2級中斷結構),全雙工串行口。另外 STC89X52 可降至0Hz 靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。 STC89C52RC單片機參數 ⑴8K字節程序存儲空間; ⑵512字節數據存儲空間; ⑶內帶2K字節EEPROM存儲空間; ⑷可直接使用串口下載;
3.2顯示模塊 顯示部分是LCD1602液晶 一般1602字符型液晶顯示器實物如下圖所示:  
3.2.1液晶簡介 (1)1602LCD主要技術參數: 顯示容量:16×2個字符 芯片工作電壓:4.5—5.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.95×4.35(W×H)mm (2)引腳功能 1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表10-13所示: 編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 | 1 | VSS | 電源地 | 9 | D2 | 數據 | 2 | VDD | 電源正極 | 10 | D3 | 數據 | 3 | VL | 液晶顯示偏壓 | 11 | D4 | 數據 | 4 | RS | 數據/命令選擇 | 12 | D5 | 數據 | 5 | R/W | 讀/寫選擇 | 13 | D6 | 數據 | 6 | E | 使能信號 | 14 | D7 | 數據 | 7 | D0 | 數據 | 15 | BLA | 背光源正極 | 8 | D1 | 數據 | 16 | BLK | 背光源負極 | 3.2.2指令說明 1602液晶模塊內部的控制器共有11條控制指令,如表10-14所示: 序號 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 光標返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | 3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | 4 | 顯示開/關控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | 5 | 光標或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | 6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | 7 | 置字符發生存貯器地址 | 0 | 0 | 0 | 1 | 字符發生存貯器地址 | 8 | 置數據存貯器地址 | 0 | 0 | 1 | 顯示數據存貯器地址 | 9 | 讀忙標志或地址 | 0 | 1 | BF | 計數器地址 | 10 | 寫數到CGRAM或DDRAM) | 1 | 0 | 要寫的數據內容 | 11 | 從CGRAM或DDRAM讀數 | 1 | 1 | 讀出的數據內容 | 3.2.3顯示電路原理圖
3.3報警部分 當小車車庫內停車位為0時,如果有小車繼續駛入時。蜂鳴器就會發出報警聲音來提醒駕駛員。此時駕駛員應該將車停在小區外的停車場。蜂鳴器通過一個PNP型的三極管驅動。三極管的基極接到單片機的P1.7口。 
3.4停車位模擬停車模塊 在此處用16盞LED燈4*4排列,用來模擬停車位。由于51單片機I/O口數量不足,所以使用了74HC595芯片對其進行了擴展。 74HC595是8位串行輸入轉并行輸出移位寄存器。在正常使用時SCLR為高電平,G為低電平。從SER每輸入一位數據,串行輸595是串入并出帶有鎖存功能移位寄存器,它的使用方法很簡單,如下面的真值表,在正常使用時SCLR為高電平, G為低電平。從SER每輸入一位數據,串行輸入時鐘SCK上升沿有效一次,直到八位數據輸入完畢,輸出時鐘上升沿有效一次,此時,輸入的數據就被送到了輸出端。入時鐘SCK上升沿有效一次,直到八位數據輸入完畢,輸出時鐘上升沿有效一次,此時,輸入的數據就被送到了輸出端。 真值表: 
軟件設計是設計中很重要的部分。它關系到一個系統能否實現其預定的要求。
4.1主程序設計 主程序是軟件設計的總體框架,因此主程序的流程圖的設計決定了程序編寫的好壞,該主程序的功能是掃描鍵盤,作出邏輯判斷,控制各種中斷,數據送入顯示模塊。其流程圖如圖14所示。 
在判斷車輛是否進出中:本系統使用了兩個傳感器,一個用來檢測出去的車,一個檢測進來的車。當兩個傳感器同時檢測到車的時候,說明進出的是車輛。當一個傳感器檢測到車輛時,開門。當兩個傳感器都檢測到時,通過邏輯判斷,剩余車位數進行加減。
4.2倒計時中斷程序設計 這個子程序用來計算開門的時間。當時間到時,根據傳感器狀態判斷自動門是否可以關閉。若可以,則關閉,然后退出;若不可以,則再次設定自動門開啟剩余時間,重新進入倒計時。程序流程圖如圖15所示: 
4.3鍵盤中斷程序設計 這一部分包括加、減、兩個鍵,
4.3.1增加鍵 在此程序中,剩余車位不超過最大車位數.流程圖如圖所示:

4.3.2減少鍵 減少鍵的程序段和上圖的增加鍵相似。
5.1 keil運行圖

5.2 proteus仿真圖 
5.3實物圖 
本課題所研究的是通過單片機來實現對停車場的管理,這里用的是51系列芯片。本設計利用液晶顯示屏顯示,可以同時顯示小區內停車位,汽車數,汽車駛入流量和駛出流量。 由于本系統的實現技術要求比較高,而且課題研究的時間倉促,以及本人能力有限,因此還有很多地方存在著不足之處: (1)本系統中的硬件部分不能實現集中控制,這樣就增加了程序的編寫難度,也相應的增加了系統的成本。 (2)系統穩定性需要加強,盡管這種情況不常發生,但是一旦發生就影響系統的運行。 (3)在功能上需要更加完善,本系統沒有設置報警裝置,如果系統發生故障,系統不能做出報警動作,這樣也會影響系統的跟蹤質量。 由于本人能力有限,做出的系統存在不少的問題,希望有更多的人參與其中,最終能做出性能好、精度高的停車場管理系統,以適應越來越多的私家車對停車位的需求。希望有更多的人參與到這項研究中來,性能好、精度高、低成本的控制系統是我們的目標。 結束語
從剛接到課題,我首先是查找一些相關的書籍及資料,并根據實際情況擬定設計方案,從而達到優化方案。在研究設計電路時,最難的是調試了,但在老師和同學的幫助下使得本次設計達到了預定的要求。同時,通過這次課題,在各個方面都有了很大的提高,特別是在理論和實踐結合方面使我受益匪淺,使我大學里學習的理論知識在根本上得到一次最完整的實踐和提高。 此次課題是在劉玉瑩老師的悉心指導下完成的,從開始進入課題到設計的順利完成,她都始終給予我耐心的指導和不懈的支持。老師認真的教學態度,嚴謹的治學精神,以及對學生無微不至的關愛,都深深地感染和激勵著我,使我受益終生,在此表示衷心的謝意! 當然在本次課題中我也深深認識到自己的各個方面的不足之處,本著提高動手能力以及檢測所學知識的目的,我嚴格要求自己,每一環節都認真對待,定期向知道老師報告進展情況和請教不懂的地方,得以完成任務。在這個過程中,我遇到許許多多問題,對待問題要多方法處理,多角度處理。這不但增強了實踐能力,而且懂得了聯系實際的重要性,我堅信這對以后的學習和會有極大的幫助。當然我的設計還存在著一些缺陷,有待于在將來設計中進一步提高。
單片機源程序如下:
- #include <reg52.h> //調用單片機頭文件
- #define uchar unsigned char //無符號字符型 宏定義 變量范圍0~255
- #define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
- #include <intrins.h>
- sbit K1=P1^0;
- sbit K2=P1^1;
- sbit K3=P1^2;
- sbit K4=P1^3;
- sbit beep = P1^7; //蜂鳴器IO口定義
- sbit SH = P3^5;
- sbit ST = P3^6;
- sbit DS = P3^7;
- uchar num_jin;
- uchar num_chu;
- uchar num_car;
- #include "lcd1602.h"
- /***********************1ms延時函數*****************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
- void write_74hc595(unsigned int num)
- {
- int i;
- ST = 0;
- for(i=0; i<16; i++)
- {
- SH = 0;
- if (num & 0x0001)
- {
- DS = 1;
- }
- else
- {
- DS = 0;
- }
- SH = 1;
- num >>= 1;
- }
- ST = 1;
- }
- unsigned int num_2_led(unsigned int num)
- {
- int i;
- unsigned int ret=0;
- if (num > 16)
- return 0xFFFF;
- for(i=0;i<num;i++)
- {
- ret |= 1<<i;
- }
- return ret;
- }
- void key() //獨立按鍵程序
- {
- if(!K1) // 汽車進入
- {
- delay_1ms(20);
- if(!K1)
- {
- while(!K1)
- ;
- if(num_car==16) { beep=0; delay_1ms(200); beep=1;}
- if(num_car<16) { num_car++; if(num_jin<=255) { num_jin++;} }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- write_74hc595(num_2_led(num_car));
- }
- }
- if(!K2) // // 汽車駛出
- {
- delay_1ms(20);
- if(!K2)
- {
- while(!K2);
- if(num_car>=1) { num_car--; if(num_chu<=255) { num_chu++;} }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- write_74hc595(num_2_led(num_car));
- }
- }
- /***********************手動修改小區內停車位*************************************/
- if(!K3) // 人工調節
- {
- delay_1ms(20);
- if(!K3)
- {
- while(!K3);
- if(num_car<16) { num_car++; }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- }
- }
- if(!K4) // // 人工調節
- {
- delay_1ms(20);
- if(!K4)
- {
- while(!K4);
- if(num_car>=1) { num_car--; }
- write_sfm2(1,4,num_jin);
- write_sfm2(1,12,num_chu);
- write_sfm2(2,4,num_car);
- write_sfm2(2,12,16-num_car);
- }
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (42.04 KB, 下載次數: 149)
下載附件
2020-7-12 22:26 上傳
所有資料51hei提供下載:
基于51單片機的停車場車位管理系統.7z
(1.4 MB, 下載次數: 1463)
2020-7-12 22:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|