[其他ST产品] STM32与RC522简单公交卡系统的设计

[复制链接]
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:39 | 显示全部楼层 |阅读模式
系统的结构框图 2524663aaaf4bf2cd2.png

评论

———————————————— 版权声明:本文为CSDN博主「物联网小菜鸟一枚」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_69428059/article/details/124455787  发表于 2022-12-28 23:44
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:40 | 显示全部楼层
目前所用到的硬件有RC522,STM32和矩阵键盘,实物图如下:
5431663aaaf5ed53c3.png
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:41 | 显示全部楼层
引脚连接以及相关接口设计
4598263aaafd0aed73.png
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:45 | 显示全部楼层
RC522相关的引脚在我上一篇博客已经说过,请大家点开本博客开头的链接查看,4x4的矩阵键盘相关行我们用到的引脚是PF8,9,10,11,相关列用到的引脚是PF12,13,14,15。
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:46 | 显示全部楼层
按键相关代码如下:

按键初始化函数
  1. void Matrix_ssKey_Pin_Init(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;

  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);

  5.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  6.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;//行按键
  7.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  8.         GPIO_Init(GPIOF,&GPIO_InitStructure);
  9.        
  10.        
  11.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
  12.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//列按键
  13.         GPIO_Init(GPIOF,&GPIO_InitStructure);
  14. }
 楼主| 花间一壶酒sd 发表于 2022-12-27 16:46 | 显示全部楼层
