標題: C51單片機超級簡單的交通燈模擬 [打印本頁]

作者: walk0312    時間: 2018-3-28 18:18
標題: C51單片機超級簡單的交通燈模擬
  1. #include "reg51.h"

  2. sbit  dula=P1^3;
  3. sbit  g1=P1^4;

  4. sbit  c=P1^5;
  5. sbit  b=P1^6;
  6. sbit  a=P1^7;

  7. char s=6,ms=0;

  8. unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  9. bit flag=0;

  10. void  delay()
  11. {
  12.         unsigned char i;
  13.         for(i=0;i<255;i++);
  14. }

  15. initial()
  16. {
  17.         TMOD=1;
  18.         TL0=0XF0;
  19.         TH0=0XD8;
  20.        
  21.         TR0=1;
  22.         ET0=1;
  23.         EA=1;
  24.         P2=0x0f;
  25.         g1=0;

  26. }

  27. display()
  28. {

  29. //        P0=tab[ms/10];dula=1;
  30. //        c=1;b=1;a=0;g1=1;
  31. //        delay();
  32. //        g1=0;

  33. //        P0=tab[ms%10];dula=1;
  34. //        c=1;b=1;a=1;g1=1;
  35. //        delay();
  36. //        g1=0;

  37.         P0=tab[s%10];dula=1;
  38.         c=1;b=1;a=1;g1=1;
  39.         delay();
  40.         g1=0;

  41.         P0=tab[s/10];dula=1;
  42.         c=1;b=1;a=0;g1=1;
  43.         delay();
  44.         g1=0;




  45. }

  46. main()
  47. {
  48.         initial();
  49.         while(1)
  50.         {
  51.                 display();
  52.         }
  53. }

  54. t_0()  interrupt 1
  55. {
  56.         TL0=0XF0;
  57.         TH0=0XD8;
  58.         ms++;
  59.         if(ms==50&&s<=3)
  60.         {
  61.                 P2=0x55;
  62.         }
  63.                
  64.                 if(ms==100)
  65.                 {
  66.                         if(flag==0){
  67.                         P2=0x0f;
  68.                         }else{
  69.                         P2=0xf0;
  70.                         }
  71.                         ms=0;
  72.                         s--;
  73.                         if(s==0)
  74.                         {
  75.                         s=6;
  76.                         flag=~flag;
  77.                         P2=~P2;
  78.                         }
  79.                 }
  80. }
復制代碼
P0口接LED燈(所以有上拉電源(power)),共陰極,代碼中的a,b,c是用3-8譯碼器定位LED,方式一中斷





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