找回密码
 立即注册

QQ登录

只需一步,快速开始

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

8x8x8光立方原理图与单片机程序

[复制链接]
跳转到指定楼层
楼主
仿真原理图程序8x8x8


单片机源程序如下:
  1. /**
  2.   *******************************************************************************
  3.   * @file            apps.c
  4.   * @author          Whao
  5.   * @version         1.0.0
  6.   * @date                 2014/06/25   
  7.   * @brief           Appliction function
  8.   *******************************************************************************
  9.   * @attention
  10.   *        @addtogroup               
  11.   * @COPYRIGHT         Whao-Technology
  12.   *******************************************************************************
  13.   */

  14. /* Includes -------------------------------------------------------------------*/
  15. #include "apps.h"
  16. #include "stc12func.h"
  17. #include "display.h"

  18. /* Global variables ------------------------------------------------------------*/
  19. //8*8*8bits
  20. //8layer*8row*8leds
  21. idata uint8_t cubeBuf[8][8];
  22. idata bool_t cubeUpdateFlag;
  23. idata uint8_t cubeGraphical;
  24. idata uint8_t cubeStage;
  25. /* Private typedef -------------------------------------------------------------*/
  26. /* Private define --------------------------------------------------------------*/
  27. #define ROW_1 0x00
  28. #define ROW_2 0x04
  29. #define ROW_3 0x02
  30. #define ROW_4 0x06
  31. #define ROW_5 0x01
  32. #define ROW_6 0x05
  33. #define ROW_7 0x03
  34. #define ROW_8 0x07
  35. /* Private macro ---------------------------------------------------------------*/
  36. /* Private variables -----------------------------------------------------------*/
  37. idata uint8_t cubeLayer;
  38. idata bool_t cubeEnableFlag;
  39. /* Private const ---------------------------------------------------------------*/
  40. /* Private function prototypes -------------------------------------------------*/
  41. /* Private functions -----------------------------------------------------------*/

  42. /********************************************************************************/
  43. /*                       Ordinary function                                                                       */
  44. /********************************************************************************/
  45. /**
  46.   * @brief  Init stc mcu
  47.   * @param  None
  48.   * @retval None
  49.   *        @author        Whao
  50.   *        @data        2014/03/05
  51.   */
  52. void InitSTCMcu(void)
  53. {
  54.                                    //Init Timer0,Timer1
  55.         AUXR &= 0x7F;        //12T
  56.         TH0 = 0xDC;                //10ms
  57.         TL0 = 0x00;

  58.         TCON = 0x00;        //TFx=0,TRx=0
  59.         TMOD = 0x21;        //Timer0,16bits Timer Mode
  60.                                         //Timer1,8bits reload Timer Mode
  61.         ET0 = 1;                //Enable timer0
  62.                                 //Init Uart
  63.         TH1 = 0xFF;                //9600
  64.         TL1 = 0xFF;                //
  65.         SCON = 0x50;         //8bits Uart
  66.         PCON |= 0x80;        //Clear SMOD.Enable SMOD
  67.         ES = 1;                        //Enable serial

  68.         WDTEnable(WDT_TIME_1137MS);

  69.         LED_RUN = 0;        //Light run-led
  70.         runLedFlag = TRUE;
  71. }               
  72. /**
  73.   * @brief  Init coefficient
  74.   * @param  None
  75.   * @retval None
  76.   *        @author        Whao
  77.   *        @data        2014/03/05
  78.   */
  79. void InitCoeff(void)
  80. {
  81.         cubeEnableFlag = TRUE;        //Open the display
  82.         cubeUpdateFlag = FALSE;
  83.         cubeLayer = 0;
  84.         cubeGraphical = GRAPH_01;
  85.         cubeStage = 0;
  86. }
  87. /**
  88.   * @brief  Init devices
  89.   * @param  None
  90.   * @retval None
  91.   *        @author        Whao
  92.   *        @data        2014/03/05
  93.   */
  94. void InitDevice(void)
  95. {
  96.         CUBE_574_OE = 0;                //Open the display
  97.         CUBE_DATA_BUS = 0x00;
  98.         //CUBE_ROW_BUS = 0xFF;        //All Off
  99. }
  100. /**
  101.   * @brief  Turn on Cube
  102.   * @param  None
  103.   * @retval None
  104.   *        @author        Whao
  105.   *        @data        2014/06/25
  106.   */
  107. void TurnOnCube()
  108. {
  109.         if(cubeEnableFlag == FALSE)
  110.         {
  111.                 cubeEnableFlag = TRUE;
  112.                 CUBE_574_OE=0;
  113.         }
  114. }
  115. /**
  116.   * @brief  Turn off Cube
  117.   * @param  None
  118.   * @retval None
  119.   *        @author        Whao
  120.   *        @data        2014/06/25
  121.   */
  122. void TurnOffCube()
  123. {
  124.         if(cubeEnableFlag == TRUE)
  125.         {
  126.                 cubeEnableFlag = FALSE;
  127.                 CUBE_574_OE=1;
  128.         }
  129. }
  130. /**
  131.   * @brief  Reloard new graphical
  132.   * @param  None
  133.   * @retval None
  134.   *        @author        Whao
  135.   *        @data        2014/06/29
  136.   */
  137. void CubeBufReload()
  138. {
  139.         if(cubeUpdateFlag == TRUE)
  140.         {
  141.                 cubeUpdateFlag = FALSE;
  142.         }
  143.         else
  144.         {
  145.                 return;
  146.         }        
  147.         /*Reload graphical or switch grahical*/
  148.         switch(cubeGraphical)
  149.         {
  150.                 case GRAPH_01:        
  151.                         if( TRUE == Display01())
  152.                         {
  153.                                 cubeGraphical = GRAPH_02;
  154.                                 cubeStage = 0xFF;        
  155.                         }
  156.                         break;
  157.                 case GRAPH_02:
  158.                         if( TRUE ==  Display02())
  159.                         {
  160.                                 cubeGraphical = GRAPH_03;
  161.                                 cubeStage = 0xFF;        
  162.                         }
  163.                         break;
  164.                 case GRAPH_03:
  165.                         if( TRUE ==  Display03())
  166.                         {
  167.                                 cubeGraphical = GRAPH_04;
  168.                                 cubeStage = 0xFF;        
  169.                         }
  170.                         break;
  171.                 case GRAPH_04:
  172.                         if( TRUE ==  Display04())
  173.                         {
  174.                                 cubeGraphical = GRAPH_01;
  175.                                 cubeStage = 0xFF;        
  176.                         }
  177.                         break;
  178.                 case GRAPH_05:
  179.                         if( TRUE ==  Display05())
  180.                         {
  181.                                 cubeGraphical = GRAPH_06;
  182.                                 cubeStage = 0xFF;        
  183.                         }
  184.                         break;
  185.                 case GRAPH_06:
  186.                         if( TRUE ==  Display06())
  187.                         {
  188.                                 cubeGraphical = GRAPH_07;
  189.                                 cubeStage = 0xFF;        
  190.                         }
  191.                         break;
  192.                 case GRAPH_07:
  193.                         if( TRUE ==  Display07())
  194.                         {
  195.                                 cubeGraphical = GRAPH_01;
  196.                                 cubeStage = 0xFF;        
  197.                         }
  198.                         break;
  199.                 default:
  200.                         cubeGraphical = GRAPH_01;
  201.                         cubeStage = 0xFF;        
  202.                         break;
  203.         }
  204.         cubeStage++;
  205. }
  206. /**
  207.   * @brief  Light Cube Loop.
  208.   * @param  None
  209.   * @retval None
  210.   *        @author        Whao
  211.   *        @data        2014/06/25
  212.   */
  213. void CubeLoop(void)
  214. {
  215.         /*Layer data load*/

  216.         CUBE_ROW_1 = 0;
  217.         CUBE_DATA_BUS = cubeBuf[cubeLayer][0];
  218.         CUBE_ROW_1 = 1;
  219.         
  220.         CUBE_ROW_2 = 0;
  221.         CUBE_DATA_BUS = cubeBuf[cubeLayer][1];
  222.         CUBE_ROW_2 = 1;

  223.         CUBE_ROW_3 = 0;
  224.         CUBE_DATA_BUS = cubeBuf[cubeLayer][2];
  225.         CUBE_ROW_3 = 1;

  226.         CUBE_ROW_4 = 0;
  227.         CUBE_DATA_BUS = cubeBuf[cubeLayer][3];
  228.         CUBE_ROW_4 = 1;

  229.         CUBE_ROW_5 = 0;
  230.         CUBE_DATA_BUS = cubeBuf[cubeLayer][4];
  231.         CUBE_ROW_5 = 1;

  232.         CUBE_ROW_6 = 0;
  233.         CUBE_DATA_BUS = cubeBuf[cubeLayer][5];
  234.         CUBE_ROW_6 = 1;

  235.         CUBE_ROW_7 = 0;
  236.         CUBE_DATA_BUS = cubeBuf[cubeLayer][6];
  237.         CUBE_ROW_7 = 1;

  238.         CUBE_ROW_8 = 0;
  239.         CUBE_DATA_BUS = cubeBuf[cubeLayer][7];
  240.         CUBE_ROW_8 = 1;

  241.         CUBE_LAYER_BUS = ~(0x01<<cubeLayer);
  242.         /*Layer select*/
  243.         cubeLayer++;
  244.         if(cubeLayer == CUBE_LAYER_NUM )
  245.         {
  246.                 cubeLayer = 0;
  247.         }

  248.         Delay1ms(3);
  249. }
  250. /**
  251.   * @brief  This function initialize stc-mcu.
  252.   */
  253. void IdleProcess(void)
  254. {
  255.         PCON |= 0x01;
  256. }

  257. /****************** (C) COPYRIGHT 2014 Whao-Technology *****END OF FILE******************/
复制代码

所有资料51hei提供下载:
光立方.zip (401.09 KB, 下载次数: 17)



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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