版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于STM32的智能紅綠燈控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)摘要目前,存在很多智能交通燈的設(shè)計(jì)案例,大多數(shù)是通過51單片機(jī)或者PLC來實(shí)現(xiàn)。本設(shè)計(jì)提出了一種利用STM32單片機(jī)自動(dòng)控制交通燈的的方法。對(duì)交通燈的狀態(tài)預(yù)設(shè)為兩種,一種是普通狀態(tài),在普通狀態(tài)下,交通燈就根據(jù)路口預(yù)設(shè)的時(shí)間進(jìn)行紅、黃、綠燈的交替變化和倒計(jì)時(shí)。另一種是特殊狀態(tài),在特殊狀態(tài)下,由藍(lán)牙模擬對(duì)交通燈進(jìn)行遠(yuǎn)程控制,實(shí)時(shí)調(diào)節(jié)不同交通情況下信號(hào)燈的狀態(tài),充分保證了交通信號(hào)燈在不同的狀態(tài)下可以來回切換,進(jìn)一步完善了交通燈的控制系統(tǒng)。根據(jù)stm32f103c8t6單片機(jī)的原理和在實(shí)際應(yīng)用中的特點(diǎn),本文給出了軟件和硬件設(shè)計(jì)的總體方案和各個(gè)模塊的詳細(xì)介紹,對(duì)于在STM32單片在設(shè)計(jì)交通燈的過程中有可能遇到的各種問題都有涉足。關(guān)鍵詞交通燈;STM32單片機(jī);數(shù)碼管;藍(lán)牙;控制目錄TOC\o"2-2"\h\z\t"標(biāo)題1,1"1引言 11.1交通燈的發(fā)展和趨勢(shì) 11.2交通燈的研究意義 12設(shè)計(jì)方案和工作原理 22.1設(shè)計(jì)方案 22.2工作原理 33STM32單片機(jī)模塊 43.1最小系統(tǒng)組成 43.2主要邏輯函數(shù)的實(shí)現(xiàn) 74LED信號(hào)燈模塊 94.1LED驅(qū)動(dòng)電路 94.2LED初始化程序 95數(shù)碼管模塊 115.1數(shù)碼管模塊介紹 115.2數(shù)碼管驅(qū)動(dòng)電路 125.3數(shù)碼管顯示程序 126藍(lán)牙模塊 136.1HC-05藍(lán)牙模塊介紹 136.2串口通信 15結(jié)論 18參考文獻(xiàn) 19附錄 201引言交通燈的發(fā)展和趨勢(shì)交通燈的出現(xiàn)已有一百多年的歷史,1868年12月10世界上出現(xiàn)了第一盞手搖煤氣交通燈。1914年,美國(guó)克里夫蘭市首次使用的電信號(hào)燈。由于技術(shù)的限制,交通燈一直以來采用人工切換的方式。直到晶體管和集成電路板的誕生,交通燈才實(shí)現(xiàn)從人工控制到自動(dòng)控制的突破。但是當(dāng)時(shí)的交通燈沒有統(tǒng)一的規(guī)定和控制,直到上個(gè)世紀(jì)70年代微軟共公司的崛起,才使得交通燈有了統(tǒng)一的處理系統(tǒng)。當(dāng)前,國(guó)內(nèi)大多數(shù)交通燈還一直沿用以往的控制系統(tǒng)。大部分都是紅燈、黃燈和綠燈進(jìn)行交替切換。當(dāng)面對(duì)龐大的車流量量和人流量也受到了很多的限制。未來交通燈的發(fā)展趨勢(shì),主要體現(xiàn)在智能化,主要包括以下幾個(gè)方面:可根據(jù)車流量自動(dòng)調(diào)節(jié)路口時(shí)間??筛鶕?jù)路口突發(fā)狀況,自動(dòng)調(diào)配時(shí)間??蛇h(yuǎn)程控制多個(gè)交通燈。交通燈的研究意義眾所周知,交通運(yùn)輸在城市發(fā)展中起著至關(guān)重要的作用。隨著21世紀(jì)汽車工業(yè)的飛速發(fā)展和人們生活水平的不斷提高,每個(gè)家庭都有自己的汽車。汽車的爆發(fā)式增長(zhǎng)和城市初期建設(shè)道路無法拓寬是導(dǎo)致交通擁堵的主要原因。雖然城市的建設(shè)者們也紛紛使用各種措施去改善交通狀況,例如修建地鐵和城市快速路。但是面對(duì)交通高峰時(shí)期仍然是捉襟見肘。如何有效的緩解交通問題已經(jīng)成了各大城市關(guān)注的熱點(diǎn)問題之一。從目前來看,想要徹底的改變交通狀況,就需要城市建設(shè)者和規(guī)劃者們不惜成本的對(duì)城市道路進(jìn)行拓寬和重新布局。顯然,從短期來講這是不現(xiàn)實(shí)的。短期想要改善交通狀態(tài),就不得不把目光放在路口的交通信號(hào)燈上。在過去的幾十年,交通燈已經(jīng)出現(xiàn)在各個(gè)城市的大小路口。雖然它們?cè)诋?dāng)時(shí)可以很好的改善交通狀況。但是在目前龐大的交通參與者的情況下,顯然不能滿足。21世紀(jì)是情報(bào)和信息的時(shí)代,由微型計(jì)算機(jī)控制的智能交通燈,是改善交通狀況的一個(gè)重要研究方向。讓交通燈根據(jù)不同的路口狀態(tài)實(shí)現(xiàn)自動(dòng)控制和遠(yuǎn)程控制交通燈對(duì)目前的城市交通改善有著很現(xiàn)實(shí)的意義。同時(shí),在未來越來越智能的交通控制系統(tǒng)才能適應(yīng)城市的發(fā)展需求。因此,研究智能交通燈有著長(zhǎng)遠(yuǎn)而又重要的意義。2設(shè)計(jì)方案和工作原理2.1設(shè)計(jì)方案本次設(shè)計(jì)的方案是在十字路口設(shè)計(jì)一個(gè)智能交通燈。在四個(gè)路口處分別各有一個(gè)紅色,黃色和綠色的LED燈。共有12個(gè)LED燈。此外,每個(gè)交叉點(diǎn)都有一個(gè)0.28英寸的兩位數(shù)公共陽(yáng)極數(shù)碼管來顯示倒計(jì)時(shí),總共有四個(gè)數(shù)碼管。其中,在東西方向和南北方向上的同種顏色的小燈由STM32單片機(jī)的同一個(gè)GPIO控制,同樣,同方向上的數(shù)碼管片選端也由單片機(jī)的同一個(gè)IO口控制。這樣既可以達(dá)到同步的效果又可以簡(jiǎn)化電路。在正常狀態(tài)下南北和東西方向的紅綠燈依次交替倒計(jì)時(shí)改變燈色,實(shí)現(xiàn)通行和禁止。當(dāng)在特殊情況下又分為以下表幾種狀態(tài)。命令東西LED南北LED東西數(shù)碼管南北數(shù)碼管禁止通行紅紅9999東西通行綠紅9999南北通行紅綠9999夜間模式黃黃0000復(fù)位————————(1)禁止通行:當(dāng)?shù)缆烦霈F(xiàn)特殊情況不允許車輛通過時(shí),通過手機(jī)向藍(lán)牙發(fā)送禁止通行的命令,東西南北各個(gè)路口都會(huì)顯示紅燈,并且數(shù)碼管顯示持續(xù)的99秒,無倒計(jì)時(shí)。此時(shí)所有路口的車輛都不允許通過。當(dāng)?shù)诙谓拥酱嗣罘祷刂骱瘮?shù)。(2)東西通行或南北通行:當(dāng)?shù)缆酚龅骄o急狀況,例如救護(hù)車通過時(shí),只允許某一個(gè)方向通行,當(dāng)用手機(jī)藍(lán)牙向單片機(jī)發(fā)送某一個(gè)方向通行的的命令后,這個(gè)方向就會(huì)顯示持續(xù)的綠燈,而另一個(gè)方向就會(huì)顯示持續(xù)的紅燈,數(shù)碼管顯示99秒無倒計(jì)時(shí)。當(dāng)?shù)诙谓拥酱嗣睿祷刂骱瘮?shù)。(3)夜間模式:此模式適用于深夜車輛少的情況,當(dāng)深夜時(shí)發(fā)送此命令,十字路口的各個(gè)狀態(tài)都顯示黃燈。這樣在車輛少的情況下避免了等紅燈的時(shí)間。當(dāng)?shù)诙谓拥酱嗣罘祷刂骱瘮?shù)。(4)復(fù)位指令:當(dāng)交通燈在突發(fā)情況下出現(xiàn)問題或者卡死,通過該指令讓交通燈恢復(fù)到初始狀態(tài)。2.2工作原理圖SEQ圖\*ARABIC1總體控制圖大體結(jié)構(gòu)如上圖1所示,本設(shè)計(jì)采用STM32F103C8T6單片機(jī)的GPIOA7、GPIOA8、GPIOA9分別連接?xùn)|西方向的紅、綠、黃燈,用GPIOA10、GPIOA11、GPIOA12分別連接南北方向的紅、綠、黃燈,將這些不同顏色的LED燈的正極連接到3.3V電源,并通過限流電阻器將負(fù)極連接到單片機(jī)的不同GPIO端口。當(dāng)微控制器輸出低電平時(shí),LED燈的正極和負(fù)極之間會(huì)產(chǎn)生電位差,小燈就會(huì)發(fā)光。相反,當(dāng)單片機(jī)輸出高電平時(shí),小燈就會(huì)滅。共用了4個(gè)共陽(yáng)極數(shù)碼管來顯示各個(gè)路口的時(shí)間。數(shù)碼管的A、B、C、D、E、F、G端口分別直接和單片機(jī)的GPIOB8——GPIOB14連接。東西方向上的片選端連接在一起,南北方向上的片選端連接在一起。用四個(gè)PMOS管SS8550來驅(qū)動(dòng)這些數(shù)碼管。單片機(jī)的GPIOB4、GPIOB5驅(qū)動(dòng)南北方向的PMOS,GPIOB6、GPIOB7驅(qū)動(dòng)?xùn)|西方向上的PMOS。當(dāng)STM32F103C8T6單片機(jī)的GPIO口輸出為低電平時(shí),P型MOS管就會(huì)導(dǎo)通REF_Ref20096\r[2],數(shù)碼管的片選端為高電平。反之當(dāng)STM32F103C8T6單片機(jī)的GPIO輸出高電平時(shí),P型MOS管截止REF_Ref20096\r[2],片選端為低電平。當(dāng)片選端為高電平時(shí),根據(jù)位選端的電平變化,就能讓數(shù)碼管顯示相應(yīng)的示數(shù)。STM32F103C8T6微控制器的GPIOA2和GPIOA3分別發(fā)送數(shù)據(jù)TX和接收數(shù)據(jù)RX。將單片機(jī)的發(fā)送TX連接到藍(lán)牙模塊的接收RX,將單片機(jī)的接收RX連接到藍(lán)牙模塊的發(fā)送TX,然后將單片機(jī)和藍(lán)牙連接模塊到公共GND。就可以可實(shí)現(xiàn)單片機(jī)和藍(lán)牙模塊的相互通信。用手機(jī)給藍(lán)牙模塊發(fā)送命令,當(dāng)藍(lán)牙模塊接收到命令根據(jù)串口中斷執(zhí)行相應(yīng)的函數(shù)。即可實(shí)現(xiàn)用手機(jī)遠(yuǎn)程控制交通燈。3STM32單片機(jī)模塊3.1最小系統(tǒng)組成目前在各種資料上可以看到很多交通燈的設(shè)計(jì)案例,他們大多數(shù)采用單片機(jī)或者PLC去實(shí)現(xiàn)交通燈的功能。用單片機(jī)設(shè)計(jì)交通燈不僅設(shè)計(jì)簡(jiǎn)單方便,而且成本也不高。STM32F103C8T6單片機(jī)雖然在眾多STM32系列單片機(jī)中性能不算優(yōu)越,但是相比于傳統(tǒng)51而言仍然是十分強(qiáng)大。僅有48個(gè)引腳,卻擁有20K的RAM、32個(gè)通用I/O口、64K的FLASH、3個(gè)USART、1個(gè)USB、2個(gè)SPI、2個(gè)I2C、一個(gè)CAN和兩組10通道的12位同步ADC。用其設(shè)計(jì)交通燈可以滿足各種需求。所以文中設(shè)計(jì)采用此款單片機(jī)。引腳圖如下圖2所示。圖SEQ圖\*ARABIC2引腳圖圖SEQ圖\*ARABIC3最小系統(tǒng)STM32最小系統(tǒng)如上圖3所示是微控制器運(yùn)行的最低要求,它主要由五個(gè)部分組成:電源,時(shí)鐘電路,復(fù)位電路,調(diào)試接口和控制芯片REF_Ref21272\r[3]。(1)電源圖SEQ圖\*ARABIC4電源模塊本設(shè)計(jì)中使用的電源模塊是AMS1117-3.3V芯片,其主要功能是將5V電壓轉(zhuǎn)換為3.3V電壓以為單片機(jī)供電REF_Ref21605\r[4]。輸入和輸出各采用兩個(gè)濾波電容。(2)時(shí)鐘電路圖SEQ圖\*ARABIC5時(shí)鐘電路如圖5所示,本次設(shè)計(jì)STM32單片機(jī)最小系統(tǒng)采用了一個(gè)8M和一個(gè)32.768K的兩腳無緣晶振。8M晶體振蕩器主要用作系統(tǒng)時(shí)鐘。通過將PLL乘法器設(shè)置為9乘法器,最大工作頻率可以達(dá)到72MHZ。由石英內(nèi)部分頻器分頻15次后,由32.768K晶體振蕩器產(chǎn)生的振蕩信號(hào)可以得到1HZ信號(hào),即秒針每秒運(yùn)動(dòng)32.768K=32768=2^15REF_Ref22131\r[5],以及石英時(shí)鐘中的內(nèi)部分頻器只能執(zhí)行15個(gè)分頻。如果將此晶體振蕩器更改為其他頻率,則在15個(gè)分頻之后,將無法獲得1HZ信號(hào)。因此,當(dāng)使用32.768K晶體振蕩器時(shí),數(shù)據(jù)轉(zhuǎn)換更加方便和準(zhǔn)確。同時(shí),硬件分別在8M晶體振蕩器和32.768K晶體振蕩器的兩側(cè)分別連接22PF和15PF負(fù)載電容器。它的功能是將電能轉(zhuǎn)換為其他形式的能量。沒有這兩個(gè)電容器,振蕩部分將沒有環(huán)路并停止振蕩,電路將無法正常工作。(3)復(fù)位電路圖SEQ圖\*ARABIC6復(fù)位電路從圖6可以看出,STM32微控制器的復(fù)位引腳在初始狀態(tài)下為高電平。當(dāng)按下按鈕時(shí),復(fù)位引腳的電平從高電平跳到低電平,從而產(chǎn)生復(fù)位信號(hào)。其中圖中C9電容的作用是按鍵消抖,因?yàn)榘存I在按下時(shí)大約有10ms左右的抖動(dòng),雖然對(duì)于肉眼幾乎察覺不到,但是對(duì)于STM32單片機(jī)來說以經(jīng)是很長(zhǎng)的時(shí)間了,如果不用電容來消抖,就可能讓單片機(jī)執(zhí)行錯(cuò)誤誤動(dòng)作,進(jìn)行多次復(fù)位。由于電容具有儲(chǔ)能作用,兩邊電壓不會(huì)突變,所以用電容防止按鍵抖動(dòng)。(4)調(diào)試圖SEQ圖\*ARABIC7調(diào)試模塊調(diào)試接口也是程序下載口,主要有四根線,VCC,GND,SDIO,SCLK。在日常程序燒錄和在線仿真中,有兩調(diào)試方式一個(gè)是SWD,另一個(gè)是JTAG。JTAG有很多缺點(diǎn)。例如,JTAG在調(diào)試時(shí)使用更多的接口,并且在數(shù)據(jù)量較大時(shí)可能無法下載。而SWD的接口更加簡(jiǎn)化,下載的可靠性更強(qiáng)。所以本次設(shè)計(jì)用的是SWD模式下載和在線仿真。3.2主要邏輯函數(shù)的實(shí)現(xiàn)整個(gè)程序的邏輯主要分為兩大塊,分別實(shí)現(xiàn)交通燈在普通狀態(tài)和特殊狀態(tài)下的功能。交通燈在正常情況下的功能是在主函數(shù)下實(shí)現(xiàn)的,首先在main()函數(shù)里對(duì)需要用到的交通燈和數(shù)碼管和串口初始化函數(shù)進(jìn)行聲明。并根據(jù)需求設(shè)置串口的波特率和中斷優(yōu)先級(jí)分組。然后再while(1){}的死循環(huán)中執(zhí)行普通狀態(tài)下的交通燈顯示,具體流程下圖8所示:圖SEQ圖\*ARABIC8程序框圖特殊狀態(tài)下的功能是在串口中斷服務(wù)函數(shù)里實(shí)現(xiàn)的,根據(jù)串口接收的不同命令,去執(zhí)行相應(yīng)的函數(shù)。具體流程如下圖9所示。圖SEQ圖\*ARABIC9串口中斷流程4LED信號(hào)燈模塊4.1LED驅(qū)動(dòng)電路圖SEQ圖\*ARABIC10LED驅(qū)動(dòng)電路LED燈本質(zhì)上是具有單向?qū)щ娦缘陌l(fā)光二極管。此設(shè)計(jì)中的12個(gè)不同顏色的LED燈的正極直接連接到3.3V電源,負(fù)極再各通過一個(gè)470R的限流電阻接到STM32單片機(jī)的GPIO口上,限流電阻的作用主要是限制電流。因?yàn)長(zhǎng)ED燈的功率很小,如果不加任何電阻直接連的話可能會(huì)電流過大燒壞STM32單片機(jī)和LED燈。由圖10可知,單片機(jī)位高電平時(shí)LED燈正負(fù)極電壓相同,小燈不亮。當(dāng)STM32單片機(jī)的引腳輸出低電平時(shí),在小燈正負(fù)極之間產(chǎn)生一個(gè)電勢(shì)差,電流通過小燈從正極流到負(fù)極,小燈發(fā)光。所以單片機(jī)通過不斷切換IO口的高低電平就可以實(shí)現(xiàn)LED的亮滅。這種直接灌電流的驅(qū)動(dòng)方式對(duì)于小功率LED器件可以使用,但是當(dāng)器件過多或者稍微的大功率器件都不建議使用,最好使用MOS管驅(qū)動(dòng)或者采用光耦隔離的方式,單片機(jī)的高低電平只控制MOS管或者光耦的開光,可以很好的保護(hù)電路不被燒壞。4.2LED初始化程序LED模塊我們主要用到的固件庫(kù)文件是:stm32f10x_gpio.c/stm32f10x_gpio.hstm32f10x_rcc.c/stm32f10x_rcc.hmisc.c/misc.h由于本次設(shè)計(jì)采用的是庫(kù)函數(shù)的方法。庫(kù)函數(shù)就是官方將各種寄存器的配置封裝在不同的函數(shù)里。這樣在編程時(shí)就不用去配置寄存器,直接去調(diào)用官方給的庫(kù)函數(shù)即可。這樣一來,使編程更加簡(jiǎn)單和高效。所以可以在stm32f10x_rcc.c源文件中找到關(guān)于時(shí)鐘配置的相關(guān)函數(shù)。在stm32f10x_gpio.c源文件中可以找到單片機(jī)GPIO口相關(guān)的配置函數(shù)。為了增加程序的可讀性,在每個(gè)模塊都編寫一個(gè)C文件和一個(gè)H文件,使程序模塊化,本文中LED模塊的程序,以bsp_led.c和bsp_led.h來命名。在硬件連接上南北方向的紅、黃、綠的三個(gè)燈分別由GPIOA10、GPIOA12、GPIOA11來控制,在東西方向上的紅、黃、綠三個(gè)燈燈分別由GPIOA7、GPIOA9、GPIOA8來控制。首先在H文件中對(duì)輸出的IO口進(jìn)行宏定義,以GPIOA10端口為例:#defineTrafficLightsSN_R_PORT GPIOA #defineTrafficLightsSN_R_CLK RCC_APB2Periph_GPIOA #defineTrafficLightsSN_R_PIN GPIO_Pin_10TrafficLightsSN_R_PORT代表GPIOA端口,TrafficLightsSN_R_CLK代表GPIOA端口的時(shí)鐘,TrafficLightsSN_R_PIN代表端口的引腳號(hào)。其他的LED控制引腳都如同上述方法進(jìn)行宏定義。同時(shí)在H文件下也包含了三個(gè)函數(shù)的聲明,具體函數(shù)如下:voidLED_SN_GPIO_Config(void);voidLED_EW_GPIO_Config(void);voidTrafficLightsConfig(void);這三個(gè)函數(shù)的的具體內(nèi)容是在C文件下完成的。其中voidLED_SN_GPIO_Config(void)是南北方向IO控制端口的初始化函數(shù),voidLED_EW_GPIO_Config(void)對(duì)東西方向IO口直端口的初始化函數(shù)。這兩個(gè)函數(shù)的作用就對(duì)控制LED小燈的幾個(gè)GPIO口進(jìn)行配置,具體內(nèi)容包括開啟該GPIO的時(shí)鐘、確定是哪幾個(gè)接口、接口的輸出模式輸出速度和GPIO口初始的電平狀態(tài)。在這里特別強(qiáng)調(diào)的是,STM32單片機(jī)在配置任何外設(shè)的時(shí)候外設(shè)的時(shí)候,都應(yīng)該先使能其對(duì)應(yīng)時(shí)鐘線上的時(shí)鐘,否則GPIO無法正常輸入輸出。文件中最后一個(gè)函數(shù)就是對(duì)上面兩個(gè)函數(shù)的聲明,當(dāng)需要對(duì)LED控制函數(shù)初始化的時(shí)候只需調(diào)用第三個(gè)函數(shù),這樣是程序更加簡(jiǎn)單易讀。5數(shù)碼管模塊5.1數(shù)碼管模塊介紹數(shù)碼管是我們?nèi)粘I钪泻艹R姷降碾娮语@示元器件,通常情況下,共有八個(gè)段,分別對(duì)應(yīng)于A,B,C,D,E,F(xiàn),G,DP。數(shù)字管的每個(gè)部分都是一個(gè)發(fā)光二極管。如果所有燈都點(diǎn)亮,將顯示一個(gè)八字和一個(gè)小數(shù)點(diǎn)。根據(jù)內(nèi)部結(jié)構(gòu)的不同,數(shù)碼管分為共陽(yáng)極和共陰極,公共陽(yáng)極將八個(gè)發(fā)光二極管的所有陽(yáng)極連接在一起以形成公共端口REF_Ref22722\r[6]。當(dāng)使用該器件時(shí),將這個(gè)公共的陽(yáng)極接在電源的正極,其他的八個(gè)二極管的負(fù)極接在控制端口。當(dāng)需要顯示某個(gè)字符或者數(shù)字時(shí),就改變控制端電平的組合狀態(tài)。例如:需要顯示數(shù)字八,只需要將DP置為高電平,其他七個(gè)控制端口都置為低電平。因?yàn)楣碴?yáng)極數(shù)碼管,低電平時(shí)會(huì)產(chǎn)生電勢(shì)差,電流流過二極管,從而發(fā)亮。而高電平時(shí),二極管兩端電勢(shì)相同,所以不亮。共陰極數(shù)字管與共陽(yáng)極數(shù)字管相對(duì)。它將八個(gè)二極管的陰極連接在一起以形成一個(gè)公共端子。正極用作顯示不同數(shù)字的控制端子。因此,對(duì)于普通陰極數(shù)字管,僅當(dāng)控制端子處于高電平時(shí)才產(chǎn)生電勢(shì)差。二極管的相應(yīng)對(duì)應(yīng)部分才發(fā)光。本次交通燈的設(shè)計(jì)采用的是4個(gè)0.28寸的兩位共陽(yáng)極數(shù)碼管顯示倒計(jì)時(shí),如圖10所示:圖SEQ圖\*ARABIC11數(shù)碼管如圖10所示,6、9號(hào)引腳分別對(duì)應(yīng)的是片選端,其它A、B、C、D、E、F、G引腳分別連接單片機(jī)的GPIOB8、GPIOB9、GPIOB10、GPIOB11、GPIOB12、GPIOB13、GPIOB14。數(shù)碼管占用的GPIO口比較多,為了使設(shè)計(jì)更加簡(jiǎn)單穩(wěn)定節(jié)省,因此,采用了動(dòng)態(tài)顯示的方法。該方法是將這四個(gè)數(shù)字管的段代碼線的相應(yīng)段并行連接,由單片機(jī)的八個(gè)IO口控制,而各顯示位的公共端則有另外的IO口控制。所謂動(dòng)態(tài)顯示就是每時(shí)每刻只有一位片選有效,即,顯示所選的數(shù)碼管,而不顯示其他未選擇的數(shù)碼管。因?yàn)槊總€(gè)間隔都很短,所以要定期以規(guī)則的間隔逐個(gè)點(diǎn)亮每個(gè)數(shù)碼管。由于每次間隔的時(shí)間都很短,人眼無法識(shí)別是依次點(diǎn)亮,以為多個(gè)數(shù)碼管在同時(shí)發(fā)光。這種效果也被稱為余暉效應(yīng)。5.2數(shù)碼管驅(qū)動(dòng)電路一般情況下STM32單片機(jī)的電流輸出能力都很差,可能直接驅(qū)動(dòng)少量數(shù)碼管效果還行,但是如果用單片機(jī)直接驅(qū)動(dòng)多個(gè)數(shù)碼管,會(huì)導(dǎo)致單片機(jī)電流過小,從而導(dǎo)致數(shù)碼管亮度不足,甚至無法發(fā)光。所以本次設(shè)計(jì)采用P型MOS管SS8550來驅(qū)動(dòng)數(shù)碼管,單片機(jī)通過控制MOS管的開關(guān),從而控制數(shù)碼管。圖SEQ圖\*ARABIC12數(shù)碼管驅(qū)動(dòng)電路如圖11所示,為數(shù)碼管片選端的驅(qū)動(dòng)電路,S1、S2、S3、S4分別連接單片機(jī)的GPIOB4、GPIOB5、GPIOB6、GPIOB7。因?yàn)槟媳狈较蛏系膬蓚€(gè)數(shù)碼管與東西方向上的兩個(gè)數(shù)碼管是分別同步的。所以,南北方向由相同的片選端S1、S2控制,東西方向由相同的片選端S3、S4控制。當(dāng)STM32微控制器的GPIO輸出高電平時(shí),P型MOS管的柵極電壓為3.3VREF_Ref24906\r[7],因此Vgs=0V,PMOS管截止,片選端為低電平。當(dāng)STM32微控制器的GPIO輸出低電平時(shí),P型MOS管的柵極電壓為0V,Vgs=-3.3V,PMOS管導(dǎo)通REF_Ref24906\r[7],片選端為高電平。從而驅(qū)動(dòng)數(shù)碼管。5.3數(shù)碼管顯示程序數(shù)碼管程序主要放在ntube.c和ntube.h文件中,數(shù)碼管的A、B、C、D、E、F、G端口分別對(duì)應(yīng)單片機(jī)的GPIOB8——GPIOB14,在ntube.h文件中宏定義為:#defineNtube_Dis_Port GPIOB #defineAllNtube_DIS_Clk RCC_APB2Periph_GPIOB #defineAllNtube_DIS_Pin GPIO_Pin_8| GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14數(shù)碼管的四個(gè)片選端對(duì)應(yīng)的單片機(jī)接口為GPIOB4——GPIOB7在ntube.h文件中宏定義為:#defineNtube_CS_Port GPIOB #defineAllNtube_CS_Clk RCC_APB2Periph_GPIOB #defineAllNtube_CS_PinGPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7在ntube.c文件中主要包含以下六個(gè)函voidNTUBE_DIS_GPIO_Config(void);voidNTUBE_CS_GPIO_Config(void);voidNTUBE_GPIO_Config(void);voidNtube_DisplayEWSN(void);voidDisplay(uint16_tDATAa,uint16_tDATAb,uint16_tDATAc,uint16_tDATAd);其中函數(shù)voidNTUBE_DIS_GPIO_Config(void)是對(duì)單片機(jī)連接的數(shù)碼管對(duì)應(yīng)的A、B、C、D、E、F、G引腳的初始化。VoidNTUBE_CS_GPIO_Config(void)函數(shù)是對(duì)數(shù)碼管四個(gè)片選端引腳的初始化。主要包含引腳的輸出模式,輸出速度和初始狀態(tài)下引腳的電平狀態(tài)。voidNTUBE_GPIO_Config(void)是將上面的兩個(gè)函數(shù)包含在內(nèi),增加程序的可讀性。函數(shù)voidNtube_DisplayEWSN(void)和函數(shù)voidDisplay(uint16_tDATAa,uint16_tDATAb,uint16_tDATAc,uint16_tDATAd)編寫的是東西南北方向數(shù)碼管的顯示函數(shù)。具體函數(shù)見附錄三。6藍(lán)牙模塊6.1HC-05藍(lán)牙模塊介紹本次交通燈的設(shè)計(jì)在特殊情況下可以實(shí)現(xiàn)手機(jī)遠(yuǎn)程對(duì)交通燈的控制。根據(jù)需求無線控制模塊采用的是JDY-30藍(lán)牙模塊,根據(jù)數(shù)據(jù)手冊(cè)可知,該模塊是基于藍(lán)牙3.0的協(xié)議標(biāo)準(zhǔn),不僅性能穩(wěn)定,而且數(shù)據(jù)傳輸快且信號(hào)強(qiáng)。它的工作頻率2.4GHZ。圖SEQ圖\*ARABIC13藍(lán)牙實(shí)物圖如上圖13所示,是本次設(shè)計(jì)所需藍(lán)牙的實(shí)物圖,該產(chǎn)品功能強(qiáng)大,帶有內(nèi)置PCB天線,同時(shí)支持UART接口,支持與SPP主藍(lán)牙模塊,Android手機(jī)SPP和計(jì)算機(jī)SSP藍(lán)牙進(jìn)行通信。此外,它還符合藍(lán)牙SPP串行端口協(xié)議,其傳輸速率可以達(dá)到每秒8K以上。產(chǎn)品原理圖14所示:圖SEQ圖\*ARABIC14藍(lán)牙模塊原理圖盡管模塊有許多引腳,但與STM32F103C8T6通信時(shí)僅使用了四個(gè)引腳,即TX,RX,VCC和GND。其中,VCC和GND是藍(lán)牙模塊的電源引腳,分別連接到電源的正極和負(fù)極。TX是發(fā)送數(shù)據(jù)線,連接到STM32串行端口的接收數(shù)據(jù)線RX。RX是接收數(shù)據(jù)線,與STM32微控制器串行端口的發(fā)送數(shù)據(jù)線連接。此外,藍(lán)牙模塊實(shí)現(xiàn)串口通信之前,還需要提前通過AT指令對(duì)藍(lán)牙的各項(xiàng)參數(shù)進(jìn)行設(shè)置。不同型號(hào)的的藍(lán)牙其對(duì)應(yīng)的AT指令集也有所不同??筛鶕?jù)數(shù)據(jù)手冊(cè)查詢。以本藍(lán)牙為例:例子:設(shè)置配置密碼為1234發(fā)送:AT+PIN1234\r\n返回:+PIN=1234此時(shí)表示配對(duì)密碼已經(jīng)配置成1234例子:設(shè)置115200波特率發(fā)送:AT+BAUD8\r\n返回:+BAUD=8此時(shí)模塊波特率已經(jīng)設(shè)置成115200波特率根據(jù)以上例子依次用AT對(duì)藍(lán)牙進(jìn)行名稱、密碼、波特率等的設(shè)置藍(lán)牙就可以和單片機(jī)連接使用了。6.2串口通信串口是微型計(jì)算機(jī)重要的外部接口之一,在軟件調(diào)試和程序下載過程中起著很重要的作用?,F(xiàn)在使用的微型計(jì)算機(jī)基本上都帶有串口,當(dāng)然STM32單片機(jī)也不例外。STM32F103C8T6擁有USART1、USART2和USART3三路串口。串口是異步通信,在使用時(shí)只用到了三個(gè)引腳,分別包括TX、RX和GND。本次交通燈遠(yuǎn)程通信模塊的設(shè)計(jì)用到的是STM32C8T6單片機(jī)的串口二和藍(lán)牙模塊連接,即單片機(jī)的TX(GPIOA2)和藍(lán)牙模塊的RX連接,單片機(jī)的RX(GPIOA3)和藍(lán)牙模塊的TX連接REF_Ref25354\r[8]REF_Ref25638\r[9]。STM32單片機(jī)在使用庫(kù)函數(shù)開發(fā)時(shí),不需要去配置寄存器,直接在庫(kù)函數(shù)中去調(diào)用相關(guān)函數(shù)。在stm32f10x_usart.c和stm32f10x_usart.h這兩個(gè)文件中包含了串口相關(guān)的函數(shù)。本設(shè)計(jì)中和串口相關(guān)的函數(shù)主要在bsp_usart.c和bsp_usart.h這兩個(gè)文件中。在C文件下主要包含了兩個(gè)函數(shù),一個(gè)是串口初始化函數(shù)voidbsp_USART2_Init(u32bound);另一個(gè)是串口中斷服務(wù)函數(shù)voidbsp_USART2_IRQHandler(void);串口初始化函數(shù),在上面已經(jīng)做了基本的概述,主要是配置對(duì)引腳的輸入輸出模式,端口的分時(shí)復(fù)用和串口模式和基本參數(shù)的設(shè)置,函數(shù)如下:NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOA時(shí)鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);USART_DeInit(USART2);//復(fù)位串口1//USART2_TXPA.2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//PA.2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復(fù)用推挽輸出GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA2//USART2_RX PA.3GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化通過藍(lán)牙遠(yuǎn)程控制交通燈,主要是在串口二的中斷服務(wù)函數(shù)里面實(shí)現(xiàn)的,當(dāng)單片機(jī)接收到數(shù)據(jù)進(jìn)入中斷,根據(jù)接收到的命令執(zhí)行相應(yīng)的函數(shù),函數(shù)如下:Voidbsp_USART2_IRQHandler(void){charRes;if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)!=RESET){ USART_ReceiveData(USART2);} if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET) { USART_ClearITPendingBit(USART2,USART_IT_RXNE); Res=USART_ReceiveData(USART2); //賦值 switch(Res) { case0X01:Action1();break;//夜間,全黃 case0X02:Action2();break; //禁止,全紅 case0X03:Action3();break;//南北通行,南北綠,東西禁止,東西紅 case0X04:Action4();break; //南北禁止,南北紅,東西通行,東西綠 case0X05:Action5();break; //復(fù)位 default:brea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第12課 漢武帝鞏固大一統(tǒng)王朝
- 2025版菌類食品電商平臺(tái)傭金結(jié)算合同3篇
- 二零二五年學(xué)校體育設(shè)施清潔合同補(bǔ)充協(xié)議書2篇
- 2024母子企業(yè)資金借用協(xié)議樣本版
- 2024年度融資擔(dān)保業(yè)務(wù)擔(dān)保欠款合同模板3篇
- 2025版人工智能技術(shù)應(yīng)用合作協(xié)議書范本2篇
- 二零二五年度二手房銷售線上線下整合營(yíng)銷合同范本2篇
- 城市更新資金籌措與投資模式
- 2024年采購(gòu)合同范本:包括產(chǎn)品規(guī)格、數(shù)量與交付期限
- 2024年砂礫石材料采購(gòu)標(biāo)準(zhǔn)協(xié)議模板
- 軍事理論(上海財(cái)經(jīng)大學(xué)版)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 老兵和軍馬(2023年河南中考語(yǔ)文試卷記敘文閱讀題及答案)
- 非人力資源管理者的人力資源管理
- 物理-福建省福州市2024-2025學(xué)年高三年級(jí)上學(xué)期第一次質(zhì)量檢測(cè)(福州一檢)試題和答案
- 新課標(biāo)背景下:初中生物學(xué)跨學(xué)科主題學(xué)習(xí)課程設(shè)計(jì)與教學(xué)實(shí)施
- 人音版音樂五年級(jí)下冊(cè)獨(dú)唱《打起手鼓唱起歌》說課稿
- (高清版)AQ 2001-2018 煉鋼安全規(guī)程
- 單位委托員工辦理水表業(yè)務(wù)委托書
- 【部編版】三年級(jí)語(yǔ)文上冊(cè)全冊(cè)《單元統(tǒng)整備課》教案
- 02S501-2 雙層井蓋圖集標(biāo)準(zhǔn)
- 廣東省湛江市寸金培才學(xué)校2022-2023學(xué)年下學(xué)期七年級(jí)數(shù)學(xué)期末試卷
評(píng)論
0/150
提交評(píng)論