交通信号灯的51单片机仿真

  • 一、实验目的
  • 二、实验仪器
  • 三、实验内容
  • 四、实验过程及原始记录
  • 五、实验结果及分析
  • 六、源代码
  • 七、总结

一、实验目的

安装并熟悉Proteus 电路仿真软件

二、实验仪器

PC机、keil软件、proteus软件

三、实验内容

十字路口的交通灯控制系统,四组灯(红黄绿)对应十字路口的四个方向,用两位的数码管显示剩余的时间。其它功能自行完善,根据设计方案的完善程度给定成绩。

四、实验过程及原始记录

五、实验结果及分析

六、源代码

#include<reg51.h>
#define unit unsigned int
#define uchar unsigned charsbit p10=P1^0;     //东西红灯
sbit p11=P1^1;    //东西绿灯
sbit dh=P1^2;     //东西黄灯
sbit p13=P1^3;    //南北红灯
sbit p14=P1^4;    //南北绿灯
sbit nh=P1^5;     //南北黄灯
sbit p16=P1^6;    //始终置位1
sbit p17=P1^7;    //始终置位1uchar num1,num2,num3d;num3n;tt,zc;gf;key;a;b;c;    //东西时间num1;南北时间num2;时间中断次数tt;
uchar led0,led1,led2,led3;   //数码管显示缓冲区域
unsigned char code led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};void delay(int z);
void display(uchar led0,led1,led2,led3);
uchar keyscan(void);void main()
{num1=30;num2=25;tt=0;TMOD=0x11;      //设置定时器0为工作方式1TH0=(65536-50000)/256;   //定时器0设50毫秒TL0=(65536-50000)%256;EA=1;   //开总中断ET0=1;   //定时器0中断TR0=1;   //启动定时器0zc=1;   //正常情况初始化key=0x7e;P1=0xf5;num1=25;num2=30;gf=1;   //高峰期初始化c=1;num3d=35;num3n=40;display(led0,led1,led2,led3);while(1){display(led0,led1,led2,led3);key=keyscan();   //调用键盘扫描switch(key){/*正常情况通行*/case 0x7e:switch(zc)   //用于对灯的初始状态复原,因为紧急状况改变灯的状态{case 1:p10=1;   //东西红灯p11=1;   //东西绿灯p13=0;   //南北红灯p14=1;   //南北绿灯nh=1;   //南北黄灯p16=1;   //始终置为1p17=1;   //始终置为1break;case 2:P1=0xee;break;case 3:p10=0;   //东西红灯p11=1;   //东西绿灯dh=1;   //东西黄灯p13=1;   //南北红灯p14=1;   //南北绿灯p16=1;   //始终置为1p17=1;   //始终置为1break;case 4:P1=0xf5;break;};display(led0,led1,led2,led3);if(num1==0||num2==0){zc++;   //时间到0后switch(zc){case 1:num1=5;P1=0xf3;break;case 2:num1=30,num2=25;P1=0xee;break;case 3:num2=5;P1=0xde;break;case 4:zc=1;num1=25;num2=30;P1=0xf5;break;}}else if(a==1){a=0;num1--;num2--;led0=num1/10;led1=num1%10;led2=num2/10;led3=num2%10;if(zc==2)dh=~dh;if(zc==4)nh=~nh;};b=0;c=1;break;case 0x7d:if(a==1){b++;if(b<6){p10=1;     //东西红灯p11=1;   //东西绿灯dh=~dh;   //东西黄灯p13=1;   //南北红灯p14=1;   //南北绿灯nh=~nh;   //南北黄灯p16=1;   //始终置为1p17=1;   //始终置为1}else{p10=1;     //东西红灯p11=1;   //东西绿灯dh=1;   //东西黄灯p13=0;   //南北红灯p14=1;   //南北绿灯nh=1;   //南北黄灯p16=1;   //始终置为1p17=1;   //始终置为1}a=0;};break;case 0x7b:if(c==1){c=0;num3d=35;num3n=40;}display(led0,led1,led2,led3);if(num3d==0||num3n==0){gf++;switch(gf){case 1:num3d=5;P1=0xf3;break;case 2:num3d=20,num3n=15;P1=0xee;break;case 3:num3n=5;P1=0xde;break;case 4:gf=1;num3d=35;num3n=40;P1=0xf5;break;}}else if(a==1){a=0;num3d--;num3n--;led0=num3d/10;led1=num3d%10;led2=num3n/10;led3=num3n%10;if(gf==2)dh=~dh;if(gf==4)nh=~nh;}b=0;break;}display(led0,led1,led2,led3);}
}void delay(int z)
{int x;int y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}void time0() interrupt 1   ///定时器中断为1,0是外部中断
{EA=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==20){a=1;tt=0;}EA=1;
}void display(uchar led0,led1,led2,led3)
{P3=0xfe;P0=led_code[led0];delay(5);P3=0xfd;P0=led_code[led1];delay(5);P3=0xfb;P0=led_code[led2];delay(5);P3=0xf7;P0=led_code[led3];delay(5);
}uchar keyscan(void)   //键盘扫描函数
{P2=0xff;   //行数输出全为0if(P2!=0xff){if(P2^7==0)return(0x7d);if(P2^6==0)return(0x7b);display(led0,led1,led2,led3);   /*调显示*/}return(0x7e);   //无键按下返回值
}

