標(biāo)題: 51單片機(jī)+8155芯片的交通燈程序 [打印本頁]

作者: 元亨利貞    時間: 2020-5-6 21:36
標(biāo)題: 51單片機(jī)+8155芯片的交通燈程序
最近做了一個關(guān)最近做了一個關(guān)于8155模擬交通燈的運(yùn)行系統(tǒng),寫的不好,還有很多不足,有的地方還不完善,請大家多多指教。

電路原理圖如下:


單片機(jī)源程序如下:
  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;           //獨(dú)立按鍵
  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. /*交通燈的數(shù)值*/
  25. uchar lcd1 = 10;          //倒計時初始值為25用于改變
  26. uchar lcd2 = 15;          //的倒計時初始值為30用于改變
  27. uchar lcd11;                  //倒計時
  28. uchar lcd22;                  //倒計時
  29. uchar change1;                 //LCD1紅綠燈轉(zhuǎn)換
  30. uchar yellow1 = 3;

  31. /*一些輔助標(biāo)志位的聲明*/
  32. uchar code smguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數(shù)碼管顯示0~9
  33. uchar t=3;
  34. uchar sign = 0;
  35. uchar time_Count;          //進(jìn)行計時

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

  40. void Digital(uint ge,uint shi)                                           //數(shù)碼管顯示
  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. }
復(fù)制代碼



作者: Avenger    時間: 2020-5-10 08:31
可否附上仿真研究一番
作者: 1718645907    時間: 2020-6-6 19:47
能否把仿真源程序下載

作者: hantu    時間: 2020-9-11 09:37
主函數(shù)main()都不寫還拿來分享干嘛




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1