找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3190|回复: 1
打印 上一主题 下一主题
收起左侧

简易单片机交通灯显示系统仿真,带有急停功能

[复制链接]
跳转到指定楼层
楼主
单片机交通灯仿真图如下(proteus仿真工程文件可到本帖附件中下载)


原理图:


单片机源程序如下:
  1. #include "reg51.h"
  2. unsigned char t0,t1;//定义全局变量,用来保存延时时间的循环次数
  3. unsigned char i,j,k,l,m;
  4. void delay0_10s1()
  5. {
  6. for(t0=0;t0<20;t0++)//采用全局变量作为循环控制变量
  7. {
  8.         TH1=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
  9.         TL1=(65536-46080)%256;//46080的来历,为50000*11.0592/12
  10.         TR1 = 1;//启动T1
  11.         while(!TF1);//查出计数是否溢出,即50ms定时时间一到,TF1 = 1
  12.         TF1 = 0;       
  13. }
  14. }
  15. void delay_t1 (unsigned char t)
  16. {
  17. for (t1 = 0;t1<t; t1++)
  18.         delay0_10s1();
  19. }
  20. void int_0() interrupt 0//紧急情况中断
  21. {
  22. unsigned char i,j,k,l,m;
  23. i = P1;
  24. j = t0;
  25. k = t1;
  26. l = TH1;
  27. m = TL1;
  28. P1 = 0xdb;
  29. delay_t1 (20);
  30. P1 = i;
  31. t0 = j;
  32. t1 = k;
  33. TH1 = l;
  34. TL1= m;

  35. }
  36. void main()           //主函数
  37. {
  38.         //unsigned char k;
  39.         TMOD = 0x10;//T1设置为工作方式1
  40.         EA = 1;     //开总中断允许位
  41.         EX0 = 1;   //开外部中断0允许位
  42.         IT0 = 1;   //设置外部中断0为下降沿触发
  43.         while(1)
  44.         {
  45.                 P1 = 0xde;       //A红灯,B绿灯,延时10秒
  46.                 delay_t1(20);
  47.                 P1 = 0xdd;       //A红灯,B黄灯,延时3秒
  48. ……………………

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

所有资料51hei提供下载:
仿真:
交通灯系统控制电路.rar (93.93 KB, 下载次数: 15)
程序:
交通信号灯.rar (22.8 KB, 下载次数: 25)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:207455 发表于 2017-6-3 18:56 来自手机 | 只看该作者
感谢分享谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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