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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7669|回復: 8
打印 上一主題 下一主題
收起左側

444光立方制作 附圖,單片機程序等資料

  [復制鏈接]
跳轉到指定樓層
樓主
看著各位大神鼓搗光立方,閑著沒事也做了一個簡單的4乘4乘4的光立方,直接上圖。制作過程沒有拍照只有成品照片,請各位見諒。
程序編譯完成,主要有縱向一層一層的掃描,橫向一層一層掃描,線掃描,點掃描,全部閃爍及隨機亮等功能;

原理圖最簡單的就是這樣了





由于杜邦線用光了,臨時用線和接線端子制作的線連接。


51單片機最小系統


USB轉TTL模塊,網上買的用來給單片機刷程序及通訊;


  1. /****************************************Copyright Mr.Asia************************************/
  2. /****************************************Date 2019-05-01************************************/

  3. /*包含頭文件*/
  4. #include <STC12C5A60S2.h>                          //STC12C5A60S2頭文件
  5. #include <intrins.h>                                 //循環左移右移函數頭文件

  6. //#include <reg52.h>                  //使用89C51單片機使用該頭文件,注釋掉        STC12C5A60S2頭文件

  7. /*宏定義*/
  8. #define uint unsigned int
  9. #define uchar unsigned char


  10. /*數組定義*/
  11. uint code ceng[]={0x00,0x10,0x20,0x40,0x80,0xf0};                          //層數數組定義
  12. uint code num[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};           //LED IO口定義

  13. /*全局變量聲明*/
  14. uint i = 6000;                                                //延時函數參數

  15. /*函數聲明*/
  16. void Delay(uint z);                //ms延時函數

  17. void Init();                        //初始化函數
  18. void All();                                //光立方閃爍

  19. void Heng();                         //橫掃描
  20. void Lie_v();                          //V列掃描
  21. void Lie_h();                          //H列掃描

  22. void Shu();                            //豎線掃描
  23. void Heng_V();                        //橫V掃描
  24. void Heng_H();                    //橫H掃描

  25. void Dian();                        //點掃描

  26. void Suiji();                        //隨機豎線掃描
  27. void DianSuiji();                //隨機點掃描





  28. /*******************************************************************************
  29. * 名稱: void main()
  30. * 功能: 主函數
  31. * 形參: 無
  32. * 返回: 無
  33. * 說明: 主函數
  34. ******************************************************************************/
  35. void main()
  36. {
  37.         while(1)
  38.         {
  39.                 Init();
  40.                 All();
  41.                 Heng();                         //橫掃描
  42.                 Lie_v();                  //V列掃描
  43.                 Lie_h();                  //H列掃描

  44.                 Shu();                    //豎線掃描
  45.                 Heng_V();                //橫V掃描
  46.                 Heng_H();            //橫H掃描

  47.                 Dian();                    //點掃描

  48.                 Suiji();                //隨機豎線掃描
  49.                 DianSuiji();                //隨機點掃描
  50.         }
  51. }



  52. /*******************************************************************************
  53. * 名稱: void Delay()
  54. * 功能: 延時函數
  55. * 形參: uint x, y, z;
  56. * 返回: 無
  57. * 說明: 延時一定時間   單位為ms
  58. ******************************************************************************/
  59. void Delay(uint z)
  60. {
  61.         uint x;
  62.         uint y;
  63.         for(x = z; x > 0; x--)
  64.                 for(y = 120; y > 0 ; y--);
  65. }


  66. /*******************************************************************************
  67. * 名稱: void Init()
  68. * 功能: 初始化光立方
  69. * 形參: 無
  70. * 返回: 無
  71. * 說明: 所有LED燈熄滅
  72. ******************************************************************************/
  73. void Init()
  74. {
  75.         P1 = ceng[0];
  76.         P0 = 0xff;
  77.         P2 = 0xff;
  78. }


  79. /*******************************************************************************
  80. * 名稱: void All()
  81. * 功能: 光立方
  82. * 形參: 無
  83. * 返回: 無
  84. * 說明: 閃爍
  85. ******************************************************************************/
  86. void All()
  87. {
  88.         uchar k;
  89.         
  90.         P0 = 0x00;
  91.         P2 = 0x00;                                         //IO口置0

  92.         for(k=0;k<3;k++)
  93.         {
  94.         P1 = ceng[5];                                  //全亮
  95.         Delay(i-2000);
  96.         P1 = ceng[0];                                  //全滅
  97.         Delay(i-2000);        
  98.         }
  99. }


  100. /*******************************************************************************
  101. * 名稱: void Heng()
  102. * 功能: 層數上下掃描
  103. * 形參: uchar k
  104. * 返回: 無
  105. * 說明: 層數上下滾動掃描
  106. ******************************************************************************/
  107. void Heng()
  108. {
  109.         uchar k;
  110. /*層自下而上掃描*/
  111.         for(k=1;k<5;k++)
  112.         {
  113.                 P1 = ceng[k];
  114.                 P0 = 0x00;
  115.                 P2 = 0x00;
  116.                 Delay(i);
  117.         }
  118.                
  119. /*層自上而下掃描 */
  120.         for(k=3;k>0;k--)
  121.         {
  122.                 P1 = ceng[k];
  123.                 P0 = 0x00;
  124.                 P2 = 0x00;
  125.                 Delay(i);
  126.         }
  127.         Init();
  128. }


  129. /*******************************************************************************
  130. * 名稱: void lie_v()
  131. * 功能: 豎直v面掃描
  132. * 形參: 無
  133. * 返回: 無
  134. * 說明: 豎直面掃描
  135. ******************************************************************************/
  136. void Lie_v()
  137. {
  138.         uchar k;
  139.         
  140.         P0 = 0xee;
  141.         P2 = 0xee;                        //P0、P2賦初值0x77,右移后分別是 0x77 --> 0xbb --> 0xdd --> 0xee
  142.         for(k=1;k<5;k++)
  143.         {
  144.         P1 = ceng[5];
  145.         P0 = _cror_(P0,1);
  146.         P2 = _cror_(P2,1);                //循環右移函數
  147.         Delay(i);
  148.         }
  149. //        Init();
  150. }


  151. /*******************************************************************************
  152. * 名稱: void lie_h()
  153. * 功能: 豎直h面掃描
  154. * 形參: 無
  155. * 返回: 無
  156. * 說明: 豎直面掃描
  157. ******************************************************************************/
  158. void Lie_h()
  159. {
  160.         P1 = ceng[5];   //電源全部打開

  161.         P0 = 0xf0;
  162.         Delay(i);
  163.         P0 = 0x0f;
  164.         Delay(i);
  165.         P0 = 0xff;          //將P0口置高關閉P0口LED燈

  166.         P2 = 0xf0;
  167.         Delay(i);
  168.         P2 = 0x0f;
  169.         Delay(i);

  170.         Init();
  171. }


  172. /*******************************************************************************
  173. * 名稱: void Shu()
  174. * 功能: 豎線面掃描
  175. * 形參: 無
  176. * 返回: 無
  177. * 說明: 豎線掃描
  178. ******************************************************************************/
  179. void Shu()
  180. {
  181.         uchar k;
  182.         P1 = ceng[5];
  183.         P0 = 0xfe;
  184.         for(k=0;k<8;k++)
  185.         {
  186.                 P0 = _cror_(P0,1);                   //P0口循環右移1位
  187.                 Delay(i-1000);
  188.         }
  189.         P0 = 0xff;
  190.         P2 = 0xfe;
  191.         for(k=0;k<8;k++)
  192.         {
  193.                 P2 = _cror_(P2,1);                 //P2口循環右移1位
  194.                 Delay(i-1000);
  195.         }

  196.         Init();          //初始化函數
  197. }


  198. /*******************************************************************************
  199. * 名稱: void Heng_V()
  200. * 功能: 線V掃描
  201. * 形參: 無
  202. * 返回: 無
  203. * 說明: 線V掃描
  204. ******************************************************************************/
  205. void Heng_V()
  206. {
  207.         uchar k;
  208.         for(k=1;k<5;k++)
  209.         {
  210.                 P1 = ceng[k];

  211.                 P0 = 0xf0;
  212.                 Delay(i);
  213.                 P0 = 0x0f;
  214.                 Delay(i);
  215.                 P0 = 0xff;

  216.                 P2 = 0xf0;
  217.                 Delay(i);
  218.                 P2 = 0x0f;
  219.                 Delay(i);
  220.                 P2 = 0xff;

  221.         }
  222.         Init();        
  223. }


  224. /*******************************************************************************
  225. * 名稱: void Heng_H()
  226. * 功能: 線H掃描
  227. * 形參: 無
  228. * 返回: 無
  229. * 說明: 線H掃描
  230. ******************************************************************************/
  231. void Heng_H()
  232. {
  233.         uchar k,j;
  234.         for(k=1;k<5;k++)
  235.         {
  236.                 P1 = ceng[k];
  237.                 P0 = 0x77;
  238.                 P2 = 0x77;
  239.                 for(j=1;j<5;j++)
  240.                 {
  241.                  P0 = _cror_(P0,1);
  242.                  P2 = _cror_(P2,1);
  243.                  Delay(i);
  244.                 }
  245.                 P0 = 0xff;
  246.                 P2 = 0xff;
  247.         }
  248. }


  249. /*******************************************************************************
  250. * 名稱: void Suiji()
  251. * 功能:隨機掃描
  252. * 形參: 無
  253. * 返回: 無
  254. * 說明: 數組隨機掃描
  255. ******************************************************************************/
  256. void Suiji()
  257. {
  258.         int rand();
  259.         uint k;
  260.         uchar j;
  261.         P1 = ceng[5];

  262.         for(j=0;j<9;j++)
  263.         {
  264.         k = rand();
  265.         P0 = num[k%9];
  266.         Delay(i);
  267.         P0 = 0xff;
  268.         P2 = num[k%9];
  269.         Delay(i);
  270.         P2 = 0xff;
  271.         }

  272. }


  273. /*******************************************************************************
  274. * 名稱: void Dian()
  275. * 功能:點掃描
  276. * 形參: 無
  277. * 返回: 無
  278. * 說明: 點掃描
  279. ******************************************************************************/
  280. void Dian()
  281. {
  282.         uchar k,j;
  283.         for(k=1;k<5;k++)
  284.         {        
  285.                 P1 = ceng[k];

  286.                 P0 = 0x01;        
  287.                 for(j=1;j<9;j++)
  288.                 {        
  289.                         P0 = num[j];
  290.                         Delay(i);
  291.                 }
  292.                 P0 = 0xff;

  293.                 P2 = 0x01;
  294.                 for(j=1;j<9;j++)
  295.                 {
  296.                         P2 = num[j];
  297.                         Delay(i);
  298.                 }
  299.                 P2 = 0xff;
  300.         }
  301. }

  302. /*******************************************************************************
  303. * 名稱: void DianSuiji()
  304. * 功能:點隨機掃描
  305. * 形參: 無
  306. * 返回: 無
  307. * 說明: 點隨機掃描
  308. ******************************************************************************/
  309. void DianSuiji()
  310. {
  311.         int rand();
  312.         uint k;
  313.         uchar j;        
  314.          
  315.         for(j=1;j<20;j++)
  316.         {        
  317.                 k = rand();
  318.                 P1 = ceng[k%5];
  319.                 P0 = num[k%9];
  320.                 Delay(i);
  321.                 P0 = 0xff;
  322.                 P2 = num[k%9];
  323.                 Delay(i);
  324.                 P2 = 0xff;
  325.         }

  326. }


