找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于stc12c5a60s2的3D8光立方

[复制链接]
ID:388135 发表于 2018-9-10 20:46 | 显示全部楼层 |阅读模式
部分源码

  1. #include <STC12C5A60S2.H>
  2. #include <intrins.h>
  3. #include"zimo.h"
  4. #include"yinpin.h"
  5. #include"flash.h"
  6. #include"hanshu.h"
  7. uchar data rxcnt=0;
  8. /*************************************************************************/
  9. void main()
  10. {         

  11.     out=1;
  12.         menu=0;        
  13.         bb=3;
  14.         AK=0;
  15.         BK=1;
  16.         InitUart();  
  17.     initial595();
  18.     initial5952();
  19.     timer0init();
  20.           while(1)
  21.           {         
  22.            huxi();        
  23.                 zhu2();
  24.            }         
  25. }

  26. /******************************************************************************/

  27. /**************************************************************************/


  28.   void print1() interrupt 3
  29. {  
  30.     if(out==1)
  31. {
  32.                 TR1=0;                //关闭定时器1
  33.                 TH1=(65536-2500)/256;  //定时  time = F63C ;104.1us
  34.                 TL1=(65536-2500)%256;
  35.         if(num>=(amenu-1))
  36.                 num=0;
  37.         else
  38.                 num++;
  39.         if(b[num]<c[num])
  40.         {                                                               
  41.                 b[num]++;
  42.          }
  43.         if(b[num]>c[num])
  44.          {                                       
  45.                 b[num]--;
  46.           }
  47.         if(b[num]>8)
  48.          {               
  49.                 b[num]=8;
  50.           }
  51.            
  52. switch(yp)
  53.   {         
  54.             case 1:        send_data2(~tuku2[b[num]]);
  55.                     if(amenu<=2){}
  56.                             else delay(50);
  57.                                 break;  
  58.             case 2:        send_data2(~tuku1[b[num]]);
  59.                                 if(amenu<=2){}
  60.                                 else delay(50);
  61.                                 break;
  62.             case 3:        send_data2(~tuku3[b[num]]);
  63.                                 if(amenu<=2){}
  64.                                 else delay(50);                                
  65.                                 default:break;
  66.     }
  67.   }               
  68. if(out==2||out==3)        
  69.         {               
  70.                         uchar i;                                
  71.                     static uchar layer=0;     
  72.           for(i=0;i<8;i++)
  73.             {   buffer[i]=~display[layer][i];
  74.                         }
  75.                         xiansi1();
  76.                             cheng=(0x01<<layer);                                                     
  77.                             DS2 = ~cheng&0x01; //发送最低位
  78.                              receive_sta=0;       //清除接受成功标志,这步很重要         
  79.                                 SH_CP2 = 1;
  80.                                 SH_CP2 = 0;                  //移位寄存器移位
  81.                                 ST_CP=1;        
  82.                             ST_CP=0;        
  83.                                 ST_CP2=1;        
  84.                             ST_CP2=0;
  85.                 if (layer<7)
  86.                 layer++;
  87.         else
  88.                 layer=0;      
  89.                             TH1=0xfe;
  90.                             TL1=0xfe;                                       
  91.                             delay(2);               
  92.                                 
  93.                                 key_amenu_scan();        
  94.                                 key_menu_scan();
  95.                                 key_out_scan();
  96.                         if(out==4)
  97.                             {IAP_CONTR=0x20;}                                                         
  98.                                          
  99.         }
  100.                                    TR1=1;//启动定时?
  101. }        
  102. /***************************************************************************/
  103. void UartIntterupt() interrupt 4
  104. {
  105.    unsigned char res=0;
  106.         if(RI==1)//进入到接受中断
  107.         {        
  108.                  RI=0;
  109.                 if(receive_sta==1)return;//如果接受完成啦就直接退出,等待main函数将数据给显示完            
  110.                 res=SBUF;
  111.                 if(byte_cnt==0)cmd_type=res;//第一个字节为命令类型
  112.                 switch(cmd_type)
  113.                 {
  114.                    case 0xf5: //动画下载
  115.                      cube_frame[byte_cnt]=res;
  116.                          byte_cnt++;
  117.                          menu=1;
  118.                          out=2;
  119.                          sa=0;
  120.                          if(byte_cnt==73)
  121.                          { byte_cnt=0;
  122.                            receive_sta=1;//表示接受完成        
  123.                            }
  124.                      break;
  125.                    case 0xf4: //进入音频模式
  126.                                 menu=1;
  127.                                 out=1;
  128.                                receive_sta=1; //因为此命令就一个字节,所以直接接受完成.下面类似
  129.                      break;
  130.                    case 0xD4: //脱机动画
  131.                                 menu=1;
  132.                                 out=3;
  133.                         receive_sta=1;
  134.                      break;
  135.                    case 0xf1: //动画音量增加
  136.                                 k3=0;
  137.                                         delay2(50000);
  138.                                         delay2(50000);
  139.                                         delay2(50000);
  140.                                         delay2(50000);                                
  141.                                         k3=1;
  142.                                    receive_sta=1;
  143.                      break;
  144.                    case 0xf0: //动画音量减小
  145.                             k2=0;
  146.                                         delay2(50000);
  147.                                         delay2(50000);
  148.                                         delay2(50000);
  149.                                         delay2(50000);                                                               
  150.                                         k2=1;
  151.                         receive_sta=1;
  152.                      break;
  153.                    case 0xef: //上一曲
  154.                             k2=0;
  155.                                         delay2(20000);
  156.                                         k2=1;
  157.                         receive_sta=1;
  158.                      break;
  159.                    case 0xee: //下一曲
  160.                                     k3=0;
  161.                                         delay2(20000);
  162.                                         k3=1;
  163.                         receive_sta=1;
  164.                          break;
  165.                    case 0xed: //eq音乐类型,摇滚,爵士,流行
  166.                                     k1=0;
  167.                                         delay2(20000);
  168.                                         k1=1;
  169.                         receive_sta=1;
  170.                      break;
  171.                    case 0xec: //暂停与播放
  172.                                     k1=0;
  173.                                         delay2(20000);
  174.                                         k1=1;
  175.                         receive_sta=1;
  176.                      break;
  177.                    case 0xeb: //音频模式切换
  178.                              amenu++;
  179.                                 if(amenu==8)
  180.                                     amenu=1;                                       
  181.                            receive_sta=1;
  182.                             break;
  183.                    case 0xea: //进入待机
  184.                              out=4;                   //
  185.                                              IAP_CONTR=0x20;
  186.                                          receive_sta=1;
  187.                                           break;
  188.                    case 0xe9: //脱机动画音量速度
  189.                                    bb++;
  190.                                 if(bb==15)
  191.                                     bb=1;
  192.                                         receive_sta=1;                                       
  193.                                     break;
  194.                    case 0xe8: //脱机动画颜色
  195.                             yanse++;
  196.                                 if(yanse==8)
  197.                                     yanse=0;
  198.                                         receive_sta=1;                                       
  199.                                     break;
  200.                   
  201.                   case 0xD0: //外部音频
  202.                             AK=1;
  203.                                         BK=0;
  204.                                         receive_sta=1;                                
  205.                                     break;
  206.                   case 0xD1: //内部音频
  207.                             AK=0;
  208.                                         BK=1;
  209.                                         receive_sta=1;                                
  210.                                     break;
  211.                    case 0xD2: //亮度
  212.                             ABL=~ABL;
  213.                                         receive_sta=1;                                
  214.                                     break;
  215.                   case 0xD3: //模式切换
  216.                             k3=0;
  217.                                         delay2(20000);
  218.                                         k3=1;
  219.                                         delay2(10000);
  220.                                         k3=0;
  221.                                         delay2(20000);
  222.                                         k3=1;
  223.                                         receive_sta=1;                                
  224.                                     break;
  225.                    default:break;//蓝牙的连接成功或者断开连接消息
  226.                 }
  227.         }

  228. }

  229. void ADC_Finish() interrupt 5
  230. {          int yinpin;
  231.       yinpin++;
  232.           if(yinpin==20000)
  233.           {        yinpin=0;
  234.                            yp++;
  235.                            if(yp==4)
  236.                            yp=1;           
  237.                            amenu++;
  238.                            if(amenu==9)
  239.                            amenu=1;
  240.            }     
  241.             if(ADC_CONTR&0x10)  //判断ADC-FLGA位是否为1,为1表明A/D已转换完成。                  
  242.       delay(1);                                                           
  243. }  
复制代码
      


rtf格式文件可以word打开。

MT10-单色app程序源码.rar

228.38 KB, 下载次数: 17, 下载积分: 黑币 -5

MT10-原理图.rar

1.89 MB, 下载次数: 9, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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