#include #define uintunsigned int

#define ucharunsigned char

#defineOFF 0//定义灯泡开关

#defineON1

sbitew_zx_red = P1^0;   //东西直行红黄绿

sbitew_zx_yellow = P1^1;

sbitew_zx_green = P1^2;

sbitew_zz_red = P1^3;   //东西左转红黄绿

sbitew_zz_yellow = P1^4;

sbitew_zz_green = P1^5;

sbitsn_zx_red = P2^0;   //南北直行红黄绿

sbitsn_zx_yellow = P2^1;

sbitsn_zx_green = P2^2;

sbitsn_zz_red = P2^3;   //南北左转红黄绿

sbitsn_zz_yellow = P2^4;

sbitsn_zz_green = P2^5;

sbitseg_1 = P1^6;  //东西数码管位选开关

sbit seg_2 = P1^7;

sbitseg_3 = P2^6;  //南北数码管位选开关

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)  //东西数字显示

{

P0 = SEG_CA[num/10];   //点亮数字高位

seg_1 = ON;

delay();

seg_1 = OFF;

P0 = SEG_CA[num%10];   //点亮数字低位

seg_2 = ON;

delay();

seg_2 = OFF;

}

void display_sn(unsigned int num)  //南北数字显示

{

P0 = SEG_CA[num/10];  //点亮数字高位

seg_3 = ON;

delay();

seg_3 = OFF;

P0 = SEG_CA[num%10];  //点亮数字低位

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;//关总中断

ET0 = 1;//开定时器0中断

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

TL0 = 6;//定时250us

TH0 = 6;

EA = 1;   //开总中断

TR0 = 1;  //开始定时

}

void main()

{

init();

while(1)

{

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

开始东西直行绿灯亮,东西左转红灯亮27s,显示绿灯倒计时30s

南北直行、左转红灯亮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;  //东西左转红灯亮

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;  //南北左转红灯亮,显示时间50s

sn_zz_yellow = OFF;

sn_zx_green = OFF;

}

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

东西直行黄灯亮3s, 倒计时开始闪烁

东西左转,南北方向不变

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

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);

}

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

东西左转绿灯亮17s,直行红灯亮 ,显示绿灯倒计时20s

南北方向不变

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

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

{

ew_zz_green = ON;//东西左转绿灯亮,显示时间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);  //南北继续显示倒计时

}

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

东西左转黄灯亮3s, 倒计时开始闪烁 3s

东西直行,南北方向不变

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

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

{

ew_zz_yellow = ON;//东西左转黄灯亮,显示时间3s

ew_zz_red = OFF;

ew_zz_green = OFF;

display_ew_shan(50-time);

display_sn(50-time);  //南北继续显示倒计时

}

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

东西左转红灯亮50s,直行不变,显示倒计时50s

南北直行绿灯亮27,左转不变,显示绿灯倒计时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;   //东西左转红灯亮,显示时间50s

ew_zz_yellow = OFF;

ew_zz_green = OFF;

display_ew(100 - time);

}

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

南北直行黄灯亮3s,左转不变,显示黄灯闪烁倒计时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);

}

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

南北左转绿灯亮17s,直行不变,显示绿灯倒计时20s

东西不变

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

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

{

sn_zz_green = ON;  //南北左转绿灯亮, 显示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);//东西继续倒计时

}

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

南北左转黄灯亮17s,直行不变,显示黄灯闪烁倒计时3s

东西不变

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

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

{

sn_zz_yellow = ON;//南北左转黄灯亮, 显示时间3s

sn_zz_red = OFF;

sn_zz_green = OFF;

display_sn_shan(100 - time);

display_ew(100 - time);//东西继续倒计时

}

}

}

void timer0() interrupt 1

{

count++;

if(count == 4000)

{

time++;

count = 0;

}

if(time > 100)

time = 0;

}

