一、 設(shè)計任務(wù)
本實驗?zāi)康氖峭ㄟ^使用AT89s52系列芯片制作一個交通燈設(shè)計電路,實現(xiàn)南北東西交通運(yùn)行的,與紅綠燈秒計時功能、數(shù)碼管顯示功能等。
二、 性能指標(biāo)要求
1、各方向的紅、綠色信號燈能按照設(shè)定規(guī)則運(yùn)行;
2、綠燈亮之前,黃燈閃爍5次;
3、紅燈和綠燈倒計時間能夠正確顯示;
4、兩干道的車輛不會會車沖突。
5、可以擴(kuò)展其他功能(如按鍵設(shè)置時間,按鍵模擬警車)
三 設(shè)計思路及設(shè)計框圖
1.設(shè)計思路
先在萬用板上裝置一個最小系統(tǒng),在將獨(dú)立數(shù)碼管焊接在排針上, 12M石英晶振給芯片提供脈沖,程序可實現(xiàn)加1、2、3、4、5等功能,紅綠燈顯示時間可以修改,有緊急開關(guān)。再使用KeiluVision5來進(jìn)行編譯,再將生成的hex文件通過下載串口導(dǎo)入芯片中。然后根據(jù)按鍵功能查看是否實現(xiàn)功能。
4個按鍵實現(xiàn)對應(yīng)功能。定義的P2^2是模式的切換,有兩種模式,P2^3是時間加,P2^4是時間減,P2^5是緊急開關(guān),其次,還要把復(fù)位用一個按鍵控制。
總體設(shè)計框圖:
部分程序:
#include"REG52.H"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar nt=60,wt=60,sz=0,t,ds=60,seg=60;
bit ms=0;
sbit k = P2^0;?? ? ? //進(jìn)入時間設(shè)置
sbit g = P2^1;?? ? ? //結(jié)束設(shè)置
sbit a = P2^2;?? ??? ?//加時間
sbit s = P2^3;?? ??? ?//減時間
// 東西南北 兩干道
sbit NSR = P1^0; ? //南 ?紅燈
sbit NSG = P1^2; ? //南 ?綠燈
sbit NSY = P1^1; ? //南 ?黃燈
sbit WER = P1^3; ? //東 ?紅燈
sbit WEG = P1^4; ? //東 ?綠燈
sbit WEY = P1^5; ? //東 ?黃燈
//聲明
void delay(uint t);
void display();
void Init_Timer0(void);
void NST();
void WET();
void keycan();
void main()
{
Init_Timer0(); //定時器初始化
while(1)
{
if(sz==0||sz==3) ?//設(shè)置鍵
{
if(sz==3)
{nt=10;wt=10;}
if(ms==0)
{NST();}
if(ms==1)
{WET();}
}
if(sz==1)
{seg=nt;}
if(sz==2)
{seg=wt;}
keycan();
display();
}
}
void delay(uint t)//延時函數(shù)
{
uchar x,y;
for(x=0;x<t;x++)
for(y=0;y<200;y++);
}
參考電路:
資料內(nèi)容:
需要全部資料可從我的資源里下載。
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
紛傳點擊用微信打開即可,過程有點繁瑣請見諒。