找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3670|回复: 3
打印 上一主题 下一主题
收起左侧

单片机模拟LCD12864 Proteus仿真及源程序 学习MCU编程作品

[复制链接]
跳转到指定楼层
楼主
今天写了一个关于12864类似于的程序,现在贴出来大家共同学习!
   上次在论坛里也看过类似的一个程序,他没有用上E2PROm,这一次我用上了!也是一个山寨的作品吧,哈哈!
   程序里实现了修改密码、取、存、和查询的功能。在仿真上,出现一些小问题,文中有提过,现在就不多说了。程序虽然不是很好,不过也适合我们初学者学习学者,哈哈!!




仿真及程序下载: 仿真程序 仅供参考.7z (102.56 KB, 下载次数: 45)


问题解决:
问:楼主出来解释下,为什么我存进去的退了之后就没了呢,坑爹啊
答:都说了如果你每次够编译了第一句,I2C 就初始化一次,你肯定会把初始为0,如果你想保存,你摆第一句注释了再 编译。效果肯定不一样!还有一点,我不保证我的程序是完全正确的,我贴文出来是给大家一个共同学习的平台!大家都是一个求学习的同伴,说话语气客气点,我刚刚发现程序有问题,我改正后会再重复,请各位朋友注意更新!  哈哈,写这个程序时是一天写好,写好了就想和大家分享,所以有错漏,希望大家见谅见谅

