wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4216|回復: 0
收起左側

msp430 LED表情矩陣 原理圖源程序等資料

[復制鏈接]
ID:164217 發表于 2017-3-30 20:57 | 顯示全部樓層 |閱讀模式
原理圖、PCB_PDF檔
0.png
0.png

部分源程序預覽:
  1. #include <msp430.h>
  2. #include <stdint.h>
  3. #include "Application\delay.h"
  4. #include "Application\Display.h"
  5. #include "Application\DS3231.h"
  6. #include "Application\VS10XX.h"

  7. #define BUTTON_PORT_DIR     P2DIR
  8. #define BUTTON_PORT_IES     P2IES
  9. #define BUTTON_PORT_IFG     P2IFG
  10. #define BUTTON_PORT_IE      P2IE

  11. #define BUTTON_FUNC     BIT2
  12. #define BUTTON_SET      BIT3
  13. #define BUTTON_UP       BIT1
  14. #define BUTTON_DOWN     BIT0

  15. #define DISP_REFRESH_GAP    60000
  16. #define PARA_REFRESH_GAP    60000

  17. /* Function indication variable
  18. *      1: Emoji Display
  19. *      2: Time Display
  20. *      3: Temp Display
  21. */
  22. uint8_t FUNC_SWITCH = 1;
  23. #define FUNC_MAX    5

  24. //Define display order
  25. #define DISP_ORDER_EMOJI        2//Display Emoji
  26. #define DISP_ORDER_TIME_TEMP    3//Display time and temperature in turn
  27. #define DISP_ORDER_TIME         4//Display time
  28. #define DISP_ORDER_TEMP         5//Display temperature
  29. #define DISP_ORDER_CHS          1//Display Chinese character, rolling from right to left
  30. #define DISP_ORDER_SPEC         6//Display spectrum//In development

  31. uint8_t GLOBE_STATIC_RESET = 0;//Used to reset all static variables when function is switched and needed, especially counter variables
  32.                                //DISP_CHS clears this in display sub-function in display.c
  33.                                //Others clear this in TIMER_A0 interrupt

  34. uint8_t DISP_EMOJI_NOW = 0;
  35. uint8_t DISP_EMOJI_NEXT = 0;
  36. #define DISP_EMOJI_MAX  21//Define maximum emoji #//XXX

  37. uint8_t DISP_EMOJI_TRANS_DIR = 1;
  38. #define DISP_EMOJI_TRANS_DIR_MAX    4

  39. extern uint8_t Time_Str[2][5];
  40. extern uint8_t Time_SetStr[6][4];
  41. uint8_t Time_Set = 0;
  42. uint8_t Time_Set_Idx = 0;

  43. extern int8_t Temp_Read;
  44. extern uint8_t Temp_Str[4];

  45. uint8_t Time_Temp_Idx = 0;//Index for time/temperature, 0 for time and 1 for temperature
  46. uint16_t Time_Temp_Cnt = 0;//Counter for time/temperature display
  47. #define Time_Temp_Cnt_Max   100//Set switch speed//100 equals about 6 seconds//XXX

  48. uint8_t DISP_CHS_IDX = 1;
  49. #define DISP_CHS_IDX_MAX   1//Define maximum strings in CHS STR//XXX

  50. /*
  51. * main.c
  52. */

  53. void Set_Clock(void)
  54. {
  55.     volatile unsigned int i;

  56.     BCSCTL1 |= XTS;                           // ACLK= LFXT1 = HF XTAL

  57.     do
  58.     {
  59.         IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  60.         for (i = 0xFF; i > 0; i--);               // Time for flag to set
  61.     }
  62.     while ((IFG1 & OFIFG));                   // OSCFault flag still set?

  63.     BCSCTL2 |= SELM_3;                        // MCLK= LFXT1 (safe)
  64. }

  65. void Set_TIMER_B(void)//TIMER_B has higher priority
  66. {
  67.     WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  68.     TBCTL = TBCLR;

  69.     TBCCTL0 = CCIE;                             // CCR1 interrupt enabled
  70.     TBCCR0 = DISP_REFRESH_GAP;
  71.     TBCTL = TBSSEL_1 + MC_1;                  // ACLK, upmode

  72.     TBCTL |= TBIE;
  73. }

  74. void Set_TIMER_A(void)
  75. {
  76.     WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  77.     TACTL = TACLR;

  78.     TACCTL0 = CCIE;                             // CCR1 interrupt enabled
  79.     TACCR0 = PARA_REFRESH_GAP;
  80.     TACTL = TASSEL_1 + MC_1 + ID_3;                  // ACLK, upmode, devide 8

  81.     TACTL |= TAIE;
  82. }

  83. void Set_Button_Int(void)
  84. {
  85.     WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  86.     BUTTON_PORT_DIR &= ~(BUTTON_FUNC + BUTTON_SET + BUTTON_UP + BUTTON_DOWN);
  87.     BUTTON_PORT_IES |= (BUTTON_FUNC + BUTTON_SET + BUTTON_UP + BUTTON_DOWN);
  88.     BUTTON_PORT_IFG &= ~(BUTTON_FUNC + BUTTON_SET + BUTTON_UP + BUTTON_DOWN);
  89.     BUTTON_PORT_IE |= (BUTTON_FUNC + BUTTON_SET + BUTTON_UP + BUTTON_DOWN);
  90. }

  91. void main(void) {

  92. //    uint16_t temp=0;

  93.     WDTCTL = WDTPW + WDTHOLD;        // Stop watchdog timer

  94.     P5DIR |= BIT5;//XXX

  95.     Set_Clock();
  96.     Set_TIMER_B();
  97.     Set_TIMER_A();
  98.     Set_Button_Int();

  99.     Disp_Port_Init();
  100.     I2C_Port_Init();

  101.     _BIS_SR(GIE);

  102.     while(1)
  103.     {
  104.     }
  105. }

  106. // Timer B0 interrupt service routine
  107. // Used as display timer
  108. #pragma vector=TIMERB0_VECTOR
  109. __interrupt void Timer_B (void)
  110. {
  111.     TBCTL &= ~TBIFG;
  112.     TBCCTL0 &= ~CCIFG;
  113.     P5OUT |= BIT5;//XXX
  114.     switch(FUNC_SWITCH)
  115.     {
  116.         case DISP_ORDER_EMOJI://Display Emoji
  117.             Disp_Emoji(DISP_EMOJI_NOW);
  118.             break;
  119.         case DISP_ORDER_TIME://Display and adjust Time
  120.             if(Time_Set == 0)
  121.             {
  122.                 Disp_Char_8(1, 1, Time_Str[0][0]);
  123.                 Disp_Char_8(1, 2, Time_Str[0][1]);
  124.                 Disp_Icon_8(1, 3, 0);
  125.                 Disp_Char_8(1, 4, Time_Str[0][3]);
  126.                 Disp_Char_8(1, 5, Time_Str[0][4]);
  127.                 Disp_Char_8(2, 1, Time_Str[1][0]);
  128.                 Disp_Char_8(2, 2, Time_Str[1][1]);
  129.                 Disp_Char_8(2, 3, Time_Str[1][2]);
  130.                 Disp_Char_8(2, 4, Time_Str[1][3]);
  131.                 Disp_Char_8(2, 5, Time_Str[1][4]);
  132.             }
  133.             else
  134.             {
  135.                 switch(Time_Set_Idx)
  136.                 {
  137.                     case 0:
  138.                         Disp_Char_8(1, 1, 'S');
  139.                         Disp_Char_8(1, 2, 'E');
  140.                         Disp_Char_8(1, 3, 'T');
  141.                         Disp_Char_8(2, 2, 'T');
  142.                         Disp_Char_8(2, 3, 'I');
  143.                         Disp_Char_8(2, 4, 'M');
  144.                         Disp_Char_8(2, 5, 'E');
  145.                         break;
  146.                     case 1:
  147.                         Disp_Char_8(1, 1, 'Y');
  148.                         Disp_Char_8(1, 2, 'E');
  149.                         Disp_Char_8(1, 3, 'A');
  150.                         Disp_Char_8(1, 4, 'R');
  151.                         Disp_Char_8(2, 2, Time_SetStr[0][0]);
  152.                         Disp_Char_8(2, 3, Time_SetStr[0][1]);
  153.                         Disp_Char_8(2, 4, Time_SetStr[0][2]);
  154.                         Disp_Char_8(2, 5, Time_SetStr[0][3]);
  155.                         break;
  156.                     case 2:
  157.                         Disp_Char_8(1, 1, 'M');
  158.                         Disp_Char_8(1, 2, 'O');
  159.                         Disp_Char_8(1, 3, 'N');
  160.                         Disp_Char_8(1, 4, 'T');
  161.                         Disp_Char_8(1, 5, 'H');
  162.                         Disp_Char_8(2, 4, Time_SetStr[1][2]);
  163.                         Disp_Char_8(2, 5, Time_SetStr[1][3]);
  164.                         break;
  165.                     case 3:
  166.                         Disp_Char_8(1, 1, 'D');
  167.                         Disp_Char_8(1, 2, 'A');
  168.                         Disp_Char_8(1, 3, 'Y');
  169.                         Disp_Char_8(2, 4, Time_SetStr[2][2]);
  170.                         Disp_Char_8(2, 5, Time_SetStr[2][3]);
  171.                         break;
  172.                     case 4:
  173.                         Disp_Char_8(1, 1, 'H');
  174.                         Disp_Char_8(1, 2, 'O');
  175.                         Disp_Char_8(1, 3, 'U');
  176.                         Disp_Char_8(1, 4, 'R');
  177.                         Disp_Char_8(2, 4, Time_SetStr[3][2]);
  178.                         Disp_Char_8(2, 5, Time_SetStr[3][3]);
  179.                         break;
  180.                     case 5:
  181.                         Disp_Char_8(1, 1, 'M');
  182.                         Disp_Char_8(1, 2, 'I');
  183.                         Disp_Char_8(1, 3, 'N');
  184.                         Disp_Char_8(2, 4, Time_SetStr[4][2]);
  185.                         Disp_Char_8(2, 5, Time_SetStr[4][3]);
  186.                         break;
  187.                     case 6:
  188.                         Disp_Char_8(1, 1, 'S');
  189.                         Disp_Char_8(1, 2, 'E');
  190.                         Disp_Char_8(1, 3, 'C');
  191.                         Disp_Char_8(2, 4, Time_SetStr[5][2]);
  192.                         Disp_Char_8(2, 5, Time_SetStr[5][3]);
  193.                         break;
  194.                     default:
  195.                         break;
  196.                 }
  197.             }
  198.             break;
  199.         case DISP_ORDER_TEMP://Display Temperature
  200.             Disp_Char_16(1, Temp_Str[0]);
  201.             Disp_Char_16(2, Temp_Str[1]);
  202.             Disp_Char_16(3, Temp_Str[2]);
  203.             Disp_Icon_16(4, 0);
  204.             break;
  205.         case DISP_ORDER_TIME_TEMP://Display time and temperature in turn
  206.             if(Time_Temp_Idx == 0)
  207.             {
  208.                 Disp_Char_8(1, 1, Time_Str[0][0]);
  209.                 Disp_Char_8(1, 2, Time_Str[0][1]);
  210.                 Disp_Icon_8(1, 3, 0);
  211.                 Disp_Char_8(1, 4, Time_Str[0][3]);
  212.                 Disp_Char_8(1, 5, Time_Str[0][4]);
  213.                 Disp_Char_8(2, 1, Time_Str[1][0]);
  214.                 Disp_Char_8(2, 2, Time_Str[1][1]);
  215.                 Disp_Char_8(2, 3, Time_Str[1][2]);
  216.                 Disp_Char_8(2, 4, Time_Str[1][3]);
  217.                 Disp_Char_8(2, 5, Time_Str[1][4]);
  218.             }
  219.             else
  220.             {
  221.                 Disp_Char_16(1, Temp_Str[0]);
  222.                 Disp_Char_16(2, Temp_Str[1]);
  223.                 Disp_Char_16(3, Temp_Str[2]);
  224.                 Disp_Icon_16(4, 0);
  225.             }
  226.             break;
  227.         case DISP_ORDER_CHS://Display Chinese Character and string
  228.             Disp_Char_Chs_16(DISP_CHS_IDX);
  229.             break;
  230.         case DISP_ORDER_SPEC://Display Spectrum
  231.             //Refresh spectrum display here
  232.             break;
  233.         default:
  234.             break;
  235.     }
  236.     P5OUT &= ~BIT5;//XXX
  237. }

  238. // Timer A0 interrupt service routine
  239. // Used as other task timer, e.g. read DS3231
  240. #pragma vector=TIMERA0_VECTOR
  241. __interrupt void Timer_A (void)
  242. {
  243.     TACTL &= ~TAIFG;
  244.     TACCTL0 &= ~CCIFG;

  245.     P5OUT |= BIT5;//XXX
  246.     switch(FUNC_SWITCH)
  247.     {
  248.         case DISP_ORDER_EMOJI://Display Emoji
  249.             if(GLOBE_STATIC_RESET == 1)
  250.                 GLOBE_STATIC_RESET = 0;
  251.             break;
  252.         case DISP_ORDER_TIME://Display and adjust Time
  253.             if(GLOBE_STATIC_RESET == 1)
  254.                 GLOBE_STATIC_RESET = 0;
  255.             if(Time_Set == 0)
  256.                 DS3231_Read_Time_to_Str();
  257.             else
  258.                 DS3231_Time_to_Str();
  259.             break;
  260.         case DISP_ORDER_TEMP://Display Temperature
  261.             if(GLOBE_STATIC_RESET == 1)
  262.                 GLOBE_STATIC_RESET = 0;
  263.             Temp_Read = DS3231_Read_Temp();
  264.             DS3231_Temp_to_Str(Temp_Read);
  265.             break;
  266.         case DISP_ORDER_TIME_TEMP://Display time and temperature in turn
  267.             if(GLOBE_STATIC_RESET == 1)
  268.             {
  269.                 GLOBE_STATIC_RESET = 0;
  270.                 Time_Temp_Idx = 0;
  271.             }
  272.             if(Time_Temp_Idx == 0)
  273.             {
  274.                 DS3231_Read_Time_to_Str();
  275.                 Time_Temp_Cnt++;
  276.             }
  277.             else
  278.             {
  279.                 Temp_Read = DS3231_Read_Temp();
  280.                 DS3231_Temp_to_Str(Temp_Read);
  281.                 Time_Temp_Cnt++;
  282.             }
  283.             if(Time_Temp_Cnt > Time_Temp_Cnt_Max)
  284.             {
  285.                 Time_Temp_Cnt = 0;
  286.                 Time_Temp_Idx = 1 - Time_Temp_Idx;
  287.             }
  288.             break;
  289.         case DISP_ORDER_CHS://Display Chinese Character
  290.             break;
  291.         case DISP_ORDER_SPEC://Display Spectrum
  292.             if(GLOBE_STATIC_RESET == 1)
  293.                 GLOBE_STATIC_RESET = 0;
  294.             //Read VS10XX data here
  295.             break;
  296.         default:
  297.             break;
  298.     }
  299.     P5OUT &= ~BIT5;//XXX
  300. }

  301. // Port 2 interrupt service routine
  302. #pragma vector=PORT2_VECTOR
  303. __interrupt void Port_2(void)
  304. {
  305.     if(BUTTON_PORT_IFG & BUTTON_DOWN)
  306.     {
  307.         switch(FUNC_SWITCH)
  308.         {
  309.             case DISP_ORDER_EMOJI://Display Emoji
  310.                 DISP_EMOJI_NEXT = DISP_EMOJI_NOW + 1;
  311.                 if(DISP_EMOJI_NEXT > DISP_EMOJI_MAX)
  312.                     DISP_EMOJI_NEXT = 0;
  313.                 Disp_Emoji_Trans(DISP_EMOJI_NOW, DISP_EMOJI_NEXT, DISP_EMOJI_TRANS_DIR);
  314.                 DISP_EMOJI_NOW = DISP_EMOJI_NEXT;
  315.                 break;
  316.             case DISP_ORDER_TIME://Display and adjust Time
  317.                 if(Time_Set == 1)
  318.                 {
  319.                     switch(Time_Set_Idx)
  320.                     {
  321.                         case 1:
  322.                             Time_SetVal.time_year--;
  323.                             if(Time_SetVal.time_year < 2010)
  324.                                 Time_SetVal.time_year = 2099;
  325.                             break;
  326.                         case 2:
  327.                             Time_SetVal.time_mon--;
  328.                             if(Time_SetVal.time_mon < 1)
  329.                                 Time_SetVal.time_mon = 12;
  330.                             break;
  331.                         case 3:
  332.                             Time_SetVal.time_day--;
  333.                             if((Time_SetVal.time_mon == 1) || (Time_SetVal.time_mon == 3) || (Time_SetVal.time_mon == 5) || (Time_SetVal.time_mon == 7) || \
  334.                                     (Time_SetVal.time_mon == 8) || (Time_SetVal.time_mon == 10) || (Time_SetVal.time_mon == 12))
  335.                             {
  336.                                 if(Time_SetVal.time_day < 1)
  337.                                     Time_SetVal.time_day = 31;
  338.                             }
  339.                             else if((Time_SetVal.time_mon == 4) || (Time_SetVal.time_mon == 6) || (Time_SetVal.time_mon == 9) || (Time_SetVal.time_mon == 11))
  340.                             {
  341.                                 if(Time_SetVal.time_day < 1)
  342.                                     Time_SetVal.time_day = 30;
  343.                             }
  344.                             else if(DS3231_Check_Leapyear(Time_SetVal.time_year))
  345.                             {
  346.                                 if(Time_SetVal.time_day < 1)
  347.                                     Time_SetVal.time_day = 29;
  348.                             }
  349.                             else
  350.                             {
  351.                                 if(Time_SetVal.time_day < 1)
  352.                                     Time_SetVal.time_day = 28;
  353.                             }
  354.                             break;
  355.                         case 4:
  356.                             Time_SetVal.time_hour--;
  357.                             if(Time_SetVal.time_hour >= 0xfe)
  358.                                 Time_SetVal.time_hour = 23;
  359.                             break;
  360.                         case 5:
  361.                             Time_SetVal.time_min--;
  362.                             if(Time_SetVal.time_min >= 0xfe)
  363.                                 Time_SetVal.time_min = 59;
  364.                             break;
  365.                         case 6:
  366.                             Time_SetVal.time_sec--;
  367.                             if(Time_SetVal.time_sec >= 0xfe)
  368.                                 Time_SetVal.time_sec = 59;
  369.                             break;
  370.                         default:
  371.                             break;
  372.                     }
  373.                 }
  374.                 break;
  375.             case DISP_ORDER_TEMP://Display Temperature
  376.                 break;
  377.             case DISP_ORDER_TIME_TEMP://Display time and temperature in turn
  378.                 break;
  379.             case DISP_ORDER_CHS://Display Chinese Character
  380.                 DISP_CHS_IDX--;
  381.                 if(DISP_CHS_IDX < 1)
  382.                     DISP_CHS_IDX = DISP_CHS_IDX_MAX;
  383.                 break;
  384.             case DISP_ORDER_SPEC://Display Spectrum
  385.                 break;
  386.             default:
  387.                 break;
  388.         }
  389.     }
  390.     if(BUTTON_PORT_IFG & BUTTON_UP)
  391.     {
  392.         switch(FUNC_SWITCH)
  393.         {
  394.             case DISP_ORDER_EMOJI://Display Emoji
  395.                 DISP_EMOJI_NEXT = DISP_EMOJI_NOW - 1;
  396.                 if(DISP_EMOJI_NEXT == 0xff)
  397.                     DISP_EMOJI_NEXT = DISP_EMOJI_MAX;
  398.                 Disp_Emoji_Trans(DISP_EMOJI_NOW, DISP_EMOJI_NEXT, DISP_EMOJI_TRANS_DIR);
  399.                 DISP_EMOJI_NOW = DISP_EMOJI_NEXT;
  400.                 break;
  401.             case DISP_ORDER_TIME://Display and adjust Time
  402.                 if(Time_Set == 1)
  403.                 {
  404.                     switch(Time_Set_Idx)
  405.                     {
  406.                         case 1:
  407.                             Time_SetVal.time_year++;
  408.                             if(Time_SetVal.time_year > 2099)
  409.                                 Time_SetVal.time_year = 2010;
  410.                             break;
  411.                         case 2:
  412.                             Time_SetVal.time_mon++;
  413.                             if(Time_SetVal.time_mon > 12)
  414.                                 Time_SetVal.time_mon = 1;
  415.                             break;
  416.                         case 3:
  417.                             Time_SetVal.time_day++;
  418.                             if((Time_SetVal.time_mon == 1) || (Time_SetVal.time_mon == 3) || (Time_SetVal.time_mon == 5) || (Time_SetVal.time_mon == 7) || \
  419.                                     (Time_SetVal.time_mon == 8) || (Time_SetVal.time_mon == 10) || (Time_SetVal.time_mon == 12))
  420.                             {
  421.                                 if(Time_SetVal.time_day > 31)
  422.                                     Time_SetVal.time_day = 1;
  423.                             }
  424.                             else if((Time_SetVal.time_mon == 4) || (Time_SetVal.time_mon == 6) || (Time_SetVal.time_mon == 9) || (Time_SetVal.time_mon == 11))
  425.                             {
  426.                                 if(Time_SetVal.time_day > 30)
  427.                                     Time_SetVal.time_day = 1;
  428.                             }
  429.                             else if(DS3231_Check_Leapyear(Time_SetVal.time_year))
  430.                             {
  431.                                 if(Time_SetVal.time_day > 29)
  432.                                     Time_SetVal.time_day = 1;
  433.                             }
  434.                             else
  435.                             {
  436.                                 if(Time_SetVal.time_day > 28)
  437.                                     Time_SetVal.time_day = 1;
  438.                             }
  439.                             break;
  440.                         case 4:
  441.                             Time_SetVal.time_hour++;
  442.                             if(Time_SetVal.time_hour > 23)
  443.                                 Time_SetVal.time_hour = 0;
  444.                             break;
  445.                         case 5:
  446.                             Time_SetVal.time_min++;
  447.                             if(Time_SetVal.time_min > 59)
  448.                                 Time_SetVal.time_min = 0;
  449.                             break;
  450.                         case 6:
  451.                             Time_SetVal.time_sec++;
  452.                             if(Time_SetVal.time_sec > 59)
  453.                                 Time_SetVal.time_sec = 0;
  454.                             break;
  455.                         default:
  456.                             break;
  457.                     }
  458.                 }
  459.                 break;
  460.             case DISP_ORDER_TEMP://Display Temperature
  461.                 break;
  462.             case DISP_ORDER_TIME_TEMP://Display time and temperature in turn
  463.                 break;
  464.             case DISP_ORDER_CHS://Display Chinese Character
  465.                 DISP_CHS_IDX++;
  466.                 if(DISP_CHS_IDX > DISP_CHS_IDX_MAX)
  467.                     DISP_CHS_IDX = 1;
  468.                 break;
  469.             case DISP_ORDER_SPEC://Display Spectrum
  470.                 break;
  471.             default:
  472.                 break;
  473.         }
  474.     }
  475.     if(BUTTON_PORT_IFG & BUTTON_FUNC)
  476.     {
  477.         FUNC_SWITCH++;
  478.         GLOBE_STATIC_RESET = 1;
  479.         if(FUNC_SWITCH > FUNC_MAX)
  480.             FUNC_SWITCH = 1;
  481.         {
  482.             Time_Set = 0;
  483.             Time_Set_Idx = 0;//Press FUNC while adjusting time will discard time adjustment
  484.         }
  485.     }
  486.     if(BUTTON_PORT_IFG & BUTTON_SET)
  487.     {
  488.         switch(FUNC_SWITCH)
  489.         {
  490.             case DISP_ORDER_EMOJI://Display Emoji
  491.                 DISP_EMOJI_TRANS_DIR++;
  492.                 if(DISP_EMOJI_TRANS_DIR > DISP_EMOJI_TRANS_DIR_MAX)
  493.                     DISP_EMOJI_TRANS_DIR = 1;
  494.                 break;
  495.             case DISP_ORDER_TIME://Display and adjust Time
  496.                 if(Time_Set == 0)
  497.                 {
  498.                     Time_Set = 1;
  499.                     Time_SetVal.time_day = Time_Read.time_day;
  500.                     Time_SetVal.time_hour = Time_Read.time_hour;
  501.                     Time_SetVal.time_hour_am_pm = Time_Read.time_hour_am_pm;
  502.                     Time_SetVal.time_hour_format = Time_Read.time_hour_format;
  503.                     Time_SetVal.time_min = Time_Read.time_min;
  504.                     Time_SetVal.time_mon = Time_Read.time_mon;
  505.                     Time_SetVal.time_sec = Time_Read.time_sec;
  506.                     Time_SetVal.time_year = Time_Read.time_year;
  507.                 }
  508.                 else
  509.                 {
  510.                     Time_Set_Idx++;
  511.                     if(Time_Set_Idx > 6)
  512.                     {
  513.                         Time_Set = 0;
  514.                         Time_Set_Idx = 0;
  515.                         DS3231_Write_Time();//Save time adjustment here
  516.                         DS3231_Read_Time_to_Str();//Refresh Time_Read variable
  517.                     }
  518.                 }
  519.                 break;
  520.             case DISP_ORDER_TEMP://Display Temperature
  521.                 break;
  522.             case DISP_ORDER_TIME_TEMP://Display time and temperature in turn
  523.                 break;
  524.             case DISP_ORDER_CHS://Display Chinese Character
  525.                 break;
  526.             case DISP_ORDER_SPEC://Display Spectrum
  527.                 break;
  528.             default:
  529.                 break;
  530.         }
  531.     }
  532.     BUTTON_PORT_IFG = 0x00;
  533. }

