|
一個(gè)用51單片機(jī)做的交通燈的設(shè)計(jì)制作,而且?guī)d畫(huà)的原理圖和pcb,有c語(yǔ)言和匯編語(yǔ)言兩種格式的源代碼.
ad格式的原理圖:
0.png (95.67 KB, 下載次數(shù): 95)
下載附件
2017-4-11 20:45 上傳
pcb圖:
0.png (55.97 KB, 下載次數(shù): 74)
下載附件
2017-4-11 20:45 上傳
0.png (52.14 KB, 下載次數(shù): 84)
下載附件
2017-4-11 20:44 上傳
0.png (56.58 KB, 下載次數(shù): 98)
下載附件
2017-4-11 20:46 上傳
單片機(jī)c語(yǔ)言源代碼:
- /* 程序效果:?jiǎn)纹瑱C(jī)模擬控制交通燈程序,規(guī)則如下:當(dāng)南北通車(chē)時(shí),此時(shí)南北的綠燈亮,
- 東西的紅燈亮,之后南北的綠燈閃爍3次,過(guò)后黃燈亮,延時(shí)片刻,轉(zhuǎn)東西綠燈亮同時(shí)南北紅燈亮,
- 之后東西的綠燈閃爍3次,過(guò)后黃燈亮,延時(shí)片刻;數(shù)碼管顯示的值都同步,結(jié)束。*/
- #include<AT89X52.h> //頭文件
- #define uchar unsigned char//宏定義
- #define uint unsigned int
- /* 舊IO定義*/
- sbit FMQ= P1^0; //蜂鳴器
- sbit QR = P1^3; //北紅燈
- sbit QY = P1^1 ; //北黃燈
- sbit QG = P1^2 ; //北綠燈
- sbit HR = P2^2 ; //南紅燈
- sbit HY = P2^0; //南黃燈
- sbit HG = P2^1; //南綠燈
- sbit ZR = P1^4 ; //東紅燈
- sbit ZY = P1^5 ; //東黃燈
- sbit ZG = P1^6 ; //東綠燈
- sbit YR = P2^5 ; //西紅燈
- sbit YY = P2^4 ; //西黃燈
- sbit YG = P2^3 ; //西綠燈
- sbit SWITCH1 = P2^7; //時(shí)間顯示的十位控制
- sbit SWITCH2 = P2^6; //時(shí)間顯示的個(gè)位控制
- /* //新IO定義
- sbit FMQ= P1^0; //蜂鳴器
- sbit QR = P1^1; //北紅燈
- sbit QY = P1^2 ; //北黃燈
- sbit QG = P1^3 ; //北綠燈
- sbit HR = P1^4 ; //南紅燈
- sbit HY = P1^5; //南黃燈
- sbit HG = P1^6; //南綠燈
- sbit ZR = P2^7 ; //東紅燈
- sbit ZY = P2^6 ; //東黃燈
- sbit ZG = P2^5 ; //東綠燈
- sbit YR = P2^2 ; //西紅燈
- sbit YY = P2^3 ; //西黃燈
- sbit YG = P2^4 ; //西綠燈
- sbit SWITCH1 = P2^1; //時(shí)間顯示的十位控制
- sbit SWITCH2 = P2^0; //時(shí)間顯示的個(gè)位控制
- */
- //sbit P3_2=P3^2;
- //sbit P3_3=P3^3;
- uchar DAT;//顯示時(shí)間變量
- uchar DISP[2]={0,0};//顯示緩沖區(qū)
- uchar code table[]={0xC0,0xF9,0xA4,0xB0, ////共陽(yáng)數(shù)碼管段碼表0 1 2 3
- 0x99,0x92,0x82,0xF8,0x80,0x90,0xFF //4 5 6 7 8 9 滅
- };
- void DISPCLK(uchar i);//顯示函數(shù)
- void DEL1MS(uint z) //延時(shí)子函數(shù)
- {
- uint x,y;
- for(x=0;x<z;x++)
- for(y=0;y<110;y++);
- }
- void main() //主函數(shù)
- { // uchar i,j,k,m,n;//定義局部變量
- uchar i,j;
- TCON=0x5; //外部中斷為下降沿觸發(fā)
- PX1=1;//南北方向高優(yōu)先級(jí)
- EX0=1; //
- EX1=1; //開(kāi)外部中斷
- EA=1; //開(kāi)總中斷
- //IO口初始化
- P0=0xFF;
- P1=0xFF;
- P2=0xFF;
- P3=0xFF;
- //DAT=25; //匯編0x25
- while(1)
- {
- P1=0xFF;//燈滅
- P2=0xFF;//
- DAT=30;//寫(xiě)入每一通路的通行時(shí)間
- QG=0;//南北向綠燈亮
- HG=0;
- ZR=0;//東西向紅燈亮
- YR=0;
- /*
- QR =1; //北紅燈
- QY =1 ; //北黃燈
- QG =0 ; //北綠燈 QG=0;//南北向綠燈亮
- HR =1 ; //南紅燈
- HY =1 ; //南黃燈
- HG =0 ; //南綠燈
- ZR =0 ; //東紅燈
- ZY =1 ; //東黃燈
- ZG =1 ; //東綠燈
- YR =0 ; //西紅燈
- YY =1 ; //西黃燈
- YG =1 ; //西綠燈
- */
- //ACC=DAT;
- for(i=0;i<25;i++)
- {
- for(j=0;j<220;j++)
- {
- // BCD();//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
- }
- FMQ=1;//蜂鳴器響
- //ACC=DAT;
- // ACC=ACC+0x99; //完成數(shù)字的減1操作
- // DA A;//???
- DAT=DAT-1; //調(diào)整好的數(shù)字送顯存
- }
- //最后5秒黃燈閃
- P1=0xff;
- P2=0xff;//關(guān)所有的燈
- ZY=0;//黃燈亮
- YY=0;
- QY=0;
- HY=0;
- for(i=0;i<5;i++)
- {
- for(j=0;j<220;j++)
- {
- //BCD();//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
-
- }
- QY=~QY;// 南北向黃燈亮
- HY=~HY;
- ZY=~ZY;//東西方向黃燈亮
- YY=~YY;
- FMQ=~FMQ;//黃燈時(shí)蜂鳴器叫一聲
- DAT=DAT-1; ////完成數(shù)字的減1操作,調(diào)整好的數(shù)字送顯存
-
- }
- P1=0xff;
- P2=0xff;
- DAT=20; //匯編0x20
- ZG=0;//東西方向綠燈亮
- YG=0;
- QR=0;//南北方向紅燈亮
- HR=0;
- ACC=DAT;
- for(i=0;i<15;i++)//執(zhí)行15秒
- {
- for(j=0;j<220;j++)
- {
- //BCD();//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
- }
- FMQ=1;//蜂鳴器響
- DAT=DAT-1;////完成數(shù)字的減1操作,調(diào)整好的數(shù)字送顯存
-
- }
- //最后5秒黃燈閃
- P1=0xff;
- P2=0xff;//關(guān)所有的燈
- ZY=0;//黃燈亮
- YY=0;
- QY=0;
- HY=0;
- for(i=0;i<5;i++)
- {
- for(j=0;j<220;j++)
- {
- //BCD();//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
- }
- QY=~QY;// 南北向黃燈亮
- HY=~HY;
- ZY=~ZY;//東西方向黃燈亮
- YY=~YY;
- FMQ=~FMQ;//黃燈時(shí)蜂鳴器叫一聲
- DAT=DAT-1; //完成數(shù)字的減1操作 ,調(diào)整好的數(shù)字送顯存
-
- }
- }
-
- }
- void D_X() interrupt 0 using 0 //東西(橫向)方向道路緊急通行50秒中斷程序
- {
- uchar i,j,temp1,temp2,temp3; //定義局部變量
- EA=0;//關(guān)總中斷
- P3_2=1;
- while(!P3_2) ;//等待按鍵釋放
- temp1=DAT;//保存顯示數(shù)據(jù)
- temp2=P1;
- temp3=P2;
- DAT=50;
- P1=0xff;
- P2=0xff;
- ZG=0;//東西方向綠燈亮
- YG=0;
- QR=0; //南北向紅燈亮
- HR=0;
-
-
- for(i=0;i<50;i++)//執(zhí)行50秒
- {
- for(j=0;j<220;j++)
- {
- //BCD(DAT);//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
- }
- DAT=DAT-1;////完成數(shù)字的減1操作,調(diào)整好的數(shù)字送顯存
- }
- DAT=temp1;//回復(fù)顯示數(shù)據(jù)
- P1=temp2;
- P2=temp3;
- EA=1;//開(kāi)總中斷
- }
- void N_B() interrupt 2 using 0 //南北(縱向)方向道路緊急中斷程序
- {
- uchar i,j,temp1,temp2,temp3; //定義局部變量
- EA=0;//關(guān)總中斷
- P3_3=1;
- while(!P3_3) ;//等待按鍵釋放
- temp1=DAT;//保存顯示數(shù)據(jù)
- temp2=P1;
- temp3=P2;
- DAT=50;
- P1=0xff;
- P2=0xff;
- ZR=0;//東西方向紅燈亮
- YR=0;
- QG=0; //南北向綠燈亮
- HG=0;
- for(i=0;i<50;i++)//執(zhí)行50秒
- {
- for(j=0;j<220;j++)
- {
- //BCD(DAT);//BCD碼調(diào)整
- DISPCLK(DAT);//顯示
- DEL1MS(3);//延時(shí)3毫秒
- }
- DAT=DAT-1;////完成數(shù)字的減1操作,調(diào)整好的數(shù)字送顯存
- }
- DAT=temp1;//回復(fù)顯示數(shù)據(jù)
- P1=temp2;
-
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
匯編語(yǔ)言單片機(jī)源碼:
- ;智能交通燈控制器程序
- ;以下程序完成各腳的預(yù)定義
- FMQ EQU P1.0 ;蜂鳴器
- QR EQU P1.1 ;北紅燈
- QY EQU P1.2 ;北黃燈
- QG EQU P1.3 ;北綠燈
- HR EQU P1.4 ;南紅燈
- HY EQU P1.5 ;南黃燈
- HG EQU P1.6 ;南綠燈
- ZR EQU P2.7 ;東紅燈
- ZY EQU P2.6 ;東黃燈
- ZG EQU P2.5 ;東綠燈
- YR EQU P2.2 ;西紅燈
- YY EQU P2.3 ;西黃燈
- YG EQU P2.4 ;西綠燈
- SWITCH1 EQU P2.1 ;時(shí)間顯示的十位控制
- SWITCH2 EQU P2.0 ;時(shí)間顯示的個(gè)位控制
-
- DAT EQU 60H ;顯存
-
- ORG 0000H
- LJMP START
- ORG 0003H
- LJMP D_X ;外部中斷0,東西向緊急按鍵
- ORG 000BH
- RETI ;
- ORG 0013H
- LJMP N_B ;外部中斷1,南北向緊急按鍵
- ORG 001BH
- RETI
- ORG 0023H
- RETI
- ORG 0040H ;定位
- START:
-
- MOV TCON, #5H ;外部中斷為下降沿觸發(fā)
- SETB EX0 ;
- SETB EX1 ;開(kāi)外部中斷
- SETB EA ;開(kāi)總中斷
- ;IO口初始化
- MOV P0,#0FFH
- MOV P1,#0FFH ;
- MOV P2,#0FFH ;
- MOV P3,#0FFH ;
- MOV DAT, #25H ;
-
-
- AUTCLK:
- MOV P1, #0FFH ;
- MOV P2, #0FFH ;
- MOV DAT, #30H ;寫(xiě)入每一通路的通行時(shí)間
- CLR QG ;南北向綠燈亮
- CLR HG ;
- CLR ZR ;東西向紅燈亮
- CLR YR ;
-
- MOV A, DAT ;
- MOV R2, #25 ;寫(xiě)入時(shí)間值
- A1:
- MOV R1, #220 ;
- A2:
- ACALL BCD ;BCD調(diào)整
- ACALL DISPCLK ;顯示
- ACALL DEL1MS ;延時(shí)
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- DJNZ R1, A2 ;
- SETB FMQ ;
- MOV A, DAT ;完成數(shù)字的減1操作
- ADD A, #99H ;
- DA A ;
- MOV DAT, A ;調(diào)整好的數(shù)字送顯存
- DJNZ R2, A1 ;
- ;最后5秒黃燈閃
- MOV P1, #0FFH ;
- MOV P2, #0FFH ;關(guān)所有燈
- CLR ZY ;黃燈亮
- CLR YY ;
- CLR QY ;
- CLR HY ;
- MOV R2, #5 ;
- A3:
- MOV R1, #220 ;
- A4:
- ACALL BCD ;
- ACALL DISPCLK ;
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- DJNZ R1, A4 ;
- CPL QY ;南北向綠燈亮
- CPL HY ;
- CPL ZY ;東西向紅燈亮
- CPL YY ;
- CPL FMQ ;黃燈時(shí)蜂鳴器叫一聲
- MOV A, DAT ;
- ADD A, #99H ;
- DA A ;
- MOV DAT, A ;
- DJNZ R2, A3 ;
- ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- MOV P1, #0FFH ;
- MOV P2, #0FFH ;
- MOV DAT, #20H ;
- CLR ZG ;東西向綠燈亮
- CLR YG ;
- CLR QR ;南北向紅燈亮
- CLR HR ;
- MOV A, DAT ;
- MOV R2, #15 ;執(zhí)行15秒
- A5:
- MOV R1, #220 ;
- A6:
- ACALL BCD ;BCD調(diào)整
- ACALL DISPCLK ;顯示
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- DJNZ R1, A6 ;
- SETB FMQ ;
- MOV A, DAT ;
- ADD A, #99H ;減1操作
- DA A ;
- MOV DAT, A ;
- DJNZ R2, A5 ;
- ;最后5秒黃燈閃
- MOV P1, #0FFH ;
- MOV P2, #0FFH ;關(guān)所有燈
- CLR ZY ;黃燈亮
- CLR YY ;
- CLR QY ;
- CLR HY ;
- MOV R2, #5 ;
- A7:
- MOV R1, #220 ;
- A8:
- ACALL BCD ;
- ACALL DISPCLK ;
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- ACALL DEL1MS ;
- DJNZ R1, A8 ;
- CPL QY ;南北向黃燈亮
- CPL HY ;
- CPL ZY ;東西向黃燈亮
- CPL YY ;
- CPL FMQ ;黃燈時(shí)蜂鳴器叫一聲
- MOV A, DAT ;
- ADD A, #99H ;
- DA A ;
- MOV DAT, A ;
- DJNZ R2, A7 ;
- AJMP AUTCLK ;
- NOP ;
- NOP ;
- NOP ;
- LJMP START
- ;;*********************************
- ;;顯示子程序
- ;;**********************************
- DISPCLK:
- MOV DPTR, #TAB ;定入表頭
- ;顯示個(gè)位
- MOV A, 50H ;
- MOVC A, @A+DPTR ;
- MOV P0, A ;
- CLR SWITCH2 ; 個(gè)位顯示
- LCALL DEL1MS ;
- SETB SWITCH2 ;個(gè)位滅
- ;顯示十位
- MOV A, 51H ;
- MOVC A, @A+DPTR ;
- MOV P0, A ;
- CLR SWITCH1 ; 十位顯示
- LCALL DEL1MS ;
- SETB SWITCH1 ; 十位滅
- RET ;
- NOP ;
- NOP ;
- NOP ;
- LJMP START
- ;************************************************************
- ;橫向道路緊急中斷程序
- ;************************************************************
- D_X:
- CLR EA ;關(guān)總中斷
- JNB P3.2, $ ;
- MOV A, DAT ;保存顯示數(shù)據(jù)
- MOV 20H, A ;
- MOV DAT, #50H ;
- MOV 21H, P1 ;
- MOV 22H, P2 ;
- MOV P1, #0FFH ;
- MOV P2, #0FFH ;
- CLR ZG ;東西向綠燈亮
- CLR YG ;
- CLR QR ;南北向紅燈亮
-
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
- \032
復(fù)制代碼
0.png (52.07 KB, 下載次數(shù): 76)
下載附件
2017-4-11 20:44 上傳
下載:
實(shí)例4 交通燈.zip
(6.96 MB, 下載次數(shù): 127)
2017-4-11 08:23 上傳
點(diǎn)擊文件名下載附件
交通燈 下載積分: 黑幣 -5
|
|