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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

自己做的簡單的基于STM32的RFID-RC522門禁系統

[復制鏈接]
跳轉到指定樓層
樓主

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "lcd.h"
  4. #include "led.h"
  5. #include "usart.h"
  6. #include "dht11.h"
  7. #include "key.h"
  8. #include "beep.h"
  9. #include <stdio.h>
  10. #include "stmflash.h"
  11. #include "timer.h"
  12. #include "exit.h"
  13. #include "rc522.h"

  14. void show1(void);
  15. void show2(void);
  16. void show3(void);
  17. void show4(void);
  18. void show5(void);
  19. void show21(void);
  20. void show31(void);
  21. void show8(void);
  22. u8 read_up=1;
  23. u8 set1=1;

  24. /*這三個標志位是用于按鍵的掃描程序*/
  25. u8 key0_flag=0;
  26. u8 key1_flag=0;
  27. u8 key2_flag=0;
  28. u8 beep_switch=0;
  29. u8 beep_num=0;
  30. u8 beepup_num=0;
  31. u8 open_flag=0;
  32. u8 down_flag=0;
  33. u8 err_beepnum=0;
  34. u8 table1[]="Please Bash Card";
  35. u8 table11[]="      (())      ";
  36. u8 table2[]="  Register Mode ";
  37. u8 table22[]="      (())      ";
  38. u8 table222[]="Register Success";
  39. u8 table3[]="   Clear Mode   ";
  40. u8 table33[]=" Logout Success ";
  41. u8 table5[]="    Door open   ";
  42. u8 table6[]="   Door close   ";
  43. u8 table8[]=" Dead Lock    s ";
  44. u8 err_num=0;
  45. u8 eee_flag=0;
  46. int kg_flag=0;//定時器4累加標志位,用于當RFID掃描到了并對門做出了相應的動作后,返回到掃描ID卡的計時標志位
  47. u8 tim2_flag=0;//定時器2累加標志位,用于當按鍵按下之后,并完成了注冊或注銷卡之后,返回到掃描ID卡的計時標志位
  48. u8 show_flag=0;//記錄顯示那個界面的標志位
  49. unsigned char num;
  50. unsigned char key_flag;//用于標識當前系統處于,掃描ID卡狀態還是注冊ID卡狀態還是注銷ID卡狀態
  51. unsigned char i;
  52. unsigned int temp;
  53. unsigned char status;
  54. unsigned char g_ucTempbuf[20];
  55. unsigned char g_ucTempbufid[20];//用于記錄下來當前掃描到的ID
  56. unsigned char lcd[]="0123456789ABCDEF";//用于顯示ID時的16進制
  57. unsigned char dataerr[16] = {0x11,0x11,0x11,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};//ID卡中錯誤的密碼數據
  58. unsigned char data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};//ID卡中正確的密碼數據

  59. unsigned char data2[4]  = {0,0,0,0x01};
  60. unsigned char DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


  61. u8 RC522_flag=1;
  62. u8 RC522_flag1=1;
  63. u8 RC522_flag2=1;
  64. u8 RC522_flag3=0;
  65. /*按鍵的掃描函數*/
  66. void key(void)
  67. {
  68.         if(KEY0==0)
  69.         {
  70.                  if(key0_flag==1)
  71.                  {
  72.                          key0_flag=0;
  73.                          key_flag=1;

  74.                  }
  75.         }
  76.         else
  77.         {
  78.                  key0_flag=1;
  79.         }
  80.         if(KEY1==0)
  81.         {
  82.                  if(key1_flag==1)
  83.                  {
  84.                          key1_flag=0;        
  85.        key_flag=2;                        
  86.                  }
  87.         }
  88.         else
  89.         {
  90.                  key1_flag=1;
  91.         }

  92. }
  93. /*用于判斷系統應該顯示哪一個界面*/
  94. void show_num(void)
  95. {
  96.         if(show_flag==1)
  97.         {
  98.                 show1();
  99.         }
  100.         else if(show_flag==2)
  101.         {
  102.                 show2();
  103.         }
  104.         else if(show_flag==3)
  105.         {
  106.                
  107.                 show3();
  108.         }
  109.         else if(show_flag==4)
  110.                
  111.         {
  112.                 show4();
  113.         }
  114.         else if(show_flag==5)
  115.         {
  116.                 show5();
  117.         }
  118.         else if(show_flag==6)
  119.         {
  120.                 show21();
  121.         }
  122.         else if(show_flag==7)
  123.         {
  124.                 show31();
  125.         }
  126.         else if(show_flag==8)
  127.         {
  128.                 show8();
  129.         }
  130. }

  131.         

  132. int main(void)
  133. {
  134.         unsigned char status,i;
  135.         unsigned int temp;
  136.         delay_init();
  137.   LCD1602_Init();
  138.         KEY_Init();
  139.         
  140.         BEEP_Init();
  141.         LED_Init();
  142.         
  143.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  144.          uart_init(115200);


  145.         RC522_Init();
  146.         PcdReset();
  147.         PcdAntennaOff();
  148.         delay_ms(10);
  149.          PcdAntennaOn();
  150.         delay_ms(10);
  151.         TIM2_Int_Init(4999,7199);//10Khz的計數頻率,計數到5000為500ms
  152.         TIM3_Int_Init(499,7199);//10Khz的計數頻率,計數到5000為500ms  
  153.         TIM4_Int_Init(4999,7199);//10Khz的計數頻率,計數到5000為500ms  
  154.         printf("Start \r\n");
  155.         key_flag=0;
  156.         show_flag=1;
  157.         beep_switch=0;
  158.         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  159.         while(1)
  160.         {
  161. //                printf("%d",RC522_flag1);
  162.                
  163.                
  164.                 show_num();


  165.                         down_flag=0;
  166.                         if(kg_flag==6 && err_num<3)
  167.                         {
  168.                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  169.                                 kg_flag=0;
  170.                                 TIM_Cmd(TIM4, DISABLE);  //使能TIMx        
  171.                                 GPIO_ResetBits(GPIOB,GPIO_Pin_11);
  172.                                 key_flag=0;
  173.                                 show_flag=1;
  174.                                 open_flag=0;
  175.                                 down_flag=0;

  176.                         }
  177.                         else if(kg_flag==360 && err_num==3)
  178.                         {
  179.                                 kg_flag=0;
  180.                                 err_beepnum=0;
  181.                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  182.                                 TIM_Cmd(TIM4, DISABLE);  //使能TIMx        
  183.                                 key_flag=0;
  184.                                 show_flag=1;
  185.                                 err_num=0;
  186.                         }

  187.                 if(tim2_flag==4)
  188.                 {               
  189.                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  190.                                 tim2_flag=0;
  191.                                 TIM_Cmd(TIM2, DISABLE);  //使能TIMx        
  192.                                 key_flag=0;
  193.                           show_flag=1;

  194.                 }
  195.                 if(key_flag==0)
  196.                 {

  197.                         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡                        
  198.                         if (status != MI_OK)                 
  199.                         {   
  200.                                 PcdReset();
  201.                                 PcdAntennaOff();
  202.                                 PcdAntennaOn();
  203.                                         printf("尋卡失敗\r\n");
  204.                                 
  205.                                 if(RC522_flag3<3) RC522_flag3++;
  206.                           if(RC522_flag3==4)RC522_flag3=3;
  207.                                 

  208.                         
  209.                                 continue;
  210.                         }
  211.                         else
  212.                         {
  213.                                         if(RC522_flag3==3)
  214.                                         {
  215.                                                   RC522_flag3=4;
  216.                                                         RC522_flag=1;
  217.                                         }
  218.                         }
  219.                         
  220.                         
  221.                         if(RC522_flag==1)
  222.                         {  
  223.                                 RC522_flag=0;               
  224.                                 printf("1231231231312312312312312312\r\n");
  225.                                 status = PcdAnticoll(g_ucTempbuf);//防沖撞               
  226.                                 if(status != MI_OK)
  227.                                 {   printf("尋卡失敗1");  continue;           }


  228.                                 printf("卡序列號:");        //超級終端顯示,
  229.                                 for(i=0;i<4;i++)
  230.                                 {
  231.                                 temp=g_ucTempbuf[i];
  232.                                 g_ucTempbufid[i]=temp;
  233.                                 printf("%X",temp);
  234.                                 }
  235.                                                         status = PcdSelect(g_ucTempbuf);//選定卡片
  236.                                 if (status != MI_OK)
  237.                                 {   printf("尋卡失敗2");  continue;           }
  238.                                          
  239.                                 
  240.                                 status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗證卡片密碼
  241.                                 if (status != MI_OK)
  242.                                 {           printf("尋卡失敗3");   continue;  }

  243.                                                 

  244.                                 status = PcdRead(1, g_ucTempbuf);//讀塊
  245.                                 if (status != MI_OK)
  246.                                 {          printf("尋卡失敗4");    continue;  }
  247.                                                                         
  248.                                 printf("卡讀塊:");        //超級終端顯示,
  249.                                 for(i=0;i<16;i++)
  250.                                 {
  251.                                         temp=g_ucTempbuf[i];
  252.                                         printf("%X",temp);
  253.                                 }
  254.                                 num=0;
  255.                                 for(i=0;i<16;i++)
  256.                                 {
  257.                                         if(data1[i]==g_ucTempbuf[i])
  258.                                         {num++;}
  259.                                        
  260.                                         printf("\nnum %d\n",num);
  261.                                 }
  262.                                                 
  263.                                 if(num!=16)
  264.                                 {
  265.                                         err_num++;
  266.                                         if(err_num<3)
  267.                                         {                                       
  268.                                                 //不開門
  269.                                                 show_flag=4;
  270.                                                 kg_flag=0;
  271.                                                 open_flag=2;
  272.                                                 printf("downflag%d\n",down_flag);
  273.                                                 TIM_Cmd(TIM4, ENABLE);  //使能TIMx        
  274.                                         }
  275.                                 }
  276.                                 else
  277.                                 {
  278.                                 //開門
  279.                                         err_num=0;
  280.                                         show_flag=5;
  281.                                         kg_flag=0;
  282.                                         open_flag=1;
  283.                                         TIM_Cmd(TIM4, ENABLE);  //使能TIMx        
  284.                                         GPIO_SetBits(GPIOB,GPIO_Pin_11);

  285.                                 }
  286.                         }
  287.                         
  288.                                 //printf("\n");                                          
  289.                         
  290.                         PcdHalt();
  291.                 }
  292.                
  293.                 else if(key_flag==1)
  294.                 {
  295.         
  296.                         TIM_Cmd(TIM2, DISABLE);  //使能TIMx        
  297.       TIM_Cmd(TIM4, DISABLE);  //使能TIMx        
  298.                         GPIO_ResetBits(GPIOB,GPIO_Pin_11);
  299.       GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  300.                         show_flag=2;
  301.                         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡
  302.                         if (status != MI_OK)
  303.                         {   
  304.                                 PcdReset();
  305.                                 PcdAntennaOff();
  306.                                 PcdAntennaOn();
  307.                                 key_flag=1;                printf("尋卡失敗111\r\n");RC522_flag1=1;

  308.                                 continue;
  309.                                 

  310.                         }
  311.                         if(RC522_flag1==1)
  312.                         {
  313.                                 RC522_flag3=0;
  314.                                 RC522_flag1=0;
  315.                                 printf("1231231231312312312312312312\r\n");

  316.                                 printf("卡的類型:");
  317.                                 for(i=0;i<2;i++)
  318.                                 {
  319.                                 temp=g_ucTempbuf[i];
  320.                                 printf("%X",temp);
  321.                                 }
  322.                                 
  323.                                 status = PcdAnticoll(g_ucTempbuf);//防沖撞               
  324.                                 if(status != MI_OK)
  325.                                 {  
  326.                                         printf("防沖撞失敗");
  327.                                  
  328.                                 }
  329.                                 else
  330.                                 {
  331.                                                                                                                
  332.                                         printf("卡序列號:");        //超級終端顯示,
  333.                                         for(i=0;i<4;i++)
  334.                                         {
  335.                                                 temp=g_ucTempbuf[i];
  336.                                                 printf("%X",temp);

  337.                                         }

  338.                                         status = PcdSelect(g_ucTempbuf);//選定卡片
  339.                                         if (status != MI_OK)
  340.                                         {   
  341.                                                 printf("選定卡失敗");   

  342.                                         }
  343.                                         else
  344.                                         {        
  345.                                                 status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗證卡片密碼
  346.                                                 if (status != MI_OK)
  347.                                                 {   
  348.                                                         printf("密碼錯誤");

  349.                                                 }
  350.                                                 else
  351.                                                 {
  352.                                                         status = PcdWrite(1, data1);//寫塊
  353.                                                         if (status != MI_OK)
  354.                                                         {   
  355.                                                                 printf("寫錯");
  356.                                                                         
  357.                                                         }
  358.                                                         else
  359.                                                         {               

  360.                                                                
  361.                                                                         key_flag=3;
  362.                                                                         show_flag=6;                                                
  363.                   tim2_flag=0;
  364.                                                                         TIM_Cmd(TIM2, ENABLE);  //使能TIMx                                                                                                                                         
  365.                                                         }                                                        
  366.                                                 }                                                        
  367.                                         }                                                
  368.                                 }               
  369.                  
  370.                         
  371.                         }

  372.             PcdHalt();
  373. //                        
  374. //RC522_flag1=1;
  375.         
  376.                         
  377.                         
  378.                 }
  379.                 else if(key_flag==2)
  380.                 {
  381.                                          TIM_Cmd(TIM2, DISABLE);  //使能TIMx        
  382.      TIM_Cmd(TIM4, DISABLE);  //使能TIMx        
  383.                                                 GPIO_ResetBits(GPIOB,GPIO_Pin_11);
  384.       GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  385.                         show_flag=3;
  386.                         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡
  387.                         if (status != MI_OK)
  388.                         {   
  389.                                 PcdReset();
  390.                                 PcdAntennaOff();
  391.                                 PcdAntennaOn();
  392.                                 printf("尋卡失敗\r\n");
  393.                                 key_flag=2;
  394.                                 RC522_flag2=1;
  395.                                 continue;

  396.                         }
  397.                         if(RC522_flag2==1)
  398.                         {
  399.                                 RC522_flag3=0;
  400.                                 RC522_flag2=0;printf("1231231231312312312312312312\r\n");

  401.                                 printf("卡的類型:");
  402.                                 for(i=0;i<2;i++)
  403.                                 {
  404.                                         temp=g_ucTempbuf[i];
  405.                                         printf("%X",temp);
  406.                                 }                                
  407.                                 status = PcdAnticoll(g_ucTempbuf);//防沖撞               
  408.                                 if(status != MI_OK)
  409.                                 {  
  410.                                         printf("防沖撞失敗");

  411.                                 }
  412.                                 else
  413.                                 {                                                        
  414.                                         printf("卡序列號:");        //超級終端顯示,
  415.                                         for(i=0;i<4;i++)
  416.                                         {
  417.                                                 temp=g_ucTempbuf[i];
  418.                                                 printf("%X",temp);

  419.                                         }                                                
  420.                                         status = PcdSelect(g_ucTempbuf);//選定卡片
  421.                                         if (status != MI_OK)
  422.                                         {   
  423.                                                 printf("選定卡失敗");   

  424.                                         }
  425.                                         else
  426.                                         {        
  427.                                                 status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗證卡片密碼
  428.                                                 if (status != MI_OK)
  429.                                                 {   
  430.                                                         printf("密碼錯誤");
  431.                                                          
  432.                                                 }
  433.                                                 else
  434.                                                 {
  435.                                                         status = PcdWrite(1, dataerr);//寫塊
  436.                                                         if (status != MI_OK)
  437.                                                         {   
  438.                                                                 printf("寫錯");
  439.                                                                
  440.                                                         }
  441.                                                         else
  442.                                                         {                                
  443.                
  444.                                                                 key_flag=3;
  445.                                                                 show_flag=7;        
  446.                                                                 tim2_flag=0;
  447.                                                                 TIM_Cmd(TIM2, ENABLE);  //使能TIMx        
  448.                                                                
  449.                                 
  450.                                                         }                                                
  451.                                                 }                                       
  452.                                         }                        
  453.                                 }                                 
  454.                         }
  455.                         PcdHalt();
  456.                
  457.                 }
  458.                 else if(key_flag==3)
  459.                 {
  460.                         
  461.                 }
  462.         }

  463. }

  464. void TIM2_IRQHandler(void)   //TIM2中斷
  465. {
  466.         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發生與否
  467.         {
  468.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中斷標志
  469.         }

  470.         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡                        

  471.                         
  472.         if(tim2_flag==0)
  473.         {
  474.                 GPIO_SetBits(GPIOB,GPIO_Pin_0);
  475.         }
  476.         else
  477.         {
  478.                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  479.         }
  480.                
  481.         tim2_flag++;
  482. }


  483. //定時器3中斷服務程序
  484. void TIM3_IRQHandler(void)   //TIM3中斷
  485. {
  486.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發生與否
  487.                 {
  488.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx更新中斷標志
  489.                 }
  490.      key();
  491.                 if(err_num==3)
  492.                 {
  493.                         show_flag=8;
  494.                         TIM_Cmd(TIM4, ENABLE);
  495.                 }
  496. //                beep_num++;
  497. //                if(beep_num>200)
  498. //                {
  499. //                        beep_num=0;
  500. //                }
  501. //                if(beep_switch==1)
  502. //                {
  503. //                        if(beep_num%2==0)
  504. //                        {
  505. //                                GPIO_SetBits(GPIOB,GPIO_Pin_0);
  506. //                                beepup_num++;
  507. //                                printf("beepup_num%d\n",beepup_num);
  508. //                        }
  509. //                        else
  510. //                        {
  511. //                                GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  512. //                        }
  513. //                }
  514. //                else
  515. //                {
  516. //                        GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  517. //                }
  518. //                printf("beep_switch%d\n",beep_switch);

  519. }

  520. //定時器4中斷服務程序
  521. void TIM4_IRQHandler(void)   //TIM4中斷
  522. {
  523.         if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發生與否
  524.         {
  525.         TIM_ClearITPendingBit(TIM4, TIM_IT_Update  );  //清除TIMx更新中斷標志
  526.         }
  527.         if(open_flag==2)
  528.         {
  529.                
  530.                 printf(" 123345564455444");
  531.                 if(kg_flag%2==0)
  532.                 {
  533.                         GPIO_SetBits(GPIOB,GPIO_Pin_0);
  534.                 }
  535.                 else
  536.                 {
  537.                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  538.                 }
  539.         }

  540.         if(open_flag==1)
  541.         {
  542.                         printf(" 123345564455444");
  543.                  if(kg_flag==0)
  544.                 {
  545.                         GPIO_SetBits(GPIOB,GPIO_Pin_0);
  546.                 }
  547.                 else
  548.                 {
  549.                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  550.                 }
  551.         }
  552.         if(err_num==3 && err_beepnum<10)
  553.         {
  554.                
  555.                 err_beepnum++;
  556.                                 if(kg_flag%2==0)
  557.                 {
  558.                         GPIO_SetBits(GPIOB,GPIO_Pin_0);
  559.                 }
  560.                 else
  561.                 {
  562.                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);
  563.                 }
  564.         }



  565.                                 kg_flag++;

  566.         
  567. }

  568. void show1()
  569. {
  570.         LCD1602_Show_dat(0,0,table1[0]);
  571.   LCD1602_Show_dat(1,0,table1[1]);
  572.         LCD1602_Show_dat(2,0,table1[2]);
  573.         LCD1602_Show_dat(3,0,table1[3]);
  574.         LCD1602_Show_dat(4,0,table1[4]);
  575.         LCD1602_Show_dat(5,0,table1[5]);
  576.         LCD1602_Show_dat(6,0,table1[6]);
  577.         LCD1602_Show_dat(7,0,table1[7]);
  578.         LCD1602_Show_dat(8,0,table1[8]);
  579.         LCD1602_Show_dat(9,0,table1[9]);
  580.         LCD1602_Show_dat(0xa,0,table1[10]);
  581.         LCD1602_Show_dat(0xb,0,table1[11]);
  582.         LCD1602_Show_dat(0xc,0,table1[12]);
  583.         LCD1602_Show_dat(0xd,0,table1[13]);
  584.         LCD1602_Show_dat(0xe,0,table1[14]);
  585.         LCD1602_Show_dat(0xf,0,table1[15]);
  586.         
  587.         LCD1602_Show_dat(0,1,table11[0]);
  588.   LCD1602_Show_dat(1,1,table11[1]);
  589.         LCD1602_Show_dat(2,1,table11[2]);
  590.         LCD1602_Show_dat(3,1,table11[3]);
  591.         LCD1602_Show_dat(4,1,table11[4]);
  592.         LCD1602_Show_dat(5,1,table11[5]);
  593.         LCD1602_Show_dat(6,1,table11[6]);
  594.         LCD1602_Show_dat(7,1,table11[7]);
  595.         LCD1602_Show_dat(8,1,table11[8]);
  596.         LCD1602_Show_dat(9,1,table11[9]);
  597.         LCD1602_Show_dat(0xa,1,table11[10]);
  598.         LCD1602_Show_dat(0xb,1,table11[11]);
  599.         LCD1602_Show_dat(0xc,1,table11[12]);
  600.         LCD1602_Show_dat(0xd,1,table11[13]);
  601.         LCD1602_Show_dat(0xe,1,table11[14]);
  602.         LCD1602_Show_dat(0xf,1,table11[15]);
  603.         


  604. }

  605. void show2()
  606. {
  607.         LCD1602_Show_dat(0,0,table2[0]);
  608.   LCD1602_Show_dat(1,0,table2[1]);
  609.         LCD1602_Show_dat(2,0,table2[2]);
  610.         LCD1602_Show_dat(3,0,table2[3]);
  611.         LCD1602_Show_dat(4,0,table2[4]);
  612.         LCD1602_Show_dat(5,0,table2[5]);
  613.         LCD1602_Show_dat(6,0,table2[6]);
  614.         LCD1602_Show_dat(7,0,table2[7]);
  615.         LCD1602_Show_dat(8,0,table2[8]);
  616.         LCD1602_Show_dat(9,0,table2[9]);
  617.         LCD1602_Show_dat(0xa,0,table2[10]);
  618.         LCD1602_Show_dat(0xb,0,table2[11]);
  619.         LCD1602_Show_dat(0xc,0,table2[12]);
  620.         LCD1602_Show_dat(0xd,0,table2[13]);
  621.         LCD1602_Show_dat(0xe,0,table2[14]);
  622.         LCD1602_Show_dat(0xf,0,table2[15]);
  623.         
  624.         LCD1602_Show_dat(0,1,table22[0]);
  625.   LCD1602_Show_dat(1,1,table22[1]);
  626.         LCD1602_Show_dat(2,1,table22[2]);
  627.         LCD1602_Show_dat(3,1,table22[3]);
  628.         LCD1602_Show_dat(4,1,table22[4]);
  629.         LCD1602_Show_dat(5,1,table22[5]);
  630.         LCD1602_Show_dat(6,1,table22[6]);
  631.         LCD1602_Show_dat(7,1,table22[7]);
  632.         LCD1602_Show_dat(8,1,table22[8]);
  633.         LCD1602_Show_dat(9,1,table22[9]);
  634.         LCD1602_Show_dat(0xa,1,table22[10]);
  635.         LCD1602_Show_dat(0xb,1,table22[11]);
  636.         LCD1602_Show_dat(0xc,1,table22[12]);
  637.         LCD1602_Show_dat(0xd,1,table22[13]);
  638.         LCD1602_Show_dat(0xe,1,table22[14]);
  639.         LCD1602_Show_dat(0xf,1,table22[15]);
  640.         


  641. }

  642. void show21()
  643. {
  644.         LCD1602_Show_dat(0,0,table2[0]);
  645.   LCD1602_Show_dat(1,0,table2[1]);
  646.         LCD1602_Show_dat(2,0,table2[2]);
  647.         LCD1602_Show_dat(3,0,table2[3]);
  648.         LCD1602_Show_dat(4,0,table2[4]);
  649.         LCD1602_Show_dat(5,0,table2[5]);
  650.         LCD1602_Show_dat(6,0,table2[6]);
  651.         LCD1602_Show_dat(7,0,table2[7]);
  652.         LCD1602_Show_dat(8,0,table2[8]);
  653.         LCD1602_Show_dat(9,0,table2[9]);
  654.         LCD1602_Show_dat(0xa,0,table2[10]);
  655.         LCD1602_Show_dat(0xb,0,table2[11]);
  656.         LCD1602_Show_dat(0xc,0,table2[12]);
  657.         LCD1602_Show_dat(0xd,0,table2[13]);
  658.         LCD1602_Show_dat(0xe,0,table2[14]);
  659.         LCD1602_Show_dat(0xf,0,table2[15]);
  660.         
  661.         LCD1602_Show_dat(0,1,table222[0]);
  662.   LCD1602_Show_dat(1,1,table222[1]);
  663.         LCD1602_Show_dat(2,1,table222[2]);
  664.         LCD1602_Show_dat(3,1,table222[3]);
  665.         LCD1602_Show_dat(4,1,table222[4]);
  666.         LCD1602_Show_dat(5,1,table222[5]);
  667.         LCD1602_Show_dat(6,1,table222[6]);
  668.         LCD1602_Show_dat(7,1,table222[7]);
  669.         LCD1602_Show_dat(8,1,table222[8]);
  670.         LCD1602_Show_dat(9,1,table222[9]);
  671.         LCD1602_Show_dat(0xa,1,table222[10]);
  672.         LCD1602_Show_dat(0xb,1,table222[11]);
  673.         LCD1602_Show_dat(0xc,1,table222[12]);
  674.         LCD1602_Show_dat(0xd,1,table222[13]);
  675.         LCD1602_Show_dat(0xe,1,table222[14]);
  676.         LCD1602_Show_dat(0xf,1,table222[15]);
  677.         


  678. }
  679. void show3()
  680. {
  681.         LCD1602_Show_dat(0,0,table3[0]);
  682.   LCD1602_Show_dat(1,0,table3[1]);
  683.         LCD1602_Show_dat(2,0,table3[2]);
  684.         LCD1602_Show_dat(3,0,table3[3]);
  685.         LCD1602_Show_dat(4,0,table3[4]);
  686.         LCD1602_Show_dat(5,0,table3[5]);
  687.         LCD1602_Show_dat(6,0,table3[6]);
  688.         LCD1602_Show_dat(7,0,table3[7]);
  689.         LCD1602_Show_dat(8,0,table3[8]);
  690.         LCD1602_Show_dat(9,0,table3[9]);
  691.         LCD1602_Show_dat(0xa,0,table3[10]);
  692.         LCD1602_Show_dat(0xb,0,table3[11]);
  693.         LCD1602_Show_dat(0xc,0,table3[12]);
  694.         LCD1602_Show_dat(0xd,0,table3[13]);
  695.         LCD1602_Show_dat(0xe,0,table3[14]);
  696.         LCD1602_Show_dat(0xf,0,table3[15]);
  697.         
  698.         LCD1602_Show_dat(0,1,table22[0]);
  699.   LCD1602_Show_dat(1,1,table22[1]);
  700.         LCD1602_Show_dat(2,1,table22[2]);
  701.         LCD1602_Show_dat(3,1,table22[3]);
  702.         LCD1602_Show_dat(4,1,table22[4]);
  703.         LCD1602_Show_dat(5,1,table22[5]);
  704.         LCD1602_Show_dat(6,1,table22[6]);
  705.         LCD1602_Show_dat(7,1,table22[7]);
  706.         LCD1602_Show_dat(8,1,table22[8]);
  707.         LCD1602_Show_dat(9,1,table22[9]);
  708.         LCD1602_Show_dat(0xa,1,table22[10]);
  709.         LCD1602_Show_dat(0xb,1,table22[11]);
  710.         LCD1602_Show_dat(0xc,1,table22[12]);
  711.         LCD1602_Show_dat(0xd,1,table22[13]);
  712.         LCD1602_Show_dat(0xe,1,table22[14]);
  713.         LCD1602_Show_dat(0xf,1,table22[15]);
  714.         

  715. }

  716. void show31()
  717. {
  718.         LCD1602_Show_dat(0,0,table3[0]);
  719.   LCD1602_Show_dat(1,0,table3[1]);
  720.         LCD1602_Show_dat(2,0,table3[2]);
  721.         LCD1602_Show_dat(3,0,table3[3]);
  722.         LCD1602_Show_dat(4,0,table3[4]);
  723.         LCD1602_Show_dat(5,0,table3[5]);
  724.         LCD1602_Show_dat(6,0,table3[6]);
  725.         LCD1602_Show_dat(7,0,table3[7]);
  726.         LCD1602_Show_dat(8,0,table3[8]);
  727.         LCD1602_Show_dat(9,0,table3[9]);
  728.         LCD1602_Show_dat(0xa,0,table3[10]);
  729.         LCD1602_Show_dat(0xb,0,table3[11]);
  730.         LCD1602_Show_dat(0xc,0,table3[12]);
  731.         LCD1602_Show_dat(0xd,0,table3[13]);
  732.         LCD1602_Show_dat(0xe,0,table3[14]);
  733.         LCD1602_Show_dat(0xf,0,table3[15]);
  734.         
  735.         LCD1602_Show_dat(0,1,table33[0]);
  736.   LCD1602_Show_dat(1,1,table33[1]);
  737.         LCD1602_Show_dat(2,1,table33[2]);
  738.         LCD1602_Show_dat(3,1,table33[3]);
  739.         LCD1602_Show_dat(4,1,table33[4]);
  740.         LCD1602_Show_dat(5,1,table33[5]);
  741.         LCD1602_Show_dat(6,1,table33[6]);
  742.         LCD1602_Show_dat(7,1,table33[7]);
  743.         LCD1602_Show_dat(8,1,table33[8]);
  744.         LCD1602_Show_dat(9,1,table33[9]);
  745.         LCD1602_Show_dat(0xa,1,table33[10]);
  746.         LCD1602_Show_dat(0xb,1,table33[11]);
  747.         LCD1602_Show_dat(0xc,1,table33[12]);
  748.         LCD1602_Show_dat(0xd,1,table33[13]);
  749.         LCD1602_Show_dat(0xe,1,table33[14]);
  750.         LCD1602_Show_dat(0xf,1,table33[15]);
  751. }
  752. void show4()
  753.         
  754. {
  755.                                                                 LCD1602_Show_dat(0,0,' ');
  756.                                                         LCD1602_Show_dat(1,0,' ');
  757.                                                         LCD1602_Show_dat(2,0,' ');
  758.                                                         LCD1602_Show_dat(3,0,'I');
  759.                                                         LCD1602_Show_dat(4,0,'D');
  760.                                                         LCD1602_Show_dat(5,0,':');
  761.                                                         LCD1602_Show_dat(6,0,lcd[g_ucTempbufid[0]/16]);
  762.                                                         LCD1602_Show_dat(7,0,lcd[g_ucTempbufid[0]%16]);
  763.                                                         LCD1602_Show_dat(8,0,lcd[g_ucTempbufid[1]/16]);
  764.                                                         LCD1602_Show_dat(9,0,lcd[g_ucTempbufid[1]%16]);
  765.                                                         LCD1602_Show_dat(0xa,0,lcd[g_ucTempbufid[2]/16]);
  766.                                                         LCD1602_Show_dat(0xb,0,lcd[g_ucTempbufid[2]%16]);
  767.                                                         LCD1602_Show_dat(0xc,0,lcd[g_ucTempbufid[3]/16]);
  768.                                                         LCD1602_Show_dat(0xd,0,lcd[g_ucTempbufid[3]%16]);
  769.                                                         LCD1602_Show_dat(0xe,0,' ');
  770.                                                         LCD1602_Show_dat(0xf,0,' ');

  771.                                                         LCD1602_Show_dat(0,1,table6[0]);
  772.                                                         LCD1602_Show_dat(1,1,table6[1]);
  773.                                                         LCD1602_Show_dat(2,1,table6[2]);
  774.                                                         LCD1602_Show_dat(3,1,table6[3]);
  775.                                                         LCD1602_Show_dat(4,1,table6[4]);
  776.                                                         LCD1602_Show_dat(5,1,table6[5]);
  777.                                                         LCD1602_Show_dat(6,1,table6[6]);
  778.                                                         LCD1602_Show_dat(7,1,table6[7]);
  779.                                                         LCD1602_Show_dat(8,1,table6[8]);
  780.                                                         LCD1602_Show_dat(9,1,table6[9]);
  781.                                                         LCD1602_Show_dat(0xa,1,table6[10]);
  782.                                                         LCD1602_Show_dat(0xb,1,table6[11]);
  783.                                                         LCD1602_Show_dat(0xc,1,table6[12]);
  784.                                                         LCD1602_Show_dat(0xd,1,table6[13]);
  785.                                                         LCD1602_Show_dat(0xe,1,table6[14]);
  786.                                                         LCD1602_Show_dat(0xf,1,table6[15]);
  787. }
  788. void show5()
  789. {
  790.                                                                 LCD1602_Show_dat(0,0,' ');
  791.                                                         LCD1602_Show_dat(1,0,' ');
  792.                                                         LCD1602_Show_dat(2,0,' ');
  793.                                                         LCD1602_Show_dat(3,0,'I');
  794.                                                         LCD1602_Show_dat(4,0,'D');
  795.                                                         LCD1602_Show_dat(5,0,':');
  796.                                                         LCD1602_Show_dat(6,0,lcd[g_ucTempbufid[0]/16]);
  797.                                                         LCD1602_Show_dat(7,0,lcd[g_ucTempbufid[0]%16]);
  798.                                                         LCD1602_Show_dat(8,0,lcd[g_ucTempbufid[1]/16]);
  799.                                                         LCD1602_Show_dat(9,0,lcd[g_ucTempbufid[1]%16]);
  800.                                                         LCD1602_Show_dat(0xa,0,lcd[g_ucTempbufid[2]/16]);
  801.                                                         LCD1602_Show_dat(0xb,0,lcd[g_ucTempbufid[2]%16]);
  802.                                                         LCD1602_Show_dat(0xc,0,lcd[g_ucTempbufid[3]/16]);
  803.                                                         LCD1602_Show_dat(0xd,0,lcd[g_ucTempbufid[3]%16]);
  804.                                                         LCD1602_Show_dat(0xe,0,' ');
  805.                                                         LCD1602_Show_dat(0xf,0,' ');

  806.                                                         LCD1602_Show_dat(0,1,table5[0]);
  807.                                                         LCD1602_Show_dat(1,1,table5[1]);
  808.                                                         LCD1602_Show_dat(2,1,table5[2]);
  809.                                                         LCD1602_Show_dat(3,1,table5[3]);
  810.                                                         LCD1602_Show_dat(4,1,table5[4]);
  811.                                                         LCD1602_Show_dat(5,1,table5[5]);
  812.                                                         LCD1602_Show_dat(6,1,table5[6]);
  813.                                                         LCD1602_Show_dat(7,1,table5[7]);
  814.                                                         LCD1602_Show_dat(8,1,table5[8]);
  815.                                                         LCD1602_Show_dat(9,1,table5[9]);
  816.                                                         LCD1602_Show_dat(0xa,1,table5[10]);
  817.                                                         LCD1602_Show_dat(0xb,1,table5[11]);
  818.                                                         LCD1602_Show_dat(0xc,1,table5[12]);
  819.                                                         LCD1602_Show_dat(0xd,1,table5[13]);
  820.                                                         LCD1602_Show_dat(0xe,1,table5[14]);
  821.                                                         LCD1602_Show_dat(0xf,1,table5[15]);
  822. }


  823. void show8()
  824.         
  825. {
  826.                                                                 LCD1602_Show_dat(0,0,' ');
  827.                                                         LCD1602_Show_dat(1,0,' ');
  828.                                                         LCD1602_Show_dat(2,0,' ');
  829.                                                         LCD1602_Show_dat(3,0,'I');
  830.                                                         LCD1602_Show_dat(4,0,'D');
  831.                                                         LCD1602_Show_dat(5,0,':');
  832.                                                         LCD1602_Show_dat(6,0,lcd[g_ucTempbufid[0]/16]);
  833.                                                         LCD1602_Show_dat(7,0,lcd[g_ucTempbufid[0]%16]);
  834.                                                         LCD1602_Show_dat(8,0,lcd[g_ucTempbufid[1]/16]);
  835.                                                         LCD1602_Show_dat(9,0,lcd[g_ucTempbufid[1]%16]);
  836.                                                         LCD1602_Show_dat(0xa,0,lcd[g_ucTempbufid[2]/16]);
  837.                                                         LCD1602_Show_dat(0xb,0,lcd[g_ucTempbufid[2]%16]);
  838.                                                         LCD1602_Show_dat(0xc,0,lcd[g_ucTempbufid[3]/16]);
  839.                                                         LCD1602_Show_dat(0xd,0,lcd[g_ucTempbufid[3]%16]);
  840.                                                         LCD1602_Show_dat(0xe,0,' ');
  841.                                                         LCD1602_Show_dat(0xf,0,' ');

  842.                                                         LCD1602_Show_dat(0,1,table8[0]);
  843.                                                         LCD1602_Show_dat(1,1,table8[1]);
  844.                                                         LCD1602_Show_dat(2,1,table8[2]);
  845.                                                         LCD1602_Show_dat(3,1,table8[3]);
  846.                                                         LCD1602_Show_dat(4,1,table8[4]);
  847.                                                         LCD1602_Show_dat(5,1,table8[5]);
  848.                                                         LCD1602_Show_dat(6,1,table8[6]);
  849.                                                         LCD1602_Show_dat(7,1,table8[7]);
  850.                                                         LCD1602_Show_dat(8,1,table8[8]);
  851.                                                         LCD1602_Show_dat(9,1,table8[9]);
  852.                                                         LCD1602_Show_dat(0xa,1,table8[10]);
  853.                                                         
  854.                                                         if((360-kg_flag)/2>=100)
  855.                                                         {
  856.                                                                 LCD1602_Show_dat(0xb,1,0x30+(360-kg_flag)/2/100);
  857.                                                                 LCD1602_Show_dat(0xc,1,0x30+(360-kg_flag)/2/10%10);
  858.                                                                 LCD1602_Show_dat(0xd,1,0x30+(360-kg_flag)/2%10);
  859.                                                         }
  860.                                                         if((360-kg_flag)/2>=10 && (360-kg_flag)/2<100)
  861.                                                         {
  862.                                                                 LCD1602_Show_dat(0xb,1,' ');
  863.                                                                 LCD1602_Show_dat(0xc,1,0x30+(360-kg_flag)/2/10%10);
  864.                                                                 LCD1602_Show_dat(0xd,1,0x30+(360-kg_flag)/2%10);
  865.                                                         }
  866.                                                         else if((360-kg_flag)/2<10 )
  867.                                                         {
  868.                                                                 LCD1602_Show_dat(0xb,1,' ');
  869.                                                                 LCD1602_Show_dat(0xc,1,' ');
  870.                                                                 LCD1602_Show_dat(0xd,1,0x30+(360-kg_flag)/2%10);
  871.                                                         }

  872.                                                         LCD1602_Show_dat(0xe,1,table8[14]);
  873.                                                         LCD1602_Show_dat(0xf,1,table8[15]);
  874. }