8086 按开关灯亮 c语言程序,基于MCS-51的交通灯程序设计(c语言控制直行左转)...相关推荐

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

    #include #include #define uint        unsigned int #define uchar        unsigned char #define        ...

  2. msp430流水灯c语言程序,基于MSP-EXP430F5529开发板流水灯程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RT,全部使用到了板载的8个可编程LED组成的流水灯程序,以及液晶的背光,达到了使能亮的东西全都又闪又亮了. //******************** ...

  3. 电子时钟单片机c语言程序,一款51单片机电子钟制作(C语言)

    //主程序/ void main()//主程序开始 { chushi();//初始化 while(1)//大循环 { if(g!=1)//如果g不等于1,就执行下一句,否则跳过下一句 disy(fen ...

  4. 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计 - 全文

    本文为大家带来三个关于LED模拟交通灯单片机C语言程序设计. 关于LED模拟交通灯单片机C语言程序设计一 功能说明 东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南 ...

  5. 51单片机C语言程序100例分析(1)IO+C语言+头文件

    51单片机C语言程序100例分析(1)IO+C语言+头文件 \\\插播一条:文章末尾有惊喜哟~///  P1=0xfe;//P1=11111110B,即P1.0输出低电平} 分析:通过这短短的几行代码 ...

  6. 单片机c语言交通灯源程序,基于80C51单片机的交通灯C语言源程序

    <基于80C51单片机的交通灯C语言源程序>由会员分享,可在线阅读,更多相关<基于80C51单片机的交通灯C语言源程序(5页珍藏版)>请在人人文库网上搜索. 1.include ...

  7. c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言

    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...

  8. 奇数魔方阵c语言程序设计,《C语言程序》课程设计报告书魔方阵程序设计

    <<C语言程序>课程设计报告书魔方阵程序设计>由会员分享,可在线阅读,更多相关<<C语言程序>课程设计报告书魔方阵程序设计(17页珍藏版)>请在人人文库 ...

  9. J015基于AT89C51的十字路口交通灯紧急+夜间

    基于AT89C51的十字路口交通灯紧急+夜间 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J015 目录标题 基于AT89C51的十字路口交通灯紧急+夜 ...

  10. 基于51单片机交通灯控制系统

    51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...

最新文章

  1. 深度分析define预处理指令
  2. mongodb 备份和恢复
  3. python3 文件 复制、重命名、移动、删除
  4. 用BFS(广度优先搜索queuelist)算法解决农夫过河问题
  5. 在Browser Application中使用XNA
  6. cocos creator基础-创建WX开放域遇到的问题
  7. 什么时候用不到索引?
  8. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
  9. Win-MASM64汇编语言-MOV/MOVSB/MOVSW/MOVSD/REP/REPZ/REPE/REPNZ/REPNE
  10. 暗黑启示录bt版java下载,Transmission搭建BT下载服务器
  11. 金融发展在经济结构调整中的重要作用
  12. c语言调用树莓派usb摄像头,树莓派接多个USB摄像头,使用opencv打开指定的某一个摄像头...
  13. 施努卡:机器视觉公司排名(机器人视觉系统)
  14. 非线性规划模型、0-1整数规划模型
  15. ASP.NET MVC --- 身份认证与授权
  16. 淘宝推荐最靠谱的补单平台排行榜
  17. ubuntu14.04下安装图片编辑软件pinta
  18. 获取当前目录下的所有文件夹
  19. 操作系统进程状态和状态转换详解
  20. .net2.0注册到IIS ,重新注册IIS ,iis注册

热门文章

  1. python-opencv实现简单的车牌定位
  2. 11.28.cookie
  3. Java动态代理简述
  4. 工作那些事(三十一)怎样带好一个项目团队
  5. |Vijos|图论最短路|P1082 丛林冒险
  6. THD 变量存入threads中
  7. 实现图片大小的自动控制( 图片大小控制CSS代码)
  8. NGUI_2.6.3_系列教程三
  9. AndroidStudio_你的主机中的软件中止了一个已建立的连接---Android原生开发工作笔记123
  10. 大数据之-Hadoop完全分布式_SCP案例_同时在1000台服务器上安装JDK_配置环境变量---大数据之hadoop工作笔记0031