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