交通燈功能實現:
1. 交通燈基本功能:包括綠燈倒計時、紅燈倒計時、綠燈常亮、綠燈閃爍、黃燈亮、黃燈閃爍、紅燈亮、紅燈閃爍等功能及其銜接;
2. 要求在任意時刻,可以通過按鍵設置任意方向為紅燈(或綠燈);
3. 紅、綠燈持續時間可以通過按鍵設置;
4. 交通燈能夠關閉,關閉類型有兩種:
a) 所有燈全不亮;
b) 所有黃燈閃爍、其余燈不亮。
5. 模擬人行過街紅綠燈(作為獨立功能測試
a) 按下按鍵,對應方向車道開始綠燈倒計時(倒計時時間可以設置),時間到后,變黃燈,再變紅燈;
b) 紅燈倒計時時長可設置;
c) 紅燈重新變為綠燈后,必選間隔特定時間(可設置)后,才能再次響應按鍵,否則不響應。
STM32F103單片機源程序如下:
- #include "traffic.h"
- #include "systick.h"
- #include "sys.h"
- u16 m=1000;//定義一個變量來設置交通燈時間加減
- void traffic_init(void)//初始化IO
- {
-
- //定義一個GPIO_InitTypeDef類型的結構體
- GPIO_InitTypeDef GPIO_InitStructure;
- //開啟GPIOC的外設時鐘
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE, ENABLE );
- //選擇需要控制的GPIO引腳
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
- //設置引腳模式為通用推挽輸出
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //設置引腳速率為50MHz
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- //調用函數庫,初始化GPIO
- GPIO_Init( GPIOE, &GPIO_InitStructure );
-
- GPIO_ResetBits(GPIOE, GPIO_Pin_All);
-
-
- }
- void traffic_display(void) //交通燈顯示子函數
- {
-
-
- R1=1;G2=1;
- delay_ms(m); delay_ms(m); delay_ms(m);
- delay_ms(m); delay_ms(m); delay_ms(m);
-
- Y2=1;delay_ms(1000);
- Y2=0;delay_ms(1000);
- Y2=1;delay_ms(1000);
- Y2=0;delay_ms(1000);
- Y2=1;delay_ms(1000);
- Y2=0;delay_ms(1000);
-
- R1=0;G2=0;
-
-
- R2=1;G1=1;
- delay_ms(m); delay_ms(m); delay_ms(m);
- delay_ms(m); delay_ms(m); delay_ms(m);
- Y1=1;delay_ms(1000);
- Y1=0;delay_ms(1000);
- Y1=1;delay_ms(1000);
- Y1=0;delay_ms(1000);
- Y1=1;delay_ms(1000);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼 仿真電路:無
原理圖:無
Keil代碼下載:
Test 6.rar
(280.17 KB, 下載次數: 292)
2018-4-11 08:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|