復制代碼

現在想做的是使用串口通訊來控制光立方,嘗試了很多次都沒有成功,望大神指點!使用串口調試助手接收數據,然后通過switch來使用不同數據不同狀態!


全部資料51hei下載地址:
444光立方.rar (627.8 KB, 下載次數: 76)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:352406 發表于 2020-5-28 23:03 | 只看該作者
借用你的原理圖。
回復

使用道具 舉報

板凳
ID:774575 發表于 2020-6-10 01:46 來自手機 | 只看該作者
樓主,你的單片機可以換成c51嗎?
回復

使用道具 舉報

地板
ID:423828 發表于 2021-11-29 10:07 | 只看該作者
1462180291 發表于 2020-6-10 01:46
樓主,你的單片機可以換成c51嗎?

程序中有
//#include <reg52.h>                  //使用89C51單片機使用該頭文件,注釋掉 STC12C5A60S2頭文件
回復

使用道具 舉報

5#
ID:976767 發表于 2021-12-5 19:56 | 只看該作者
請問如果用3v的發光二極管怎么做?另外我現在有的三極管型號為s8550,s9015,s9018,有沒有可以代替的?感謝回答
回復

使用道具 舉報

6#
ID:976767 發表于 2021-12-16 15:37 | 只看該作者
p0口不是低電平驅動嗎為什么上拉電阻不可省?求解
回復