七、总结

本次实验是对单片机学习的一个综合考量,主要任务便是设计一个交通灯控制系统。在查阅大量文献之后终于将程序代码完成。但在最后做proteus仿真图的时候遇到了困难,画图画到一半我的proteus直接闪退关闭了,里面的东西全没了,导致做了很多次,浪费了很多时间。但最后把仿真图画出来以后,仿真的时候我的红绿灯倒计时无法正常显示,但红绿灯能够正常跳动,到最后也没能找到原因和解决办法。所以这是一次失败的仿真实验。

交通信号灯的51仿真相关推荐

  1. 51单片机实现交通信号灯

    51单片机实现交通信号灯 文章目录 51单片机实现交通信号灯 实验环境 仿真图 实验原理 代码实现 成果图 资源下载 实验环境 软件: Keil5+Proteus7 元件(主要): AT89C51 * ...

  2. 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)

    基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J013 目录标题 基于51单片机十字路口 ...

  3. 【交通灯】51单片机的交通灯Proteus仿真_带紧急开关+黄灯倒计时+可调时间

    功能说明: 设计下载链接 1.四路交通灯,带有红绿灯倒计时,绿灯倒计时结束后转黄灯5秒,再转红灯. 2.紧急情况下按键紧急按钮,四路黄灯快闪. 3.可以动态设置红绿灯时间. 涉及知识点:按键扫描,定时 ...

  4. 【Proteus】51单片机交通灯信号模拟仿真示例二

    [Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...

  5. 51单片机模拟交通信号灯控制系统设计

    51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...

  6. 简单的红绿灯c语言程序,基于Protues仿真的简单交通信号灯附C语言程序

    简单的交通信号灯实现 本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真.基本实现简单的交通信号等功能. 一.代码如下 #inc ...

  7. 基于Proteus仿真的交通信号灯设计——利用汇编语言实现

    基于Proteus仿真的交通信号灯设计--利用汇编语言实现 文章目录 基于Proteus仿真的交通信号灯设计--利用汇编语言实现 设计要求 基本信息 交通状态 电路仿真原理图 电路总体布局 复位电路 ...

  8. 单片机c语言交通信号灯设计,基于51单片机的交通信号灯设计毕业设计.pdf

    摘 要 在现代城市中,随着人口和汽车的急剧增长,市区交通日益拥挤,要是没有红绿灯 作为指挥工具,恐怕川流不息的汽车就会由于混乱而造成严重阻塞.因此,交通灯是交 管部门管理城市交通的重要工具之一.随着电 ...

  9. 基于51单片机六车道智能交通灯设计(仿真+源程序+PCB+论文)

    资料编号:204 功能介绍:(全套毕设资料齐全) 本设计的交通灯以十字路口为模型,在实现基本的功能前提下增加了时间及温度的液晶显示.从而还增加了路口高峰期的智能化人工管理机制. 实际生活中交通信号灯的 ...

最新文章

  1. java Servlet Filter 拦截Ajax请求,统一处理session超时的问题
  2. moore 数据集_警报数据集(alarm dataset)_机器学习_科研数据集
  3. yii mysql gii_Yii Gii使用
  4. linux select 进程id,Linux基础命令---显示进程ps
  5. 阿里宜搭发布专有云版本,基于云原生的应用构建PaaS平台
  6. python 读取中文文件名/中文路径
  7. 遍历进程链表,打印pcb相关字段的内核模块
  8. 关于×××隧道技术在使用中的优势
  9. 设计模式解密(9)- 装饰者模式
  10. 相机姿态估计(六)--EPnP
  11. jquery 操作表格实例
  12. 知识图谱构建流程原型、工具、数据、表示、推理以及可视化
  13. HHL算法第四弹(回顾伴随、正定算子、半正定算子、正规算子、酉矩阵、幺正矩阵、厄米矩阵,极式分解,奇异值分解)
  14. 能源物联网及其关键技术
  15. Rockchip USB FFS Test Demo 使用说明
  16. 中国大学慕课公开课-《视听语言》-学习笔记-4
  17. 24.4. Prompting
  18. 量化交易平台Quantopian学习的笔记(一)
  19. MySQL第三方客户端工具
  20. Presto的学习笔记

热门文章

  1. 看井上雄彦是如何作画的!
  2. 使用360极速(360Chrome双核)浏览器,360邮件通初始化失败的解决方法
  3. 翻转和旋转计算机教学,小学信息技术《翻转/旋转》教学设计及教学反思
  4. 小白学习Spring(二)
  5. eDiary 个人日记本使用技巧
  6. 破甲两千六 Spring Cloud 教程(三):添加Spring Cloud 的 Netflix Eureka 插件,实现服务端、客户端的发现与注册
  7. 转发:博士毕业,也写一些发文章的心得
  8. 利用指针及数组对国家名称按字典排序
  9. python写socket代理_为python设置socket代理的方法
  10. c语言合法标识符号大全,C语言合法标识符