找回密码
 立即注册

QQ登录

只需一步,快速开始

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

自己制作的点阵屏加流水灯!水平不高……

[复制链接]
跳转到指定楼层
楼主




点阵屏流水灯的源程序和pcb文件下载: 点阵流水灯.zip (491.16 KB, 下载次数: 26)

源码预览:
  1. //P0和P3控制LED灯显示
  2. //P2和P1控制led点阵显示

  3. #include<reg52.h>

  4. sbit VD00 = P0^0;
  5. sbit VD01 = P0^1;
  6. sbit VD02 = P0^2;
  7. sbit VD03 = P0^3;
  8. sbit VD04 = P0^4;
  9. sbit VD05 = P0^5;
  10. sbit VD06 = P0^6;
  11. sbit VD07 = P0^7;

  12. sbit VD30 = P3^0;
  13. sbit VD31 = P3^1;
  14. sbit VD32 = P3^2;
  15. sbit VD33 = P3^3;
  16. sbit VD34 = P3^4;
  17. sbit VD35 = P3^5;
  18. sbit VD36 = P3^6;
  19. sbit VD37 = P3^7;


  20. unsigned  char code image1[ ] = {0xFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};//低到高,1.7~1.0 1111 1110,0XFE
  21. unsigned  char code image01[] =        {0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0x7F};
  22. unsigned  char code image2[ ] = {0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE};//高到低
  23. unsigned  char code image02[] =        {0XBF,0XDF,0XEF,0XF7,0XFB,0XFD};
  24. unsigned  char code image3[ ] = {0xEE,0XCC,0X88,0X00};//低到高
  25. unsigned  char code image4[ ] = {0X00,0X88,0XCC,0XEE};//高到
  26. unsigned  char code image04[] =        {0X88,0XCC,0XEE };
  27. unsigned  char code image5[ ] = {0xFE,0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00};
  28. unsigned  char code image05[] = {0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00};
  29. unsigned  char code image55[] = {0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00};
  30. unsigned  char code image055[] ={0X3F,0X1F,0X0F,0X07,0X03,0X01,0X00};
  31. unsigned  char code image6[ ] = {0X7F,0X3F,0X1F,0X0F};
  32. unsigned  char code image06[] = {0XF7,0XF3,0XF1,0XF0};                                                         
  33. unsigned  char code image7[ ] = {0X7E,0XBD,0XDB,0XE7};
  34. unsigned  char code image07[] = {0xE7,0XDB,0XBD,0X7E};
  35. unsigned  char code image9[ ] = {0xFE,0XFC,0XF8,0XF0};
  36. unsigned  char code image09[] = {0XEF,0XCF,0X8F,0X0F};
  37. unsigned  char code image8[29][8] = {
  38.                 {0xFF,0x7F,0x7F,0xFF,0xFF,0x7F,0xFF,0x7F},
  39.                 {0xFF,0x3F,0x3F,0x7F,0x7F,0x3F,0x7F,0x3F},
  40.                 {0xFF,0x1F,0x1F,0x3F,0x3F,0x1F,0x3F,0x1F},
  41.                 {0xFF,0x0F,0x0F,0x9F,0x9F,0x0F,0x9F,0x0F},
  42.                 {0xFF,0x87,0x87,0xCF,0xCF,0x87,0xCF,0x87},
  43.                 {0xFF,0xC3,0xC3,0xE7,0xE7,0xC3,0xE7,0xC3},
  44.                 {0xFF,0x61,0xE1,0x73,0x73,0xE1,0xF3,0xE1},
  45.                 {0xFF,0x30,0x70,0x39,0x39,0xF0,0x79,0xF0},
  46.                 {0xFF,0x18,0x38,0x1C,0x1C,0x78,0x3C,0xF8},
  47.                 {0xFF,0x0C,0x9C,0x0E,0x0E,0x3C,0x1E,0x7C},
  48.                 {0xFF,0x06,0xCE,0x07,0x07,0x1E,0x0F,0x3E},
  49.                 {0xFF,0x03,0x67,0x03,0x03,0x0F,0x07,0x9F},
  50.                 {0xFF,0x01,0x33,0x01,0x01,0x87,0x03,0xCF},
  51.                 {0xFF,0x00,0x99,0x00,0x00,0xC3,0x81,0xE7},
  52.                 {0xFF,0x80,0xCC,0x80,0x80,0xE1,0xC0,0xF3},
  53.                 {0xFF,0x40,0x66,0x40,0x40,0x70,0x60,0xF9},
  54.                 {0xFF,0x20,0x33,0x20,0x20,0x38,0x30,0x7C},
  55.                 {0xFF,0x90,0x99,0x90,0x90,0x1C,0x98,0x3E},
  56.                 {0xFF,0xC8,0xCC,0xC8,0xC8,0x0E,0xCC,0x1F},
  57.                 {0xFF,0x64,0x66,0x64,0x64,0x07,0x66,0x0F},
  58.                 {0xFF,0x32,0x33,0x32,0x32,0x03,0x33,0x87},
  59.                 {0xFF,0x99,0x99,0x99,0x99,0x81,0x99,0xC3},
  60.                 {0xFF,0xCC,0xCC,0xCC,0xCC,0xC0,0xCC,0xE1},
  61.                 {0xFF,0xE6,0xE6,0xE6,0xE6,0xE0,0xE6,0xF0},
  62.                 {0xFF,0xF3,0xF3,0xF3,0xF3,0xF0,0xF3,0xF8},
  63.                 {0xFF,0xF9,0xF9,0xF9,0xF9,0xF8,0xF9,0xFC},
  64.                 {0xFF,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE},
  65.                 {0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF},
  66.                 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},  

  67. };

  68. #define unint unsigned  int
  69. unint i;
  70. unint j;
  71. void delay (unint c);

  72. void  delay(unint c)
  73. {
  74.                    unint a,b;
  75.                 for ( a=c; a > 0;a--)
  76.                   for( b = 100; b> 0;b--);
  77. }


  78. void  display1()  //p0和p3亮灭3次
  79. {  
  80.          for(i = 0;i < 3;i ++ )
  81.              {
  82.                     P0 = 0X00;P3 = 0X00;
  83.                     delay(620);        //延时1S ,1230为1S
  84.                     P0 = 0XFF;P3 = 0XFF;
  85.                         delay(620);         
  86.           }
  87. }

  88. void  display2() //p3和p1高位依次点亮。
  89. {
  90.     for(i = 0;i < 1;i++)
  91.            {
  92.              VD00 = 0;VD30 = 0;
  93.                  delay(255);        //延时50MS ,delay255为20MS
  94.                  VD01 = 0;VD31 = 0;
  95.                  delay(255);
  96.                  VD02 = 0;VD32 = 0;
  97.                  delay(255);
  98.                  VD03 = 0;VD33 = 0;
  99.                  delay(255);
  100.                  VD04 = 0;VD34 = 0;
  101.                  delay(255);
  102.                  VD05 = 0;VD35 = 0;
  103.                  delay(255);
  104.                  VD06 = 0;VD36 = 0;
  105.                  delay(255);
  106.                  VD07 = 0;VD37 = 0;
  107.                  delay(255);
  108.                  P0 = 0XFF;P3 = 0XFF;
  109.                  VD07 = 0;VD37 = 0;        //p3和p1低位依次点亮。
  110.                  delay(255);
  111.                  VD06 = 0;VD36 = 0;
  112.                  delay(255);
  113.                  VD05 = 0;VD35 = 0;
  114.                  delay(255);
  115.                  VD04 = 0;VD34 = 0;
  116.                  delay(255);
  117.                  VD03 = 0;VD33 = 0;
  118.                  delay(255);
  119.                  VD02 = 0;VD32 = 0;
  120.                  delay(255);
  121.                  VD01 = 0;VD31 = 0;
  122.                  delay(255);
  123.                  VD00 = 0;VD30 = 0;
  124.                
  125.                  P0 = 0XFF;P3 = 0XFF;
  126.            }
  127. }

  128. void  display02() //p3和p1高位依次点亮。
  129. {
  130.     for(i = 0;i < 1;i++)
  131.            {
  132.              VD00 = 0;VD30 = 0;
  133.                  delay(125);        //延时50MS ,delay255为20MS
  134.                  VD01 = 0;VD31 = 0;
  135.                  delay(125);
  136.                  VD02 = 0;VD32 = 0;
  137.                  delay(125);
  138.                  VD03 = 0;VD33 = 0;
  139.                  delay(125);
  140.                  VD04 = 0;VD34 = 0;
  141.                  delay(125);
  142.                  VD05 = 0;VD35 = 0;
  143.                  delay(125);
  144.                  VD06 = 0;VD36 = 0;
  145.                  delay(125);
  146.                  VD07 = 0;VD37 = 0;
  147.                  delay(125);
  148.                  P0 = 0XFF;P3 = 0XFF;
  149.                  VD07 = 0;VD37 = 0;        //p3和p1低位依次点亮。
  150.                  delay(125);
  151.                  VD06 = 0;VD36 = 0;
  152.                  delay(125);
  153.                  VD05 = 0;VD35 = 0;
  154.                  delay(125);
  155.                  VD04 = 0;VD34 = 0;
  156.                  delay(125);
  157.                  VD03 = 0;VD33 = 0;
  158.                  delay(125);
  159.                  VD02 = 0;VD32 = 0;
  160.                  delay(125);
  161.                  VD01 = 0;VD31 = 0;
  162.                  delay(125);
  163.                  VD00 = 0;VD30 = 0;
  164.                
  165.                  P0 = 0XFF;P3 = 0XFF;
  166.     }
  167. }

  168. void display3()         /* p0和p3逐个点亮,正反各一次*/
  169. {  

  170.            for( i = 0;i < 8;i ++)
  171.            {
  172.               P0 = image1[i];
  173.                   delay(210);
  174.                            
  175.            }
  176.             P0 = 0XFF;
  177.            for( i = 0;i < 8;i++)
  178.           {
  179.                      P3 = image2[i];
  180.                         delay(210);
  181.                
  182.           }
  183.                   P3 = 0XFF;
  184.           for(i = 0;i < 7;i++)
  185.           {
  186.                    P3 = image01[i];
  187.                    delay(210);
  188.                   
  189.           }
  190.           P3 = 0XFF;
  191.           for(i = 0;i <8;i++)
  192.          {
  193.                         P0 = image2[i];
  194.                         delay(210);
  195.                
  196.          }
  197.          P0 = 0XFF;
  198. }

  199. void display4()
  200. {
  201.      for( j = 0;j < 4;j++)
  202.           for( i = 0;i < 4;i++)
  203.           {
  204.                     P0 = image3[i];
  205.                         P3 = image3[i];
  206.                         delay(210);
  207.                
  208.           }
  209.                   P0 = 0XFF;P3 = 0XFF;
  210.         for(j = 0;j < 1;j++)
  211.           for( i= 0;i < 3;i++)
  212.           {
  213.               P0 = image04[i];
  214.               P3 = image04[i];
  215.                   delay(210);
  216.                   
  217.           }
  218.           P0 = 0XFF;P3 = 0XFF;
  219.                   for(j = 0;j < 1;j++)
  220.           for( i= 0;i < 4;i++)
  221.           {
  222.               P0 = image4[i];
  223.               P3 = image4[i];
  224.                   delay(210);
  225.                   
  226.           }
  227.           P0 = 0XFF;P3 = 0XFF;          
  228. }

  229. void display5()
  230. {
  231.           for(i = 0;i <2;i++)
  232.           {
  233.                    P0 = 0XF0;
  234.                 delay(620);         //370为30MS        delay125为10MS
  235.                 P0 = 0x0F;
  236.                 delay(620);
  237.                 P0 = 0XFF;
  238.                 P3 = 0X0F;
  239.                 delay(620);
  240.                 P3 = 0xF0;
  241.                 delay(620);
  242.                 P3 = 0XFF;
  243.           }
  244.           P0 = 0XFF;P3 = 0XFF;
  245. }

  246. void display6()
  247. {
  248.            for(i = 0;i < 2;i++)
  249.            {
  250.              P0 =0X00;
  251.                  delay(620);
  252.                  P0 = 0XFF;
  253.                  delay(620);
  254.                  P3 =0X00;
  255.                  delay(620);
  256.                  P3 = 0XFF;
  257.                  delay(620);
  258.            }
  259.            P0 = 0XFF;P3 = 0XFF;
  260. }

  261. void display7()
  262. {
  263.          for(i = 0;i < 3;i++)
  264.            {
  265.                  P0 = 0XF0;
  266.                  P3 = 0XF0;
  267.                  delay(620);
  268.                  P0 = 0X0F;
  269.                  P3 = 0X0F;
  270.                  delay(620);
  271.            }
  272.         P0 = 0XFF;P3 = 0XFF;
  273. }

  274. void display8()
  275. {
  276.          for(i = 0;i < 2;i++)
  277.           {
  278.             P0 = 0XF0;
  279.                 delay(620);
  280.                 P3 = 0X0F;
  281.                 P0 = 0XFF;
  282.                 delay(620);
  283.                 P0 = 0X0F;
  284.                 P3 = 0XFF;
  285.                 delay(620);
  286.                 P3 = 0XF0;
  287.                 P0 = 0XFF;
  288.                 delay(620);
  289.                 P0 = 0XFF;
  290.                 P3 = 0XFF;
  291.           }
  292.          
  293. }

  294. void display9()
  295. {
  296.            for(i = 0;i < 4;i++)
  297.            {
  298.                P0 = image9[i];
  299.                    delay(255);
  300.            }
  301.            P0 = 0XFF;
  302.            for(i = 0;i < 4;i++)
  303.                 {
  304.                          P0 = image09[i];
  305.                          delay(255);
  306.                 }
  307.                  P0 = 0XFF;
  308.        
  309.            for( i = 0;i < 4;i++)
  310.              {
  311.                      P3 = image6[i];
  312.                          delay(255);
  313.                 }
  314.                 P3 = 0XFF;
  315.                 for(i = 0;i < 4;i++)
  316.                 {
  317.                     P3 = image06[i];
  318.                     delay(255);
  319.                 }
  320.                    P3 = 0XFF;
  321. }

  322. void display10()
  323. {
  324.   for( j = 0; 1 < 1; j++)
  325.    for(i = 0; i < 4;i++)
  326.           {
  327.              P0 = image7[i];
  328.                  P3 = image7[i];
  329.                  delay(345);         //此处循环三次依次比一次快,
  330.           }
  331.           P0 = 0XFF;P3 = 0XFF;
  332.           for( i = 0;i < 4;i++)
  333.           {         
  334.             P0 = image7[i];
  335.                 P3 = image7[i];
  336.                 delay(345);
  337.           }
  338.           P0 = 0XFF;P3 = 0XFF;
  339.          for( i = 0;i < 4;i++)
  340.          {  
  341.              P0        = image07[i];
  342.                  P3        = image07[i];
  343.                  delay(345);
  344.          }
  345.          P0 =0XFF;P3 = 0XFF;
  346.          for( i = 0;i < 4;i++)
  347.          {  
  348.              P0        = image07[i];
  349.                  P3        = image07[i];
  350.                  delay(345);
  351.          }
  352.          P0 =0XFF;P3 = 0XFF;

  353. }

  354. void display11()
  355. {
  356.   for(j = 0;j < 1;j++)
  357.    for(i = 0; i < 4;i++)
  358.           {
  359.              P0 = image7[i];
  360.                  P3 = image7[i];
  361.                  delay(255);         //此处循环三次依次比一次快,
  362.           }
  363.           P0 = 0XFF;P3 = 0XFF;
  364.           for( i = 0;i < 4;i++)
  365.           {         
  366.             P0 = image7[i];
  367.                 P3 = image7[i];
  368.                 delay(255);
  369.           }
  370.           P0 = 0XFF;P3 = 0XFF;
  371.          for( i = 0;i < 4;i++)
  372.          {  
  373.              P0        = image07[i];
  374.                  P3        = image07[i];
  375.                  delay(255);
  376.          }
  377.          P0 =0XFF;P3 = 0XFF;
  378.          for( i = 0;i < 4;i++)
  379.          {  
  380.              P0        = image07[i];
  381.                  P3        = image07[i];
  382.                  delay(255);
  383.          }
  384.          P0 =0XFF;P3 = 0XFF;

  385. }

  386. void display12()
  387. {
  388.   for(j = 0;j < 1;j++)
  389.    for(i = 0; i < 4;i++)
  390.           {
  391.              P0 = image7[i];
  392.                  P3 = image7[i];
  393.                  delay(125);         //此处循环三次依次比一次快,
  394.           }
  395.           P0 = 0XFF;P3 = 0XFF;
  396.           for( i = 0;i < 4;i++)
  397.           {         
  398.             P0 = image7[i];
  399.                 P3 = image7[i];
  400.                 delay(125);
  401.           }
  402.           P0 = 0XFF;P3 = 0XFF;
  403.          for( i = 0;i < 4;i++)
  404.          {  
  405.              P0        = image07[i];
  406.                  P3        = image07[i];
  407.                  delay(125);
  408.          }
  409.          P0 =0XFF;P3 = 0XFF;
  410.          for( i = 0;i < 4;i++)
  411.          {  
  412.              P0        = image07[i];
  413.                  P3        = image07[i];
  414.                  delay(125);
  415.          }
  416.          P0 =0XFF;P3 = 0XFF;
  417. }

  418. void display13()
  419. {
  420.    for(i= 0;i < 1;i++)
  421.    {  
  422.      P0 =0X00;P3 = 0X00;
  423.          delay(620);
  424.         P0 =0XFF;P3 = 0XFF;
  425.    }
  426. }

  427. void display14()
  428. {
  429.   for(j = 0;j<2;j++)
  430.    for(i = 0;i < 8;i++)
  431.            {
  432.              P0 = image5[i];
  433.                  P3 = image05[i];
  434.                  delay(255);
  435.                 }
  436.             P0 = 0XFF;P3 = 0XFF;
  437.                 for(i = 0;i < 7;i++)
  438.              {
  439.              P0 = image055[i];
  440.                  P3 = image55[i];
  441.                  delay(255);
  442.                  }
  443.             P0 = 0XFF;P3 = 0XFF;
  444.                 for(i = 0;i < 8;i++)
  445.              {
  446.              P0 = image05[i];
  447.                  P3 = image5[i];
  448.                  delay(125);
  449.                  }
  450.             P0 = 0XFF;P3 = 0XFF;
  451.                 for(i = 0;i < 7;i++)
  452.             {
  453.              P0 = image55[i];
  454.                  P3 = image055[i];
  455.                  delay(125);
  456.             }
  457.             P0 = 0XFF;P3 = 0XFF;
  458.             delay(1000);
  459. }

  460. void interrupttime0()  interrupt  1
  461. {
  462.     static unsigned char k = 0;
  463.         static unsigned char tmr = 0 ;
  464.         static unsigned char index = 0;

  465.     TH0 = 0XFC;
  466.         TL0 = 0X18;

  467.         P2 = 0XFF;
  468.         switch(k)
  469.         {
  470.            case 0: P1 = 0xFE;k ++; P2 = image8[index][0];break;
  471.            case 1: P1 = 0XFB;k ++; P2 = image8[index][1];break;
  472.            case 2: P1 = 0XFD;k ++; P2 = image8[index][2];break;
  473.            case 3: P1 = 0XF7;k ++; P2 = image8[index][3];break;
  474.            case 4: P1 = 0XEF;k ++; P2 = image8[index][4];break;
  475.            case 5: P1 = 0XBF;k ++; P2 = image8[index][5];break;
  476.            case 6: P1 = 0XDF;k ++; P2 = image8[index][6];break;
  477.            case 7: P1 = 0X7F;k = 0;P2 = image8[index][7];break;
  478.            default:break;
  479.         }
  480.    tmr ++;
  481.    if(tmr >= 250)
  482.    {
  483.       tmr = 0;
  484.           index ++;
  485.           if( index >= 29)
  486.           {       
  487.             index = 0;
  488.           }
  489.    }

  490. }

  491. void main( )
  492. {         
  493.            EA = 1;
  494.            TMOD  = 0X01;
  495.            TH0 = 0XFC; //x*12/11.0592*10^6=0.001,x=921.6取整为921,65536-921=64615
  496.            TL0 = 0X18;//64615换成16进制,TH0=0XFC,TL0=0X67,晶振为12MHZ就是FC18
  497.            ET0 = 1;        // 开启中断
  498.            TR0 = 1;//开定时器

  499.    while(1)
  500.    {
  501.              display1 ();
  502.                  display2 ();
  503.                  display02();
  504.                  display3 ();
  505.                  display4 ();
  506.                  display5 ();
  507.                  display9 ();
  508.                  display6 ();
  509.                  display7 ();
  510.                  display8 ();
  511.                  display10();
  512.                  display13();
  513.                  display11();
  514.                  display13();
  515.                  display12();
  516.                  display13();
  517.                  display14();
  518.    }


  519. }
复制代码


评分

参与人数 2黑币 +54 收起 理由
qjzyx + 4 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:102389 发表于 2016-1-21 17:27 | 只看该作者
挺漂亮的      
回复

使用道具 举报

板凳
ID:103917 发表于 2016-1-26 22:59 | 只看该作者
厉害啊 ,学习了
回复

使用道具 举报

地板
ID:102963 发表于 2018-1-11 12:47 | 只看该作者
挺漂亮,就是声音,不太好听
回复

使用道具 举报

5#
ID:266116 发表于 2018-1-11 15:36 | 只看该作者
谢谢分享!
回复

使用道具 举报

6#
ID:299588 发表于 2018-4-19 10:31 来自手机 | 只看该作者
照庐画葫做一个
回复

使用道具 举报

7#
ID:432687 发表于 2019-5-26 04:09 来自手机 | 只看该作者
完美一直在寻找它很长一段时间! 谢谢你的分享。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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