使用道具 舉報

7#
ID:1009304 發表于 2022-3-17 20:00 來自手機 | 只看該作者
sxy4609 發表于 2021-12-16 15:37
p0口不是低電平驅動嗎為什么上拉電阻不可省?求解

我有過類似的問題我老師給的回復是,為了確保單片機輸出為低電平
回復

使用道具 舉報

8#
ID:983617 發表于 2022-5-4 16:16 | 只看該作者
用什么焊接二極管?我在網上買的鐵絲焊不上

回復

使用道具 舉報

9#
ID:983617 發表于 2022-5-4 16:17 | 只看該作者
用什么焊接二極管?我在網上買的鐵絲焊接不上
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 911精品美国片911久久久 | 日韩aⅴ视频 | 在线免费毛片 | 精品视频一区二区三区四区 | 国产在线高清 | a视频在线观看 | 人人澡人人爱 | 影音先锋欧美资源 | 精品欧美一区二区三区久久久 | 狠狠的干狠狠的操 | 国产精品一区二区久久 | 午夜电影在线播放 | 九九综合九九 | 国家一级黄色片 | 精品99在线 | 亚洲精品视频在线播放 | 国产精品区一区二区三区 | 欧美精品在线看 | 欧美成人第一页 | 成年人黄色免费视频 | 91久久久久久久久久久久久 | 99视频入口 | 国产成人精品一区二区三区四区 | 亚洲在线成人 | 羞羞视频在线观看网站 | 亚洲精品一区中文字幕乱码 | 亚洲免费婷婷 | 日韩字幕一区 | 一区二区中文 | 中文字幕二区 | 香蕉久久a毛片 | 成人在线免费网站 | 国产精品免费观看视频 | 91av在线视频观看 | 日日夜夜草 | 一区二区视频在线 | 二区在线视频 | 蜜桃av鲁一鲁一鲁一鲁 | 影音先锋欧美资源 | 日韩欧美在线观看视频网站 | 欧美中文字幕一区二区三区 |