找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机+8155芯片的交通灯程序

[复制链接]
跳转到指定楼层
楼主
最近做了一个关最近做了一个关于8155模拟交通灯的运行系统,写的不好,还有很多不足,有的地方还不完善,请大家多多指教。

电路原理图如下:


单片机源程序如下:
  1. #include<reg52.h>
  2. # include <absacc.h>

  3. #define uchar unsigned char           //定义为uchar类型
  4. #define uint unsigned int           //定义为uint类型
  5. # define COM   XBYTE[0XFE00]   //控制字地址(总控制,决定了PA/B/C是写还是读等)
  6. # define PA    XBYTE[0XFE01]   //控制PA地址(总控制写的是读时,里面存的是读的值;
  7.                                                            //                                   写的是写时,里面要写入控制值)
  8. # define PB    XBYTE[0XFE02]   //控制PB地址
  9. # define PC    XBYTE[0XFE03]   //控制PC地址

  10. sbit g = P2^1;
  11. sbit s = P2^2;
  12. sbit eg = P2^3;
  13. sbit ws = P2^4;
  14. //sbit Key_N = P1^4;           //独立按键
  15. //sbit Key_S = P1^5;
  16. //sbit Key_W = P1^6;
  17. //sbit Key_E = P1^7;
  18. sbit KEYA = P1^4;
  19. sbit KEYB = P1^5;           
  20. uint ge,shi;                         //定义全局变量
  21. uint m = 30;
  22. uint n;
  23. uint num;

  24. /*交通灯的数值*/
  25. uchar lcd1 = 10;          //倒计时初始值为25用于改变
  26. uchar lcd2 = 15;          //的倒计时初始值为30用于改变
  27. uchar lcd11;                  //倒计时
  28. uchar lcd22;                  //倒计时
  29. uchar change1;                 //LCD1红绿灯转换
  30. uchar yellow1 = 3;

  31. /*一些辅助标志位的声明*/
  32. uchar code smguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示0~9
  33. uchar t=3;
  34. uchar sign = 0;
  35. uchar time_Count;          //进行计时

  36. void delay(uint t)
  37. {
  38.           while(t--);
  39. }

  40. void Digital(uint ge,uint shi)                                           //数码管显示
  41. {         
  42.                   PA = smguan[ge];
  43.                 s = 1;
  44.                 delay(500);
  45.                 s = 0;

  46.                 PA = smguan[shi];
  47.                 g = 1;
  48.                 delay(500);
  49.                 g = 0;

  50.                 PB = smguan[ge];
  51.                 eg = 1;
  52.                 delay(500);
  53.                 eg = 0;

  54.                 PB = smguan[shi];
  55.                 ws = 1;
  56.                 delay(500);
  57.                 ws = 0;                                                   
  58.      }
  59.                   
  60. void Traffic_lights()
  61. {
  62.     if(t == 3)
  63.       {
  64.                   P1 = 0x01;
  65.         if(m == 0)
  66.           {
  67.                 m = 3;
  68.                 t = 2;
  69.               }
  70.            }

  71.         if(t == 2)
  72.         {
  73.           P1 = 0x02;                        
  74.       if(m == 0)
  75.       {
  76.             m = 30;
  77.                 t = 1;
  78.           }
  79.         }
  80.                
  81.         if(t == 1)
  82.     {
  83.      P1 = 0x04;
  84.      if(m == 0)
  85.       {
  86.            m = 3;            
  87.        t = 0;  
  88.           }
  89.         }

  90.    if(t == 0)
  91.         {
  92.           P1 = 0x02;                        
  93.       if(m == 0)
  94.       {
  95.             m = 30;
  96.                 t = 3;
  97.           }
  98.         }  
  99. }        

  100. void INIT()
  101. {
  102.   IT0=1;
  103.   IT1=1;
  104.   EX0=1;
  105.   EX1=1;
  106.   EA=1;
  107. }
复制代码


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

使用道具 举报

沙发
ID:141326 发表于 2020-5-10 08:31 | 只看该作者
可否附上仿真研究一番
回复

使用道具 举报

板凳
ID:767375 发表于 2020-6-6 19:47 | 只看该作者
能否把仿真源程序下载
回复

使用道具 举报

地板
ID:462827 发表于 2020-9-11 09:37 | 只看该作者
主函数main()都不写还拿来分享干嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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