復制代碼


評分

參與人數 2黑幣 +110 收起 理由
王者不可阻擋 + 10 共享資料的黑幣獎勵!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2018-12-25 01:52 | 只看該作者
補全源碼工程 原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

板凳
ID:407977 發表于 2018-12-29 19:14 | 只看該作者
admin 發表于 2018-12-25 01:52
補全源碼工程 原理圖或者詳細說明一下電路連接即可獲得100+黑幣

這么有錢的嗎
回復

使用道具 舉報

地板
ID:24685 發表于 2020-8-27 10:14 | 只看該作者
思路清晰
回復

使用道具 舉報

5#
ID:730105 發表于 2020-9-8 19:04 | 只看該作者
有原理圖等其它一些材料嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一本 | 亚洲一区中文字幕 | 久久久精品网站 | 日本免费一区二区三区视频 | 四季久久免费一区二区三区四区 | 99re国产视频 | 国产美女网站 | 日本视频免费 | 国产精品久久久久久婷婷天堂 | 欧美精品91爱爱 | 男女下面一进一出网站 | 久久久久久久久久久久一区二区 | 日本免费一区二区三区 | 亚洲成人一区 | 欧美亚洲视频在线观看 | 国产精品成人一区二区 | 国产精品不卡 | 91最新在线视频 | 久草新在线| 亚洲精品在线视频 | 日本电影韩国电影免费观看 | 精品av| 亚洲一区二区三区在线 | 黄色成人在线网站 | 亚洲精品无人区 | av黄色在线| 欧美一区二区三区日韩 | 日韩一区二区三区在线视频 | 自拍偷拍亚洲欧美 | 免费观看www7722午夜电影 | 成人在线视频一区 | 久草网免费 | 久久国产精品亚洲 | 久久国产精品一区二区三区 | 精品国产亚洲一区二区三区大结局 | 成人在线一区二区三区 | 成人欧美一区二区三区在线观看 | 亚洲视频免费在线观看 | 欧美视频区 | 91九色在线观看 | 区一区二在线观看 |