仿真图如下:

要写的程序:

main.c

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar cp,cp1,sec,flash;
uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
#include<display.c>
#include<key.c>
#include<time.c>
void timer0_isr(void) interrupt 1
{TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2000) % 256;cp++;if(cp >= 250){cp1++;cp = 0;}if(cp1 >= 2){cp1 = 0;sec--;}if(sec <= 0)sec=11;time();
//  display();}void timer0_init()
{TMOD = 0x01;TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2000) % 256;EA = 1;TR0 = 1;ET0 = 1;
}void main()
{timer0_init();                                                                                                                                                         while(1){display();key();}
}

display.c

sbit RED_A=P3^5;
sbit YELLOW_A=P3^6;
sbit GREEN_A=P3^7;
sbit RED_B=P1^2;
sbit YELLOW_B=P1^3;
sbit GREEN_B=P1^4;
uchar flash_count = 0;//闪硕次数
Oreration_Type = 1;
void delay(uint x)
{   uchar t;while(x--){for(t=120;t>0;t--);}
}
void display()
{switch(Oreration_Type){case 1:RED_A=1;YELLOW_A=0;GREEN_A=0;RED_B=0;YELLOW_B=0;GREEN_B=1;if(sec==3){Oreration_Type = 2;sec=3;}break;case 2:delay(500);YELLOW_A=~YELLOW_A;if(++flash_count !=6)return;flash_count=0;  Oreration_Type = 3;break;case 3:RED_A=0;YELLOW_A=0;GREEN_A=1;RED_B=1;YELLOW_B=0;GREEN_B=0;if(sec==3){Oreration_Type = 4;sec=3;}break;case 4:delay(500);YELLOW_B=~YELLOW_B;if(++flash_count !=6)return;flash_count=0;Oreration_Type = 1;break;case 5:RED_A=0;YELLOW_A=1;GREEN_A=0;RED_B=0;YELLOW_B=1;GREEN_B=0;// delay(2000);//  Oreration_Type = 1;break;}
}

key.c

unsigned char key_i;
sbit k1=P3^1;
sbit k2=P3^2;
sbit k3=P3^3;
sbit k4=P3^4;
void key()
{if(k1 == 0){delay(100);if(k1 == 0){key_i++;if(key_i >= 3)key_i = 0;}while(k1 == 0);}if(k2 == 0){delay(100);if(k2 == 0){if(key_i == 1){sec++;if(sec >= 10)sec = 9;}}while(k2 == 0);}if(k3 == 0){delay(100);if(k3 == 0){if(key_i == 2){sec--;if(sec <= 0)sec = 0;}}while(k3 == 0);}if(k4 == 0){delay(100);if(k4 == 0)Oreration_Type = 5;while(k4 == 0);}
}

time.c

void time ()
{uchar i;P0 = 0xff;switch(i){case 0:P2=0x08;P0=seven_seg[sec / 10];break;case 1:P2=0x10;P0=seven_seg[sec % 10];break;}i++;if(i >= 2)i = 0;} 

运行结果:

每次11秒倒计时。

项目16—用51单片机实现十字路口红绿灯相关推荐

  1. 基于51单片机的十字路口交通灯系统

    1 设计名称 基于51单片机的十字路口交通灯系统(C语言.Proteus开发环境) 2 设计要求 1. 基于51系列单片机设计一个十字路口交通灯控制系统,用于模拟道路十字路口交通灯实际运行的场景. 2 ...

  2. 51单片机自学--交通红绿灯模拟

    51单片机自学--交通红绿灯模拟(黄灯闪烁与不闪两种模式) ABC东西红黄绿DEF南北红黄绿S时间K选择模式 或许看这文章的是初学者,有些话还是要说的,就是要使用本代码,需要把对应的端口进行更改为你连 ...

  3. 基于51单片机的十字路口交通红绿灯控制系统仿真原理图方案设计

    硬件设计系统 (末尾附文件) 原理图: 仿真图 时钟电路模块 时钟电路模块 时钟电路由一个晶体振荡器12MHZ和两个30pF的瓷片电容组成.时钟电路用于产生单片机工作所需的时钟信号,而时序所研究的是指 ...

  4. 项目实战:51单片机无线音乐门铃设计资料 五首歌曲自由切换 (含实物 图纸 程序 仿真)

    无线门铃又称无线遥控门铃或遥控门铃.无线门铃是利用超再生无线模块来实现无线遥控的,无线门铃不需要布线,安装简单灵活,但是传输距离受传输距离和现场环境影响较大.有线门铃正好与之相反 包含,程序 实物 图 ...

  5. 综合小项目1--基于51单片机的温度检测报警系统

    目录 一. 系统简介 二. 系统设计 三. 实验设备 四. 实验过程 五. 系统测试 六. 总结 一. 系统简介   该系统是基于51单片机的温度监测报警系统.由主控模块.检测模块.显示模块以及报警模 ...

  6. 项目实战:51单片机超声波水位控制器设计 (源码+PCB+原理图与实物制作)全套资料

    51单片机超声波水位控制器设计 说明: 本设计中液晶显示有4个字母,分别为 H------容器的最高水位设定值(不能高于实际高度) L------容器的最低水位设定值 D-----容器实际高度(可以设 ...

  7. 项目实战:51单片机霍尔自行车里程测速仪设计升级版 原理图 程序 制作BOM

    给CSDN论坛的朋友们分享一个51单片机做的霍尔自行车里程测速仪,资料很全 程序 设计论文都有. 说明 1.单片机是通用的无论51还是52.无论stc还是at都一样,引脚功能都一样. 程序也是一样的. ...

  8. 项目实战:51单片机霍尔自行车里程测速仪设计 论文 原理图 程序 PPT 制作详解都有

    给CSDN论坛的朋友们分享一个51单片机做的霍尔自行车里程测速仪,资料很全 程序 设计论文都有. 说明 1.单片机是通用的无论51还是52.无论stc还是at都一样,引脚功能都一样. 程序也是一样的. ...

  9. 小项目分享:51单片机音乐喷泉制作全过程资料(附送给初学者的忠告)

    因为最近忙着考试,所以都没时间更新博客了,在后台有个小姐姐给我留言说自己对单片机很感兴趣,但是又不知道从哪里开始学起,是先学硬件好还是先学软件好,其实在我们复杂的电子学里,硬件和软件是分不开的,硬件就 ...

最新文章

  1. Clever Answers in Codewar(Javascript 持续更新)
  2. asp.net面试的代码题目
  3. linux启动weblogic指令,linux下如何启动和关闭weblogic
  4. MySQL怎么打开explain_MySQL干货之-利用EXPLAIN优化查询
  5. 记一次对某企业的渗透测试实战
  6. JMeter性能测试入门
  7. 将数据流链接到加密转换的流CryptoStream 类
  8. Windows核心编程条件变量
  9. 解决Fiddler查看Post参数中文乱码的问题
  10. 【Yarn】hadoop的yarn资源队列
  11. 成绩查看_2019一级建造师成绩已公布,赶紧来查看成绩吧
  12. Tushare数据工具介绍
  13. python 拼音读音-Python 中拼音库 PyPinyin 的用法(转)
  14. Global Industry Analysts称全球MSS市场在2017年达到112亿美元
  15. 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀
  16. mysql主备方案_Mysql 主备双库方案
  17. 12-属性动画源码分析
  18. Java基础03运算符
  19. 微软 CTO 韦青:“程序员 35 岁就被淘汰”是个伪概念
  20. 熵权法、主客观权重及matlab应用

热门文章

  1. 伪造免费 WiFi 盗你账号密码
  2. 器官芯片相关研究最新进展(2023年3月)
  3. 高性能微服务网关APISIX - API文档
  4. nyoj 55懒省事的小明
  5. 蓝牙耳机的降噪功能是什么原理?长时间使用会伤害耳朵听力吗?
  6. 【Qt】 Qt 5.15 在线安装
  7. 【系统环境变量被删除如何恢复】
  8. HTAP系统架构实践总结
  9. 10进制转12进制,思考转任意进制
  10. Typora常用的语法与快捷键