找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2977|回复: 0
收起左侧

单片机无流量监控的交通灯系统 含源码,proteus仿真,可咨询详细问题

[复制链接]
ID:200682 发表于 2017-5-17 19:36 | 显示全部楼层 |阅读模式
第一次自己做无流量监控的交通灯系统设计,基于51单片机做的,自己发帖,求鼓励。
这个是老师让做的交通灯仿真系统,无流量监控
一共横向竖向两路,红绿黄灯,红灯30S 绿灯加黄灯30秒,绿灯25秒。
人行道红绿灯个8个,共16个。
采用定时器中断。
每个路口两位数码管。
程序比较傻瓜,
如果有好的想法,求指点。

单片机仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):

仿真图

仿真图

程序图

程序图
0.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit shen_lu1=P1^2;
  5. sbit shen_lu2=P1^3;
  6. sbit sheng_lu1=P1^4;
  7. sbit sheng_lu2=P1^5;



  8. //红绿灯口定义
  9. sbit sheng_red=P2^2;
  10. sbit shen_green=P2^3;
  11. sbit sheng_green=P2^0;
  12. sbit shen_red=P2^5;
  13. sbit shang_red=P1^0;
  14. sbit xia_red=P2^6;
  15. sbit zuo_red=P2^7;
  16. sbit you_red=P1^1;
  17. sbit shen_yellow=P2^4;
  18. sbit sheng_yellow=P2^1;


  19. //定义全局变量
  20. uchar code digcode[10] = {
  21. 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  22. uchar DisplayData[8];
  23. uint Second,Time;
  24. //申明全局函数
  25. void DigDisplay(); //动态显示函数
  26. void Timer0Cofig();
  27. void Delay(uint z);


  28. void main()
  29. {
  30.         P2=0X00;
  31.         P1=0X00;
  32.         P0=0X00;
  33.         P3=0X00;
  34.         Timer0Cofig();
  35.         while(1)
  36.         {
  37.                 if(Second>60)
  38.                 {
  39.                         Second=0;
  40.                 }
  41.                 if(Second < 25)
  42.                 {                       
  43.                         shen_green=0;
  44.                         sheng_red=0;
  45.                         shang_red=0;
  46.                         xia_red=0;       
  47.                         shen_yellow=0;
  48.                 //升路通行
  49.                         sheng_green=1;        //升路绿灯亮
  50.                         shen_red=1;        //申路红灯亮 上下绿灯亮
  51.                         zuo_red=1;        //左红灯亮
  52.                         you_red=1;        //右红灯亮       
  53.                 }
  54.                 else if        (Second < 30)        //黄灯等待切换时间5s
  55.                 {
  56.                         sheng_green=0;
  57.                         shen_red=1;
  58.                         sheng_yellow=1;
  59.                         zuo_red=1;
  60.                         you_red=1;       
  61.                 }
  62.                 else if (Second < 55)
  63.                 {
  64.                 //申路通行
  65.                         sheng_green=0;
  66.                         shen_red=0;
  67.                         sheng_yellow=0;
  68.                         zuo_red=0;
  69.                         you_red=0;
  70.                        
  71.                         shen_green=1;
  72.                         sheng_red=1;
  73.                         shang_red=1;
  74.                         xia_red=1;       
  75.                 }
  76.                 else
  77.                 {
  78.                         sheng_green=0;
  79.                         shen_red=0;
  80.                         shen_yellow=0;
  81.                         zuo_red=0;
  82.                         you_red=0;       
  83.                         shen_green=0;
  84.                         sheng_red=1;
  85.                         shang_red=1;
  86.                         xia_red=1;       
  87.                         shen_yellow=1;
  88.                 }

  89.                 DigDisplay();
  90.                                
  91.         }
  92. }



  93. void Timer0Cofig()
  94. {
  95.         TMOD = 0x01;     //定时器0选择工作方式1
  96.     TH0  = (65536-50000)/256;         //设置初始值,定时50MS
  97.     TL0  = (65536-50000)%256;
  98.     EA   = 1;             //打开总中断
  99.     ET0  = 1;                 //打开定时器0中断
  100.     TR0  = 1;                 //启动定时器0       
  101. }
  102. void Timer0() interrupt 1
  103. {
  104.         TH0 = (65536-50000)/256;         //设置初始值
  105.         TL0 = (65536-50000)%256;
  106.         Time++;
  107.         if(Time == 10)
  108.         {
  109.                 Second ++;
  110.                
  111. ……………………

  112. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
红绿灯.rar (26.56 KB, 下载次数: 17)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表