找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2253|回复: 2
收起左侧

模拟ATM取款机的单片机课程设计源码

[复制链接]
ID:325532 发表于 2018-5-8 22:06 | 显示全部楼层 |阅读模式
211005jdzq4f6mzmga6h9d.png

  1. #include<main.h>                                                                                                                                                                          
  2. #include<i2c.h>                                                                                                                                                                                   
  3. #include<12864.h>
  4. #include<font.h>
  5. #include<key.h>
  6. #include<ffont.h>

  7. sbit key_leave=P2^7;                //退出键
  8. sbit beep=P1^7;

  9. uchar buf[PASSWORD_NUM];                //密码暂存器

  10. typedef struct
  11. {
  12.         uchar codes[PASSWORD_NUM];         //密码1
  13.          uint money;
  14. }PASSWORD ;

  15. uchar ka_flag=0;           //判断卡号
  16. bit password_flag=0;
  17. uchar deal_flag=0;          //卡相关操作
  18. bit new_password_flag=0;   //新密码正确性标志位
  19. bit qukuan_flag=0;                     //存款标志

  20. PASSWORD password1,password2,password3,password4;                //定义结构体变量


  21. void soft_reset(void)
  22. {
  23.    ((void (code *) (void)) 0x0000) ();

  24. }



  25. /***
  26. *******延时1Ms函数
  27. ***/
  28. void delay(uint x)
  29. {
  30.         uint m,n;
  31.         for(m=x;m>0;m--)
  32.         for(n=110;n>0;n--);
  33. }

  34. /***
  35. *******蜂鸣器函数
  36. ****/
  37. void buzzer()
  38. {
  39.         beep=0;
  40.         delay(100);
  41.         beep=1;
  42. }


  43. /***
  44. ******密码对比函数
  45. *****返回值:1 密码错误
  46.          返回值:0 密码正确
  47. ***/
  48. bit password_check(uchar *buf1,uchar *buf2)
  49. {
  50.         uchar i;
  51.         for(i=0;i<PASSWORD_NUM;i++)
  52.         {
  53.                 if( buf1 != buf2 )
  54.                 {
  55.                         return 1;
  56.                 }
  57.         }
  58.         return 0;
  59. }
  60. /*****
  61. *******显示函数
  62. *****/
  63. void display(uint MONey)
  64. {
  65.         uchar date[5];
  66.         lcd_hanzi_str(1,1,nideyue,5);
  67.         date[0]=MONey/10000%10;
  68.         date[1]=MONey/1000%10;
  69.         date[2]=MONey/100%10;
  70.         date[3]=MONey/10%10;
  71.         date[4]=MONey%10;        
  72.         lcd_ch(2,4,num+16*date[0]);
  73.         lcd_ch(2,5,num+16*date[1]);
  74.         lcd_ch(2,6,num+16*date[2]);
  75.         lcd_ch(2,7,num+16*date[3]);
  76.         lcd_ch(2,8,num+16*date[4]);
  77.         lcd_hanzi(2,5,yuan);
  78.         lcd_hanzi_str(3,2,anjinhaotuichu,7);
  79.         while( key_leave==1);
  80.         buzzer();
  81. }
  82. /***
  83. ******密码输入函数
  84. ***/
  85. void password_input(uchar *date )
  86. {
  87.         uchar count;
  88.         char key_val;
  89.         lcd_clear_scr();
  90.         lcd_hanzi_str(0,0,qingshurumima,7);
  91.         lcd_ch_str(2,4,hengxian,6);
  92.         lcd_hanzi_str(3,3,anjinhaoqueren,5);
  93.         count=0;
  94.         while( count<PASSWORD_NUM )
  95.         {
  96.                 key_val=key();
  97.                 if(key_val == -1)
  98.                         continue;
  99.                 else if( (key_val>=0)&&(key_val<=9) )
  100.                 {
  101.                         buzzer();
  102.                         date[count]=key_val;
  103.                         lcd_ch(2,4+count,xinghao);
  104.                         count++;        
  105.                 }                        
  106.         }
  107.         while( key() != KEY_ENTER);
  108.         buzzer();
  109. }
  110. /***
  111. ******存款函数
  112. ******说明:user:用户名
  113. ***/
  114. void Cunkuan(uchar user )
  115. {
  116.         ulong ac=0;
  117.         lcd_clear_scr();
  118.         lcd_hanzi_str(2,0,qingxuanzequchejine,8);
  119.         delay(1000);
  120.         lcd_clear_scr();
  121.         lcd_ch_str(0,0,yibai,3);
  122.         lcd_ch_str(0,13,erbai,3);
  123.         lcd_ch_str(3,0,yiqian,4);
  124.         lcd_ch_str(3,13,wubai,3);
  125.         while( (k5!=0)&&(k6!=0)&&(k7!=0)&&(k8!=0) );
  126.         buzzer();
  127.         while(1)
  128.         {
  129.                 if(k5==0)
  130.                 {
  131.                         delay(2);
  132.                         if(k5==0)
  133.                         {
  134.                                 while(!k5);
  135.                                 ac+=200;
  136.                         }        
  137.                 }
  138.                 if(k6==0)
  139.                 {
  140.                         delay(2);
  141.                         if(k6==0)
  142.                         {
  143.                                 while(!k6);
  144.                                 ac+=500;
  145.                         }
  146.                 }
  147.                 if(k7==0)
  148.                 {
  149.                         delay(2);
  150.                         if(k7==0)
  151.                         {
  152.                                 while(!k7);
  153.                                 ac+=1000;
  154.                         }
  155.                 }
  156.                 if(k8==0)
  157.                 {
  158.                         delay(2);
  159.                         if(k8==0)
  160.                         {
  161.                                 while(!k8);
  162.                                 ac+=100;
  163.                         }
  164.                 }
  165.                 //存钱出来
  166.                 switch(user)
  167.                 {
  168.                         case 1:
  169.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  170.                                 ac=ac+password1.money;
  171.                                 password1.money=ac;
  172.                                 if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )
  173.                                         qukuan_flag=1;                //取款成功
  174.                                 else
  175.                                         qukuan_flag=0;
  176.                                 ac=0;
  177.                                 break;
  178.                         case 2:
  179.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                 //卡1
  180.                                 ac=ac+password2.money;
  181.                                 password2.money=ac;
  182.                                 if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )
  183.                                         qukuan_flag=1;                //取款成功
  184.                                 else
  185.                                         qukuan_flag=0;
  186.                                 ac=0;
  187.                                 break;
  188.                         case 3:
  189.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                 //卡1
  190.                                 ac=ac+password3.money;
  191.                                 password3.money=ac;
  192.                                 if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )
  193.                                         qukuan_flag=1;                //取款成功
  194.                                 else
  195.                                         qukuan_flag=0;
  196.                                 ac=0;
  197.                                 break;
  198.                         case 4:
  199.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                 //卡1
  200.                                 ac=ac+password4.money;
  201.                                 password4.money=ac;
  202.                                 if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )
  203.                                         qukuan_flag=1;                //取款成功
  204.                                 else
  205.                                         qukuan_flag=0;
  206.                                 ac=0;
  207.                                 break;
  208.                 }
  209.                 lcd_clear_scr();
  210.                 if(qukuan_flag==1)
  211.                 {
  212.                         lcd_hanzi_str(1,1,caozuochenggong,5);
  213.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  214.                 }
  215.                 else
  216.                 {
  217.                         lcd_hanzi_str(1,1,caozuoshibai,5);
  218.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  219.                 }
  220.                 while(key_leave!=0);
  221.                         buzzer();
  222.                 break;
  223.         }        
  224. }
  225. /***
  226. ******取款函数
  227. ******说明:user:用户名
  228. ***/
  229. void Qukuan(uchar user )
  230. {
  231.         int ac=0;
  232.         lcd_clear_scr();
  233.         lcd_hanzi_str(2,0,qukuanjine,8);
  234.         delay(1000);
  235.         lcd_clear_scr();
  236.         lcd_ch_str(0,0,yibai,3);
  237.         lcd_ch_str(0,13,erbai,3);
  238.         lcd_ch_str(3,0,yiqian,4);
  239.         lcd_ch_str(3,13,wubai,3);
  240.         while( (k5!=0)&&(k6!=0)&&(k7!=0)&&(k8!=0) );
  241.         buzzer();
  242.         while(1)
  243.         {
  244.                 if(k5==0)
  245.                 {
  246.                         delay(2);
  247.                         if(k5==0)
  248.                         {
  249.                                 while(!k5);
  250.                                 ac=ac-200;
  251.                         }        
  252.                 }
  253.                 if(k6==0)
  254.                 {
  255.                         delay(2);
  256.                         if(k6==0)
  257.                         {
  258.                                 while(!k6);
  259.                                 ac=ac-500;
  260.                         }
  261.                 }
  262.                 if(k7==0)
  263.                 {
  264.                         delay(2);
  265.                         if(k7==0)
  266.                         {
  267.                                 while(!k7);
  268.                                 ac=ac-1000;
  269.                         }
  270.                 }
  271.                 if(k8==0)
  272.                 {
  273.                         delay(2);
  274.                         if(k8==0)
  275.                         {
  276.                                 while(!k8);
  277.                                 ac=ac-100;
  278.                         }
  279.                 }
  280.                 ac=-ac;
  281.                 //存钱出来
  282.                 switch(user)
  283.                 {
  284.                         case 1:
  285.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  286.                                 ac=password1.money-ac;
  287.                                 //        余额不足100,禁止操作
  288.                                 if(ac<100)
  289.                                 {
  290.                                         lcd_clear_scr();
  291.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  292.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  293.                                         break;
  294.                                 }
  295.                                 password1.money=ac;
  296.                                 if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )
  297.                                         qukuan_flag=1;                //取款成功
  298.                                 else
  299.                                         qukuan_flag=0;
  300.                                 ac=0;
  301.                                 break;
  302.                         case 2:
  303.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                 //卡1
  304.                                 ac=password2.money-ac;
  305.                                 //        余额不足100,禁止操作
  306.                                 if(ac<100)
  307.                                 {
  308.                                         lcd_clear_scr();
  309.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  310.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  311.                                         break;
  312.                                 }
  313.                                 password2.money=ac;
  314.                                 if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )
  315.                                         qukuan_flag=1;                //取款成功
  316.                                 else
  317.                                         qukuan_flag=0;
  318.                                 ac=0;
  319.                                 break;
  320.                         case 3:
  321.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                 //卡1
  322.                                 ac=password3.money-ac;
  323.                                 //        余额不足100,禁止操作
  324.                                 if(ac<100)
  325.                                 {
  326.                                         lcd_clear_scr();
  327.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  328.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  329.                                         break;
  330.                                 }
  331.                                 password3.money=ac;
  332.                                 if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )
  333.                                         qukuan_flag=1;                //取款成功
  334.                                 else
  335.                                         qukuan_flag=0;
  336.                                 ac=0;
  337.                                 break;
  338.                         case 4:
  339.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                 //卡1
  340.                                 ac=password4.money-ac;
  341.                                 //        余额不足100,禁止操作
  342.                                 if(ac<100)
  343.                                 {
  344.                                         lcd_clear_scr();
  345.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  346.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  347.                                         break;
  348.                                 }
  349.                                 password4.money=ac;
  350.                                 if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )
  351.                                         qukuan_flag=1;                //取款成功
  352.                                 else
  353.                                         qukuan_flag=0;
  354.                                 ac=0;
  355.                                 break;
  356.                 }
  357.                 lcd_clear_scr();
  358.                 if(qukuan_flag==1)                         //操作成功!
  359.                 {
  360.                         lcd_hanzi_str(1,1,caozuochenggong,5);        
  361.                         lcd_hanzi_str(2,1,anjinhaotuichu,8);
  362.                 }
  363.                 else
  364.                 {
  365.                         lcd_hanzi_str(1,1,caozuoshibai,5);
  366.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  367.                 }
  368.                 while(key_leave!=0);
  369.                 buzzer();
  370.                 break;                        
  371.         }        
  372. }
  373. /***
  374. ******重设密码的地址和金钱
  375. ***/
  376. void set_eeprom_init()
  377. {        
  378.         uchar ad=0;
  379.         for(ad=0;ad<6;ad++)
  380.         {
  381.                 password4.codes[ad]=buf[ad];
  382.         }
  383.         I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD));
  384.         for(ad=0;ad<6;ad++)
  385.         {
  386.                 password1.codes[ad]=buf[ad];
  387.         }
  388.         I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD));
  389.         for(ad=0;ad<6;ad++)
  390.         {
  391.                 password2.codes[ad]=buf[ad];
  392.         }
  393.         I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD));
  394.         for(ad=0;ad<6;ad++)
  395.         {
  396.                 password3.codes[ad]=buf[ad];
  397.         }
  398.         I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD));               
  399. }
  400. /***
  401. ******重设密码函数
  402. ******说明:user:用户名
  403. ***/
  404. void input_new_password(uchar user)
  405. {
  406.                 while(1)
  407.                 {
  408.                         //第一次输入密码
  409.                         password_input(buf);                                          
  410.                         delay(50);
  411.                         lcd_clear_scr();
  412.                         lcd_hanzi_str(2,1,set_again,6);
  413.                         delay(1000);
  414.                         lcd_clear_scr();
  415.                         //第二次输入密码
  416.                         switch(user)
  417.                         {
  418.                                 case 1:
  419.                                            password_input(password1.codes);                                   //第二次输入密码
  420.                                            if( !(password_check(buf,password1.codes) )        )          //判断密码正确性
  421.                                            {
  422.                                                            if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  423.                                                         {
  424.                                                                    new_password_flag=1;   //重设密码成功
  425.                                                         }
  426.                                                         else
  427.                                                            new_password_flag=0;          //重设密码失败
  428.                                            }
  429.                                            else
  430.                                                    // 设置密码不成功
  431.                                                    new_password_flag=0;
  432.                                            break;
  433.                                 case 2:
  434.                                            password_input(password2.codes);                                   //第二次输入密码
  435.                                            if( !(password_check(buf,password2.codes) )        )          //密码正确
  436.                                            {
  437.                                                            if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  438.                                                         {
  439.                                                                    new_password_flag=1;
  440.                                                         }
  441.                                                         else
  442.                                                            new_password_flag=0;
  443.                                            }
  444.                                            else
  445.                                                    // 设置密码不成功
  446.                                                    new_password_flag=0;
  447.                                                 break;
  448.                                 case 3:
  449.                                            password_input(password3.codes);                                   //第二次输入密码
  450.                                            if( !(password_check(buf,password3.codes) )        )          //密码正确
  451.                                            {
  452.                                                            if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )//判断写入I2C信息是否成功
  453.                                                         {
  454.                                                                    new_password_flag=1;
  455.                                                         }
  456.                                                         else
  457.                                                            new_password_flag=0;
  458.                                            }
  459.                                            else
  460.                                                    // 设置密码不成功
  461.                                                    new_password_flag=0;
  462.                                                 break;
  463.                                 case 4:
  464.                                            password_input(password4.codes);                                   //第二次输入密码
  465.                                            if( !(password_check(buf,password4.codes) )        )          //密码正确
  466.                                            {
  467.                                                            if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  468.                                                         {
  469.                                                                    new_password_flag=1;
  470.                                                         }
  471.                                                         else
  472.                                                            new_password_flag=0;
  473.                                            }
  474.                                            else
  475.                                                    // 设置密码不成功
  476.                                                    new_password_flag=0;
  477.                                            break;
  478.                         }
  479.                         //两次输入密码正确处理
  480.                         if(new_password_flag==1)
  481.                         {
  482.                                 lcd_clear_scr();
  483.                                 lcd_hanzi_str(2,1,set_success,8);                //设置密码成功!
  484.                                 delay(1000);
  485.                                 break;
  486.                         }
  487.                         //两次输入密码不一样处理
  488.                         else
  489.                         {
  490.                                 lcd_clear_scr();
  491.                                 lcd_hanzi_str(2,1,set_fail,7);                           //显示密码错误        
  492.                         }
  493.                  }
  494. }
  495. /****
  496. ********  密码处理函数
  497. ******* 说明:user为用户名
  498. *****/
  499. void password_deal(uchar user)
  500. {
  501.         ulong T_money;
  502.         while(1)
  503.         {
  504.                 //  1.读入密码,做成判断
  505.                 switch(user)
  506.                 {
  507.                         case 1:
  508.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  509.                                 T_money=password1.money;
  510.                                 if(password_check(buf,password1.codes))
  511.                                         password_flag=0;                                        //密码错误
  512.                                 else
  513.                                         password_flag=1;                                        //密码正确
  514.                                  break;        
  515.                         case 2:
  516.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                   //卡2
  517.                                 T_money=password2.money;
  518.                                 if(password_check(buf,password2.codes))
  519.                                         password_flag=0;                                        //密码错误
  520.                                 else
  521.                                         password_flag=1;                                        //密码正确
  522.                                 break;
  523.                         case 3:
  524.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                  //卡3
  525.                                 T_money=password3.money;
  526.                                 if(password_check(buf,password3.codes))
  527.                                         password_flag=0;                                        //密码错误
  528.                                 else
  529.                                         password_flag=1;                                        //密码正确
  530.                                 break;
  531.                         case 4:
  532.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                  //卡4
  533.                                 T_money=password4.money;
  534.                                 if(password_check(buf,password4.codes))
  535.                                         password_flag=0;                                        //密码错误
  536.                                 else
  537.                                         password_flag=1;                                        //密码正确
  538.                                 break;
  539.                         default:        break;                                                                                                                                       
  540.                 }
  541.                 if(password_flag==0)                                                   //密码错误跳出while
  542.                 {
  543.                         lcd_clear_scr();        
  544.                         lcd_hanzi_str(2,2,mimacuowu,4);                           //显示密码错误
  545.                         delay(1500);
  546.                         break;
  547.                 }
  548.                 lcd_clear_scr();
  549.                 lcd_hanzi_str(0,0,cunkuan,2);                           //显示
  550.                 lcd_hanzi_str(0,4,chaxunyue,4);
  551.             lcd_hanzi_str(3,0,qukuan,2);
  552.                 lcd_hanzi_str(3,4,xiugaimima,4);
  553.                 //   根据按键选择操作的种类
  554.                 while( (k5==1)&&(k6==1)&&(k7==1)&&(k8==1) )        
  555.                 {
  556.                         if(key_leave==0)
  557.                         {
  558.                                 buzzer();
  559.                                 soft_reset();
  560.                         }
  561.                 }         
  562.                 buzzer();  
  563.                 while(1)
  564.                 {
  565.                         if(key_leave==0)
  566.                         {
  567.                                 delay(2);
  568.                                 if(key_leave==0)
  569.                                 {
  570.                                         while(!key_leave);
  571.                                         break;
  572.                                 }
  573.                         }
  574.                         if(k5==0)
  575.                         {
  576.                                 delay(2);
  577.                                 if(k5==0)
  578.                                 {
  579.                                         while(!k5);
  580.                                         deal_flag=1;                 //查询余额
  581.                                 }        
  582.                         }
  583.                         if(k6==0)
  584.                         {
  585.                                 delay(2);
  586.                                 if(k6==0)
  587.                                 {
  588.                                         while(!k6);
  589.                                         deal_flag=2;                 //修改密码
  590.                                 }
  591.                         }
  592.                         if(k7==0)
  593.                         {
  594.                                 delay(2);
  595.                                 if(k7==0)
  596.                                 {
  597.                                         while(!k7);
  598.                                         deal_flag=3;                 //取款
  599.                                 }
  600.                         }
  601.                         if(k8==0)
  602.                         {
  603.                                 delay(2);
  604.                                 if(k8==0)
  605.                                 {
  606.                                         while(!k8);
  607.                                         deal_flag=4;                 //存款
  608.                                 }
  609.                         }
  610.                         lcd_clear_scr();
  611.                         /**************具体用户具体操作******************/
  612.                         switch(user)                 //判断用户
  613.                         {
  614.                                 case 1:                        //卡1
  615.                                 {                        
  616.                                         if(deal_flag==1)                        //查询余额
  617.                                         {
  618.                                                 display(T_money);        
  619.                                         }
  620.                                         if(deal_flag==2)                        //修改密码
  621.                                         {
  622.                                                 input_new_password(1) ;
  623.                                         }
  624.                                         if(deal_flag==3)                        //取款
  625.                                         {
  626.                                                 Qukuan(1);
  627.                                         }
  628.                                         if(deal_flag==4)                        //存款
  629.                                         {
  630.                                                 Cunkuan(1 );
  631.                                         }
  632.                                 }
  633.                                 break;         
  634.                                 case 2:                        //卡2
  635.                                 {                        
  636.                                         if(deal_flag==1)                        //查询余额
  637.                                         {
  638.                                                 display(T_money);        
  639.                                         }
  640.                                         if(deal_flag==2)                        //修改密码
  641.                                         {
  642.                                                 input_new_password(2) ;
  643.                                         }
  644.                                         if(deal_flag==3)                        //取款
  645.                                         {
  646.                                                 Qukuan(2);
  647.                                         }
  648.                                         if(deal_flag==4)                        //存款
  649.                                         {
  650.                                                 Cunkuan(2 );
  651.                                         }
  652.                                 }
  653.                                 break;
  654.                                 case 3:                        //卡2
  655.                                 {                        
  656.                                         if(deal_flag==1)                        //查询余额
  657.                                         {
  658.                                                 display(T_money);        
  659.                                         }
  660.                                         if(deal_flag==2)                        //修改密码
  661.                                         {
  662.                                                 input_new_password(3) ;
  663.                                         }
  664.                                         if(deal_flag==3)                        //取款
  665.                                         {
  666.                                                 Qukuan(3);
  667.                                         }
  668.                                         if(deal_flag==4)                        //存款
  669.                                         {
  670.                                                 Cunkuan(3);
  671.                                         }
  672.                                 }
  673.                                 break;
  674.                                 case 4:                        //卡2
  675.                                 {                        
  676.                                         if(deal_flag==1)                        //查询余额
  677.                                         {
  678.                                                 display(T_money);        
  679.                                         }
  680.                                         if(deal_flag==2)                        //修改密码
  681.                                         {
  682.                                                 input_new_password(4) ;
  683.                                         }
  684.                                         if(deal_flag==3)                        //取款
  685.                                         {
  686.                                                 Qukuan(4);
  687.                                         }
  688.                                         if(deal_flag==4)                        //存款
  689.                                         {
  690.                                                 Cunkuan(4);
  691.                                         }
  692.                                 }
  693.                                 break;
  694.                                 default :break;        
  695.                         }
  696.                 }
  697.         }
  698. }
  699. void main()
  700. {
  701.         /*******改变这里可以改变初始密码值**************/
  702.          set_eeprom_init();                //不要每次都开启这条语句,不然你设了的新密码没用
  703.         lcd_init();
  704.         lcd_clear_scr();
  705.         lcd_hanzi_str(0,2,hy,4);
  706.         lcd_hanzi_str(1,1,china_bank,6);
  707.         lcd_hanzi_str(3,2,qingcharukapian,6);        
  708.         //////while///////////////////
  709.         //   1.插入卡片
  710.         while( (k1!=0)&&(k2!=0)&&(k3!=0)&&(k4!=0) );
  711.         buzzer();        
  712.         lcd_clear_scr();
  713.         //   2判断卡
  714.         if(k1==0)
  715.         {
  716.                 delay(2);
  717.                 if(k1==0)
  718.                 {
  719.                         ka_flag=1;                 //卡1
  720.                 }        
  721.         }
  722.         if(k2==0)
  723.         {
  724.                 delay(2);
  725.                 if(k2==0)
  726.                 {
  727.                         ka_flag=2;                 //卡2
  728.                 }
  729.         }
  730.         if(k3==0)
  731.         {
  732.                 delay(2);
  733.                 if(k3==0)
  734.                 {
  735.                         ka_flag=4;                 //卡3
  736.                 }
  737.         }
  738.         if(k4==0)
  739.         {
  740.                 delay(2);
  741.                 if(k4==0)
  742.                 {
  743.                         ka_flag=4;                 //卡4
  744.                 }
  745.         }
  746.         //   3.输入密码
  747.         password_input(buf);
  748.         //   4判断密码
  749.         switch(ka_flag)
  750.         {
  751.                 case 1:
  752.                           password_deal(1);break;
  753.                 case 2:
  754.                           password_deal(2);break;
  755.                 case 3:
  756.                           password_deal(3);break;
  757.                 case 4:
  758.                           password_deal(4);break;
  759.         }        
  760. }
复制代码


回复

使用道具 举报

ID:646110 发表于 2019-11-23 15:09 | 显示全部楼层
请问能发一下源代码和仿真图吗 急需!864273701@qq.com 必红包感谢!
回复

使用道具 举报

ID:646110 发表于 2019-11-23 15:10 | 显示全部楼层
有源代码和仿真图文件吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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