復制代碼

程序和原理圖下載:
原理圖、PCB_PDF檔.zip (756.49 KB, 下載次數: 9)
Program.zip (37.83 KB, 下載次數: 8)

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
免费观看欧美成人禁片| 亚洲精品88| 国产女主播福利| 777视频在线| 91免费看蜜桃| 日韩精品资源二区在线| 国产欧美视频一区二区| 一区二区在线影院| 久久天堂av| 国产视频在线看| 桃花视频大全不卡免费观看网站 | 欧亚精品在线观看| 亚洲精品按摩视频| 亚洲国产精品久久久久婷婷884| 极品美女销魂一区二区三区免费| 蜜桃国内精品久久久久软件9| 黄色成人在线网| 偷偷要色偷偷| 国产麻豆麻豆| 国产特黄一级片| 国产三级国产精品国产国在线观看| 国产高清av在线播放| 91亚洲一区精品| 欧美乱妇高清无乱码| 精品日韩99亚洲| 亚洲一区中文在线| 91视视频在线直接观看在线看网页在线看| 亚洲国产高清一区二区三区| 欧美中文高清| 18aaaa精品欧美大片h| 黄页网站免费在线观看| 国产欧美一区二区三区小说| 伊人色综合久久久| 久草福利资源在线观看| 第四色在线视频| 国产自偷自偷免费一区| 国产精品久久成人免费观看| 午夜精品在线观看| 亚洲视频你懂的| 成人av在线网| 久久精品久久99精品久久| **女人18毛片一区二区| 理论片一区二区在线| 亚洲成人人体| 男人影院在线观看| 天堂在线中文资源| 麻豆av观看| 在线看av网址| 两个人日本在线观看视频| 一区二区三区精品牛牛| 亚洲精品一区二区三区新线路| 日韩精品手机在线| 欧美色图亚洲视频| 成人无码精品1区2区3区免费看| 999在线精品视频| 国产精品97在线| 日本国产在线播放| 亚洲 自拍 另类小说综合图区| 日本一区免费在线观看| 国内精品二区| 国产伦精品一区二区三区在线| 91啪国产在线| 国产精品久久视频| 国产成人精品一区二区在线| 久久久久久久久久久亚洲| 中文字幕在线观看日韩| 尤物yw午夜国产精品视频| 国产偷亚洲偷欧美偷精品| 亚洲欧美另类人妖| 亚洲欧美在线磁力| 亚洲成人黄色网| 亚洲欧美另类自拍| 中文字幕精品一区久久久久| www.久久撸.com| 麻豆乱码国产一区二区三区| 欧美精品免费在线| 国模精品视频一区二区三区| 欧美重口另类videos人妖| 国产国语videosex另类| 国产精自产拍久久久久久| 国产成人高清激情视频在线观看 | 亚洲免费观看高清在线观看| 欧美国产激情二区三区| 国产精品久久久一区麻豆最新章节| 国产精品嫩草影院com| 一区二区免费看| 欧美日韩一区二区在线| 欧美精品三级日韩久久| 亚洲精品美女久久久| 伊人久久久久久久久久久| 不卡av日日日| 国产精品三级美女白浆呻吟| 国产在线观看不卡| 精品国产乱码久久久久久丨区2区| 91传媒视频免费| 成人av资源网| 在线精品日韩| 久久久久久久午夜| 欧美日韩怡红院| 不卡中文字幕在线观看| 日韩综合中文字幕| 亚洲人线精品午夜| 亚洲精品日韩丝袜精品| 欧美精品www| 成人av在线天堂| 日韩片电影在线免费观看| 青青在线视频免费观看| xxx国产在线观看| 国产精品毛片一区二区| 日韩乱码在线观看| 精品人妻aV中文字幕乱码色欲| 欧美最猛性xxxx高清| jizz免费观看| 日韩av免费观影| 日韩伦理在线一区| 欧美五码在线| 亚洲欧美久久久| 久久久蜜桃精品| 色婷婷精品大在线视频| 亚洲色图色老头| 国产精品第一第二| 在线观看日韩片| 国产三级精品三级在线| 长河落日免费高清观看| 中文字幕一区二区三区四区免费看| 午夜性色福利影院| 男人插女人欧美| 暖暖日本在线观看| 涩涩屋成人免费视频软件| 欧美 日韩 国产 一区| 国产成人精品亚洲午夜麻豆| 亚洲一级片在线观看| 亚洲国产婷婷香蕉久久久久久| 欧美激情欧美狂野欧美精品| 国内不卡一区二区三区| 黄色动漫网站入口| 国产123在线| a级片在线视频| 2020天天干夜夜爽| 污视频在线免费观看网站| 第四色中文综合网| 日韩成人免费看| 亚洲丝袜美腿综合| 亚洲高清福利视频| 国产精品人人做人人爽| 日本丰满大乳奶| 中文精品在线观看| 国产三级在线观看视频| 丰满少妇又爽又紧又丰满电影| av网站在线播放| 国产suv精品一区| 日日骚欧美日韩| 一区二区三区产品免费精品久久75| 亚洲成人中文字幕| 成人午夜高潮视频| 天天天干夜夜夜操| 国产中文字幕免费| 国内精品免费视频精选在线观看 | 狼狼综合久久久久综合网| 欧美一级特黄a| 久久久久久久伊人| 国产精品人人爱一区二区白浆| 久久免费看视频| julia中文字幕一区二区99在线| 日本在线不卡视频| 一本色道**综合亚洲精品蜜桃冫 | 国产秀色在线www免费观看| 天天天天天天天操| 污视频在线看网站| 欧美三级第一页| 国产精品伦理在线| 亚洲人成五月天| 欧美日韩电影一区二区| 黄色短视频在线观看| 日本精品一二区| 久草在现在线| 成人网18免费网站| 国产日韩影视精品| 亚洲男人天堂2023| 日韩亚洲一区在线播放| 精品人体无码一区二区三区| 亚洲va国产日韩欧美精品色婷婷| 午夜伦理在线| 欧美另类女人| 欧美视频第一页| 国产精品嫩草影院一区二区| 日韩不卡一二三| 亚洲国产精品二区| 嫩草在线视频| 国产欧美午夜| 欧洲精品视频在线观看| 91精品久久久久久久久| 肉丝美足丝袜一区二区三区四| 精品国产一级片| 91福利在线视频| 亚洲激情成人| 欧美性大战久久| wwwxx欧美| 女教师淫辱の教室蜜臀av软件| 国产porn视频| jizz欧美| aaa亚洲精品| 色伦专区97中文字幕| 国产精品国产三级国产专区51| 日韩欧美亚洲视频| 中文字幕av高清在线观看| 精品久久网站| 亚洲国产成人porn| 国产欧美一区二区三区久久| zjzjzjzjzj亚洲女人| 在线成人综合色一区| 精品日韩av| 精品制服美女丁香| 亚洲天堂色网站| 国产午夜福利100集发布| 一区二区视频免费| 欧美激情免费| 日韩黄色在线观看| 日韩精品免费在线观看| 免费cad大片在线观看| 少妇高潮av久久久久久| 清纯唯美亚洲色图| 亚洲毛片视频| 精品88久久久久88久久久| 五月天男人天堂| 一级特黄aa大片| 欧洲在线视频| 粉嫩13p一区二区三区| 久久精品亚洲国产| 在线视频观看一区二区| 国内精品麻豆| 超碰97久久国产精品牛牛| 亚洲精品伦理在线| 国产99久久精品一区二区永久免费| 97在线看福利| 99久久久无码国产精品性波多| 国产精品久久精品牛牛影视| 97se亚洲| 五月天久久比比资源色| 国产欧美一区二区三区另类精品 | 亚洲欧美自拍另类日韩| 亚洲精品自产拍在线观看app | 欧洲视频在线免费观看| 亚洲国产精品一区| 亚洲电影免费观看高清完整版在线| 免费观看中文字幕| 99久久国产免费| 日韩三级影视| 国产精品丝袜黑色高跟| 91热精品视频| 在线能看的av| 中文在线字幕免费观看| 成人av在线资源网| 国产精品视频专区| 欧美成人黄色网| 午夜视频在线免费观看| 国产盗摄视频一区二区三区| 久久久视频精品| 国产一二三av| 黄色小视频在线观看| 国产自产v一区二区三区c| 欧美极品美女视频网站在线观看免费 | 9999久久久久| 欧美日韩一区二区三区在线免费观看| 欧美日韩精品免费在线观看视频| 波多野结衣日韩| 欧美无毛视频| 亚洲免费观看高清完整版在线 | 亚洲日本成人网| 在线免费看v片| 天天色天天爽| 亚洲综合国产| 久久99精品久久久久久琪琪| 日本aaa视频| 免费在线黄色网址| 成人爱爱电影网址| aaa级精品久久久国产片| 无码人妻一区二区三区免费| 91精品产国品一二三产区| 亚洲免费观看视频| 伊甸园精品99久久久久久| 午夜在线观看视频18| 欧美午夜18电影| 亚洲精品wwww| 野战少妇38p| 青青草免费在线| 99re这里只有精品首页| 成人h视频在线观看| 国产精品久久久久久无人区| 日韩在线成人| 777午夜精品免费视频| 黄色三级视频在线| 黑粗硬长欧美在线视频免费的| 五月婷婷导航| 99精品免费| 91福利视频在线观看| 国产精品50页| 性欧美hd调教| 欧美日韩国产首页| 亚洲娇小娇小娇小| 中文字幕在线资源| 91视频一区二区| 欧美精品在线一区| 国内精品区一区二区三| 最新成人av网站| 欧美亚洲国产视频| 成人毛片一区二区三区| 成人黄色av网址| 亚洲欧美制服丝袜| 五月天免费网站| 人人鲁人人莫人人爱精品| 欧美日韩免费在线视频| 免费成年人高清视频| 在线免费福利| 中文字幕第一区第二区| 日韩一级特黄毛片| 国产小黄视频| 91美女在线视频| 一二三四中文字幕| av电影资源| 95精品视频在线| 久久久久久久久久伊人| 97福利电影| 久久久99精品免费观看不卡| 亚洲欧美一区二区原创| wwwwxxxx日本| 99久久99久久综合| 激情视频小说图片| 97秋霞电影网| 国产欧美一区二区精品久导航| 97干在线视频| 在线播放你懂的| 一区二区三区精品视频在线| 欧美三级理论片| av在线日韩国产精品| 色综合天天做天天爱| 日本电影亚洲天堂| 99久久99久久久精品棕色圆| 中文字幕日韩一区二区不卡| 日韩av电影院| 亚洲成在人线免费视频| 香蕉久久国产| 免费成人看片网址| 天天操夜夜欢| 日本一区二区免费在线 | 一本久道久久综合狠狠爱| 国产精品网红福利| 久久久精品久久久久特色影视| 激情小说亚洲一区| 成年人黄色在线观看| 在线观看老湿视频福利| 亚洲激情第一区| 少妇愉情理伦片bd| 黄视频在线免费看| 亚洲精品久久在线| 中文字幕精品无| 欧美激情1区2区3区| 99中文视频在线| 奇米影视第四狠狠777| 国产色综合久久| 亚洲娇小娇小娇小| 黄色在线观看www| 亚洲人成在线一二| 国产又粗又大又黄| 免费在线超碰| 国产精品美女视频免费观看软件| 亚洲日本电影| 欧美色图天堂| 一区二区日韩电影| 一边摸一边做爽的视频17国产| 天堂8中文在线最新版在线| 亚洲国产精彩中文乱码av| 天堂网一区二区三区| 91一区在线| 精品国产免费久久久久久尖叫| 97在线观看| 精品成人国产在线观看男人呻吟| aa一级黄色片| 国产精品nxnn| 国产精品电影久久久久电影网| 国产精品人人爱一区二区白浆| 久久久国产精华| 久久久国产精品久久久| 香蕉久久一区| 欧美中文字幕精品| 日本免费资源| 亚洲老司机在线| 一区二区伦理片| 九九久久精品| 国产精品一区二区免费看| 日本亚洲天堂| 欧美人动与zoxxxx乱| 黄色在线免费观看| 久久久久久穴| av7777777| 精品欧美日韩精品| 日韩美女中文字幕| 天天摸天天操天天干| 一本久道久久综合中文字幕| 国产一级免费观看|