找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1565|回复: 0
收起左侧

LED广州塔的单片机代码

[复制链接]
ID:331398 发表于 2018-11-18 22:46 | 显示全部楼层 |阅读模式
8层小型广州塔制作例程
  1. void startup()
  2. {
  3.         u8 i;
  4.         P2=0xff;
  5.         for(i=0;i<8;i++)
  6.         {
  7.                 P0=table0_0[i];
  8.                 delay_ms(310);
  9.                 if(key_index==0)
  10.                         break;
  11.         }
  12.         P0=0xff;
  13.         for(i=0;i<4;i++)
  14.         {
  15.                 P1=table1_0[i];
  16.                 delay_ms(310);
  17.                 if(key_index==0)
  18.                         break;
  19.         }
  20.         P1=0xff;
  21.         delay_ms(100);
  22.         for(i=0;i<4;i++)
  23.         {
  24.                 P1=table1_1[i];
  25.                 delay_ms(310);
  26.                 if(key_index==0)
  27.                         break;
  28.         }
  29.         for(i=0;i<8;i++)
  30.         {
  31.                 P0=table0_1[i];
  32.                 delay_ms(310);
  33.                 if(key_index==0)
  34.                         break;
  35.         }
  36. }
  37. void updown1()
  38. {
  39.         u8 i,j;
  40.         P2=0xff;
  41.         P1=0;
  42.         for(j=0;j<4;j++)
  43.         {
  44.                 for(i=0;i<8;i++)
  45.                 {
  46.                         P0=table0_0[i];
  47.                         delay_ms(310);
  48.                         if(key_index==0)
  49.                         break;
  50.                 }
  51.                 for(i=0;i<6;i++)
  52.                 {
  53.                         P0=table0_0[6-i];
  54.                         delay_ms(310);
  55.                         if(key_index==0)
  56.                         break;
  57.                 }
  58.         }
  59. }
  60. void updown2()
  61. {
  62.         u8 i,j;
  63.         P2=0xff;
  64.         P1=0;
  65.         for(j=0;j<8;j++)
  66.         {
  67.                 for(i=0;i<4;i++)
  68.                 {
  69.                         P0=table0_2[i];
  70.                         delay_ms(320);
  71.                         if(key_index==0)
  72.                         break;
  73.                 }
  74.                 for(i=2;i>0;i--)
  75.                 {
  76.                         P0=table0_2[i];
  77.                         delay_ms(320);
  78.                         if(key_index==0)
  79.                         break;
  80.                 }
  81.         }
  82. }
  83. void rotate1()
  84. {
  85.         u8 i,j;
  86.         P1=0xff;
  87.         P0=0;
  88.         for(j=0;j<4;j++)
  89.         {
  90.                 for(i=0;i<8;i++)
  91.                 {
  92.                         P2=table2_0[i];
  93.                         delay_ms(320);
  94.                         if(key_index==0)
  95.                         break;
  96.                 }
  97.         }
  98. }
  99. void rotate2()
  100. {
  101.         u8 i,j;
  102.         P1=0xff;
  103.         P0=0;
  104.         for(j=0;j<8;j++)
  105.         {
  106.                 for(i=0;i<4;i++)
  107.                 {
  108.                         P2=table2_1[i];
  109.                         delay_ms(330);
  110.                         if(key_index==0)
  111.                         break;
  112.                 }
  113.         }
  114. }
  115. void rain()
  116. {
  117.         u8 i,j;
  118.         P2=1;
  119.         for(i=0;i<8;i++)
  120.         {
  121.                 P2<<=1;
  122.                 for(j=0;j<8;j++)
  123.                 {
  124.                         P0=table0_1[j];
  125.                         delay_ms(300);
  126.                         if(key_index==0)
  127.                         break;
  128.                 }
  129.         }
  130. }
  131. void stars()
  132. {
  133.         u8 i;
  134.         for(i=0;i<50;i++)
  135.         {
  136.                 P2=rand()%255;
  137.                 P1=rand()%15;
  138.                 P0=rand()%255;
  139.                 delay_ms(300);
  140.                 if(key_index==0)
  141.                         break;
  142.         }
  143. }
  144. void all_on()
  145. {
  146.         P2=255;
  147.         P1=0;
  148.         P0=0;
  149. }
  150. void all_off()
  151. {
  152.         P2=0;
  153.         P1=15;
  154.         P0=255;
  155. }

  156. void main()
  157. {
  158.         IT0 = 1;                        //set INT0 int type (1:Falling 0:Low level)
  159.     EX0 = 1;                        //enable INT0 interrupt
  160.     EA = 1;                         //open global interrupt switch
  161.         
  162.         while(1)
  163.         {
  164.                 if(key_index==0)
  165.                 {
  166.                         all_off();
  167.                 }
  168.                 else if(key_index==1)
  169.                 {
  170.                         all_on();
  171.                 }
  172.                 else
  173.                 {
  174.                         all_off();
  175.                         startup();
  176.                         if(key_index==0)
  177.                         break;
  178.                         updown1();
  179.                         if(key_index==0)
  180.                         break;
  181.                         updown2();
  182.                         if(key_index==0)
  183.                         break;
  184.                         rotate1();
  185.                         if(key_index==0)
  186.                         break;
  187.                         rotate2();
  188.                         if(key_index==0)
  189.                         break;
  190.                         rain();
  191.                         if(key_index==0)
  192.                         break;
  193.                         stars();
  194.                 }
  195.         }
  196. }

  197. void exint0() interrupt 0           //(location at 0003H)
  198. {
  199.     EA=0;   //首先关闭总中断,以消除按键出现的抖动所产生的干扰
  200.         delay_us(10); //同样是为了消除抖动而产生新的中断
  201.         if(key==0)
  202.         {
  203.                 key_index++;
  204.         }
  205.         if(key_index>2)
  206.                 key_index=0;
  207.         while(key==0);
  208.         EA=1;            //恢复中断
  209. }
复制代码

广州塔.rar

39.97 KB, 下载次数: 6, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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