久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2255|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于C51單片機(jī)計(jì)算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
功能:
可以對兩個(gè)整數(shù)進(jìn)行加減乘除運(yùn)算。


程序:
  1. #include<reg51.h>

  2. #define uchar unsigned char

  3. #define uint unsigned int



  4. uchar dis[]="0123456789+-*/=",K;

  5. uint AA,BB;

  6. long int CC;

  7. uchar FH=0;

  8. bit end=0;

  9. sbit EN=P1^2;

  10. sbit RS=P1^0;

  11. sbit RW=P1^1;



  12. void  delay(uchar t)

  13. {

  14.     uchar  i;

  15.     while(t--)

  16.     for(i=0;i<123;i++);

  17. }



  18. void  wcmd(uchar  cmd)

  19. {

  20.     RS=0;

  21.     RW=0;

  22.     P0=cmd;

  23.     delay(5);

  24.     EN=1;

  25.     delay(5);

  26.     EN=0;

  27.     delay(5);

  28. }



  29. void  wdat(uchar  dat)

  30. {

  31.     RS=1;

  32.     RW=0;

  33.     P0=dat;

  34.     delay(5);

  35.     EN=1;

  36.     delay(5);

  37.     EN=0;

  38.     delay(5);

  39. }



  40. void  init()

  41. {

  42.     EN=0;

  43.     wcmd(0x06);

  44.     delay(5);

  45.     wcmd(0x38);

  46.     delay(5);

  47.     wcmd(0x0e);

  48.     delay(5);

  49.     wcmd(0x01);

  50.     delay(5);

  51. }



  52. void cal() //計(jì)算

  53. {   long int temp;char a[12],i,j;

  54.     switch(FH)

  55.     {

  56.      case 1:CC=AA+BB;break;

  57.      case 2:if(AA>=BB)CC=AA-BB;else {wdat('-');CC=BB-AA;}break;

  58.      case 3:CC=AA*BB;break;

  59.      case 4:CC=AA/BB;break;

  60.     }

  61.   temp=CC;

  62.   for(j=0;temp!=0;j++)

  63.   {

  64.      a[j]=temp%10;

  65.      temp=temp/10;

  66.   }

  67.      for(i=j-1;i>=0;i--)

  68.      wdat(a[i]+'0');

  69.      AA=BB=CC=FH=0;

  70.      end=1;

  71. }

  72. uchar select()

  73. {

  74.     uchar ccode,rcode;

  75.     P3=0xf0;

  76.     if((P3&0xf0)!=0xf0)

  77.     {

  78.         delay(10);

  79.         if((P3&0xf0)!=0xf0) //去抖動(dòng)誤觸后再次檢測

  80.         {

  81.       

  82.            rcode=0xfe;     //逐行掃描,從1.0開始

  83.            while((rcode&0x10)!=0)

  84.            {

  85.                P3=rcode;

  86.                if((P3&0xf0)!=0xf0)

  87.                {

  88.                    ccode=(P3&0xf0|0x0f);  

  89.                    while((P3&0xf0)!=0xf0);//等待按鍵放開

  90.                    return ((~rcode)+(~ccode)); //返回鍵

  91.                }

  92.                else

  93.                rcode=(rcode<<1)|0x01;

  94.            }

  95.         }

  96.     }

  97.     return 0;

  98. }

  99. void  key_deal(unsigned  char  key)

  100. {

  101.     if(key!=0)

  102.     {   if(end==1)

  103.         {wcmd(0x01);end=0;}

  104.     switch(key)

  105.         {  

  106.             case  0x11:  K=7;  break;

  107.            case  0x21:  K=8;  break;

  108.            case  0x41:  K=9;  break;

  109.            case  0x81:  K=15;FH=0;AA=BB=CC=0;wcmd(0x01);break;//

  110.            case  0x12:  K=4;  break;

  111.            case  0x22:  K=5;  break;

  112.            case  0x42:  K=6;  break;

  113.            case  0x82:  K=12;FH=3;  break;// *

  114.            case  0x14:  K=1;  break;

  115.            case  0x24:  K=2;  break;

  116.            case  0x44:  K=3;  break;

  117.            case  0x84:  K=13;FH=4;  break;// /

  118.            case  0x18:  K=10;FH=1; break;// +

  119.            case  0x28:  K=0;  break;

  120.            case  0x48:  K=11;FH=2;break;// -

  121.            case  0x88:  K=14;wdat(dis[K]);cal();break;//=

  122.            default:  break;      //不是以上數(shù)據(jù)時(shí),跳出

  123.         }

  124.         if(K<14)

  125.         {

  126.            wdat(dis[K]);

  127.         }

  128.         if(K<10)

  129.         {

  130.            if(FH==0)

  131.            {

  132.                AA=AA*10+K;

  133.            }

  134.            else

  135.            {               

  136.            BB=BB*10+K;

  137.            }

  138.         }

  139.     }

  140. }

  141. void  main()

  142. {

  143.     uchar  key;

  144.     init();

  145.     wcmd(0x80);

  146.     while(1)

  147.     {

  148.         key=select();

  149.         key_deal(key);

  150.     }

  151. }

復(fù)制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频网站在线看 | 夜久久| 免费看国产一级特黄aaaa大片 | 国产精品久久久久久福利一牛影视 | 色欧美综合 | 午夜在线 | 欧美日韩不卡合集视频 | 在线啊v | 91精品国产91久久久久久密臀 | 韩国主播午夜大尺度福利 | 在线欧美亚洲 | 成人国产免费视频 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 亚洲黄色av| 高清国产午夜精品久久久久久 | 精品欧美一区免费观看α√ | 色狠狠一区| 国产精品久久久久久久久久妇女 | 精品视频一区二区三区在线观看 | 麻豆国产一区二区三区四区 | 成年人在线视频 | 久久亚洲一区二区 | 久久久精品影院 | 一区二区三区在线 | 欧 | 国产精品一区二区在线播放 | 国产一区二区在线免费 | 欧美一级片 | 五月天婷婷综合 | 中文字幕在线观看一区 | 国产精品久久久久久久午夜 | 国产视频久久久久 | 日韩三级在线观看 | 岛国在线免费观看 | 欧美极品少妇xxxxⅹ免费视频 | 亚洲精品久久久久久久久久久 | 亚洲精品电影在线观看 | 日韩视频区 | 天天综合网天天综合色 | 精品91视频 | 亚洲精品久久久蜜桃 | jlzzxxxx18hd护士|