日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

交通灯程序设计C语言,基于MCS-51的交通灯程序设计(c语言控制直行左转,包含程序)...

發(fā)布時間:2025/3/12 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交通灯程序设计C语言,基于MCS-51的交通灯程序设计(c语言控制直行左转,包含程序)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#include

#include

#define uint? ?? ???unsigned int

#define uchar? ?? ???unsigned char

#define? ?? ???OFF 0? ?? ???//定義燈泡開關(guān)

#define? ?? ???ON? ?? ???1

sbit? ?? ???ew_zx_red = P1^0;? ?? ?? ? //東西直行紅黃綠

sbit? ?? ???ew_zx_yellow = P1^1;

sbit? ?? ???ew_zx_green = P1^2;

sbit? ?? ???ew_zz_red = P1^3;? ?? ?? ? //東西左轉(zhuǎn)紅黃綠

sbit? ?? ???ew_zz_yellow = P1^4;

sbit? ?? ???ew_zz_green = P1^5;

sbit? ?? ???sn_zx_red = P2^0;? ?? ?? ? //南北直行紅黃綠

sbit? ?? ???sn_zx_yellow = P2^1;

sbit? ?? ???sn_zx_green = P2^2;

sbit? ?? ???sn_zz_red = P2^3;? ?? ?? ? //南北左轉(zhuǎn)紅黃綠

sbit? ?? ???sn_zz_yellow = P2^4;

sbit? ?? ???sn_zz_green = P2^5;

sbit? ?? ???seg_1 = P1^6;? ?? ?? ?//東西數(shù)碼管位選開關(guān)

sbit seg_2 = P1^7;

sbit? ?? ???seg_3 = P2^6;? ?? ?? ?//南北數(shù)碼管位選開關(guān)

sbit seg_4 = P2^7;

int time = 0;? ?? ???//計時器

int count = 0;

unsigned char SEG_CA[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};

