久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4165|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

藍(lán)牙APP,紅外遙控光立方制作單片機源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:451309 發(fā)表于 2018-12-21 09:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
光立方制作教程源碼!!!


FFT頻譜測試源碼
MT10-單色app程序源碼
MT10-單色上位機恒流
wifi通訊程序源碼
上位機通訊測試源碼
雙色光立方貪吃蛇程序
呼吸燈程序源碼
按鍵程序測試源碼
點亮光立方程序測試源碼
紅外遙控程序源碼
脫機動畫程序源碼
藍(lán)牙APP通訊源碼
語音APP萌萌游戲

全部資料51hei下載地址:
通用程序源碼.zip (17.13 MB, 下載次數(shù): 66)

單片機源程序如下:
  1. #include <STC12C5A60S2.H>//包含頭文件 STC12C5A60S2.H
  2. //STC單片機的頭文件可以使用STC-ISP下載軟件添加到Keil編譯軟件中使用(參考STC官方下程序下載軟件使用手冊載)
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar data buffer[8]; //數(shù)組
  6. uchar display[8][8];
  7. sbit RR=P3^6;//紅
  8. sbit GG=P2^2;//綠
  9. sbit BB=P2^4;//藍(lán)
  10. sbit k1=P0^4;//播放、暫停
  11. sbit k2=P0^5;//音量減
  12. sbit k3=P0^6;//音量加
  13. sbit ABL=P4^3;//亮度
  14. uchar data rxcnt=0;
  15. char data bb,cheng,yanse;  //sa串口中斷,bb延時變量,
  16. unsigned char cube_frame[73];//一幀cube_frame數(shù)據(jù)73字節(jié),當(dāng)然這里的數(shù)組替換為你程序中的相應(yīng)數(shù)組
  17. unsigned char byte_cnt=0;//接受到的字節(jié)數(shù)
  18. unsigned char cmd_type=0;//接受到命令類型,可能是動畫下載,進入音頻模式等..
  19. bit receive_sta=0;        //接受狀態(tài),表示數(shù)據(jù)是否接受完成
  20. void disp_cube(unsigned char DZ_data[64]);        
  21. void timer0init(void)
  22. {
  23.                         TMOD=0X12;                                         
  24.                         EX1=0;
  25.                         ET1=1;//定時器1開中斷                                
  26.                         EA=1;               
  27.                         IPH|=0X01;
  28.                         PX0=1;
  29.                         IT0=1;
  30.                         P0M0=0xf8;        //P0口開漏輸出
  31.                         P0M1=0xf0;        
  32.                         P3M0=0x00;        //P3準(zhǔn)雙向輸出
  33.                         P3M1=0X00;
  34.                         P2M0=0x00;        //P2準(zhǔn)雙向輸出
  35.                         P2M1=0X00;
  36.                         
  37. }

  38. /*************************************************************************************************************************/
  39. void delay(int i)// 延時 bb速度控制
  40. {                                                                                       
  41.         char b;
  42.         while (i--)
  43.         {
  44.            b=bb;
  45.            while(b--);
  46.         }
  47. }

  48. void delay2(uint t)
  49. {
  50.         int i;
  51.         while(t--)
  52.         for(i=0;i<5;i++);
  53. }
  54. /*************************************************************************************************************************/
  55. /******************************************74HC595數(shù)據(jù)發(fā)送函數(shù)************************************************************/
  56. /*************************************************************************************************************************/
  57. sbit SH_CP = P3^4; //SCK
  58. sbit ST_CP = P3^3;//RCK
  59. sbit DS    = P3^5;//SER
  60. sbit SH_CP2 = P2^6; //SCK2
  61. sbit ST_CP2 = P2^5;//RCK2
  62. sbit DS2    = P2^3;//SER2
  63. void initial595()        //列掃描74HC595初始化
  64. {
  65.         SH_CP = 0;
  66.         ST_CP = 0;
  67.         DS = 0;
  68. }
  69. void initial5952() //行掃描74HC595初始化
  70. {
  71.         SH_CP2 = 0;
  72.         ST_CP2 = 0;
  73.         DS2 = 0;
  74. }
  75. /*---------------   發(fā)送數(shù)據(jù)   ---------------*/
  76. void send_data(unsigned char d)
  77. {
  78.         unsigned char i;
  79.         for(i=0;i<8;i++)
  80.         {
  81.                 DS = d&0x80;         //發(fā)送最高位
  82.                 SH_CP = 1;
  83.                 SH_CP = 0;                 //移位寄存器移位
  84.                 d = d<<1;                 //數(shù)據(jù)移位f
  85.         }
  86. }

  87. void xiansi1()                                  //列掃描74HC595數(shù)據(jù)輸出
  88. {        
  89.         send_data(buffer[0]);          //u8
  90.         send_data(buffer[1]);          //u7
  91.         send_data(buffer[2]);          //u6
  92.         send_data(buffer[3]);          //u5
  93.         send_data(buffer[4]);          //u4
  94.         send_data(buffer[5]);          //u3
  95.         send_data(buffer[6]);          //u2
  96.         send_data(buffer[7]);          //u1

  97. }
  98. void InitUart()
  99. {
  100.             EADC=0; //AD中斷關(guān)
  101.             //sa=1;
  102.                      // BRT獨立波特率發(fā)生器的溢出率= SYSclk / ( 256 - BRT )
  103.              //11.0592M晶振 57600波特率
  104.             PCON &= 0x7f;  //波特率不倍速   
  105.                 SCON = 0x50;   //8位數(shù)據(jù),可變波特率
  106.             BRT = 0xF3;    //設(shè)定獨立波特率發(fā)生器重裝值        0xFA
  107.             AUXR |= 0x04;  //獨立波特率發(fā)生器時鐘為Fosc,即1T
  108.             AUXR |= 0x01;  //串口1選擇獨立波特率發(fā)生器為波特率發(fā)生器
  109.             AUXR |= 0x10;  //啟動獨立波特率發(fā)生器   
  110.             ES = 1;         //充許串口1中斷
  111. }
  112. //***********************************************************************************************
  113. void disp_cube(unsigned char DZ_data[64])
  114. {           unsigned char i;
  115.                 for(i=0;i<64;i++)
  116.            {
  117.                  display[0][i]=DZ_data[i];//這里的代碼自己實現(xiàn)
  118.                 }
  119. }

  120.   void shangwei()
  121. {           
  122.                 while(1)
  123.                 {           
  124.                           if(receive_sta)//接受完成
  125.               {                    
  126.                             receive_sta=0;//清除接受成功標(biāo)志,這步很重要
  127.               }
  128.                         disp_cube(cube_frame+9);//如果接受命令時就時時刷新原來的點陣數(shù)據(jù)
  129.                 }                  
  130. }        

  131. void main()
  132. {                     InitUart();
  133.                                 initial595();  //初始化調(diào)用
  134.                                 initial5952(); //初始化調(diào)用
  135.                                 timer0init();  //初始化調(diào)用
  136.                             TR1=1;//啟動定時器1
  137.                                 BB=0;                                                   
  138.                                 bb=3;
  139.                                 ABL=0;
  140.                                  
  141.                                   shangwei();
  142.                                  
  143.                
  144. }
  145. /*********************************************************************************************************************************************/
  146. void print1() interrupt 3         //定時器1中斷函數(shù)
  147. {            
  148.         uchar i;               
  149.         static uchar layer=0;                 
  150.        for (i=0;i<8;i++)
  151.        {
  152.         buffer[i]=~display[layer][i];
  153.        }                                       
  154.                         xiansi1();
  155.                                                   
  156.                 cheng=0x01<<layer;
  157.             DS2 = ~cheng&0x01;         //發(fā)送最低位
  158.                 SH_CP2 = 1;
  159.                 SH_CP2 = 0;
  160.             ST_CP=1;        
  161.             ST_CP=0;                 //移位寄存器移位        
  162.                 ST_CP2=1;        
  163.             ST_CP2=0;               
  164.                 if (layer<7)
  165.                         layer++;
  166.                     else
  167.                         layer=0;      
  168.                                     TH1=0xf0;
  169.                                     TL1=0xf0;
  170.                                         delay(2);
  171.                                    
  172.                    //          TR1=1;//啟動定時器1
  173. }         
  174. /***************************************************************************************************************************************/
  175. /*******************************************************************************************************************************************/
  176. void UartIntterupt() interrupt 4
  177. {
  178.    unsigned char res=0;
  179.         if(RI==1)//進入到接受中斷
  180.         {        
  181.                  RI=0;
  182.                 if(receive_sta==1)return;//如果接受完成啦就直接退出,等待main函數(shù)將數(shù)據(jù)給顯示完            
  183.                 res=SBUF;
  184.                 if(byte_cnt==0)cmd_type=res;//第一個字節(jié)為命令類型
  185.                 switch(cmd_type)
  186.                 {
  187.                    case 0xf5: //動畫下載
  188.                      cube_frame[byte_cnt]=res;
  189.                          byte_cnt++;
  190.                          if(byte_cnt==73)
  191.                          { byte_cnt=0;
  192.                            receive_sta=1;//表示接受完成        
  193.                            }
  194.                      break;
  195.                  
  196.                    case 0xf1: //動畫音量增加
  197.                                 k3=0;
  198.                                         delay2(50000);
  199.                                         delay2(50000);
  200.                                         delay2(50000);
  201.                                         delay2(50000);                                
  202.                                         k3=1;
  203.                                    receive_sta=1;
  204.                      break;
  205.                    case 0xf0: //動畫音量減小
  206.                             k2=0;
  207.                                         delay2(50000);
  208.                                         delay2(50000);
  209.                                         delay2(50000);
  210.                                         delay2(50000);                                                               
  211.                                         k2=1;
  212.                         receive_sta=1;
  213.                      break;
  214.                    case 0xef: //上一曲
  215.                             k2=0;
  216.                                         delay2(20000);
  217.                                         k2=1;
  218.                         receive_sta=1;
  219.                      break;
  220.                    case 0xee: //下一曲
  221.                                     k3=0;
  222.                                         delay2(20000);
  223.                                         k3=1;
  224.                         receive_sta=1;
  225.                          break;
  226.                    case 0xed: //eq音樂類型,搖滾,爵士,流行
  227.                                     k1=0;
  228.                                         delay2(20000);
  229.                                         k1=1;
  230.                         receive_sta=1;
  231.                      break;
  232.                    case 0xec: //暫停與播放
  233.                                     k1=0;
  234.                                         delay2(20000);
  235.                                         k1=1;
  236.                         receive_sta=1;
  237.                      break;
  238.                  
  239.                    case 0xea: //進入待機                                       
  240.                                              IAP_CONTR=0x20;                  
  241.                    case 0xD2: //亮度
  242.                             ABL=~ABL;
  243.                                         receive_sta=1;                                
  244.                                     break;
  245.                   case 0xD3: //模式切換
  246.                             k3=0;
  247.                                         delay2(20000);
  248.                                         k3=1;
  249.                                         delay2(10000);
  250.                                         k3=0;
  251.                                         delay2(20000);
  252.                                         k3=1;
  253.                                         receive_sta=1;                                
  254.                                     break;
  255.                    default:break;//藍(lán)牙的連接成功或者斷開連接消息
  256.                 }
  257.         }

  258. }
