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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3365|回復: 5
打印 上一主題 下一主題
收起左側

51單片機的簡易計算器

[復制鏈接]
跳轉到指定樓層
樓主
ID:156249 發表于 2016-12-20 16:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
要求:
1. 4X4鍵盤輸入,LED顯示。
2. 浮點運算采用3字節二進制補碼表示,有效數字6位。對于輸入輸出,采用3字節BCD碼浮點數格式,有效數字只有4位,因此最終有效數字只有4位。
3. 可進行連續輸入,例如:1.23+4.56*8.23/234.8 ,但是運算結果為從左到右,這也是8位簡易計算器的方式。
4. 可進行錯誤判斷,溢出、除零等錯誤將顯示一個字符 E 。
5. 由于鍵盤只有16個按鍵,安排如下:
   +---------------+
   | 7 | 8 | 9 | + |
   | 4 | 5 | 6 | -  |
   | 1 | 2 | 3 | * |
   | 0 | .  | = | /  |
   +---------------+

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

使用道具 舉報

沙發
ID:154912 發表于 2016-12-20 17:07 | 只看該作者
#include<reg51.h>
#define uchar unsigned char;
uchar LED1,LED2,LED3,LED4;
uchar keyval,calflag,s_dat,d_dat;
uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
unsigned int number,r_dat;

void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
  for(j=0;j<1000;j++);
}
void dealdat()
{
switch(calflag)
{
case 0:
  r_dat=s_dat+d_dat;
  break;
case 1:
  r_dat=s_dat-d_dat;
  break;
case 2:
  r_dat=s_dat*d_dat;
  break;
case 3:
  r_dat=s_dat/d_dat;
  break;
default:break;
}
LED1=(r_dat/1000)%10;
LED2=(r_dat/100)%10;
LED3=(r_dat/10)%10;
LED4=r_dat%10;
}
uchar kbscan(void)
{
unsigned char sccode,recode;
P3=0x0f;  //發0掃描,列線輸入
if ((P3 & 0x0f) != 0x0f)  //有鍵按下
{
  delay(20);   //延時去抖動
  if ((P3&0x0f)!= 0x0f)
  {
   sccode = 0xef;    //逐行掃描初值
   while((sccode&0x01)!=0)
   {
       P3=sccode;
    if((P3&0x0f)!=0x0f)
    {
        recode=(P3&0x0f)|0xf0;
     return((~sccode)+(~recode));
     }
          else
    sccode=(sccode<<1)|0x01;
   }
  }
}
return 0;  //無鍵按下,返回0
}

void getkey(void)
{
unsigned char key;
key=kbscan();
if(key==0){keyval=0xff;return;}
  switch(key)
  {
  case 0x11:keyval=7;break;
  case 0x12:keyval=4;break;
  case 0x14:keyval=1;break;
  case 0x18:keyval=10;break;
  case 0x21:keyval=8;break;
  case 0x22:keyval=5;break;
  case 0x24:keyval=2;break;
  case 0x28:keyval=0;break;
  case 0x41:keyval=9;break;
  case 0x42:keyval=6;break;
  case 0x44:keyval=3;break;
  case 0x48:keyval=11;break;
  case 0x81:keyval=12;break;
  case 0x82:keyval=13;break;
  case 0x84:keyval=14;break;
  case 0x88:keyval=15;break;
  default:keyval=0xff;break;
  }
}

void t0isr() interrupt 1
{
TH0=0xf4;
TL0=0x48;
switch(number)
{
case 0:P2=0x04;P0=distab[LED1];break;
case 1:P2=0x08;P0=distab[LED2];break;
case 2:P2=0x01;P0=distab[LED3];break;
case 3:P2=0x02;P0=distab[LED4];break;
default:break;
}
number++;
if(number>3)number=0;
}
main()
{
TMOD = 0x01;
number = 0;
TH0=0xf4;
TL0=0x48;
TR0=1;
ET0=1;
EA=1;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
while(1)
{
getkey();
switch(keyval)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
  LED3=LED4;
  LED4=keyval;
  LED1=0;
  LED2=0;
  break;
case 10:break; //"ON"
case 11: //"="
  d_dat=LED3*10+LED4;
  dealdat();
  break;
case 12: //"/"
  calflag=3;
  s_dat=LED3*10+LED4;
  LED3=0;
  LED4=0;
  break;
case 13: //"*"
  calflag=2;
  s_dat=LED3*10+LED4;
  LED3=0;
  LED4=0;
  break;
case 14: //"-"
  calflag=1;
  s_dat=LED3*10+LED4;
  LED3=0;
  LED4=0;
  break;
case 15: //"+"
  calflag=0;
  s_dat=LED3*10+LED4;
  LED3=0;
  LED4=0;
  break;
default:break;
}
}
}
回復

使用道具 舉報

板凳
ID:152262 發表于 2016-12-20 17:32 | 只看該作者
看樓上
回復

使用道具 舉報

地板
ID:149094 發表于 2016-12-20 19:03 | 只看該作者
樓上的太麻煩了,你 可以試試點陣數列
回復

使用道具 舉報

5#
ID:156380 發表于 2016-12-20 22:05 | 只看該作者
有點麻煩啊
回復

使用道具 舉報

6#
ID:156393 發表于 2016-12-20 22:15 | 只看該作者
照片不錯
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕成人网 | 狠狠躁躁夜夜躁波多野结依 | 亚洲国产精品一区 | 国产亚洲一区二区三区在线 | 日韩精品在线观看一区二区三区 | 国产91综合 | 91.com视频| 青青草华人在线视频 | 日韩在线欧美 | 亚洲精品乱码 | 欧美美乳 | 欧美1区2区| 在线观看视频中文字幕 | 欧美日韩综合视频 | 精品国产欧美一区二区三区成人 | 国产伦精品一区二区三区照片91 | 电影91久久久| 久久夜视频 | 视频一区在线观看 | 久草99 | 午夜精品在线 | 久久一区二区精品 | 亚洲欧美精 | av免费在线播放 | 日本h片在线观看 | 狠狠亚洲 | 欧美成人精品激情在线观看 | 91视频进入 | 久久电影一区 | www.日日操 | 日韩欧美不卡 | 精品成人| 日韩欧美一区在线 | 午夜精品久久久久久久久久久久久 | 亚洲国产成人av好男人在线观看 | 国产乱码精品一区二区三区忘忧草 | 日韩视频一区二区在线 | 日韩欧美在线视频 | 91精品国产综合久久精品图片 | 狠狠的干| 欧美一区二区免费 |