1. c51單片機控制交通燈要求用匯編語言
// 51單片機控制交通燈要求用匯編語言,模擬實例,可以參考一下
SNF EQU 00H ; 南北通行標志位
EWF EQU 01H ; 東西通行標志位
URF EQU 02H ; 緊急事件標志位
ORG 0000H
LJMP MAIN ; 上電轉主程序
ORG 000BH ; 定時中斷入口
LJMP DSZD
ORG 0003H ; 緊急中斷入口
LJMP URZD
ORG 0030H
MAIN: LCALL INIT ; 調用初始化子程序
LOOP: LCALL DIS ; 循環執行顯示子程序
AJMP LOOP
; *** *** *** 初始化程序
INIT: SETB SNF
SETB EWF
SETB URF
MOV R2,#20 ; 定時器中斷20次為1s
MOV TMOD,#01H ; 初始化定時器
MOV TL0,#0B0H
MOV TH0,#3CH
SETB EA ; 開定時中斷與緊急中斷
SETB ET0
SETB TR0
SETB EX0
SETB IT0 ; 設置中斷程式控制方式
MOV DPTR,#TAB ; 數值首地址放入DPTR中
MOV 40H,#40 ; 東南西北通行時間設置
MOV 41H,#40
MOV 30H,#40 ; 通行時間初始化
MOV 31H,#60
MOV P0,#4CH ; 初始化時南北通行並把交通燈狀態分別放在32H和33H中
MOV 32H,#4CH
MOV P2,#15H
MOV 33H,#15H
RET
; *** *** *** 顯示子程序
DIS: MOV P3,#0DFH ; 選中南北方向的十位數碼管
MOV A,30H ; 把顯示數據送人數碼管顯示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A ;
LCALL D1MS
MOV P3,#0EFH ; 選中南北方向的個位數碼管
MOV A,B ; 送入數碼管顯示
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
MOV P3,#7FH ; 選中第東西方向的十位數碼管
MOV A,31H ; 送入數碼管顯示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
MOV P3,#0BFH ; 選中第東西方向的個位數碼管
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
SETB P3.0
SETB P3.1
JNB P3.0,DIS_S ; 查詢是否第一個按鍵按下
JNB P3.1,DIS_E ; 查詢是否第二個按鍵按下
AJMP DIS_R ; 沒有鍵按下則返回
DIS_S:LCALL D5MS ; 按鍵去抖
JNB P3.0,DIS_SN
AJMP DIS_R
DIS_SN:MOV 40H,#50 ; 對通行時間從新分配,南北通行時間加長
MOV 41H,#30
AJMP DIS_R
DIS_E:LCALL D5MS ; 按鍵去抖
JNB P3.1,DIS_EW
AJMP DIS_R
DIS_EW:MOV 40H,#30 ; 東西通行時間加長
MOV 41H,#50
DIS_R:RET
; *** *** *** 定時中斷處理程序
DS_C: LJMP DS_R ; 接力跳轉
DSZD: PUSH ACC ; 保護現場
PUSH PSW
CLR TR0 ; 關定時器及中斷標志位並重新賦值
CLR TF0
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R2,DS_C ; 判斷1m時間是否到達
MOV R2,#20 ; 到達重新賦值
DEC 30H ; 南北方向通行時間減一
MOV A,30H ; 把減一後的時間送入顯示存儲單元
; *** *** *** 南北通行到達最後4秒時黃燈閃爍
DS_10:CJNE A,#4,DS_11 ; 如果通行時間剩餘4秒
JNB SNF,DS_11 ; 判斷是否是南北通行
MOV P0,#8AH
MOV 32H, #8AH ; 把交通燈狀態存入存儲單元(後面類似)
DS_11:CJNE A,#3,DS_12 ; 不是剩餘3秒,返回
JNB SNF,DS_12 ; 不是南北通行時間,返回
MOV P0,#88H
MOV 32H, #88H
DS_12:CJNE A,#2,DS_13
JNB SNF,DS_13
MOV P0,#8AH
MOV 32H, #8AH
DS_13:CJNE A,#1,DS_14
JNB SNF,DS_14
MOV P0,#88H
MOV 32H, #88H
; *** *** ***
DS_14:JNZ DS_NE ; 通行時間沒有結束轉向改變東西方向的數碼管
CPL SNF ; 如果通行時間結束則對標志位取反
JNB SNF,DS_1 ; 判斷是否南北通行
MOV 30H,40H ; 是,點亮相應的交通燈
MOV P0,#4CH
MOV 32H,#4CH ; 存儲交通燈狀態
MOV P2,#15H
MOV 33H, #15H ; 存儲交通燈狀態
DS_NE:DEC 31H ; 東西方向通行時間減一
MOV A,31H ; 把通行剩餘時間送入顯示存儲單元
; *** *** *** 東西方向通行時間剩餘4秒鍾黃燈閃爍(程序注釋與南北方向類似 略)
DS_20:CJNE A,#4,DS_21
JB EWF,DS_21
MOV P0,#51H
MOV 32H, #51H
DS_21:CJNE A,#3,DS_22
JB EWF,DS_22
MOV P0,#41H
MOV 32H, #41H
DS_22:CJNE A,#2,DS_23
JB EWF,DS_23
MOV P0,#51H
MOV 32H, #51H
DS_23:CJNE A,#1,DS_24
JB EWF,DS_24
MOV P0,#41H
MOV 32H, #41H
; *** *** ***
DS_24:JNZ DS_R ; 東西方向時間沒有結束,返回
CPL EWF ; 對通行狀態取反
JNB EWF,DS_2 ; 東西方向通行時間到來,跳轉
MOV 31H,#80 ; 東西方向通行結束,重新顯示時間
MOV P0,#89H ; 點亮相應的交通燈
MOV 32H, #89H
MOV P2,#29H
MOV 33H, #29H
AJMP DS_R
DS_1: MOV 30H,#80 ; 南北通行時間結束,重新對顯示存儲單元賦值
MOV P0,#89H ; 執行轉彎狀態1
MOV 32H, #89H
MOV P2,#26H
MOV 33H, #26H
AJMP DS_NE
DS_2: MOV 31H,41H ; 東西方向開始通行,賦值予顯示存儲單元
MOV P0,#61H ; 點亮相應的交通燈
MOV 32H, #61H
MOV P2,#15H
MOV 33H, #15H
DS_R: SETB TR0
POP PSW ; 恢復現場
POP ACC
RETI
; *** *** *** 緊急中斷處理程序
URZD: PUSH ACC ; 保護現場
PUSH PSW
CLR IE0 ; 清除中斷標志位
CLR TR0 ; 關定時器
CPL URF ; 緊急事件標志位
JB URF,UR_CON ; 緊急結束;跳轉
MOV P0,#49H ; 各路口燈全顯示紅燈亮
MOV P2,#15H
AJMP UR_R
UR_CON:SETB TR0 ; 恢復正常交通
MOV A,32H
MOV P0,A
MOV A,33H
MOV P2,A
UR_R: POP PSW ; 恢復現場
POP ACC
RETI
; *** *** *** 查表指令0,1,2,3,4,5,6,7,8,9
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH
DB 7DH, 07H, 7FH, 6FH
; *** *** *** 延時5ms與1ms
D5MS: MOV R7,#5
D1MS: MOV R7,#10
MOV R6,#50
L1: DJNZ R6,$
DJNZ R7,L1
RET
2. 51單片機C語言程序:交通燈系統
這種問題一般沒人會的,像 CSDN、程序員網 等等有類似的設計,你可以去看看
3. 如何運用51單片機設計一個交通燈系統
運用定時器,數碼管LED和8255A設計一個交通燈控制系統! 1.南北綠燈,東西紅燈,20秒 2.南北轉黃燈,東西紅燈,5秒 3.南北紅燈,東西綠燈,20秒 4.南北紅燈,東西轉黃燈,5秒 5.循環步驟1
4. 基於51單片機的交通燈控制設計
這個設計完了 可以在proteus下模擬的啊
可以交流
5. 51單片機 匯編語言設計交通燈
你用兩個數碼管顯示時間,數碼管看起來不閃,建議你做一個10ms定時器,10ms一到就切換顯示,100次就秒計時器+1(顯示要減1),閃爍就是有500ms送0xFFFF(或0x0000,看硬體電路)數碼管就滅,500ms送數據顯示,沒一秒到時都要計數並判斷狀態改變哦
6. 利用MCS-51單片機控制交通燈。 要求:1.當南北,東西道均有車時輪流放行。各放行10秒,轉換時
你要模擬
還是實物?
我做單片機開發的
7. 51單片機交通燈設計,求程序和模擬圖
手動模式:當東西向(或南北向)有特殊情況,可用開關K1(或K2)使東西向綠燈、南北向紅燈(南北向綠燈、東西向紅燈)。
8. 基於51單片機控制交通燈的電路圖與C語言程序
思路:
紅燈停,綠燈行,黃燈閃爍提示行人紅綠燈即將切換。四個方向各有一個紅、黃、綠顯示和兩個數碼管。
東西道為人行道(20秒),南北道為車行道(60秒),黃燈延時最後三秒時,閃爍並切換。
三、硬體電路設計
此電中路設計採用AT89C51單片機,74LS47(數碼管驅動)74LS373(數碼管驅動輸出鎖存),8個數碼管顯示其延時值,四個紅、黃、綠指示燈。硬體設計關鍵在於,延時顯示時,要考慮到當個位數字顯示時,要確保十位數字顯示輸出的不變。因此,可加輸出鎖存器。在延時最後三秒時,要讓黃燈進行閃爍,並同時顯示數字(這一步在軟體設計上很關鍵)。
四、軟體程序(C語言)
以下是整個設計的軟體程序,直接可以編譯成*。Hex代碼。通過以上電路,下載到單片機,可直接運行。
//*****************************//
//程序名:十字路口交通燈控制
//編寫人:黃庭劍
//初寫時間:2009年1月2日
//程序功能:南北為車行道,延時60秒;東西方向為人行道,延時20秒,且在最後3秒黃燈顯示2秒鍾再實現切換.
//CPU說明:AT89C51型單片機;24MHZ晶體振盪器
//完成時間:2009年1月6日
//*****************************//
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
sfrp0=0x80;
sfrp1=0x90;
sfrp2=0xA0;
sfrp3=0xb0;//這部分內容其實在「#include<reg51.h>」里已經有,但裡面定義的必須區分大小寫,在這里,因為我程序採用的是小寫,reg51.h里對各個埠與寄存器的定義都是大寫,所以在編譯連接時,會報錯,所以,在本設計程序里,我只用到了埠,在這里也就只定義了四個,而沒有去改reg51.h裡面的內容。其實兩者是一樣的。
sbitsw=p0^0;
sbitOE=P0^6;
sbitLE=P0^7;//74LS373鎖存器控制端定義
chardisplay[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99};//p1口的數碼管時間顯示調用,利用74L74BCD碼,8位驅動輸出;
//函數聲明begin
voiddelay1(intcount);
voiddelay_long(intnumber1,intnumber2);
voidpeople_car_drive();
//函數聲明end
//***********************//延時子程序
voiddelay1(intcount)
{inti;
for(i=count;i>0;i--)
{;}
}
voiddelay_long(intnumber1,intnumber2)
{
inta,b;
for(a=number1;a>0;a--)
{
for(b=number2;b>0;b--)
{_nop_();}
}
}
//**********************//延時子程序
voidpeople_car_drive()
{
intp_1=2,i,j=9,p_2=6;//****************//行人通行時,延時20秒
p2=0x09;//南北紅燈亮
p3=0x24;//東西綠燈亮
while(p_1-->0)
{LE=1;
OE=0;
if(p_1==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_1];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_1==0&&j==3)break;//減到3時退出循環,讓其黃燈閃爍顯示
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
//*******************************************************************************//
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
//*****************以下是車輛通行時延時60秒//
p2=0x24;//南北綠燈亮
p3=0x09;//東西紅燈亮
while(p_2-->0)
{LE=1;
OE=0;
if(p_2==0){OE=1;}//當十位數減到0時,只顯示個位數
p1=display[p_2];
delay1(1000);
LE=0;
j=9;
for(i=10;i>0;i--)
{
if(p_2==0&&j==3)break;//減到2時退出循環
p1=display[j--];
delay_long(16000,2);
if(sw==1)return;
}
}
p2=0x12;//南北黃燈閃爍三秒,以提醒行人注意
p3=0x12;
p1=display[3];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[2];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);
p2=0x12;
p3=0x12;
p1=display[1];
delay_long(8000,1);
p2=0x00;
p3=0x00;
delay_long(14000,1);//南北黃燈閃爍三秒完畢
}
voidmain()//主函數入口處
{
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00;//初始化各埠
{while(1)
{
if(sw==0)
{people_car_drive();}
else
{
p2=0x00;
p3=0x00;//關閉所有交通燈
}
}
}
}
詳情訪問:http://hi..com/hjiannew/
9. 單片機中十字路口交通信號燈的過程,內容,原理
基於單片機的十字路口交通燈設計
摘要:知道了交通燈的重要性,而對於交通燈最重要的是單片機。跟隨單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統中,單片機通常作為一個核心部件來使用,僅憑對單片機簡單了解是不夠的,應該根據具體硬體結構並且軟硬體結合,實現自己想要達到的目的。單片機自問世以來,性能不斷提高和完善,所以實用許多場合。單片機具有集成度高、功能多、速度快、體積小、功耗低、使用方便、性能可靠、價格便宜,其易於產品化、抗干擾能力強、可以在惡劣的情況下堅持工作。特別是它強大的面向控制能力,使它在工業控制領域,智能儀表、外設控制、家用電器、機器人、軍事裝置等方面得到了廣泛的應用。 考慮到單片機具有物美價廉、靈活方便、還有各種優秀的特點,所以我們從中選擇用MCS-51系列單片機AT89C51單片機來實現十字路口交通信號燈的控制。單片機系統的實體和裝置,通常由運算器、控制器、存儲器、輸入介面電路和輸入設備、輸出介面電路和輸出設備等組成。單片機實質上是一個硬體的晶元,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展介面電路、外部設備、被控對象等硬體和軟體,才能構成一個單片機應用系統。該交通燈擬系統的硬體部分主要由鍵盤、顯示和運算部分組成,再根據實際車流量通過8051晶元的P3口設置紅、綠燈燃亮時間的功能;紅綠燈循環點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過P1口輸出,顯示時間通過P0口輸出至雙位數碼管)。本系統設計周期短、可靠性高、實用性強、操作簡單、維護方便、擴展功能強。
關鍵詞:單片機、MCS-51系列單片機AT89C51、交通燈
10. 51單片機交通燈電路圖與程序
網路文檔里我已經上傳,你可以去下載http://wenku..com/view/16a276c66137ee06eff918a8.html