復(fù)制代碼



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:422885 發(fā)表于 2019-1-1 10:23 | 只看該作者
感謝分享,如果有電路圖就更完美
回復(fù)

使用道具 舉報

板凳
ID:518116 發(fā)表于 2019-4-21 23:36 | 只看該作者
感謝分享,拿來借鑒借鑒
回復(fù)

使用道具 舉報

地板
ID:146045 發(fā)表于 2024-9-2 20:05 | 只看該作者
感謝分享,資料不錯
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天操天天干天天爽 | 久久www免费人成看片高清 | 国产精品99久久久久久www | 中文av在线播放 | 国产一在线观看 | 在线播放精品视频 | 91玖玖 | 91av在线免费观看 | 瑟瑟免费视频 | 成人精品视频 | 91激情电影 | 久久99精品久久久久久国产越南 | 欧美片网站免费 | 欧美日韩一区二区三区四区 | 亚洲欧美国产精品一区二区 | 久久国产成人精品国产成人亚洲 | 日本一区二区三区免费观看 | 国产视频观看 | 日本在线一区二区 | 99这里只有精品视频 | 午夜视频一区 | 成人夜晚看av | 一区二区三区在线 | 欧 | 免费在线观看一区二区三区 | 欧美成年视频 | 日本欧美国产在线观看 | 国产91久久久久久 | 天天操天天干天天曰 | 青青操av | 久久精品a级毛片 | 在线一区视频 | 在线观看av网站 | 欧美精品在线免费观看 | 激情自拍偷拍 | 中文字幕视频免费 | 成人羞羞国产免费视频 | 欧美日韩国产精品一区 | 日韩在线精品视频 | www.亚洲成人网 | 一区二区福利视频 | 免费黄色成人 |