找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11857|回复: 4
收起左侧

自己做的简单的基于STM32的RFID-RC522门禁系统

[复制链接]
ID:441222 发表于 2018-12-23 13:39 | 显示全部楼层 |阅读模式
IMG_1347.JPG IMG_1346.JPG
  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 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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 | 显示全部楼层
思路清晰
回复

使用道具 举报

ID:730105 发表于 2020-9-8 19:04 | 显示全部楼层
有原理图等其它一些材料吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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