unsigned char SEG_CC[10] = {0x3f, 0x06, 0x5b, 0x1f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

void delay()

{

int i;

for(i = 0; i < 10; i++);

}

void display_ew(unsigned int num)? ?? ?? ?//東西數(shù)字顯示

{

P0 = SEG_CA[num/10];? ?? ?? ? //點亮數(shù)字高位

seg_1 = ON;

delay();

seg_1 = OFF;

P0 = SEG_CA[num%10];? ?? ?? ? //點亮數(shù)字低位

seg_2 = ON;

delay();

seg_2 = OFF;

}

void display_sn(unsigned int num)? ?? ?? ?//南北數(shù)字顯示

{

P0 = SEG_CA[num/10];? ?? ?? ?//點亮數(shù)字高位

seg_3 = ON;

delay();

seg_3 = OFF;

P0 = SEG_CA[num%10];? ?? ?? ?//點亮數(shù)字低位

seg_4 = ON;

delay();

seg_4 = OFF;

}

void display_ew_shan(unsigned int num)? ?? ?? ?//東西3s 倒計時閃爍顯示

{

if(count < 2000)

display_ew(num);

else

{

seg_1 = OFF;

seg_2 = OFF;

}

}

void display_sn_shan(unsigned int num)? ?? ?? ?//南北3s倒計時閃爍顯示

{

if(count < 2000)

display_sn(num);

else

{

seg_3 = OFF;

seg_4 = OFF;

}

}

void init()

{

P0 = 0x00;

P1 = 0x00;

P2 = 0x00;

EA = 0;? ?? ???//關(guān)總中斷

ET0 = 1;? ?? ???//開定時器0中斷

TMOD = 0x02;? ?? ???//定時器0工作方式2

TL0 = 6;? ?? ???//定時250us

TH0 = 6;

EA = 1;? ?? ?? ? //開總中斷

TR0 = 1;? ?? ?? ?//開始定時

}

void main()

{

init();

while(1)

{

/*************************************************************

開始東西直行綠燈亮,東西左轉(zhuǎn)紅燈亮27s,顯示綠燈倒計時30s

南北直行、左轉(zhuǎn)紅燈亮50s,顯示紅燈倒計時50s

*************************************************************/

while(time%100 < 27)

{

ew_zx_green = ON;? ?? ?? ?//東西直行綠燈亮,顯示27s

ew_zx_yellow = OFF;

ew_zx_red = OFF;

display_ew(30 - time);

ew_zz_red = ON;? ?? ?? ?//東西左轉(zhuǎn)紅燈亮

ew_zz_green = OFF;

ew_zz_yellow = OFF;

sn_zx_red = ON;? ?? ?? ?//南北直行紅燈亮,顯示時間50s

sn_zx_yellow = OFF;

sn_zx_green = OFF;

display_sn(50 - time);

sn_zz_red = ON;? ?? ?? ?//南北左轉(zhuǎn)紅燈亮,顯示時間50s

sn_zz_yellow = OFF;

sn_zx_green = OFF;

}

/*************************************************************

東西直行黃燈亮3s, 倒計時開始閃爍

東西左轉(zhuǎn),南北方向不變

*************************************************************/

while(time%100 >= 27 && time%100 < 30)

{

ew_zx_yellow = ON;? ?? ?? ?//東西直行黃燈亮 ,顯示時間3s

ew_zx_red = OFF;

ew_zx_green = OFF;

display_ew_shan(30 - time);

display_sn(50 - time);

}

/*************************************************************

東西左轉(zhuǎn)綠燈亮17s,直行紅燈亮 ,顯示綠燈倒計時20s

南北方向不變

*************************************************************/

while(time%100 >= 30 && time%100 < 47)

{

ew_zz_green = ON;? ?? ???//東西左轉(zhuǎn)綠燈亮,顯示時間17s

ew_zz_red = OFF;

ew_zz_yellow = OFF;

display_ew(50-time);

ew_zx_red = ON;? ?? ?? ?//東西直行紅燈亮

ew_zx_yellow =OFF;

ew_zx_green = OFF;

display_sn(50-time);? ?? ?? ?//南北繼續(xù)顯示倒計時

}

/*************************************************************

東西左轉(zhuǎn)黃燈亮3s, 倒計時開始閃爍 3s

東西直行,南北方向不變

*************************************************************/

while(time%100 >= 47 && time%100 < 50)

{

ew_zz_yellow = ON;? ?? ???//東西左轉(zhuǎn)黃燈亮,顯示時間3s

ew_zz_red = OFF;

ew_zz_green = OFF;

display_ew_shan(50-time);

display_sn(50-time);? ?? ?? ?//南北繼續(xù)顯示倒計時

}

/*************************************************************

東西左轉(zhuǎn)紅燈亮50s,直行不變,顯示倒計時50s

南北直行綠燈亮27,左轉(zhuǎn)不變,顯示綠燈倒計時30s

*************************************************************/

while(time%100 >=50 && time%100 < 77)

{

sn_zx_green = ON;? ?? ???//南北直行綠燈亮,顯示時間27s

sn_zx_yellow = OFF;

sn_zx_red = OFF;

display_sn(80 - time);

ew_zz_red = ON;? ?? ?? ? //東西左轉(zhuǎn)紅燈亮,顯示時間50s

ew_zz_yellow = OFF;

ew_zz_green = OFF;

display_ew(100 - time);

}

/*************************************************************

南北直行黃燈亮3s,左轉(zhuǎn)不變,顯示黃燈閃爍倒計時3s

東西不變

*************************************************************/

while(time%100 >= 77 && time%100 < 80)

{

sn_zx_yellow = ON;? ?? ???//南北直行黃燈亮,顯示時間3s

sn_zx_red = OFF;

sn_zx_green = OFF;

display_sn_shan(80 - time);

display_ew(100 - time);

}

/*************************************************************

南北左轉(zhuǎn)綠燈亮17s,直行不變,顯示綠燈倒計時20s

東西不變

*************************************************************/

while(time%100 >=80 && time%100 <97)

{

sn_zz_green = ON;? ?? ?? ?//南北左轉(zhuǎn)綠燈亮, 顯示17s

sn_zz_red = OFF;

sn_zz_yellow = OFF;

display_sn(100-time);

sn_zx_red = ON;? ?? ???//南北直行紅燈亮

sn_zx_yellow = OFF;

sn_zx_green = OFF;

display_ew(100 - time);? ?? ???//東西繼續(xù)倒計時

}

/*************************************************************

南北左轉(zhuǎn)黃燈亮17s,直行不變,顯示黃燈閃爍倒計時3s

東西不變

*************************************************************/

while(time%100 >= 97 && time<=100)

{

sn_zz_yellow = ON;? ?? ???//南北左轉(zhuǎn)黃燈亮, 顯示時間3s

sn_zz_red = OFF;

sn_zz_green = OFF;

display_sn_shan(100 - time);

display_ew(100 - time);? ?? ???//東西繼續(xù)倒計時

}

}

}

void timer0() interrupt 1

{

count++;

if(count == 4000)

{

time++;

count = 0;

}

if(time > 100)

time = 0;

}

總結(jié)

以上是生活随笔為你收集整理的交通灯程序设计C语言,基于MCS-51的交通灯程序设计(c语言控制直行左转,包含程序)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。