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