单片机模拟源程序如下:
  1. /*****************************************************************************************************
  2. *          作者:Ken                                   *
  3. *        日期:2012,8,19                           *
  4. *   功能:                                                 *
  5. *   注意:1.由于是软件仿真的原因,每次仿真时只有卡1在断电后完全正确,其他卡断电后可能会在输入密码时          *
  6. *                   出现密码错误。           *
  7. *                  2.刚开始我想实现利用定时器实现操作倒计时,但多次试验后都没有正常工作,希望有兴趣的朋友试试  *
  8. *                  3.其实还有很多的功能可以实现,例如在取时任意取,操作倒计时等,大家有机会可以做做,          *
  9. *                          大家共同进步。
  10. *                             *
  11. *                       *
  12. ******************************************************************************************************/
  13. #include<main.h>                           
  14. #include<i2c.h>
  15. #include<12864.h>
  16. #include<font.h>
  17. #include<key.h>
  18. #include<ffont.h>

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

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

  22. typedef struct
  23. {
  24.         uchar codes[PASSWORD_NUM];         //密码1
  25.          uint money;
  26. }PASSWORD ;

  27. uchar ka_flag=0;           //判断卡号
  28. bit password_flag=0;
  29. uchar deal_flag=0;          //卡相关操作
  30. bit new_password_flag=0;   //新密码正确性标志位
  31. bit qukuan_flag=0;                     //存标志

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


  33. void soft_reset(void)
  34. {
  35.    ((void (code *) (void)) 0x0000) ();

  36. }



  37. /***
  38. *******延时1Ms函数
  39. ***/
  40. void delay(uint x)
  41. {
  42.         uint m,n;
  43.         for(m=x;m>0;m--)
  44.         for(n=110;n>0;n--);
  45. }

  46. /***
  47. *******蜂鸣器函数
  48. ****/
  49. void buzzer()
  50. {
  51.         beep=0;
  52.         delay(100);
  53.         beep=1;
  54. }


  55. /***
  56. ******密码对比函数
  57. *****返回值:1 密码错误
  58.          返回值:0 密码正确
  59. ***/
  60. bit password_check(uchar *buf1,uchar *buf2)
  61. {
  62.         uchar i;
  63.         for(i=0;i<PASSWORD_NUM;i++)
  64.         {
  65.                 if( buf1[i] != buf2[i] )
  66.                 {
  67.                         return 1;
  68.                 }
  69.         }
  70.         return 0;
  71. }

  72. /*****
  73. *******显示函数
  74. *****/
  75. void display(uint MONey)
  76. {
  77.         uchar date[5];
  78.         lcd_hanzi_str(1,1,nideyue,5);
  79.         date[0]=MONey/10000%10;
  80.         date[1]=MONey/1000%10;
  81.         date[2]=MONey/100%10;
  82.         date[3]=MONey/10%10;
  83.         date[4]=MONey%10;        
  84.         lcd_ch(2,4,num+16*date[0]);
  85.         lcd_ch(2,5,num+16*date[1]);
  86.         lcd_ch(2,6,num+16*date[2]);
  87.         lcd_ch(2,7,num+16*date[3]);
  88.         lcd_ch(2,8,num+16*date[4]);
  89.         lcd_hanzi(2,5,yuan);
  90.         lcd_hanzi_str(3,2,anjinhaotuichu,7);
  91.         while( key_leave==1);

  92.         buzzer();

  93. }


  94. /***
  95. ******密码输入函数
  96. ***/
  97. void password_input(uchar *date )
  98. {
  99.         uchar count;
  100.         char key_val;

  101.         lcd_clear_scr();
  102.         lcd_hanzi_str(0,0,qingshurumima,7);
  103.         lcd_ch_str(2,4,hengxian,6);
  104.         lcd_hanzi_str(3,3,anjinhaoqueren,5);
  105.         count=0;
  106.         while( count<PASSWORD_NUM )
  107.         {
  108.                 key_val=key();
  109.                 if(key_val == -1)
  110.                         continue;
  111.                         

  112.                 else if( (key_val>=0)&&(key_val<=9) )
  113.                 {
  114.                         buzzer();
  115.                         date[count]=key_val;
  116.                         lcd_ch(2,4+count,xinghao);
  117.                         count++;        
  118.                 }                        
  119.         }
  120.         while( key() != KEY_ENTER);
  121.         buzzer();
  122. }


  123. /***
  124. ******存函数
  125. ******说明:user:用户名
  126. ***/
  127. void Cunkuan(uchar user )
  128. {
  129.         ulong ac=0;
  130.         lcd_clear_scr();
  131.         lcd_hanzi_str(2,0,qingxuanzequchejine,8);
  132.         delay(1000);
  133.         lcd_clear_scr();
  134.         lcd_ch_str(0,0,yibai,3);
  135.         lcd_ch_str(0,13,erbai,3);
  136.         lcd_ch_str(3,0,yiqian,4);
  137.         lcd_ch_str(3,13,wubai,3);
  138.         while( (k5!=0)&&(k6!=0)&&(k7!=0)&&(k8!=0) );
  139.         buzzer();
  140.         while(1)
  141.         {
  142.                 if(k5==0)
  143.                 {
  144.                         delay(2);
  145.                         if(k5==0)
  146.                         {
  147.                                 while(!k5);
  148.                                 ac+=200;
  149.                         }        
  150.                 }
  151.                 if(k6==0)
  152.                 {
  153.                         delay(2);
  154.                         if(k6==0)
  155.                         {
  156.                                 while(!k6);
  157.                                 ac+=500;
  158.                         }
  159.                 }
  160.                 if(k7==0)
  161.                 {
  162.                         delay(2);
  163.                         if(k7==0)
  164.                         {
  165.                                 while(!k7);
  166.                                 ac+=1000;
  167.                         }
  168.                 }
  169.                 if(k8==0)
  170.                 {
  171.                         delay(2);
  172.                         if(k8==0)
  173.                         {
  174.                                 while(!k8);
  175.                                 ac+=100;
  176.                         }
  177.                 }
  178.                 //存出来
  179.                 switch(user)
  180.                 {
  181.                         case 1:
  182.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  183.                                 ac=ac+password1.money;
  184.                                 password1.money=ac;
  185.                                 if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )
  186.                                         qukuan_flag=1;                //取成功
  187.                                 else
  188.                                         qukuan_flag=0;
  189.                                 ac=0;
  190.                                 break;
  191.                         case 2:
  192.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                 //卡1
  193.                                 ac=ac+password2.money;
  194.                                 password2.money=ac;
  195.                                 if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )
  196.                                         qukuan_flag=1;                //取成功
  197.                                 else
  198.                                         qukuan_flag=0;
  199.                                 ac=0;
  200.                                 break;
  201.                         case 3:
  202.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                 //卡1
  203.                                 ac=ac+password3.money;
  204.                                 password3.money=ac;
  205.                                 if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )
  206.                                         qukuan_flag=1;                //取成功
  207.                                 else
  208.                                         qukuan_flag=0;
  209.                                 ac=0;
  210.                                 break;
  211.                         case 4:
  212.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                 //卡1
  213.                                 ac=ac+password4.money;
  214.                                 password4.money=ac;
  215.                                 if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )
  216.                                         qukuan_flag=1;                //取成功
  217.                                 else
  218.                                         qukuan_flag=0;
  219.                                 ac=0;
  220.                                 break;
  221.                                           
  222.                 }
  223.                 lcd_clear_scr();
  224.                 if(qukuan_flag==1)
  225.                 {
  226.                         lcd_hanzi_str(1,1,caozuochenggong,5);
  227.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  228.                 }
  229.                 else
  230.                 {
  231.                         lcd_hanzi_str(1,1,caozuoshibai,5);
  232.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  233.                 }
  234.                 while(key_leave!=0);
  235.                         buzzer();
  236.                 break;
  237.                                 
  238.         }        
  239. }

  240. /***
  241. ******取函数
  242. ******说明:user:用户名
  243. ***/
  244. void Qukuan(uchar user )
  245. {
  246.         int ac=0;
  247.         lcd_clear_scr();
  248.         lcd_hanzi_str(2,0,qukuanjine,8);
  249.         delay(1000);
  250.         lcd_clear_scr();
  251.         lcd_ch_str(0,0,yibai,3);
  252.         lcd_ch_str(0,13,erbai,3);
  253.         lcd_ch_str(3,0,yiqian,4);
  254.         lcd_ch_str(3,13,wubai,3);
  255.         while( (k5!=0)&&(k6!=0)&&(k7!=0)&&(k8!=0) );
  256.         buzzer();
  257.         while(1)
  258.         {
  259.                 if(k5==0)
  260.                 {
  261.                         delay(2);
  262.                         if(k5==0)
  263.                         {
  264.                                 while(!k5);
  265.                                 ac=ac-200;
  266.                         }        
  267.                 }
  268.                 if(k6==0)
  269.                 {
  270.                         delay(2);
  271.                         if(k6==0)
  272.                         {
  273.                                 while(!k6);
  274.                                 ac=ac-500;
  275.                         }
  276.                 }
  277.                 if(k7==0)
  278.                 {
  279.                         delay(2);
  280.                         if(k7==0)
  281.                         {
  282.                                 while(!k7);
  283.                                 ac=ac-1000;
  284.                         }
  285.                 }
  286.                 if(k8==0)
  287.                 {
  288.                         delay(2);
  289.                         if(k8==0)
  290.                         {
  291.                                 while(!k8);
  292.                                 ac=ac-100;
  293.                         }
  294.                 }
  295.                 ac=-ac;
  296.                 //存出来
  297.                 switch(user)
  298.                 {
  299.                         case 1:
  300.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  301.                                 ac=password1.money-ac;
  302.                                 //        余量不足100,禁止操作
  303.                                 if(ac<100)
  304.                                 {
  305.                                         lcd_clear_scr();
  306.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  307.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  308.                                         break;
  309.                                 }
  310.                                 password1.money=ac;
  311.                                 if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )
  312.                                         qukuan_flag=1;                //取成功
  313.                                 else
  314.                                         qukuan_flag=0;

  315.                                 ac=0;
  316.                                 break;
  317.                         case 2:
  318.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                 //卡1
  319.                                 ac=password2.money-ac;
  320.                                 //        余量不足100,禁止操作
  321.                                 if(ac<100)
  322.                                 {
  323.                                         lcd_clear_scr();
  324.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  325.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  326.                                         break;
  327.                                 }
  328.                                 password2.money=ac;
  329.                                 if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )
  330.                                         qukuan_flag=1;                //取成功
  331.                                 else
  332.                                         qukuan_flag=0;
  333.                                 ac=0;
  334.                                 break;
  335.                         case 3:
  336.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                 //卡1
  337.                                 ac=password3.money-ac;
  338.                                 //        余量不足100,禁止操作
  339.                                 if(ac<100)
  340.                                 {
  341.                                         lcd_clear_scr();
  342.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  343.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  344.                                         break;
  345.                                 }
  346.                                 password3.money=ac;
  347.                                 if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )
  348.                                         qukuan_flag=1;                //取成功
  349.                                 else
  350.                                         qukuan_flag=0;
  351.                                 ac=0;
  352.                                 break;
  353.                         case 4:
  354.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                 //卡1
  355.                                 ac=password4.money-ac;
  356.                                 //        余量不足100,禁止操作
  357.                                 if(ac<100)
  358.                                 {
  359.                                         lcd_clear_scr();
  360.                                         lcd_hanzi_str(1,1,yuebuzu,6);
  361.                                         lcd_hanzi_str(1,2,jinzhicaozuo,5);        
  362.                                         break;
  363.                                 }
  364.                                 password4.money=ac;
  365.                                 if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )
  366.                                         qukuan_flag=1;                //取成功
  367.                                 else
  368.                                         qukuan_flag=0;
  369.                                 ac=0;
  370.                                 break;
  371.                                           
  372.                 }
  373.                 lcd_clear_scr();
  374.                 if(qukuan_flag==1)                         //操作成功!
  375.                 {
  376.                         lcd_hanzi_str(1,1,caozuochenggong,5);        
  377.                         lcd_hanzi_str(2,1,anjinhaotuichu,8);
  378.                 }
  379.                 else
  380.                 {
  381.                         lcd_hanzi_str(1,1,caozuoshibai,5);
  382.                         lcd_hanzi_str(2,1,anjinhaotuichu,7);        
  383.                 }
  384.                 while(key_leave!=0);
  385.                 buzzer();
  386.                 break;                        
  387.         }        
  388. }
  389. /***
  390. ******重设密码的地址和
  391. ***/
  392. void set_eeprom_init()
  393. {        
  394.         uchar ad=0;
  395.         for(ad=0;ad<6;ad++)
  396.         {
  397.                 password4.codes[ad]=buf[ad];
  398.         }
  399.         I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD));

  400.         for(ad=0;ad<6;ad++)
  401.         {
  402.                 password1.codes[ad]=buf[ad];
  403.         }
  404.         I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD));
  405.         for(ad=0;ad<6;ad++)
  406.         {
  407.                 password2.codes[ad]=buf[ad];
  408.         }
  409.         I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD));
  410.         for(ad=0;ad<6;ad++)
  411.         {
  412.                 password3.codes[ad]=buf[ad];
  413.         }
  414.         I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD));               
  415. }

  416. /***
  417. ******重设密码函数
  418. ******说明:user:用户名
  419. ***/
  420. void input_new_password(uchar user)
  421. {
  422.                 while(1)
  423.                 {
  424.                         //第一次输入密码
  425.                         password_input(buf);                                          
  426.                         delay(50);
  427.                         lcd_clear_scr();
  428.                         lcd_hanzi_str(2,1,set_again,6);
  429.                         delay(1000);
  430.                         lcd_clear_scr();
  431.                         //第二次输入密码
  432.                         switch(user)
  433.                         {
  434.                                 case 1:
  435.                                            password_input(password1.codes);                                   //第二次输入密码
  436.                                            if( !(password_check(buf,password1.codes) )        )          //判断密码正确性
  437.                                            {
  438.                                                            if(        !I2C_write_buf(PASSWORD_ADD,(uchar *)&password1,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  439.                                                         {
  440.                                                                    new_password_flag=1;   //重设密码成功
  441.                                                         }
  442.                                                         else
  443.                                                            new_password_flag=0;          //重设密码失败
  444.                                            }
  445.                                            else
  446.                                                    // 设置密码不成功
  447.                                                    new_password_flag=0;
  448.                                            break;
  449.                                 case 2:
  450.                                            password_input(password2.codes);                                   //第二次输入密码
  451.                                            if( !(password_check(buf,password2.codes) )        )          //密码正确
  452.                                            {
  453.                                                            if(        !I2C_write_buf(PASSWORD_ADD1,(uchar *)&password2,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  454.                                                         {
  455.                                                                    new_password_flag=1;
  456.                                                         }
  457.                                                         else
  458.                                                            new_password_flag=0;
  459.                                            }
  460.                                            else
  461.                                                    // 设置密码不成功
  462.                                                    new_password_flag=0;
  463.                                                 break;
  464.                                 case 3:
  465.                                            password_input(password3.codes);                                   //第二次输入密码
  466.                                            if( !(password_check(buf,password3.codes) )        )          //密码正确
  467.                                            {
  468.                                                            if(        !I2C_write_buf(PASSWORD_ADD2,(uchar *)&password3,sizeof(PASSWORD)) )//判断写入I2C信息是否成功
  469.                                                         {
  470.                                                                    new_password_flag=1;
  471.                                                         }
  472.                                                         else
  473.                                                            new_password_flag=0;
  474.                                            }
  475.                                            else
  476.                                                    // 设置密码不成功
  477.                                                    new_password_flag=0;
  478.                                                 break;
  479.                                 case 4:
  480.                                            password_input(password4.codes);                                   //第二次输入密码
  481.                                            if( !(password_check(buf,password4.codes) )        )          //密码正确
  482.                                            {
  483.                                                            if(        !I2C_write_buf(PASSWORD_ADD3,(uchar *)&password4,sizeof(PASSWORD)) )           //判断写入I2C信息是否成功
  484.                                                         {
  485.                                                                    new_password_flag=1;
  486.                                                         }
  487.                                                         else
  488.                                                            new_password_flag=0;
  489.                                            }
  490.                                            else
  491.                                                    // 设置密码不成功
  492.                                                    new_password_flag=0;
  493.                                            break;
  494.                         }
  495.                         //两次输入密码正确处理
  496.                         if(new_password_flag==1)
  497.                         {
  498.                         
  499.                                 lcd_clear_scr();
  500.                                 lcd_hanzi_str(2,1,set_success,8);                //设置密码成功!
  501.                                 delay(1000);
  502.                                 break;
  503.                         }
  504.                
  505.                         //两次输入密码不一样处理
  506.                         else
  507.                         {
  508.                                 lcd_clear_scr();
  509.                                 lcd_hanzi_str(2,1,set_fail,7);                           //显示密码错误        
  510.                         }
  511.                  }
  512. }

  513. /****
  514. ********  密码处理函数
  515. ******* 说明:user为用户名
  516. *****/

  517. void password_deal(uchar user)
  518. {
  519.         ulong T_money;
  520.         while(1)
  521.         {
  522.                 //  1.读入密码,做成判断
  523.                 switch(user)
  524.                 {
  525.                         case 1:
  526.                                 I2C_read_buf(PASSWORD_ADD,(uchar*)&password1,sizeof(PASSWORD));                 //卡1
  527.                                 T_money=password1.money;
  528.                                 if(password_check(buf,password1.codes))
  529.                                         password_flag=0;                                        //密码错误
  530.                                 else
  531.                                         password_flag=1;                                        //密码正确
  532.                                  break;        
  533.                         case 2:
  534.                                 I2C_read_buf(PASSWORD_ADD1,(uchar*)&password2,sizeof(PASSWORD));                   //卡2
  535.                                 T_money=password2.money;
  536.                                 if(password_check(buf,password2.codes))
  537.                                         password_flag=0;                                        //密码错误
  538.                                 else
  539.                                         password_flag=1;                                        //密码正确
  540.                                 break;
  541.                         case 3:
  542.                                 I2C_read_buf(PASSWORD_ADD2,(uchar*)&password3,sizeof(PASSWORD));                  //卡3
  543.                                 T_money=password3.money;
  544.                                 if(password_check(buf,password3.codes))
  545.                                         password_flag=0;                                        //密码错误
  546.                                 else
  547.                                         password_flag=1;                                        //密码正确
  548.                                 break;
  549.                         case 4:
  550.                                 I2C_read_buf(PASSWORD_ADD3,(uchar*)&password4,sizeof(PASSWORD));                  //卡4
  551.                                 T_money=password4.money;
  552.                                 if(password_check(buf,password4.codes))
  553.                                         password_flag=0;                                        //密码错误
  554.                                 else
  555.                                         password_flag=1;                                        //密码正确
  556.                                 break;
  557.                         default:        break;                                                                                                                                       
  558.                 }
  559.                 if(password_flag==0)                                                   //密码错误跳出while
  560.                 {
  561.                         lcd_clear_scr();        
  562.                         lcd_hanzi_str(2,2,mimacuowu,4);                           //显示密码错误
  563.                         delay(1500);
  564.                         break;
  565.                 }
  566.                 lcd_clear_scr();
  567.                 lcd_hanzi_str(0,0,cunkuan,2);                           //显示
  568.                 lcd_hanzi_str(0,4,chaxunyue,4);
  569.             lcd_hanzi_str(3,0,qukuan,2);
  570.                 lcd_hanzi_str(3,4,xiugaimima,4);
  571.                
  572.                 //   根据按键选择操作的种类
  573.                 while( (k5==1)&&(k6==1)&&(k7==1)&&(k8==1) )        
  574.                 {
  575.                         if(key_leave==0)
  576.                         {
  577.                                 buzzer();
  578.                                 soft_reset();
  579.                         }
  580.                 }         

  581.                 buzzer();  
  582.                 while(1)
  583.                 {
  584.                         if(key_leave==0)
  585.                         {
  586.                                 delay(2);
  587.                                 if(key_leave==0)
  588.                                 {
  589.                                         while(!key_leave);
  590.                                         break;
  591.                                 }
  592.                         }
  593.                         if(k5==0)
  594.                         {
  595.                                 delay(2);
  596.                                 if(k5==0)
  597.                                 {
  598.                                         while(!k5);
  599.                                         deal_flag=1;                 //查询余量
  600.                                 }        
  601.                         }
  602.                         if(k6==0)
  603.                         {
  604.                                 delay(2);
  605.                                 if(k6==0)
  606.                                 {
  607.                                         while(!k6);
  608.                                         deal_flag=2;                 //修改密码
  609.                                 }
  610.                         }
  611.                         if(k7==0)
  612.                         {
  613.                                 delay(2);
  614.                                 if(k7==0)
  615.                                 {
  616.                                         while(!k7);
  617.                                         deal_flag=3;                 //取
  618.                                 }
  619.                         }
  620.                         if(k8==0)
  621.                         {
  622.                                 delay(2);
  623.                                 if(k8==0)
  624.                                 {
  625.                                         while(!k8);
  626.                                         deal_flag=4;                 //存
  627.                                 }
  628.                         }
  629.                         lcd_clear_scr();
  630.                         /**************具体用户具体操作******************/
  631.                         
  632.                         switch(user)                 //判断用户
  633.                         {
  634.                                 case 1:                        //卡1
  635.                                 {                        
  636.                                         if(deal_flag==1)                        //查询余量
  637.                                         {
  638.                                                 display(T_money);        
  639.                                         }
  640.                                         if(deal_flag==2)                        //修改密码
  641.                                         {
  642.                                                 input_new_password(1) ;
  643.                                         }
  644.                                         if(deal_flag==3)                        //取
  645.                                         {
  646.                                                 Qukuan(1);
  647.                                         }
  648.                                         if(deal_flag==4)                        //存
  649.                                         {
  650.                                                 Cunkuan(1 );
  651.                                         }
  652.                                        
  653.                                 }
  654.                                 break;         
  655.                                 case 2:                        //卡2
  656.                                 {                        
  657.                                         if(deal_flag==1)                        //查询余量
  658.                                         {
  659.                                                 display(T_money);        
  660.                                         }
  661.                                         if(deal_flag==2)                        //修改密码
  662.                                         {
  663.                                                 input_new_password(2) ;
  664.                                         }
  665.                                         if(deal_flag==3)                        //取
  666.                                         {
  667.                                                 Qukuan(2);
  668.                                         }
  669.                                         if(deal_flag==4)                        //存
  670.                                         {
  671.                                                 Cunkuan(2 );
  672.                                         }
  673.                                        
  674.                                 }
  675.                                 break;
  676.                                 case 3:                        //卡2
  677.                                 {                        
  678.                                         if(deal_flag==1)                        //查询余量
  679.                                         {
  680.                                                 display(T_money);        
  681.                                         }
  682.                                         if(deal_flag==2)                        //修改密码
  683.                                         {
  684.                                                 input_new_password(3) ;
  685.                                         }
  686.                                         if(deal_flag==3)                        //取
  687.                                         {
  688.                                                 Qukuan(3);
  689.                                         }
  690.                                         if(deal_flag==4)                        //存
  691.                                         {
  692.                                                 Cunkuan(3);
  693.                                         }
  694.                                        
  695.                                 }
  696.                                 break;
  697.                                 case 4:                        //卡2
  698.                                 {                        
  699.                                         if(deal_flag==1)                        //查询余量
  700.                                         {
  701.                                                 display(T_money);        
  702.                                         }
  703.                                         if(deal_flag==2)                        //修改密码
  704.                                         {
  705.                                                 input_new_password(4) ;
  706.                                         }
  707.                                         if(deal_flag==3)                        //取
  708.                                         {
  709.                                                 Qukuan(4);
  710.                                         }
  711.                                         if(deal_flag==4)                        //存
  712.                                         {
  713.                                                 Cunkuan(4);
  714.                                         }
  715.                                 }
  716.                                 break;
  717.                                 default :break;        
  718.                                 
  719.                         }
  720.                 }
  721.         }
  722. }

  723. void main()
  724. {
  725.         /*******改变这里可以改变初始密码值**************/
  726.          set_eeprom_init();                //不要每次都开启这条语句,不然你设了的新密码没用
  727.         lcd_init();
  728.         lcd_clear_scr();
  729.         lcd_hanzi_str(0,2,hy,4);
  730.         lcd_hanzi_str(1,1,china_bank,6);
  731.         lcd_hanzi_str(3,2,qingcharukapian,6);        
  732.         //////while///////////////////
  733.         //   1.插入卡片
  734.         while( (k1!=0)&&(k2!=0)&&(k3!=0)&&(k4!=0) );
  735.         buzzer();        
  736.         lcd_clear_scr();
  737.         //   2判断卡
  738.         if(k1==0)
  739.         {
  740.                 delay(2);
  741.                 if(k1==0)
  742.                 {
  743.                         ka_flag=1;                 //卡1
  744.                 }        
  745.         }
  746.         if(k2==0)
  747.         {
  748.                 delay(2);
  749.                 if(k2==0)
  750.                 {
  751.                         ka_flag=2;                 //卡2
  752.                 }
  753.         }
  754.         if(k3==0)
  755.         {
  756.                 delay(2);
  757.                 if(k3==0)
  758.                 {
  759.                         ka_flag=4;                 //卡3
  760.                 }
  761.         }
  762.         if(k4==0)
  763.         {
  764.                 delay(2);
  765.                 if(k4==0)
  766.                 {
  767.                         ka_flag=4;                 //卡4
  768.                 }
  769.         }
  770.         //   3.输入密码
  771.         password_input(buf);
  772.         //   4判断密码
  773.         switch(ka_flag)
  774.         {
  775.                 case 1:
  776.                           password_deal(1);break;
  777.                 case 2:
  778.                           password_deal(2);break;
  779.                 case 3:
  780.                           password_deal(3);break;
  781.                 case 4:
  782.                           password_deal(4);break;
  783.         }        
  784. }


复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:105206 发表于 2016-9-9 10:29 | 只看该作者
楼主,非常感谢你的分享,如果加个扫描钱的数字,再加个声音,那非常完美了。
回复

使用道具 举报

板凳
ID:122948 发表于 2018-1-20 12:19 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

地板
ID:176586 发表于 2018-8-4 15:56 | 只看该作者
喜欢,很好!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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