找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简易单片机计数器程序

[复制链接]
跳转到指定楼层
楼主
ID:151680 发表于 2016-12-2 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. uchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;
  4. uchar jia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;
  5. uchar s0,s1,s2,s3,s4,s5; //参加运算的各个位
  6. unsigned long qian,hou;//定义参于运算的第一个数和第二个数。
  7. sbit dula=P2^6;
  8. sbit wela=P2^7;
  9. sbit beep=P2^3;
  10. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  11.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
  12. void delay(uchar i)
  13. {
  14. for(j=i;j>0;j--)
  15. for(k=125;k>0;k--);
  16. }
  17. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  18. {
  19.    
  20.    dula=0;
  21.    P0=table[a];
  22.    dula=1;
  23.    dula=0;
  24.    wela=0;
  25.    P0=0xfe;
  26.    wela=1;
  27.    wela=0;
  28.    delay(5);
  29.    
  30.    P0=table[b];
  31.    dula=1;
  32.    dula=0;

  33.    P0=0xfd;
  34.    wela=1;
  35.    wela=0;
  36.    delay(5);
  37.    P0=table[c];
  38.    dula=1;
  39.    dula=0;

  40.    P0=0xfb;
  41.    wela=1;
  42.    wela=0;
  43.    delay(5);
  44.    
  45.    P0=table[d];
  46.    dula=1;
  47.    dula=0;
  48.    P0=0xf7;
  49.    wela=1;
  50.    wela=0;
  51.    delay(5);
  52.    
  53.    P0=table[e];
  54.    dula=1;
  55.    dula=0;
  56.    P0=0xef;
  57.    wela=1;
  58.    wela=0;
  59.    delay(5);
  60.    
  61.    P0=table[f];
  62.    dula=1;
  63.    dula=0;
  64.    
  65.    P0=0xdf;
  66.    wela=1;
  67.    wela=0;
  68.    delay(5);
  69. }
  70. void keyscan()
  71. {
  72.   {
  73.     P3=0xfe;
  74.     temp=P3;
  75.     temp=temp&0xf0;
  76.     if(temp!=0xf0)
  77.     {
  78.       delay(10);
  79.       if(temp!=0xf0)
  80.       {
  81.         temp=P3;
  82.         switch(temp)
  83.         {
  84.           case 0xee:
  85.                key=0;
  86.       wei++;
  87.                break;
  88.           case 0xde:
  89.                key=1;
  90.       wei++;
  91.                break;
  92.           case 0xbe:
  93.                key=2;
  94.       wei++;
  95.                break;
  96.           case 0x7e:
  97.                key=3;
  98.       wei++;
  99.                break;
  100.          }
  101.          while(temp!=0xf0)
  102.         {
  103.            temp=P3;
  104.            temp=temp&0xf0;
  105.            beep=0;
  106.          }
  107.          beep=1;
  108.       }
  109.     }
  110.     P3=0xfd;
  111.     temp=P3;
  112.     temp=temp&0xf0;
  113.     if(temp!=0xf0)
  114.     {
  115.       delay(10);
  116.       if(temp!=0xf0)
  117.       {
  118.         temp=P3;
  119.         switch(temp)
  120.         {
  121.           case 0xed:
  122.                key=4;
  123.       wei++;
  124.                break;
  125.           case 0xdd:
  126.                key=5;
  127.       wei++;
  128.                break;
  129.           case 0xbd:
  130.                key=6;
  131.       wei++;
  132.                break;
  133.           case 0x7d:
  134.                key=7;
  135.       wei++;
  136.                break;
  137.          }
  138.          while(temp!=0xf0)
  139.          {
  140.            temp=P3;
  141.            temp=temp&0xf0;
  142.            beep=0;
  143.          }
  144.          beep=1;
  145.       }
  146.       }
  147.     P3=0xfb;
  148.     temp=P3;
  149.     temp=temp&0xf0;
  150.     if(temp!=0xf0)
  151.     {
  152.       delay(10);
  153.       if(temp!=0xf0)
  154.       {
  155.         temp=P3;
  156.         switch(temp)
  157.         {
  158.           case 0xeb:
  159.                key=8;
  160.       wei++;
  161.                break;
  162.           case 0xdb:
  163.                key=9;
  164.       wei++;
  165.                break;
  166.       
  167.           case 0xbb:
  168.                qingling=1;
  169.       //key=10;
  170.       //wei++;
  171.                break;
  172.           case 0x7b:
  173.                dengyu=1;
  174.       //key=11;
  175.       //wei++;
  176.                break;
  177.          }
  178.         while(temp!=0xf0)
  179.          {
  180.            temp=P3;
  181.            temp=temp&0xf0;
  182.            beep=0;
  183.          }
  184.          beep=1;
  185.       }
  186.       }
  187.        P3=0xf7;
  188.     temp=P3;
  189.     temp=temp&0xf0;
  190.     if(temp!=0xf0)
  191.     {
  192.       delay(10);
  193.       if(temp!=0xf0)
  194.       {
  195.         temp=P3;
  196.         switch(temp)
  197.         {
  198.           case 0xe7:
  199.         jia=1;
  200.                //key=12;
  201.      // wei++;
  202.                break;
  203.           case 0xd7:
  204.                jian=1;
  205.                break;
  206.           case 0xb7:
  207.                cheng=1;
  208.                break;
  209.           case 0x77:
  210.                chu=1;
  211.                break;
  212.          }
  213.          while(temp!=0xf0)
  214.          {
  215.            temp=P3;
  216.            temp=temp&0xf0;
  217.            beep=0;
  218.          }
  219.          beep=1;
  220.       }
  221.     }
  222. }
  223. }
  224. void display0()
  225. {
  226. if(key!=20)
  227. {
  228. switch(wei)
  229.   {
  230.    case 1: a0=key;
  231.      b0=16;
  232.      c0=16;
  233.      d0=16;
  234.      e0=16;
  235.      f0=16;
  236.      break;
  237.    case 2: b0=key;
  238.      c0=16;
  239.      d0=16;
  240.      e0=16;
  241.      f0=16;
  242.      break;
  243.    case 3: c0=key;
  244.      d0=16;
  245.      e0=16;
  246.      f0=16;
  247.      break;
  248.    case 4: d0=key;
  249.      e0=16;
  250.      f0=16;
  251.      break;
  252.    case 5: e0=key;
  253.      f0=16;
  254.      break;
  255.    case 6: f0=key;
  256.      //wei=0;
  257.      break;
  258. }
  259. key=20;
  260. }
  261. display(a0,b0,c0,d0,e0,f0);
  262. if(a0!=16) s5=a0;
  263. if(b0!=16) s4=b0;
  264. if(c0!=16) s3=c0;
  265. if(d0!=16) s2=d0;
  266. if(e0!=16) s1=e0;
  267. if(f0!=16) s0=f0;
  268. }

  269. void main()
  270. { uchar gongneng,yunsuan;
  271.    while(1)
  272. {
  273.     keyscan();
  274.   gongneng=jia|jian|cheng|chu|dengyu|qingling;
  275.   if(gongneng==0)
  276.   {
  277.    display0();
  278.   }
  279.   else
  280.   {   yunsuan=jia|jian|cheng|chu;
  281.    if(yunsuan)
  282.    {

  283.     a0=16;
  284.     b0=16;
  285.     c0=16;
  286.     d0=16;
  287.     e0=16;
  288.     f0=16;
  289.     //wei=0;
  290.     if(jia)
  291.     {jia=0; jia0=1;jian0=0;cheng0=0;chu0=0;}
  292.     if(jian)
  293.     {jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;}
  294.     if(cheng)
  295.     {cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;}
  296.     if(chu)
  297.     {chu=0; jia0=0;jian0=0;cheng0=0;chu0=1;}
  298.     switch(wei)
  299.     {
  300.      case 6:
  301.      qian=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
  302.      case 5:
  303.      qian=s5*10000+s4*1000+s3*100+s2*10+s1;break;
  304.      case 4:
  305.      qian=s5*1000+s4*100+s3*10+s2;break;
  306.      case 3:
  307.      qian=s5*100+s4*10+s3;break;
  308.      case 2:
  309.      qian=s5*10+s4;break;
  310.      case 1:
  311.      qian=s5;break;
  312.     }
  313.     wei=0;
  314.     s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  315.     display(a0,b0,c0,d0,e0,f0);
  316.     //P1=0x55;
  317.    }
  318.    if(dengyu)
  319.    {
  320.      dengyu=0;
  321.      //display(16,16,16,16,16,16);
  322.      switch(wei)
  323.     {
  324.      case 6:
  325.      hou=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
  326.      case 5:
  327.      hou=s5*10000+s4*1000+s3*100+s2*10+s1;break;
  328.      case 4:
  329.      hou=s5*1000+s4*100+s3*10+s2;break;
  330.      case 3:
  331.      hou=s5*100+s4*10+s3;break;
  332.      case 2:
  333.      hou=s5*10+s4;break;
  334.      case 1:
  335.      hou=s5;break;
  336.     }
  337.     wei=0;
  338.     s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  339.      if(jia0)
  340.      {jia0=0; hou=qian+hou;}
  341.      if(jian0)
  342.      {jian0=0; hou=qian-hou;}
  343.      if(cheng0)
  344.      {cheng0=0; hou=qian*hou;}
  345.      if(chu0)
  346.      {chu0=0; hou=qian/hou;}
  347.      if(hou<10)
  348.      {
  349.       a0=hou;b0=16;c0=16;d0=16;e0=16;f0=16;
  350.      }
  351.      else
  352.      {
  353.       if(hou<100)
  354.      {a0=hou/10;b0=hou%10;c0=16;d0=16;e0=16;f0=16;}
  355.      else
  356.      {
  357.       if(hou<1000)
  358.       {a0=hou/100;b0=hou%100/10;c0=hou%10;d0=16;e0=16;f0=16;}
  359.       else
  360.       {
  361.        if(hou<10000)
  362.        {a0=hou/1000;b0=hou%1000/100;c0=hou%100/10;d0=hou%10;e0=16;f0=16;}
  363.        else
  364.        {
  365.         if(hou<100000)
  366.         {a0=hou/10000;b0=hou%10000/1000;c0=hou%1000/100;d0=hou%100/10;e0=hou%10;f0=16;}
  367.         else
  368.         {
  369.          if(hou<1000000)
  370.          {a0=hou/100000;b0=hou%100000/10000;c0=hou%10000/1000;d0=hou%1000/100;e0=hou%100/10;f0=hou%10;}
  371.         }
  372.        }
  373.       }
  374.      }
  375.      }
  376.      display(a0,b0,c0,d0,e0,f0);
  377.      P1=hou;

  378.    }
  379.    if(qingling)
  380.    {
  381.     a0=16;b0=16;c0=16;d0=16;e0=16;f0=16;
  382.     s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  383.     jia=0;jian=0;cheng=0;chu=0;
  384.     jia0=0;jian0=0;cheng0=0;chu0=0;
  385.     qingling=0;dengyu=0;
  386.     qian=0;hou=0;
  387.     display(a0,b0,c0,d0,e0,f0);
  388.    }
  389.    
  390.   }
  391. }
  392. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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