標題: 數(shù)碼管顯示倒計時時間的交通燈控制設(shè)計,帶ad畫的原理圖和pcb [打印本頁]

作者: gloria_櫻婲    時間: 2016-6-27 10:56
標題: 數(shù)碼管顯示倒計時時間的交通燈控制設(shè)計,帶ad畫的原理圖和pcb
數(shù)碼管顯示倒計時時間的交通燈控制設(shè)計,帶ad畫的原理圖和pcb




  1. #include "reg51.h"
  2. #include"absacc.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. typedef unsigned char BYTE;
  6. typedef unsigned int  WORD;


  7. sbit ge1=P2^3;          //南北數(shù)碼管
  8. sbit shi1=P2^2;
  9. sbit ge2=P2^1;           //東西數(shù)碼管
  10. sbit shi2=P2^0;

  11. sbit SNR=P1^5;           //南北綠黃紅燈
  12. sbit SNY=P1^4;
  13. sbit SNG=P1^3;
  14. sbit EWR=P1^2;           //東西綠黃紅燈
  15. sbit EWY=P1^1;
  16. sbit EWG=P1^0;

  17. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  18. uint m,a,b,c,d;
  19. uchar ewg,snr;
  20. uchar tt=0;
  21. unsigned char flag;

  22. /******延時程序******/

  23. void delay(WORD n)
  24. {
  25.     WORD x;
  26.         while(n--)
  27.         {
  28.             x=500;
  29.                 while(x--);
  30.         }
  31. }

  32. void delay2(WORD n)
  33. {
  34.     WORD x;
  35.         while(n--)
  36.         {
  37.             x=5000;
  38.                 while(x--);
  39.         }
  40. }


  41. /******倒計時顯示******/
  42. void display()
  43. {
  44.         a=snr/10;          //南北時間
  45.                 b=snr%10;
  46.                 shi1=1;
  47.                 ge1=0;
  48.                 shi2=1;
  49.                 ge2=1;
  50.                 P0=table[a];
  51.                 WR=0;
  52.                 WR=1;
  53.                 delay2(1);
  54.                 ge1=1;
  55.         shi1=0;
  56.                 shi2=1;
  57.                 ge2=1;
  58.                 P0=table[b];
  59.                 WR=0;
  60.                 WR=1;
  61.                 delay2(1);

  62.                 c=ewg/10;                           //東西時間
  63.                 d=ewg%10;
  64.                 shi2=1;
  65.                 ge2=0;
  66.                 ge1=1;
  67.         shi1=1;
  68.                 P0=table[c];
  69.                 WR=0;
  70.                 WR=1;
  71.                 delay2(1);
  72.                 ge2=1;
  73.         shi2=0;
  74.                 ge1=1;
  75.         shi1=1;
  76.                 P0=table[d];
  77.                 WR=0;
  78.                 WR=1;
  79.                 delay2(1);
  80. }

  81. /******程序初始化******/

  82. void initial()
  83. {
  84.          ewg=0;snr=0;P1=0xff;
  85.          TMOD=0x01;
  86.      TH0=(65536-46080)/256;
  87.          TL0=(65536-56080)%256;
  88.          EA=1;
  89.          ET0=1;
  90.          TR0=1;
  91. }

  92. /*****************主函數(shù)********************/

  93. void main()
  94. {
  95.   initial();
  96.      ewg=30;snr=35;
  97.    flag=0;
  98.   while(1)
  99.    {
  100.                 display();
  101.      }
  102. }
  103. void T0_int() interrupt 1
  104. {
  105.      TH0=(65536-46078)/256;
  106.          TL0=(65536-56078)%256;
  107.          tt++;
  108.          if(tt==20)
  109.          {
  110.                  tt=0;
  111.                  if(flag==0)
  112.                    {        
  113.                              EWG=0;EWY=1;EWR=1;SNG=1;SNY=1;SNR=0;
  114.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  115.                                 if(ewg==0){flag=1;ewg=6,snr=6;}
  116.                     }
  117.                 if(flag==1)
  118.                         {
  119.                             EWG=1;EWY=0;EWR=1;SNG=1;SNY=1;SNR=0;
  120.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  121.                                 if(ewg==0){flag=2;ewg=36,snr=31;}
  122.                         }
  123.                 if(flag==2)
  124.                         {        EWG=1;EWY=1;EWR=0;SNG=0;SNY=1;SNR=1;
  125.                             if(ewg>0&&snr>0){ewg--;snr--;}
  126.                                 if(snr==0){flag=3;ewg=6,snr=6;}
  127.                         }
  128.                 if(flag==3)
  129.                     {        
  130.                             EWG=1;EWY=1;EWR=0;SNG=1;SNY=0;SNR=1;
  131.                                 if(ewg>0&&snr>0){ewg--;snr--;}
  132.                                 if(ewg==0){flag=0;ewg=30,snr=35;}
  133.                         }
  134.          }
  135. }
復(fù)制代碼


課設(shè).zip (317.39 KB, 下載次數(shù): 33)



作者: 一個好學(xué)生    時間: 2016-11-10 19:47
這個是用什么芯片的  好像不是51
作者: 電子血壓計    時間: 2016-11-10 22:23
一個好學(xué)生 發(fā)表于 2016-11-10 19:47
這個是用什么芯片的  好像不是51

是51呀
作者: 餅干先生    時間: 2016-11-17 13:43
有它的Protues仿真嗎?求分享。




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