找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机小系统板的花样流水灯

[复制链接]
跳转到指定楼层
楼主
ID:238749 发表于 2017-10-11 23:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
控制P37 P21 P22 P23 P16 P17控制流水灯

单片机源程序如下:
  1. /***************************************
  2. 小系统板的花样流水灯
  3. 流水灯只接P37 P21 P22 P23 P16 P17
  4. ***************************************/
  5. #include <STC15F2K60S2.H>
  6. #include "intrins.h"
  7. #include "led.h"
  8. #include "delay.h"
  9. /***************************************/
  10. typedef  unsigned int    uint;
  11. typedef  unsigned char   uchar;
  12. /***************************************/
  13. void initial();
  14. void Delay1000ms();
  15. void led_dr_light_on(uchar m);
  16. void led_dr_light_off(uchar m);
  17. void writedate(uchar dat1);
  18. void delay(uchar m);
  19. void Delay1000ms();
  20. void Delay500ms();
  21. void Delay300ms();
  22. void Delay100ms();
  23. void Delay500us();
  24. void style_one();
  25. void new();
  26. /***************************************/
  27. uchar code tab_zeor[6]={0x00,0x00,0x00,0x00,0x00,0x00};
  28. uchar code tab[6]={0x01,0x02,0x04,0x08,0x10,0x20};//0000 0001、0000 0010、0000 0100、0000 1000、0001 0000、0010 0000
  29. uchar code tab_new[8]={0x01,0x02,0x04,0x08,0x10,0x20,0X40,0X80};//0000 0001、0000 0010、0000 0100、0000 1000、0001 0000、0010 0000
  30. uchar code tab_one[14]={0xaa,0xaa,0x55,0x55,0xaa,0xaa,0x55,0x55,0xff,0xff,0x00,0x00,0xff,0xff};//1010 1010 aa  0101 0101 55
  31. uchar code tab_two[17]={0x21,0x12,0x0c,0x12,0x21,0x12,0x0c,0x12,0x21,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff};
  32. uchar code tab_three[25]={0x21,0x00,0x12,0x00,0x0c,0x00,0x12,0x00,0x21,0x00,0x12,0x00,0x0c,0x00,0x12,0x00,0x21,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff};
  33. /***************************************/
  34.         void main()
  35. {  
  36.                
  37.           uint i=0;
  38.                 initial();       
  39.                
  40.                 while(1)
  41.                 {
  42.                                 //new();       
  43.        style_one();                       
  44.                 }
  45.                  
  46.                        
  47.                
  48. }               
  49.                              
  50. /***************************************
  51. 函数名:initial
  52. 功能:初始化程序
  53. 说明:
  54. 入口参数:无
  55. 返回值:无
  56. ***************************************/
  57. void initial()
  58. {
  59.     P0M0 = 0x00;
  60.     P0M1 = 0x00;
  61.     P1M0 = 0x00;
  62.     P1M1 = 0x00;
  63.     P2M0 = 0x00;
  64.     P2M1 = 0x00;
  65.     P3M0 = 0x00;
  66.     P3M1 = 0x00;
  67.     P4M0 = 0x00;
  68.     P4M1 = 0x00;
  69.     P5M0 = 0x00;
  70.     P5M1 = 0x00;
  71.     P6M0 = 0x00;
  72.     P6M1 = 0x00;
  73.     P7M0 = 0x00;
  74.     P7M1 = 0x00;
  75.             P37 = 0;
  76.                         P21 = 0;
  77.                         P22 = 0;
  78.                         P23 = 0;
  79.                         P16 = 0;
  80.                         P17 = 0;       
  81.                         P0=0;
  82. }
  83. /***************************************
  84. 函数名:led_dr_light_on
  85. 功能:控制灯亮
  86. 说明:输入m的值,使第m个灯亮
  87. 入口参数:m
  88. 返回值:无
  89. ***************************************/
  90. void led_dr_light_on(uchar m)
  91. {
  92.         switch(m)
  93.         {
  94.                 case 0: P37=1;  break;
  95.                 case 1: P21=1;  break;
  96.                 case 2: P22=1;  break;
  97.                 case 3: P23=1;  break;
  98.                 case 4: P16=1;  break;
  99.                 case 5: P17=1;  break;
  100.         }

  101. }
  102. /***************************************
  103. 函数名:led_dr_light_off
  104. 功能:控制灯灭
  105. 说明:输入m的值,使第m个灯灭
  106. 入口参数:m
  107. 返回值:无
  108. ***************************************/

  109. void led_dr_light_off(uchar m)
  110. {
  111.         switch(m)
  112.         {
  113.                 case 0: P37=0;  break;
  114.                 case 1: P21=0;  break;
  115.                 case 2: P22=0;  break;
  116.                 case 3: P23=0;  break;
  117.                 case 4: P16=0;  break;
  118.                 case 5: P17=0;  break;
  119.         }
  120. }

  121. /***************************************
  122. 函数名:writedate
  123. 功能:识别输入的字节
  124. 说明:输入字节,使该字节对应的1亮,0灭
  125. 入口参数:dat1
  126. 返回值:无
  127. ***************************************/
  128. void writedate(uchar dat1)
  129. {
  130.        
  131.                         uint temp1,i=0;
  132.           
  133.             for(i=0;i<6;i++)
  134.                         {
  135.                                 temp1=dat1 & 0x01;


  136.                                 if(temp1 != 0)
  137.                                
  138.                                         led_dr_light_on (i);  //亮                       
  139.                     else                               
  140.                                         led_dr_light_off (i);  //灭
  141.                                  dat1 >>= 1;
  142.                 }
  143. }

  144. /***************************************
  145. 函数名:style_one
  146. 功能:样式一
  147. 说明:花样流水
  148. 入口参数:无
  149. 返回值:无
  150. ***************************************/
  151. void style_one()
  152. {

  153.        uint i;
  154.         for(i=0;i<6;i++)
  155.                         {
  156.                                 writedate(tab[i]);
  157.                           Delay100ms();
  158.                         }        
  159.                         initial();
  160.                         Delay100ms();
  161.                        
  162.                                 for(i=0;i<6;i++)
  163.                         {
  164.                                 writedate(tab[5-i]);
  165.                           Delay100ms();
  166.                         }        
  167.                         initial();
  168.                         Delay100ms();
  169.                        
  170.                         for(i=0;i<14;i++)
  171.                         {
  172.                                 writedate(tab_one[i]);
  173.                           Delay100ms();
  174.                         }        
  175.                          initial();
  176.                          Delay100ms();
  177.                         for(i=0;i<17;i++)
  178.                         {
  179.                                 writedate(tab_two[i]);
  180.                           Delay100ms();
  181.                         }        
  182.                          initial();
  183.                          Delay100ms();
  184.                        
  185.                         for(i=0;i<25;i++)
  186.                         {
  187.                                 writedate(tab_three[i]);
  188.                           Delay100ms();
  189.                         }        
  190. ……………………

  191. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
小系统板.zip (36.62 KB, 下载次数: 5)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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