按键扫描函数
  1. int Matrix_Key_Scan(void)
  2. {
  3.         u8 temp = 0;
  4.         int key_val = -1;
  5.        
  6.         GPIO_ResetBits(GPIOF,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);                       
  7.         delay_us(10);

  8.         temp=(GPIO_ReadInputData(GPIOF) >> 8)&0xff;       
  9.        
  10.         if (temp == 0xf0)
  11.         {
  12.                         delay_ms(50);
  13.                         GPIO_ResetBits(GPIOF,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);                       
  14.                         delay_us(10);
  15.                         temp=(GPIO_ReadInputData(GPIOF) >> 8)&0xff;       
  16.                
  17.                         if (temp != 0xf0)
  18.                         {
  19.                                 GPIO_Write(GPIOF,0);
  20.                                 delay_ms(5);
  21.                                 GPIO_Write(GPIOF,(uint16_t)(0xFE << 8));
  22.                                
  23.                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  24.                                 {
  25.                                                 delay_ms(20);

  26.                                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  27.                                                 {
  28.                                                                 temp=((GPIO_ReadInputData(GPIOF) >> 8) & 0XFE);               
  29.                                                                 switch(temp)
  30.                                                                 {
  31.                                                                                 case 0xEE:  key_val = 1;   break;
  32.                                                                                 case 0xDE:  key_val = 2;   break;
  33.                                                                                 case 0xBE:  key_val = 3;   break;
  34.                                                                                 case 0x7E:  key_val = 4;   break;
  35.                                                                                 default:    key_val = -1;   break;
  36.                                                                 }
  37.                                                 }
  38.                                 }
  39.                                
  40.                                 GPIO_Write(GPIOF,0);
  41.                                 delay_ms(5);
  42.                                 GPIO_Write(GPIOF,(uint16_t)(0xFD << 8));
  43.                                
  44.                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0)!= 0XF0)
  45.                                 {
  46.                                                 delay_ms(20);

  47.                                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  48.                                                 {
  49.                                                                 temp=((GPIO_ReadInputData(GPIOF) >> 8) & 0XFD);
  50.                                                                 switch(temp)
  51.                                                                 {
  52.                                                                                 case 0xED:  key_val = 5;   break;
  53.                                                                                 case 0xDD:  key_val = 6;   break;
  54.                                                                                 case 0xBD:  key_val = 7;   break;
  55.                                                                                 case 0x7D:  key_val = 8;   break;
  56.                                                                                 default:    key_val = -1;   break;
  57.                                                                 }
  58.                                                 }
  59.                                 }

  60.                                 GPIO_Write(GPIOF,0);
  61.                                 delay_ms(5);
  62.                                 GPIO_Write(GPIOF,(uint16_t)(0xFB << 8));
  63.                                
  64.                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  65.                                 {
  66.                                                 delay_ms(20);

  67.                                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  68.                                                 {
  69.                                                                 temp=((GPIO_ReadInputData(GPIOF) >> 8) & 0XFB);
  70.                                                                 switch(temp)
  71.                                                                 {
  72.                                                                                 case 0xEB:  key_val = 9;   break;
  73.                                                                                 case 0xDB:  key_val = 10;   break;
  74.                                                                                 case 0xBB:  key_val = 11;   break;
  75.                                                                                 case 0x7B:  key_val = 12;   break;
  76.                                                                                 default:    key_val = -1;   break;
  77.                                                                 }
  78.                                                 }
  79.                                 }

  80.                                 GPIO_Write(GPIOF,0);
  81.                                 delay_ms(5);
  82.                                 GPIO_Write(GPIOF,(uint16_t)(0xF7 << 8));
  83.                                
  84.                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) !=0XF0)
  85.                                 {
  86.                                                 delay_ms(20);

  87.                                                 if(((GPIO_ReadInputData(GPIOF) >> 8) & 0XF0) != 0XF0)
  88.                                                 {
  89.                                                                 temp=((GPIO_ReadInputData(GPIOF) >> 8) & 0XF7);
  90.                                                                 switch(temp)
  91.                                                                 {
  92.                                                                                 case 0xE7:  key_val = 13;   break;
  93.                                                                                 case 0xD7:  key_val = 14;   break;
  94.                                                                                 case 0xB7:  key_val = 15;   break;
  95.                                                                                 case 0x77:  key_val = 16;   break;
  96.                                                                                 default:    key_val = -1;   break;
  97.                                                                 }
  98.                                                 }
  99.                                         }
  100.                                 }
  101.                         }
  102.        
  103.         return key_val;

  104. }
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:33 | 显示全部楼层
软件流程图
678963ac61ce2f626.png
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:34 | 显示全部楼层
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:34 | 显示全部楼层
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:35 | 显示全部楼层
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:36 | 显示全部楼层
调试过程
我最开始设计的功能是将卡号先写好定义在数组里面,可是这样的话就没有了发卡的功能,于是我就想到设置一个空数组,读卡的时候把卡号存进这个数组里面去。随后,我在设置个人信息的功能时遇到了麻烦,我按下一个按键之后,不需要按后面三个按键他就自动跟第一个按键一样了,于是我在代码里找原因,发现原来每一次输入按键的时候都需要重新扫描,否则按键会停留在上一次的值。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:37 | 显示全部楼层
在发卡和个人信息绑定设置完成后,我又要设置挂失和解除挂失功能。这个时候我又用到了一个临时数组,用来临时存放卡号。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:37 | 显示全部楼层
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:38 | 显示全部楼层
当输入的个人信息和相应的卡匹配时,就将卡号存放在临时数组里面。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:39 | 显示全部楼层
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:40 | 显示全部楼层
起初我只考虑了输入正确的情况,没有考虑到输入的信息错误的情况,于是我又小改了一下函数,把if改成了else if 最后如果输入的个人信息都不匹配,则打印出密码错误。

9160763ac631da4b97.png
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:40 | 显示全部楼层
在设计卡的扣款的功能的时候,由于要扣款小数位,最开始我没有想到很好的方法怎么去设置小数位。然后我突然想到一个办法,就是用数据的第十位作为小数位,比如数据100,则实际金额为10.0。根据这个想法,我修改了代码。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:42 | 显示全部楼层
2350263ac638108241.png 将数值块的数据除以10再强制转换为double类型,这样就实现了小数的功能了。不过这样做的坏处就是整体可用金额少了十倍。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:44 | 显示全部楼层
在我本来以为功能都设计的差不多的时候,我又发现了另一个问题,那就是挂失和解除挂失功能的模块,我原先把这块函数写在了读卡成功之后。实际功能为不刷卡时无法进入挂失和解除挂失模式的函数,这与实际情况不符合,我就是因为卡掉了才要进入挂失,你现在要我刷卡,我拿什么刷?于是我就把这块函数写在了读卡之前,这样,即使不刷卡,也能进入卡的挂失和解除挂失功能,更加符合实际情况。
 楼主| 花间一壶酒sd 发表于 2022-12-28 23:45 | 显示全部楼层
