基于STM32的簡(jiǎn)易交通燈proteus仿真設(shè)計(jì)(仿真+程序+設(shè)計(jì)報(bào)告+講解視頻)
仿真圖proteus 8.9
程序編譯器:keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0091
**1.**主要功能
功能說(shuō)明:
以STM32單片機(jī)和數(shù)碼管、LED燈設(shè)計(jì)簡(jiǎn)易交通燈控制系統(tǒng);
狀態(tài)1:南北方向綠燈通行12秒,東西紅燈禁止通行15秒,分別倒計(jì)時(shí);
狀態(tài)2:南北方向黃燈閃爍提醒3秒,東西繼續(xù)紅燈倒計(jì)時(shí);
狀態(tài)3:東西方向綠燈通行9秒,南北方向禁止通行12秒;
狀態(tài)4:東西方向黃燈閃爍提醒3秒,南北繼續(xù)紅燈倒計(jì)時(shí);
狀態(tài)5:執(zhí)行狀態(tài)1,反復(fù)循環(huán)。
主要硬件設(shè)備:STM32F103系列單片機(jī) 數(shù)碼管
2.仿真
打開(kāi)仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開(kāi)始仿真。
然后開(kāi)始仿真。
圖5.2 交通控制系統(tǒng)運(yùn)行(東西通行)
圖5.3 交通控制系統(tǒng)運(yùn)行(東西等待)
圖5.4 交通控制系統(tǒng)運(yùn)行(南北通行)
圖5.5 交通控制系統(tǒng)運(yùn)行(南北等待)
3. 程序
程序是用keil5 mdk版本打開(kāi)的,如果打開(kāi)有問(wèn)題,核實(shí)下keil的版本。程序是HAL版本編寫(xiě)的,有stm32cubemx配置文件。有注釋可以結(jié)合講解視頻理解。
關(guān)鍵代碼
/* USER CODE BEGIN 4 */
void led_sacn(void)
{
if(run_mode==0) //0 正常運(yùn)行
{
if(main_road_time==0 || secondary_road_time==0)//當(dāng)主干道或者次干道倒數(shù)到0,切換狀態(tài)。
//這一段程序只有倒計(jì)時(shí)為0才執(zhí)行一次,執(zhí)行完一次等下一次倒計(jì)時(shí)為0才再執(zhí)行一次
{
switch(state)//改變紅綠燈的狀態(tài)
{
case 0:
{
state=1;//下次切換到下一個(gè)模式
main_road_time=ns_green_cnt;//主干道綠燈通行時(shí)間
secondary_road_time=ns_green_cnt+yellow_cnt; //次干道紅燈時(shí)間
we_red = ON; //次干道紅燈亮
we_yellow = OFF; //次干道黃燈亮
we_green = OFF; //次干道綠燈亮
ns_red = OFF; //主干道紅燈亮
ns_yellow = OFF; //主干道黃燈亮
ns_green = ON; //主干道綠燈亮
}break;
case 1:
{
state=2;
main_road_time = yellow_cnt;//主干道直行黃燈時(shí)間
we_red = ON;
we_yellow = OFF;
we_green = OFF;
ns_red = OFF;
ns_yellow = ON;
ns_green = OFF;
}break;
case 2:
{
state=3;
main_road_time=we_green_cnt+yellow_cnt;
secondary_road_time = we_green_cnt;
we_red = OFF;
we_yellow = OFF;
we_green = ON;
ns_red = ON;
ns_yellow = OFF;
ns_green = OFF;
}break;
case 3:
{
state=0;
secondary_road_time = yellow_cnt;
we_red = OFF;
we_yellow = ON;
we_green = OFF;
ns_red = ON;
ns_yellow = OFF;
ns_green = OFF;
}break;
default:break;
}
}
memset(smgbuf, 0, sizeof(smgbuf));
smgbuf[4]=gsmg_code[main_road_time%10];//主干道時(shí)間
smgbuf[5]=gsmg_code[main_road_time/10];
smgbuf[6]=gsmg_code[secondary_road_time%10];//次干道時(shí)間
smgbuf[7]=gsmg_code[secondary_road_time/10];
SMG_Display(smgbuf,1);//數(shù)碼管更新時(shí)間
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == &htim3) //定時(shí)器2中斷50MS一次
{
if(++half_sec_flag>10){
half_sec_flag=0;
half_flag1s=1;
}
if(++one_sec_flag<20){
return;//提前結(jié)束函數(shù)
}
one_sec_flag=0;
if(run_mode==0){//不是正常運(yùn)行時(shí),不紅綠燈數(shù)值不減一
flag1s=1;
}
}
}
4. 設(shè)計(jì)報(bào)告
7214字設(shè)計(jì)報(bào)告,內(nèi)容包括硬件設(shè)計(jì)、軟件設(shè)計(jì)、結(jié)論等。
隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù)。本模擬交通燈系統(tǒng)利用單片機(jī)STM32F103C6作為核心元件,實(shí)現(xiàn)了通過(guò)信號(hào)燈對(duì)路面狀況的智能控制。從一定程度上解決了交通路口堵塞、車(chē)輛停車(chē)等待時(shí)間不合理、急車(chē)強(qiáng)通等問(wèn)題。系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、可靠性高、成本低、實(shí)時(shí)性好、安裝維護(hù)方便等優(yōu)點(diǎn),有廣泛的應(yīng)用前景。
本模擬系統(tǒng)由單片機(jī)硬/軟件系統(tǒng),四位8段數(shù)碼管和LED燈顯示系統(tǒng)等組成,較好的模擬了交通路面的控制。
5. 資料清單&下載鏈接
0、常見(jiàn)使用問(wèn)題及解決方法–必讀?。。?!
1、程序代碼
2、Proteus仿真
3、功能要求
4、開(kāi)題報(bào)告
5、設(shè)計(jì)報(bào)告
6、講解視頻
7、框圖
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開(kāi)查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接(可點(diǎn)擊):
https://docs.qq.com/doc/DS1BVRWJFeVZtSnNN