找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2350|回复: 5
收起左侧

基于595与138 16x16点阵设计源码

[复制链接]
ID:270937 发表于 2018-3-20 09:28 | 显示全部楼层 |阅读模式
基于595与13816x16点阵设计

单片机源程序:
  1. #include<reg52.h>
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5.   
  6. sbit SRCK =P1^7;   //移位时钟脉冲      
  7. sbit RCK  =P1^6;   //串行数据输入   
  8. sbit S_IN =P1^5;   //输出锁存器控制脉冲
  9. sbit EN   =P1^4;
  10. sbit A2   =P1^3;
  11. sbit A1   =P1^2;
  12. sbit A0   =P1^1;                  
  13. sbit D    =P1^0;



  14. uchar BUFF[4];
  15. uchar temp1,temp2,j,zim,shang,shu;

  16. uchar code tab1[32]={0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,0xff,
  17.                                         0xff,0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,};
  18. uchar code tabh[16]={0x10,0x18,0x14,0x1c,0x12,0x1a,0x16,0x1e,0x11,0x19,0x15,0x1d,0x13,0x1b,0x17,0x1f};
  19. uchar code zi1[]={
  20. /*--  文字:  电  --*/
  21. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  22. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,
  23. 0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF5,0xFE,0xFD,0xFE,0xFD,0xFF,0x01,

  24. /*--  文字:  子  --*/
  25. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  26. 0xFF,0xFF,0xE0,0x07,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFE,0x7F,0xFE,0xFF,0x00,0x01,
  27. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFC,0xFF,0xFF,0xFF,


  28. /*--  文字:  实  --*/
  29. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  30. 0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x77,0x7B,0xFB,0x7F,0xFB,0x7F,0xEF,0x7F,
  31. 0xF7,0x7F,0xF7,0x7F,0x00,0x01,0xFE,0xBF,0xFD,0xDF,0xFB,0xEF,0xE7,0xF7,0x9F,0xFB,

  32. /*--  文字:  验  --*/
  33. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  34. 0xFF,0xDF,0x87,0xDF,0xF7,0xAF,0xB7,0xAF,0xB7,0x77,0xB6,0xFB,0xB5,0x05,0x83,0xFF,
  35. 0xFB,0xBB,0xFB,0xDB,0x02,0xDB,0xFB,0x57,0xFB,0x77,0xD7,0xEF,0xEC,0x01,0xFF,0xFF,


  36. /*--  文字:  室  --*/
  37. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  38. 0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xC0,0x07,0xFB,0xFF,0xF7,0xDF,
  39. 0xE0,0x0F,0xFE,0xEF,0xFE,0xFF,0xC0,0x07,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFF,0xFF,
  40. };
  41. //*******************************************************************************************************************************************************************
  42. uchar code zi2[]={
  43. /*--  文字:  电  --*/
  44. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  45. 0xFE,0x01,0xFE,0xFD,0xFE,0xFD,0xDE,0xF5,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,
  46. 0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

  47. /*--  文字:  子  --*/
  48. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  49. 0xFF,0xFF,0xFD,0xFF,0xFA,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
  50. 0x00,0x01,0xFE,0xFF,0xFE,0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xE0,0x07,0xFF,0xFF,

  51. /*--  文字:  实  --*/
  52. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  53. 0x9F,0xFB,0xE7,0xF7,0xFB,0xEF,0xFD,0xDF,0xFE,0xBF,0x00,0x01,0xF7,0x7F,0xF7,0x7F,
  54. 0xEF,0x7F,0xFB,0x7F,0xFB,0x7F,0x77,0x7B,0xBF,0xFD,0x80,0x01,0xFE,0xFF,0xFD,0xFF,

  55. /*--  文字:  验  --*/
  56. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  57. 0xFF,0xFF,0xEC,0x01,0xD7,0xEF,0xFB,0x77,0xFB,0x57,0x02,0xDB,0xFB,0xDB,0xFB,0xBB,
  58. 0x83,0xFF,0xB5,0x05,0xB6,0xFB,0xB7,0x77,0xB7,0xAF,0xF7,0xAF,0x87,0xDF,0xFF,0xDF,

  59. /*--  文字:  室  --*/
  60. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  61. 0xFF,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xFE,0xFF,0xFE,0xEF,0xE0,0x0F,
  62. 0xF7,0xDF,0xFB,0xFF,0xC0,0x07,0x7F,0xFB,0xBF,0xFD,0x80,0x01,0xFE,0xFF,0xFD,0xFF,
  63. };
  64. //*******************************************************************************************************************************************************************



  65. uchar code zi3[]={
  66. /*--  文字:  电  --*/
  67. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  68. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,
  69. 0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xDE,0xF5,0xFE,0xFD,0xFE,0xFD,0xFF,0x01,

  70. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  71. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  72. /*--  文字:  子  --*/
  73. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  74. 0xFF,0xFF,0xE0,0x07,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFE,0x7F,0xFE,0xFF,0x00,0x01,
  75. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFC,0xFF,0xFF,0xFF,

  76. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  77. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  78. /*--  文字:  实  --*/
  79. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  80. 0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x77,0x7B,0xFB,0x7F,0xFB,0x7F,0xEF,0x7F,
  81. 0xF7,0x7F,0xF7,0x7F,0x00,0x01,0xFE,0xBF,0xFD,0xDF,0xFB,0xEF,0xE7,0xF7,0x9F,0xFB,

  82. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  83. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  84. /*--  文字:  验  --*/
  85. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  86. 0xFF,0xDF,0x87,0xDF,0xF7,0xAF,0xB7,0xAF,0xB7,0x77,0xB6,0xFB,0xB5,0x05,0x83,0xFF,
  87. 0xFB,0xBB,0xFB,0xDB,0x02,0xDB,0xFB,0x57,0xFB,0x77,0xD7,0xEF,0xEC,0x01,0xFF,0xFF,

  88. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  89. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  90. /*--  文字:  室  --*/
  91. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  92. 0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xC0,0x07,0xFB,0xFF,0xF7,0xDF,
  93. 0xE0,0x0F,0xFE,0xEF,0xFE,0xFF,0xC0,0x07,0xFE,0xFF,0xFE,0xFF,0x00,0x01,0xFF,0xFF,

  94. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  95. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  96. };

  97. //*******************************************************************************************************************************************************************

  98. uchar code zi4[]={
  99. /*--  文字:  电  --*/
  100. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  101. 0xFE,0x01,0xFE,0xFD,0xFE,0xFD,0xDE,0xF5,0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,
  102. 0xC0,0x07,0xDE,0xF7,0xDE,0xF7,0xDE,0xF7,0xC0,0x07,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

  103. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  104. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  105. /*--  文字:  子  --*/
  106. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  107. 0xFF,0xFF,0xFD,0xFF,0xFA,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,
  108. 0x00,0x01,0xFE,0xFF,0xFE,0x7F,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xE0,0x07,0xFF,0xFF,

  109. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  110. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  111. /*--  文字:  实  --*/
  112. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  113. 0x9F,0xFB,0xE7,0xF7,0xFB,0xEF,0xFD,0xDF,0xFE,0xBF,0x00,0x01,0xF7,0x7F,0xF7,0x7F,
  114. 0xEF,0x7F,0xFB,0x7F,0xFB,0x7F,0x77,0x7B,0xBF,0xFD,0x80,0x01,0xFE,0xFF,0xFD,0xFF,

  115. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  116. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  117. /*--  文字:  验  --*/
  118. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  119. 0xFF,0xFF,0xEC,0x01,0xD7,0xEF,0xFB,0x77,0xFB,0x57,0x02,0xDB,0xFB,0xDB,0xFB,0xBB,
  120. 0x83,0xFF,0xB5,0x05,0xB6,0xFB,0xB7,0x77,0xB7,0xAF,0xF7,0xAF,0x87,0xDF,0xFF,0xDF,

  121. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  122. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

  123. /*--  文字:  室  --*/
  124. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  125. 0xFF,0xFF,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xC0,0x07,0xFE,0xFF,0xFE,0xEF,0xE0,0x0F,
  126. 0xF7,0xDF,0xFB,0xFF,0xC0,0x07,0x7F,0xFB,0xBF,0xFD,0x80,0x01,0xFE,0xFF,0xFD,0xFF,

  127. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  128. 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  129. };
  130. //*******************************************************************************************************************************************************************

  131. void delay(uint ms)   
  132. {
  133.         uint i,a;
  134.         for(i=ms;i>0;i--)
  135.                 for(a=125;a>0;a--);
  136. }

  137. void HC595(void)                           //595驱动
  138. {
  139.     uchar k;
  140.     for (k=8;k>0;k--)
  141.     {
  142.             temp2=temp2>>1 ;    //会把最高位元移入CY内
  143.         S_IN=CY;     //把CY的值给P2^0,也就是准备好资料(0或1)给595
  144.         SRCK=1;          //上升沿发生移位
  145.         _nop_();
  146.         _nop_();
  147.         SRCK=0;
  148.     }
  149.         for (k=8;k>0;k--)
  150.     {
  151.             temp1=temp1>>1 ;    //会把最高位元移入CY内
  152.         S_IN=CY;     //把CY的值给P2^0,也就是准备好资料(0或1)给595
  153.         SRCK=1;          //上升沿发生移位
  154.         _nop_();
  155.         _nop_();
  156.         SRCK=0;
  157.     }
  158.         RCK=1;
  159.     _nop_();
  160.     _nop_();
  161.     RCK=0;
  162. }
  163.                                           
  164. void shangyi()                         //上移
  165. {
  166.         uchar i,j,move;
  167.         for(i=0;i<8;i++)
  168.         {
  169.                 for(j=0;j<16;j++)
  170.                 {               
  171.        
  172.                         P1=tabh[j];
  173.                         EN=1;
  174.                         if(j==8)
  175.                         {
  176.                                 delay(50);
  177.                         }
  178.        
  179.                         temp1=zi1[2*j+move*2];
  180.                         temp2=zi1[2*j+1+move*2];
  181.                         HC595();
  182.                         EN=0;
  183.                         delay(4);
  184.                         EN=1;                                                                                                                                                  
  185.                 }
  186.         }
  187.         move++;

  188.         if(move>64)
  189.         {
  190.                 move=0;       
  191.         }
  192.         if(j>14)
  193.         {
  194.                 j=0;
  195.         }
  196. }

  197. void xiayi()                        //下移
  198. {
  199.         uchar i,j,move;               
  200.         for(i=0;i<8;i++)
  201.         {
  202.                 for(j=0;j<16;j++)
  203.                 {               
  204.        
  205.                         P1=tabh[15-j];
  206.                         EN=1;
  207.                         if(j==7)
  208.                         {
  209.                                 delay(50);
  210.                         }
  211.                
  212.                         temp1=zi2[2*j+move*2];
  213.                         temp2=zi2[2*j+1+move*2];
  214.                         HC595();
  215.                         EN=0;
  216.                         delay(4);
  217.                         EN=1;
  218.                 }                                                                                                                                                  
  219.         }
  220.         move++;

  221.         if(move>64)
  222.         {
  223.                 move=0;
  224.                 shu=0;       
  225.         }

  226.         if(j>14)
  227.         {
  228.                 j=0;
  229.         }       
  230. }

  231. void zuoyishuju()                //左移数据处理
  232. {
  233.         uchar s;
  234.         for(s=0;s<2;s++)
  235.         {
  236.                 BUFF[2*s]=zi1[32*s+2*j+32*zim];
  237.                 BUFF[2*s+1]=zi1[32*s+1+2*j+32*zim];
  238.                 delay(3);
  239.         }
  240. }

  241. void youyishuju()                //右移数据处理
  242. {
  243.         uchar s;
  244.         for(s=0;s<2;s++)
  245.         {
  246.                 BUFF[2*s]=  zi1[32*s+2*j+1+32*zim];
  247.                 BUFF[2*s+1]=zi1[32*s+2*j+32*zim];
  248.                 delay(3);
  249.         }
  250. }

  251. void zuoshangshuju()            //左上数据处理
  252. {
  253.         uchar s;
  254.         for(s=0;s<2;s++)
  255.         {
  256.                 BUFF[2*s]=  zi3[32*s+2*j+32*zim+shang*2];
  257.                 BUFF[2*s+1]=zi3[32*s+2*j+1+32*zim+shang*2];
  258.                 delay(3);
  259.         }
  260. }

  261. void youshangshuju()            //右上数据处理
  262. {
  263.         uchar s;
  264.         for(s=0;s<2;s++)
  265.         {
  266.                 BUFF[2*s]=  zi3[32*s+2*j+1+32*zim+shang*2];
  267.                 BUFF[2*s+1]=zi3[32*s+2*j+32*zim+shang*2];
  268.                 delay(3);
  269.         }
  270. }

  271. void zuoxiashuju()                    //左下数据处理
  272. {
  273.         uchar s;
  274.         for(s=0;s<2;s++)
  275.         {
  276.                 BUFF[2*s]=  zi4[32*s+2*j+32*zim+shang*2];
  277.                 BUFF[2*s+1]=zi4[32*s+2*j+1+32*zim+shang*2];
  278.                 delay(3);
  279.         }
  280. }

  281. void youxiashuju()                    //右下数据处理
  282. {
  283.         uchar s;
  284.         for(s=0;s<2;s++)
  285.         {
  286.                 BUFF[2*s]=  zi4[32*s+2*j+1+32*zim+shang*2];
  287.                 BUFF[2*s+1]=zi4[32*s+2*j+32*zim+shang*2];
  288.                 delay(3);
  289.         }
  290. }

  291. void zuoyi()                            //左移
  292. {
  293.         uchar t,u,lie;
  294.                 for(u=0;u<8;u++)
  295.                 {
  296.                         for(j=0;j<16;j++)
  297.                         {
  298.                                 P1=tabh[j];
  299.                
  300.                                 zuoyishuju();
  301.                
  302.                                 temp1=(BUFF[t]<<lie)|(BUFF[t+1]>>(8-lie));
  303.                                 temp2=(BUFF[t+1]<<lie)|(BUFF[t+2]>>(8-lie));
  304.                                 HC595();
  305.                                 EN=0;
  306.                                 delay(5);
  307.                         }
  308.                 }

  309.                 if(++lie>7)
  310.                 {
  311.                         lie=0;
  312.                         t++;
  313.                 }

  314.                 if(t>1)
  315.                 {
  316.                         t=0;
  317.                         zim++;
  318.                 }

  319.                 if(zim>3)
  320.                 {
  321.                         zim=0;
  322.                 }                       
  323. }

  324. void youyi()                            //右移
  325. {
  326.         uchar u,lie,t;
  327.         {
  328.                 for(u=0;u<8;u++)
  329.                 {
  330.                         for(j=0;j<16;j++)
  331.                         {
  332.                                 P1=tabh[j];
  333.                        
  334.                                 youyishuju();
  335.                        
  336.                                 temp2=(BUFF[t]>>lie)|(BUFF[t+1]<<(8-lie));
  337.                                 temp1=(BUFF[t+1]>>lie)|(BUFF[t+2]<<(8-lie));
  338.                                 HC595();
  339.                                 EN=0;
  340.                                 delay(5);
  341.                         }
  342.                 }
  343.         }
  344.        
  345.         if(++lie>7)
  346.         {
  347.                 lie=0;
  348.                 t++;
  349.         }
  350.        
  351.         if(t>1)
  352.         {
  353.                 t=0;
  354.                 zim++;
  355.         }
  356.        
  357.         if(zim>3)
  358.         {
  359.                 zim=0;
  360.         }
  361. }

  362. void zuoshang()                            //左上移
  363. {
  364.         uchar t,u,lie;
  365.                 for(u=0;u<8;u++)
  366.                 {
  367.                         for(j=0;j<16;j++)
  368.                         {
  369.                                 P1=tabh[j];
  370.                
  371.                                 zuoshangshuju();
  372.                
  373.                                 temp1=(BUFF[t]<<lie)|(BUFF[t+1]>>(8-lie));
  374.                                 temp2=(BUFF[t+1]<<lie)|(BUFF[t+2]>>(8-lie));
  375.                                 HC595();
  376.                                 EN=0;
  377.                                 delay(5);
  378.                         }
  379.                 }

  380.                 if(++shang>15)
  381.                 {
  382.                         shang=0;
  383.                 }

  384.                 if(++lie>7)
  385.                 {
  386.                         lie=0;
  387.                         t++;
  388.                 }

  389.                 if(t>1)
  390.                 {
  391.                         t=0;
  392.                         zim=zim+2;
  393.                 }

  394.                 if(zim>7)
  395.                 {
  396.                         zim=0;
  397.                 }       
  398. }                                                  
  399. void youshang()                        //右上移
  400. {
  401.                 uchar u,lie,t;
  402.         {
  403.                 for(u=0;u<8;u++)
  404.                 {
  405.                         for(j=0;j<16;j++)
  406.                         {
  407.                                 P1=tabh[j];
  408.                        
  409.                                 youshangshuju();
  410.                        
  411.                                 temp2=(BUFF[t]>>lie)|(BUFF[t+1]<<(8-lie));
  412.                                 temp1=(BUFF[t+1]>>lie)|(BUFF[t+2]<<(8-lie));
  413.                                 HC595();
  414.                                 EN=0;
  415.                                 delay(5);
  416.                         }
  417.                 }
  418.         }

  419.         if(++shang>15)
  420.                 {
  421.                         shang=0;
  422.                 }
  423.        
  424.         if(++lie>7)
  425.         {
  426.                 lie=0;
  427.                 t++;
  428.         }
  429.        
  430.         if(t>1)
  431.         {
  432.                 t=0;
  433.                 zim=zim+2;
  434.         }
  435.        
  436.         if(zim>7)
  437.         {
  438.                 zim=0;
  439.         }
  440. }

  441. void zuoxia()                            //左下移
  442. {
  443.         uchar t,u,lie;
  444.         for(u=0;u<8;u++)
  445.         {
  446.                 for(j=0;j<16;j++)
  447.                 {
  448.                         P1=tabh[15-j];
  449.                
  450.                         zuoxiashuju();
  451.                
  452.                         temp1=(BUFF[t]<<lie)|(BUFF[t+1]>>(8-lie));
  453.                         temp2=(BUFF[t+1]<<lie)|(BUFF[t+2]>>(8-lie));
  454.                         HC595();
  455.                         EN=0;
  456.                         delay(5);
  457.                 }
  458.         }

  459.         if(++shang>15)
  460.         {
  461.                 shang=0;
  462.         }

  463.         if(++lie>7)
  464.         {
  465.                 lie=0;
  466.                 t++;
  467.         }

  468.         if(t>1)
  469.         {
  470.                 t=0;
  471.                 zim=zim+2;
  472.         }

  473.         if(zim>7)
  474.         {
  475.                 zim=0;
  476.         }
  477. }

  478. void youxia()                        //右下移
  479. {
  480.                 uchar t,u,lie;
  481.         for(u=0;u<8;u++)
  482.         {
  483.                 for(j=0;j<16;j++)
  484.                 {
  485.                         P1=tabh[15-j];
  486.                
  487.                         youxiashuju();
  488.                
  489.                         temp2=(BUFF[t]>>lie)|(BUFF[t+1]<<(8-lie));
  490.                         temp1=(BUFF[t+1]>>lie)|(BUFF[t+2]<<(8-lie));
  491.                         HC595();
  492.                         EN=0;
  493.                         delay(5);
  494.                 }
  495.         }

  496.         if(++shang>15)
  497.         {
  498.                 shang=0;
  499.         }

  500.         if(++lie>7)
  501.         {
  502.                 lie=0;
  503.                 t++;
  504.         }

  505.         if(t>1)
  506.         {
  507.                 t=0;
  508.                 zim=zim+2;
  509.         }

  510.         if(zim>7)
  511.         {
  512.                 zim=0;
  513.         }
  514. }

  515. void main()
  516. {
  517.         SRCK=0;
  518.         RCK=1;
  519.         while(1)
  520.         {
  521.                 uchar yi,er,shan,si,wu,liu,qi,ba;
  522.                
  523.                 for(yi=0;yi<65;yi++)
  524.                 {
  525.                         shangyi();
  526.                 }
  527.                 delay(50);
  528.                 for(er=0;er<65;er++)
  529.                 {
  530.                         xiayi();
  531.                 }
  532.                 delay(50);
  533.                 for(shan=0;shan<64;shan++)
  534.                 {
  535.                         zuoyi();
  536.                 }
  537.                 delay(50);
  538.                 for(si=0;si<64;si++)
  539.                 {
  540.                         youyi();
  541.                 }
  542.                 delay(50);
  543.                 for(wu=0;wu<64;wu++)
  544.                 {
  545.                         zuoshang();
  546.                 }
  547.                 delay(50);
  548.                 for(liu=0;liu<64;liu++)
  549.                 {
  550.                         youshang();
  551.                 }
  552.                 delay(50);
  553.                 for(qi=0;qi<64;qi++)
  554.                 {
  555.                         zuoxia();
  556.                 }
  557.                 delay(50);
  558.                 for(ba=0;ba<64;ba++)
  559.                 {
  560.                         youxia();
  561.                 }
  562.                 delay(50);                                                 
  563.         }
  564. }
复制代码

所有资料51hei提供下载:
16dianzhen.rar (35.76 KB, 下载次数: 37)

评分

参与人数 1黑币 +5 收起 理由
任媛 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:251214 发表于 2018-3-22 22:26 | 显示全部楼层
正在学习,好贴。顶
回复

使用道具 举报

ID:25213 发表于 2018-4-8 22:02 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:303913 发表于 2018-4-9 23:44 | 显示全部楼层
准备试试,谢谢楼主分享!!
回复

使用道具 举报

ID:282370 发表于 2018-4-12 10:47 | 显示全部楼层
为什么不放原理图啊
回复

使用道具 举报

ID:658437 发表于 2020-2-15 21:09 | 显示全部楼层
正好需要,美滋滋
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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