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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡單的計算器程序 12864液晶顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:152913 發(fā)表于 2016-12-13 21:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
簡單的計算器程序  自己編的
程序下載:
智能計算器.zip (36.9 KB, 下載次數(shù): 93)

部分源碼預(yù)覽:
  1. #ifndef __PROCESS_H__
  2. #define __PROCESS_H__

  3. uint8 key,num;
  4. uint8 fuhao;//定義具體的那個符號,是加減還是乘除。
  5. uint8 flag;        //定義有沒有按下符號鍵,這個是統(tǒng)稱
  6. long a,b,c,d;        //定義運算數(shù)據(jù)的第一個和第二個及等于的數(shù)變量
  7. uint8 k; //定義小數(shù)點后面顯示的位數(shù)
  8. uint8 biao,keyflag;                                //   +                -                *                                 /
  9. uint8 dat1[]={1,2,3,0x2b-0x30, 4,5,6,0x2d-0x30, 7,8,9,0x2a-0x30, 0,0x01-0x30,0x3d-0x30,0x2b-0x30 };//保存顯示的數(shù)據(jù)

  10. void process()
  11. {

  12.         P1=0xfe;   //令第一行為0,然后判斷是哪一列按下
  13.         if(P1!=0xfe)
  14.         {
  15.                 delay(1000);
  16.                 if(P1!=0xfe)
  17.                 {
  18.                         key=P1&0xf0;
  19.                         switch(key)
  20.                         {
  21.                                 case 0xe0: num=0;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //1
  22.                                 case 0xd0: num=1;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //2
  23.                                 case 0xb0: num=2;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //3
  24.                                 case 0x70: num=3;break;          //加
  25.                         }
  26.                 }
  27.                 while(P1!=0xfe);

  28.                 switch (num)
  29.                 {
  30.                
  31.                 case 0:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  32.                 case 1:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  33.                 case 2:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  34.                 case 3:flag=1;fuhao=1;lcdwrd(0x30+dat1[num]);break;        //加號+       
  35.                 }
  36.         }


  37.         P1=0xfd;                                //令第二行為0,判斷是哪一列按下
  38.         if(P1!=0xfd)
  39.         {
  40.                 delay(1000);
  41.                 if(P1!=0xfd)
  42.                 {
  43.                         key=P1&0xf0;
  44.                         switch(key)
  45.                         {
  46.                                 case 0xe0: num=4;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //4                                  
  47.                                 case 0xd0: num=5;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //5
  48.                                 case 0xb0: num=6;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //6
  49.                                 case 0x70: num=7;break;          //減—
  50.                         }       
  51.                 }
  52.                 while(P1!=0xfd);
  53.                 switch (num)
  54.                 {
  55.                 case 4:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  56.                 case 5:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  57.                 case 6:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  58.                 case 7:flag=1;fuhao=2;lcdwrd(0x30+dat1[num]);break;
  59.                 }

  60.         }


  61.         P1=0xfb;                 //令第三行為0,判斷哪一列按下
  62.         if(P1!=0xfb)
  63.         {
  64.                 delay(1000);
  65.                 if(P1!=0xfb)
  66.                 {
  67.                         key=P1&0xf0;
  68.                         switch(key)
  69.                         {
  70.                                 case 0xe0: num=8;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //7
  71.                                 case 0xd0: num=9;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;          //8
  72.                                 case 0xb0: num=10;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;  //9
  73.                                 case 0x70: num=11;break;  //乘*
  74.                         }       
  75.                 }
  76.                 while(P1!=0xfb);
  77. switch (num)
  78.       {
  79.             case 8:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  80.                 case 9:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  81.                 case 10:if(flag==0){a=a*10+dat1[num];}else{b=b*10+dat1[num];} lcdwrd(0x30+dat1[num]);break;
  82.                 case 11:flag=1;fuhao=3;lcdwrd(0x30+dat1[num]);break;       
  83.           
  84.           }

  85.         }


  86.         P1=0xf7;                 //令第四行為0,判斷哪一列按下
  87.         if(P1!=0xf7)
  88.         {
  89.                 delay(1000);
  90.                 if(P1!=0xf7)
  91.                 {
  92.                         key=P1&0xf0;
  93.                         switch(key)
  94.                         {
  95.                                  case 0xe0: num=12;if(keyflag==1){keyflag=0;lcdwrc(0x01);};break;  //0
  96.                                  case 0xd0: num=13;break;  //清除rst
  97.                                  case 0xb0: num=14;break;  //等號=
  98.                                  case 0x70: num=15;break;  //除/
  99.                         }       
  100.                 }
  101.                 while(P1!=0xf7);
  102.                 switch(num)
  103.                 {
  104.                 case 12: if(flag==0){a=a*10+dat1[num];lcdwrd(0x30);}else{b=b*10+dat1[num];lcdwrd(0x30);}break;         
  105.                 case 13: lcdwrc(0x01);a=0;b=0;flag=0;fuhao=0;break;                               
  106.                 case 15:flag=1;fuhao=4;lcdwrd(0x2f);break;//除號/
  107.                 case 14:                                                        
  108.                         switch (fuhao)
  109.                                          {
  110.                 case 1:
  111.                                                  lcdwrc(0x4f+0x80);
  112.                                                  lcdwrc(0x04);//設(shè)置光標左移,屏幕不移動
  113.                                                  c=a+b;
  114.                                                  while(c!=0)         //一位一位顯示
  115.                                                  {
  116.                                                         lcdwrd(0x30+c%10);//顯示結(jié)果的最后一位在0x4f的位置
  117.                                                         c=c/10;//取前面的結(jié)果數(shù)據(jù)       
  118.                                                         keyflag=1;
  119.                                                   }
  120.                                                  lcdwrd(0x3d); //顯示等于號=
  121.                                                  a=0;
  122.                                                  b=0;
  123.                                                  flag=0;
  124.                                                  fuhao=0;//全部清除為0
  125.                                                  break;

  126.                 case 2:
  127.                                                  lcdwrc(0x4f+0x80);
  128.                                                  lcdwrc(0x04);//設(shè)置光標左移,屏幕不移動
  129.                                                  if(a>b)
  130.                                                         c=a-b;
  131.                                                  else
  132.                                                         c=b-a;
  133.                                                
  134.                                                  while(c!=0)         //一位一位顯示
  135.                                                  {
  136.                                                         lcdwrd(0x30+c%10);//顯示結(jié)果的最后一位在0x4f的位置
  137.                                                         c=c/10;//取前面的結(jié)果數(shù)據(jù)       
  138.                                                         keyflag=1;
  139.                                                  }
  140.                                                  if(a<b)        lcdwrd(0x2d); //顯示-號
  141.                                                   lcdwrd(0x3d); //顯示等于號=
  142.                                                  a=0;
  143.                                                  b=0;
  144.                                                  flag=0;
  145.                                                  fuhao=0;//全部清除為0
  146.                                                  break;

  147.                 case 3:
  148.                                                  lcdwrc(0x4f+0x80);
  149.                                                  lcdwrc(0x04);//設(shè)置光標左移,屏幕不移動
  150.                                                  c=a*b;
  151.                                                  while(c!=0)         //一位一位顯示
  152.                                                  {
  153.                                                         lcdwrd(0x30+c%10);//顯示結(jié)果的最后一位在0x4f的位置
  154.                                                         c=c/10;//取前面的結(jié)果數(shù)據(jù)       
  155.                                                         keyflag=1;
  156.                                                 }
  157.                                                  lcdwrd(0x3d); //顯示等于號=
  158.                                                  a=0;
  159.                                                  b=0;
  160.                                                  flag=0;
  161.                                                  fuhao=0;//全部清除為0
  162.                                                  break;

  163.                 case 4:
  164.                                                  k=0;
  165.                                                 lcdwrc(0x4f+0x80);
  166.                                                 lcdwrc(0x04);//設(shè)置光標左移,屏幕不移動
  167.                                                 c=(long)(((float)a/b)*1000);//強制轉(zhuǎn)換為long。
  168.                                                 while(c!=0)         //一位一位顯示
  169.                                                 {
  170.                                                         k++;
  171.                                                         lcdwrd(0x30+c%10);//顯示結(jié)果的最后一位在0x4f的位置
  172.                                                         c=c/10;//取前面的結(jié)果數(shù)據(jù)
  173.                                                         if(k==3)
  174.                                                         {
  175.                                                                 lcdwrd(0x2e);
  176.                                                                 k=0;
  177.                                                         }               
  178.                                                         keyflag=1;
  179.                                                 }
  180.                                                 if(a/b<0)          //如果a比b小的話那么除的結(jié)果最高位是0
  181.                                                 {
  182.                                                         lcdwrd(0x30);       
  183.                                                 }
  184.                                                 lcdwrd(0x3d); //顯示等號
  185.                                                 a=0;
  186.                                                 b=0;
  187.                                                 flag=0;
  188.                                                 fuhao=0;//全部清除為0
  189.                                                 break;
  190.                                         
  191.                                         }
  192.                 break;

  193.                 }
  194.         }

  195. }

  196. #endif
