请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2329|回复: 0

做了个很是简单的计算器

 关闭 [复制链接]

2

主题

3

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2019-6-6 17:56:10 | 显示全部楼层 |阅读模式
  1. /**************************************************************************************[code]/**************************************************************************************
  2. *                              ¾ØÕó°´¼üʵÑé                                                                                                  *
  3. ʵÏÖÏÖÏó£ºÏÂÔسÌÐòºóÊýÂë¹ÜÏÔʾ0£¬°´Ï¾ØÕó°´¼üÉϵİ´¼üÏÔʾ¶ÔÓ¦µÄÊý×Ö
  4.                         S1-S4£º0-3
  5.                         S5-S8£º4-7
  6.                         S9-S12£º8-B
  7.                         S13-S16£ºC-F¡£
  8. ×¢ÒâÊÂÏÈç¹û²»ÏëÈõãÕóÄ£¿éÏÔʾ£¬¿ÉÒÔ½«74HC595Ä£¿éÉϵÄJP595¶Ì½ÓƬ°Îµô¡£                                                                                                                                                                  
  9. ***************************************************************************************/

  10. #include "reg52.h"                         //´ËÎļþÖж¨ÒåÁ˵¥Æ¬»úµÄһЩÌØÊ⹦ÄܼĴæÆ÷

  11. typedef unsigned int u16;          //¶ÔÊý¾ÝÀàÐͽøÐÐÉùÃ÷¶¨Òå
  12. typedef unsigned char u8;

  13. #define GPIO_DIG  P0
  14. #define GPIO_KEY  P1
  15. #define GPIO_LED  P2


  16. sbit LSA=P2^2;
  17. sbit LSB=P2^3;
  18. sbit LSC=P2^4;
  19. sbit s1=P2^0;
  20. sbit s2=P2^1;
  21. sbit s3=P2^5;
  22. sbit s4=P2^6;
  23. sbit s5=P2^7;
  24. sbit k1=P3^1;
  25. sbit k2=P3^0;
  26. sbit k3=P3^2;
  27. sbit k4=P3^3;
  28. u8 KeyValue;//ÓÃÀ´´æ·Å¶ÁÈ¡µ½µÄ¼üÖµ
  29. u8 Value1;
  30. u8 Value2;
  31. u8 ge1;
  32. u8 shi1;
  33. u8 ge2;
  34. u8 shi2;
  35. u8 he;
  36. u8 he1;
  37. u8 he2;
  38. u8 he3;
  39. u8 he4;


  40. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  41.                                                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//ÏÔʾ0~FµÄÖµ

  42. /*******************************************************************************
  43. * º¯ Êý Ãû         : delay
  44. * º¯Êý¹¦ÄÜ                   : ÑÓʱº¯Êý£¬i=1ʱ£¬´óÔ¼ÑÓʱ10us
  45. *******************************************************************************/
  46. void delay(u16 i)
  47. {
  48.         while(i--);       
  49. }

  50. /*******************************************************************************
  51. * º¯ Êý Ãû         : KeyDown
  52. * º¯Êý¹¦ÄÜ                   : ¼ì²âÓа´¼ü°´Ï²¢¶ÁÈ¡¼üÖµ
  53. * Êä    Èë         : ÎÞ
  54. * Êä    ³ö         : ÎÞ
  55. *******************************************************************************/
  56. void KeyDown(void)
  57. {
  58.         char a=0;
  59.         GPIO_KEY=0x0f;
  60.         if(GPIO_KEY!=0x0f)//¶ÁÈ¡°´¼üÊÇ·ñ°´ÏÂ
  61.         {
  62.                 delay(1000);//ÑÓʱ10ms½øÐÐÏû¶¶
  63.                 if(GPIO_KEY!=0x0f)//Ôٴμì²â¼üÅÌÊÇ·ñ°´ÏÂ
  64.                 {       
  65.                         //²âÊÔÁÐ
  66.                         GPIO_KEY=0X0F;
  67.                         switch(GPIO_KEY)
  68.                         {
  69.                                 case(0X07):        KeyValue=0;break;
  70.                                 case(0X0b):        KeyValue=1;break;
  71.                                 case(0X0d): KeyValue=2;break;
  72.                                 case(0X0e):        KeyValue=3;break;
  73.                         }
  74.                         //²âÊÔÐÐ
  75.                         GPIO_KEY=0XF0;
  76.                         switch(GPIO_KEY)
  77.                         {
  78.                                 case(0X70):        KeyValue=KeyValue;break;
  79.                                 case(0Xb0):        KeyValue=KeyValue+4;break;
  80.                                 case(0Xd0): KeyValue=KeyValue+8;break;
  81.                                 case(0Xe0):        KeyValue=KeyValue+12;break;
  82.                                
  83.                         }
  84.                        
  85.                         while((a<50)&&(GPIO_KEY!=0xf0))         //&frac14;ì&sup2;&acirc;°&acute;&frac14;ü&Euml;&Eacute;&Ecirc;&Ouml;&frac14;ì&sup2;&acirc;
  86.                         {
  87.                                 delay(1000);
  88.                                 a++;
  89.                         }
  90.                 }
  91.         }
  92. }


  93. /*******************************************************************************
  94. * &ordm;&macr; &Ecirc;&yacute; &Atilde;&ucirc;       : main
  95. * &ordm;&macr;&Ecirc;&yacute;&sup1;&brvbar;&Auml;&Uuml;                 : &Ouml;÷&ordm;&macr;&Ecirc;&yacute;
  96. * &Ecirc;&auml;    &Egrave;&euml;       : &Icirc;&THORN;
  97. * &Ecirc;&auml;    &sup3;&ouml;             : &Icirc;&THORN;
  98. *******************************************************************************/
  99. void main()
  100. {       
  101.         while(1)
  102.         {       
  103.                 KeyDown();                   //°&acute;&frac14;ü&Aring;&ETH;&para;&Iuml;&ordm;&macr;&Ecirc;&yacute;
  104.                                        
  105.                                        
  106.                      ge1=KeyValue%10;
  107.                      shi1=KeyValue/10;       
  108.                                  
  109.                                 if(k1==0)
  110.                                 {
  111.                                         delay(50000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  112.                                         Value1=Value1+1;
  113.                                         delay(1000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  114.         }
  115.                                 if(k3==0)
  116.                                 {
  117.                                         delay(50000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  118.                                         Value1=Value1-1;
  119.                                         delay(1000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  120.         }
  121.                                 ge1=Value1%10;
  122.                                 shi1=Value1/10;
  123.                                
  124.                                 if(k2==0)
  125.                                 {
  126.                                         delay(50000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  127.                                         Value2=Value2+1;
  128.                                         delay(1000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  129.         }
  130.                                 if(k4==0)
  131.                                 {
  132.                                         delay(50000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  133.                                         Value2=Value2-1;
  134.                                         delay(1000);//&Ntilde;&Oacute;&Ecirc;±X0ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  135.         }
  136.                                
  137.                                 ge2=Value2%10;
  138.                                 shi2=Value2/10;
  139.                                
  140.                                 he=Value1+Value2;
  141.                                 he1=he%10;
  142.                                 he2=he%100/10;
  143.                                 he3=he/100;
  144.                                 he4=he/1000;
  145.                                
  146.                                   
  147.                                        
  148.                 LSA=0; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y0&Iuml;&Ocirc;&Ecirc;&frac34;
  149.                 LSB=0;
  150.                 LSC=0;
  151.                 GPIO_DIG=smgduan[ge1];                        //
  152.                 delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;
  153.                                        
  154.                 LSA=1; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y1&Iuml;&Ocirc;&Ecirc;&frac34;
  155.                 LSB=0;
  156.                 LSC=0;
  157.                 GPIO_DIG=smgduan[shi1];                        //
  158.                delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  159.                                  
  160.                 he=ge1+shi1;       
  161.                       LSA=0; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y2&Iuml;&Ocirc;&Ecirc;&frac34;
  162.                 LSB=1;
  163.                 LSC=0;
  164.                 GPIO_DIG=smgduan[ge2];
  165.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  166.                                        
  167.                                         LSA=1; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y3&Iuml;&Ocirc;&Ecirc;&frac34;
  168.                 LSB=1;
  169.                 LSC=0;
  170.                 GPIO_DIG=smgduan[shi2];
  171.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  172.                                        
  173.                                         LSA=0; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y4&Iuml;&Ocirc;&Ecirc;&frac34;
  174.                 LSB=0;
  175.                 LSC=1;
  176.                 GPIO_DIG=smgduan[he1];
  177.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  178.                                        
  179.                                         LSA=1; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y5&Iuml;&Ocirc;&Ecirc;&frac34;
  180.                 LSB=0;
  181.                 LSC=1;
  182.                 GPIO_DIG=smgduan[he2];
  183.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  184.                                        
  185.                                         LSA=0; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y6&Iuml;&Ocirc;&Ecirc;&frac34;
  186.                 LSB=1;
  187.                 LSC=1;
  188.                 GPIO_DIG=smgduan[he3];
  189.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  190.                                        
  191.                                         LSA=1; //&cedil;&oslash;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&Acirc;&euml;&sup1;&Uuml;&Igrave;á&sup1;&copy;&Icirc;&raquo;&Ntilde;&iexcl;Y7&Iuml;&Ocirc;&Ecirc;&frac34;
  192.                 LSB=1;
  193.                 LSC=1;
  194.                 GPIO_DIG=smgduan[he4];
  195.                                         delay(100);//&Ntilde;&Oacute;&Ecirc;±10ms&frac12;&oslash;&ETH;&ETH;&Iuml;&ucirc;&para;&para;
  196.                                                        
  197.         }               
  198. }


复制代码



回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-18 10:42 , Processed in 0.096157 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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