相关代码
挂失代码
  1. if(WK_UP==1)//进入挂失和解除挂失模式
  2.         {
  3.                 printf("\r\n进入挂失和解除挂失模式\r\n");
  4.                 printf("\r\n按下S1进入挂失模式,按下S2进入解除挂失模式\r\n");
  5.                 while(1)
  6.                 {
  7.                         key_val = Matrix_Key_Scan();
  8.                         if(key_val > 0 && key_val < 17)
  9.                         {
  10.                                 if(key_val==1)//进入挂失模式
  11.                                 {
  12.                                         printf("\r\n 进入挂失模式\r\n");
  13.                                         printf("\r\n 请输入4位个人信息\r\n");
  14.                                         while(1)
  15.                                         {
  16.                                                 key_val = Matrix_Key_Scan();
  17.                                                 if(key_val > 0 && key_val < 17)//¸个人信息第一位
  18.                                                 {
  19.                                                         if(key_val==1)card_3[0]=1;
  20.                                                         if(key_val==2)card_3[0]=2;
  21.                                                         if(key_val==3)card_3[0]=3;
  22.                                                         if(key_val==4)card_3[0]=4;
  23.                                                         if(key_val==5)card_3[0]=5;
  24.                                                         if(key_val==6)card_3[0]=6;
  25.                                                         if(key_val==7)card_3[0]=7;
  26.                                                         if(key_val==8)card_3[0]=8;
  27.                                                         if(key_val==9)card_3[0]=9;
  28.                                                         if(key_val==10)card_3[0]=0;
  29.                                                         printf("\r\n %d \r\n",card_3[0]);
  30.                                                         if(card_3[0]==0|card_3[0]==1|card_3[0]==2|card_3[0]==3|card_3[0]==4|card_3[0]==5|card_3[0]==6|card_3[0]==7|card_3[0]==8|card_3[0]==9)break;
  31.                                                        
  32.                                                 }
  33.                                         }
  34.                                         delay_ms(10000);
  35.                                        
  36.                                        
  37.                                         while(1)
  38.                                         {
  39.                                                 key_val = Matrix_Key_Scan();
  40.                                                 if(key_val > 0 && key_val < 17)//个人信息第二位
  41.                                                 {
  42.                                                         if(key_val==1)card_3[1]=1;
  43.                                                         if(key_val==2)card_3[1]=2;
  44.                                                         if(key_val==3)card_3[1]=3;
  45.                                                         if(key_val==4)card_3[1]=4;
  46.                                                         if(key_val==5)card_3[1]=5;
  47.                                                         if(key_val==6)card_3[1]=6;
  48.                                                         if(key_val==7)card_3[1]=7;
  49.                                                         if(key_val==8)card_3[1]=8;
  50.                                                         if(key_val==9)card_3[1]=9;
  51.                                                         if(key_val==10)card_3[1]=0;
  52.                                                         printf("\r\n %d \r\n",card_3[1]);
  53.                                                         if(card_3[1]==0|card_3[1]==1|card_3[1]==2|card_3[1]==3|card_3[1]==4|card_3[1]==5|card_3[1]==6|card_3[1]==7|card_3[1]==8|card_3[1]==9)break;
  54.                                                        
  55.                                                 }
  56.                                         }
  57.                                         delay_ms(10000);
  58.                                        
  59.                                        
  60.                                         while(1)
  61.                                         {
  62.                                                 key_val = Matrix_Key_Scan();
  63.                                                 if(key_val > 0 && key_val < 17)//个人信息第三位
  64.                                                 {
  65.                                                         if(key_val==1)card_3[2]=1;
  66.                                                         if(key_val==2)card_3[2]=2;
  67.                                                         if(key_val==3)card_3[2]=3;
  68.                                                         if(key_val==4)card_3[2]=4;
  69.                                                         if(key_val==5)card_3[2]=5;
  70.                                                         if(key_val==6)card_3[2]=6;
  71.                                                         if(key_val==7)card_3[2]=7;
  72.                                                         if(key_val==8)card_3[2]=8;
  73.                                                         if(key_val==9)card_3[2]=9;
  74.                                                         if(key_val==10)card_3[2]=0;
  75.                                                         printf("\r\n %d \r\n",card_3[2]);
  76.                                                         if(card_3[2]==0|card_3[2]==1|card_3[2]==2|card_3[2]==3|card_3[2]==4|card_3[2]==5|card_3[2]==6|card_3[2]==7|card_3[2]==8|card_3[2]==9)break;
  77.                                                        
  78.                                                 }
  79.                                         }
  80.                                         delay_ms(10000);
  81.                                        
  82.                                        
  83.                                         while(1)
  84.                                         {
  85.                                                 key_val = Matrix_Key_Scan();
  86.                                                 if(key_val > 0 && key_val < 17)//个人信息第四位
  87.                                                 {
  88.                                                         if(key_val==1)card_3[3]=1;
  89.                                                         if(key_val==2)card_3[3]=2;
  90.                                                         if(key_val==3)card_3[3]=3;
  91.                                                         if(key_val==4)card_3[3]=4;
  92.                                                         if(key_val==5)card_3[3]=5;
  93.                                                         if(key_val==6)card_3[3]=6;
  94.                                                         if(key_val==7)card_3[3]=7;
  95.                                                         if(key_val==8)card_3[3]=8;
  96.                                                         if(key_val==9)card_3[3]=9;
  97.                                                         if(key_val==10)card_3[3]=0;
  98.                                                         printf("\r\n %d \r\n",card_3[3]);
  99.                                                         if(card_3[3]==0|card_3[3]==1|card_3[3]==2|card_3[3]==3|card_3[3]==4|card_3[3]==5|card_3[3]==6|card_3[3]==7|card_3[3]==8|card_3[3]==9)break;
  100.                                                        
  101.                                                 }
  102.                                         }
  103.                                         delay_ms(10000);
  104.                                        
  105.                                        
  106.                                        
  107.                                         if(((card_3[0]==card[4])&&(card_3[1]==card[5])&&(card_3[2]==card[6])&&(card_3[3]==card[7])))//如果为普通卡的信息
  108.                                                 {//创建一个临时数组来临时保存普通卡的卡号,然后将该卡卡号初始化为0
  109.                                                         card_4[0]=card[0];card[0]=0;
  110.                                                         card_4[1]=card[1];card[1]=0;
  111.                                                         card_4[2]=card[2];card[2]=0;
  112.                                                         card_4[3]=card[3];card[3]=0;
  113.                                                         printf("\r\n 普通卡挂失成功\r\n");
  114.                                                         printf("\r\n 按下S16退出\r\n");
  115.                                                 }
  116.                                                 else if(((card_3[0]==card[12])&&(card_3[1]==card[13])&&(card_3[2]==card[14])&&(card_3[3]==card[15])))//如果为学生卡的信息
  117.                                                 {//创建一个临时数组来临时保存学生卡的卡号,然后将该卡卡号初始化为0
  118.                                                         card_5[0]=card[8];card[8]=0;
  119.                                                         card_5[1]=card[9];card[9]=0;
  120.                                                         card_5[2]=card[10];card[10]=0;
  121.                                                         card_5[3]=card[11];card[11]=0;
  122.                                                         printf("\r\n 学生卡挂失成功\r\n");
  123.                                                         printf("\r\n 按下S16退出\r\n");
  124.                                                 }
  125.                                                 else if(((card_3[0]==card[20])&&(card_3[1]==card[21])&&(card_3[2]==card[22])&&(card_3[3]==card[23])))//如果为老年卡的信息
  126.                                                 {//创建一个临时数组来临时保存老年卡的卡号,然后将该卡卡号初始化为0
  127.                                                         card_6[0]=card[16];card[16]=0;
  128.                                                         card_6[1]=card[17];card[17]=0;
  129.                                                         card_6[2]=card[18];card[18]=0;
  130.                                                         card_6[3]=card[19];card[19]=0;
  131.                                                         printf("\r\n 老年卡挂失成功\r\n");
  132.                                                         printf("\r\n 按下S16退出\r\n");
  133.                                                 }
  134.                                                 else
  135.                                                 {
  136.                                                         printf("\r\n 该信息未绑定公交卡\r\n ");
  137.                                                 }
  138.                                 }
  139.                         }
  140.                         key_val = Matrix_Key_Scan();
  141.                         if(key_val > 0 && key_val < 17)
  142.                         {
  143.                                 if(key_val==2)//进入解除挂失模式
  144.                                 {
  145.                                                         printf("\r\n 进入解除挂失模式\r\n");
  146.                                                         printf("\r\n 请输入4为个人信息\r\n");
  147.                                                         while(1)
  148.                                                         {
  149.                                                                 key_val = Matrix_Key_Scan();
  150.                                                                 if(key_val > 0 && key_val < 17)//个人信息第一位
  151.                                                                 {
  152.                                                                         if(key_val==1)card_3[0]=1;
  153.                                                                         if(key_val==2)card_3[0]=2;
  154.                                                                         if(key_val==3)card_3[0]=3;
  155.                                                                         if(key_val==4)card_3[0]=4;
  156.                                                                         if(key_val==5)card_3[0]=5;
  157.                                                                         if(key_val==6)card_3[0]=6;
  158.                                                                         if(key_val==7)card_3[0]=7;
  159.                                                                         if(key_val==8)card_3[0]=8;
  160.                                                                         if(key_val==9)card_3[0]=9;
  161.                                                                         if(key_val==10)card_3[0]=0;
  162.                                                                         printf("\r\n %d \r\n",card_3[0]);
  163.                                                                         if(card_3[0]==0|card_3[0]==1|card_3[0]==2|card_3[0]==3|card_3[0]==4|card_3[0]==5|card_3[0]==6|card_3[0]==7|card_3[0]==8|card_3[0]==9)break;
  164.                                                        
  165.                                                                 }
  166.                                                         }
  167.                                                         delay_ms(10000);
  168.                                                        
  169.                                                        
  170.                                                         while(1)
  171.                                         {
  172.                                                 key_val = Matrix_Key_Scan();
  173.                                                 if(key_val > 0 && key_val < 17)//个人信息第二位
  174.                                                 {
  175.                                                         if(key_val==1)card_3[1]=1;
  176.                                                         if(key_val==2)card_3[1]=2;
  177.                                                         if(key_val==3)card_3[1]=3;
  178.                                                         if(key_val==4)card_3[1]=4;
  179.                                                         if(key_val==5)card_3[1]=5;
  180.                                                         if(key_val==6)card_3[1]=6;
  181.                                                         if(key_val==7)card_3[1]=7;
  182.                                                         if(key_val==8)card_3[1]=8;
  183.                                                         if(key_val==9)card_3[1]=9;
  184.                                                         if(key_val==10)card_3[1]=0;
  185.                                                         printf("\r\n %d \r\n",card_3[1]);
  186.                                                         if(card_3[1]==0|card_3[1]==1|card_3[1]==2|card_3[1]==3|card_3[1]==4|card_3[1]==5|card_3[1]==6|card_3[1]==7|card_3[1]==8|card_3[1]==9)break;
  187.                                                        
  188.                                                 }
  189.                                         }
  190.                                         delay_ms(10000);
  191.                                        
  192.                                        
  193.                                         while(1)
  194.                                         {
  195.                                                 key_val = Matrix_Key_Scan();
  196.                                                 if(key_val > 0 && key_val < 17)//个人信息第三位
  197.                                                 {
  198.                                                         if(key_val==1)card_3[2]=1;
  199.                                                         if(key_val==2)card_3[2]=2;
  200.                                                         if(key_val==3)card_3[2]=3;
  201.                                                         if(key_val==4)card_3[2]=4;
  202.                                                         if(key_val==5)card_3[2]=5;
  203.                                                         if(key_val==6)card_3[2]=6;
  204.                                                         if(key_val==7)card_3[2]=7;
  205.                                                         if(key_val==8)card_3[2]=8;
  206.                                                         if(key_val==9)card_3[2]=9;
  207.                                                         if(key_val==10)card_3[2]=0;
  208.                                                         printf("\r\n %d \r\n",card_3[2]);
  209.                                                         if(card_3[2]==0|card_3[2]==1|card_3[2]==2|card_3[2]==3|card_3[2]==4|card_3[2]==5|card_3[2]==6|card_3[2]==7|card_3[2]==8|card_3[2]==9)break;
  210.                                                        
  211.                                                 }
  212.                                         }
  213.                                         delay_ms(10000);
  214.                                        
  215.                                        
  216.                                         while(1)
  217.                                         {
  218.                                                 key_val = Matrix_Key_Scan();
  219.                                                 if(key_val > 0 && key_val < 17)//个人信息第四位
  220.                                                 {
  221.                                                         if(key_val==1)card_3[3]=1;
  222.                                                         if(key_val==2)card_3[3]=2;
  223.                                                         if(key_val==3)card_3[3]=3;
  224.                                                         if(key_val==4)card_3[3]=4;
  225.                                                         if(key_val==5)card_3[3]=5;
  226.                                                         if(key_val==6)card_3[3]=6;
  227.                                                         if(key_val==7)card_3[3]=7;
  228.                                                         if(key_val==8)card_3[3]=8;
  229.                                                         if(key_val==9)card_3[3]=9;
  230.                                                         if(key_val==10)card_3[3]=0;
  231.                                                         printf("\r\n %d \r\n",card_3[3]);
  232.                                                         if(card_3[3]==0|card_3[3]==1|card_3[3]==2|card_3[3]==3|card_3[3]==4|card_3[3]==5|card_3[3]==6|card_3[3]==7|card_3[3]==8|card_3[3]==9)break;
  233.                                                        
  234.                                                 }
  235.                                         }
  236.                                         delay_ms(10000);
  237.                                        
  238.                                        
  239.                                         if(((card_3[0]==card[4])&&(card_3[1]==card[5])&&(card_3[2]==card[6])&&(card_3[3]==card[7])))//如果为普通卡的个人信息
  240.                                                 {//将挂失时临时保存的普通卡重新定义
  241.                                                         card[0]=card_4[0];
  242.                                                         card[1]=card_4[1];
  243.                                                         card[2]=card_4[2];
  244.                                                         card[3]=card_4[3];
  245.                                                         printf("\r\n 普通卡解除挂失成功\r\n");
  246.                                                         printf("\r\n 按下S16退出\r\n");
  247.                                                 }
  248.                                                 else if(((card_3[0]==card[12])&&(card_3[1]==card[13])&&(card_3[2]==card[14])&&(card_3[3]==card[15])))//如果为学生卡的个人信息
  249.                                                 {//将挂失时临时保存的学生卡重新定义
  250.                                                         card[8]=card_5[0];
  251.                                                         card[9]=card_5[1];
  252.                                                         card[10]=card_5[2];
  253.                                                         card[11]=card_5[3];
  254.                                                         printf("\r\n 学生卡解除挂失成功\r\n");
  255.                                                         printf("\r\n 按下S16退出\r\n");
  256.                                                 }
  257.                                                 else if(((card_3[0]==card[20])&&(card_3[1]==card[21])&&(card_3[2]==card[22])&&(card_3[3]==card[23])))//如果为老年卡的个人信息
  258.                                                 {//将挂失时临时保存的老年卡重新定义
  259.                                                         card[16]=card_6[0];
  260.                                                         card[17]=card_6[1];
  261.                                                         card[18]=card_6[2];
  262.                                                         card[19]=card_6[3];
  263.                                                         printf("\r\n 老年卡解除挂失成功\r\n");
  264.                                                         printf("\r\n 按下S16退出\r\n");
  265.                                                 }
  266.                                                 else
  267.                                                 {
  268.                                                         printf("\r\n 该个人信息未绑定公交卡\r\n ");
  269.                                                 }
  270.                                 }
  271.                         }
  272.                                 key_val = Matrix_Key_Scan();
  273.                         if(key_val > 0 && key_val < 17)
  274.                         {
  275.                                 if(key_val==16)//按下S16退出挂失和解除挂失功能
  276.                                 {
  277.                                         printf("\r\n 退出挂失和解除挂失功能\r\n");
  278.                                         break;
  279.                                 }
  280.                         }
  281.                        
  282.                 }
  283.         }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

1217

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

99

主题

1217

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部