|
可實現,基本的交通燈規則的實現。
下面是一部分代碼:
/**********************************************************************************
* 標題: 交通燈 *
* *
* 連接方法:P0與J12 用8PIN排線連接 P1與JP16 用8PIN排線連接
* P2與JP1 用8PIN排線相連 P30 P31連接J22 *
* P32 P33連接JP5 *
***********************************************************************************
* *
* 請學員認真消化本例程,注意定時器中斷的用法,以及編程的邏輯*
***********************************************************************************/
#include <reg51.h>
void delay(unsigned int i); //函數聲名
void display(); //函數聲明
unsigned int num,time; //定義變量
//此表為 LED 的字模, 共陰數碼管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段碼控制
//此表為8個數碼管位選控制, 共陰數碼管 1-8個 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位選控制 查表的方法控制
/************主函數**********************/
main()
{
TMOD= 0X10; //定時器1的工作方式1
EA= 1; //開啟總中斷
ET1= 1; //開啟定時器1
TH1= 0x3c; //高位賦初值
TL1= 0xb0; //低位賦初值 3cb0是15535,則計時為(65535-15535=50000)us,即50ms
TR1= 1; //啟動定時器 T1
num= 0;
while(1)
{
if(num<31) //寶田路綠燈,前進路紅燈,持續30s
{
P2= 0xcd; //11001101
P3= 0xfe; //11111110
time= (30-num);
display();
}
if(num>30&&num<34) // 寶田路黃燈,人行道禁止通行,前進路紅燈,持續三秒
{
P2= 0xd6; //11010110
P3= 0xfe; //11111110
time= (34-num);
display();
}
if(num>33&&num<65) //前進路綠燈,寶田路紅燈,持續30s
{
P2= 0x7a; //01111010
P3= 0xfd; //11111101
time= (64-num);
display();
}
if(num>64&&num<68) // 前進路黃燈,人行道禁止通行,寶田路紅燈,持續三秒
{
P2= 0xba; //10111010
P3= 0xfe; //11111101
time= (67-num);
display();
}
}
}
|
-
交通燈接線.JPG
(173.88 KB, 下載次數: 72)
下載附件
2019-6-10 23:05 上傳
實物圖
-
-
8 交通燈.rar
2019-6-10 23:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
226.66 KB, 下載次數: 11, 下載積分: 黑幣 -5
工程文件以及連線截圖
|