1樓:匿名使用者
這個設計完了 可以在proteus下**的啊
可以交流
2樓:匿名使用者
#include
#define uchar unsigned char#define uint unsigned intsbit red_a=p0^0; //東西向燈sbit yellow_a=p0^1;
sbit green_a=p0^2;
sbit red_b=p0^3; //南北向燈sbit yellow_b=p0^4;
sbit green_b=p0^5;
uchar flash_count=0,operation_type=1; //閃爍次數,操作型別變數
《微控制器c語言程式設計實訓100例---基於8051和proteus**》案例
5上海師範大學資訊與機電工程學院—倪繼鋒
//延時
void delayms(uint x)
//交通燈切換
void traffic_light()
}//主程式
void main()
基於51微控制器控制交通燈的電路圖與c語言程式
3樓:
思路:紅燈停,綠燈行,黃燈閃爍提示行人紅綠燈即將切換。四個方向各有一個紅、黃、綠顯示和兩個數碼管。
東西道為人行道(20秒),南北道為車行道(60秒),黃燈延時最後三秒時,閃爍並切換。
三、硬體電路設計
此電中路設計採用at89c51微控制器,74ls47(數碼管驅動)74ls373(數碼管驅動輸出鎖存),8個數碼管顯示其延時值,四個紅、黃、綠指示燈。硬體設計關鍵在於,延時顯示時,要考慮到當個位數字顯示時,要確保十位數字顯示輸出的不變。因此,可加輸出鎖存器。
在延時最後三秒時,要讓黃燈進行閃爍,並同時顯示數字(這一步在軟體設計上很關鍵)。
四、軟體程式(c語言)
//程式名:十字路**通燈控制
//編寫人:黃庭劍
//程式功能:南北為車行道,延時60秒;東西方向為人行道,延時20秒,且在最後3秒黃燈顯示2秒鐘再實現切換.
//cpu說明:at89c51型微控制器; 24mhz晶體振盪器
#include
#include
#include
sfr p0 = 0x80;
sfr p1 = 0x90;
sfr p2 = 0xa0;
sfr p3 = 0xb0; //這部分內容其實在「#include」裡已經有,但裡面定義的必須區分大小寫,在這裡,因為我程式採用的是小寫,reg51.h裡對各個埠與暫存器的定義都是大寫,所以在編譯連線時,會報錯,所以,在本設計程式裡,我只用到了埠,在這裡也就只定義了四個,而沒有去改reg51.h裡面的內容。
其實兩者是一樣的。
sbit sw = p0^0;
sbit oe =p0^6;
sbit le =p0^7; //74ls373鎖存器控制端定義
char display=; //p1口的數碼管時間顯示呼叫,利用74l74bcd碼,8位驅動輸出;
//函式宣告 begin
void delay1(int count);
void delay_long(int number1,int number2);
void people_car_drive();
//函式宣告end
//***********************//延時子程式
void delay1(int count)
//**********************//延時子程式
void people_car_drive()
int p_1=2,i,j=9,p_2=6; //****************//行人通行時,延時20秒
p2=0x09; //南北紅燈亮
p3=0x24; //東西綠燈亮
while(p_1-->0)
//當十位數減到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)
//當十位數減到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); //南北黃燈閃爍三秒完畢
void main() //主函式入口處
p0=0x01;
p1=0x00;
p2=0x00;
p3=0x00; //初始化各埠
else
p2=0x00;
p3=0x00; //關閉所有交通燈
詳情訪問
4樓:安楽使徒
交通訊號燈控制
控制要求
按下啟動按鈕,交通訊號燈開始正常執行;按下停止按鈕立即停止;按下閃爍按鈕開始閃爍。
正常執行為在前15秒內南北綠燈亮;15到20秒(5秒)中為南北黃燈閃爍(以每秒亮滅一次),南北綠燈滅;在0到20秒內東西紅燈一直點亮;在20到35秒內東西綠燈點亮,東西紅燈與南北黃燈滅;35到40秒東西黃燈閃爍(以每秒亮滅一次),東西綠燈滅;20到40秒內南北紅燈一直點亮。以此為一個週期迴圈點亮。
東西與南北方向的綠燈和紅燈都需要進行倒計時顯示。
啟動和閃爍在執行時都必須使用停止進行停止,啟動與閃爍不可直接進行切換。
硬體要求
使用80c51微控制器進行控制,7位數碼管顯示時間。其餘可根據自己喜好自行選擇。
此專案選擇器件有:7位數碼管顯示選擇兩個74hc573作為訊號鎖存器件;7位數碼管用共陰極數碼管;用紅綠黃燈使用對應顏色的二極體模擬;使用按鈕模擬啟動、停止和閃爍訊號。
軟體使用
硬體**使用protuse 7.8版本。
微控制器程式設計軟體使用keil c51 uvision2。
5樓:匿名使用者
前幾天我寫了一個設計思路,查檢視是否對你有啟發!
6樓:幽黯之林
具體要求說一下啊,幫你試做一下
7樓:一週逗比秀
你找我 923361379!
微控制器控制交通燈
吳欽浩 org 0000h sta mov p0,11011011b 幹線亮綠燈,支線亮紅燈 mov p2,0001000b 選通ledmov p3,11101111b k1列線置0mov r7,3 sta1 jb p3.3,無按鍵等待lcall delay30ms 去抖動jb p3.3,sta1 ...
求基於51微控制器的流水燈的設計
摩凌文 include define uint unsigned int define uchar unsigned charsbit keya p2 1 這裡看你把按鍵設定在哪個引腳上,這個是實現功能2 sbit keyb p2 2 這個是實現功能2sbit keyc p2 7 實現功能3void...
交通燈控制系統的設計與製作,交通燈控制系統設計的畢業論文
include 各種包含檔案 define timer52s h 0x?定時52s高8位值,根據系統時鐘計算確定 define timer52s l 0x?定時52s低8位值,根據系統時鐘計算確定 define timer6s h 0x?定時6s高8位值,根據系統時鐘計算確定 define time...