復(fù)制代碼


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品一区av | 国产精品国产三级国产aⅴ中文 | 久久久久久一区 | 国产精品不卡 | av香港经典三级级 在线 | 亚洲精品一区二区三区丝袜 | 欧美极品在线播放 | 亚洲国产成人精品久久 | 日韩精品在线一区 | 91超碰caoporn97人人 | 国产精品久久久久久久免费大片 | 久久精品福利 | 亚洲国产精品久久久久秋霞不卡 | 午夜天堂 | 五月激情婷婷在线 | 国产91丝袜在线播放 | 久久久女女女女999久久 | 香蕉视频一区二区 | 久久精品久久久 | 中文字幕 在线观看 | 国产福利资源 | 色爱综合网| 国产日韩一区二区三免费高清 | 亚洲另类自拍 | 日本一区二区电影 | 精品久久久久久亚洲精品 | 欧美视频在线播放 | 欧美亚洲综合久久 | 精品精品| 午夜视频导航 | 国产成人网 | www.青娱乐| 夜夜操天天艹 | 奇色影视| 无吗视频| 欧美一级二级三级视频 | 国产乱码精品一区二区三区忘忧草 | 国产精品亚洲精品 | 亚洲二区视频 | 日韩精品1区2区3区 爱爱综合网 | 欧美一区二区在线播放 |