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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2574|回復(fù): 0
收起左側(cè)

51單片機制作計簡易計算器的c程序源碼

[復(fù)制鏈接]
ID:357931 發(fā)表于 2018-6-24 18:09 | 顯示全部樓層 |閱讀模式
本帖最后由 LAY2 于 2018-6-24 18:41 編輯

#include<reg51.h>
#include<intrins.h>
#include<math.h>
#include<stdlib.h>
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BUZZER=P1^0;
#define unchar unsigned char
#define unint unsigned int
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
  for(j=0;j<120;j++);
}
void busy()
{
RS=0;
RW=1;
E=1;
P0=0xff;
while((P0&0x80)==0x80);
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
void write_com(unsigned char com)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
busy();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
RS=0;
RW=0;
E=1;
P0=com;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
E=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
void write_data(unchar date)
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
busy();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
RS=1;
RW=0;
E=1;
P0=date;
E=0;
}
void init()
{
write_com(0x30);
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
write_com(0x0c);
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
write_com(0x01);
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
write_com(0x06);
}
void sendaddr(unchar n,unchar m)
{
switch(n)
{
  case 1:write_com(0x80+m);break;
  case 2:write_com(0x90+m);break;
  case 3:write_com(0x88+m);break;
  case 4:write_com(0x98+m);break;
}
}
void display(unchar n,unchar m,unchar*s)
{
sendaddr(n,m);
while(*s>0)
{
  write_data(*s);
  s++;
}
}
void clearscreen()
{
write_com(0x01);
}
void tishi()
{
clearscreen();
display(1,0,"超出計算范圍");
display(2,0,"請按復(fù)位鍵");
display(3,0,"并重新輸入");
display(4,0,"否則會出現(xiàn)錯誤");
}
void displayshu(unchar n,unchar m,long  rzt)
{
unchar i,j,k,x,p;
unchar t[10]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char array[10];
array[9]=(int)rzt%10;
array[8]=((int)rzt/10)%10;
array[7]=((int)rzt/100)%10;
array[6]=((int)rzt/1000)%10;
array[5]=((int)rzt/10000)%10;
array[4]=((int)rzt/100000)%10;
array[3]=((int)rzt/1000000)%10;
array[2]=((int)rzt/10000000)%10;
array[1]=((int)rzt/100000000)%10;
array[0]=(int)rzt/1000000000;
sendaddr(n,m);
for(i=0;i<10;i++)
{
  if(array==0)
  p=i;
  else
  break;
}
for(j=p+1;j<10;j++)
{
  t[k]=array[j];
  k++;
}
while(t[x]!=0xff)
{
  write_data(t[x]+0x30);
  x++;
}
}
void main(void)
{
unchar i,j,opt,p;
long b,c,rzt;
start:
init();
delay(20);
i=0;j=0;rzt=0;b=0;c=0;
write_com(0x80);
while(1)
{
  P3=0xfe;
  if(P3!=0xfe)
  {
   delay(40);
   if(P3!=0xfe)
   {
    switch(P3&0xf0)
    {
     case 0x70:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(0+0x30);
     b=b*10+0;
     i++;
     if(i==11)tishi();
     break;
     case 0xb0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(1+0x30);
     b=b*10+1;
     i++;
     if(i==11)tishi();
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(2+0x30);
     b=b*10+2;
     i++;
     if(i==11)tishi();
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(3+0x30);
     b=b*10+3;
     i++;
     if(i==11)tishi();
     break;
    }
    if(P3!=0xfe);
    delay(30);
    while(P3!=0xfe);
   }
  }
  P3=0xfd;
  if(P3!=0xfd)
  {
   delay(40);
   if(P3!=0xfd)
   {
    switch(P3&0xf0)
    {
     case 0x70:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(4+0x30);
     b=b*10+4;
     i++;
     if(i==11)tishi();
     break;
     case 0xb0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(5+0x30);
     b=b*10+5;
     i++;
     if(i==11)tishi();
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(6+0x30);
     b=b*10+6;
     i++;
     if(i==11)tishi();
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(7+0x30);
     b=b*10+7;
     i++;
     if(i==11)tishi();
     break;
    }
    if(P3!=0xfd);
    delay(30);
    while(P3!=0xfd);
   }
  }
  P3=0xfb;
  if(P3!=0xfb)
  {
   delay(40);
   if(P3!=0xfb)
   {
    switch(P3&0xf0)
    {
     case 0x70:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(8+0x30);
     b=b*10+8;
     i++;
     if(i==11)tishi();
     break;
     case 0xb0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     write_data(9+0x30);
     b=b*10+9;
     i++;
     if(i==11)tishi();
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     p=1;
     write_com(0x97);
     write_data(0x2b);
     opt=10;
     goto two;
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     p=1;
     write_com(0x97);
     write_data(0x2d);
     opt=10;
     goto two;
     break;
    }
    if(P3!=0xfb);
    delay(30);
    while(P3!=0xfb);
   }
  }
  P3=0xf7;
  if(P3!=0xf7)
  {
   delay(40);
   if(P3!=0xf7)
   {
    switch(P3&0xf0)
    {
     case 0x70:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     p=1;
     write_com(0x97);
     write_data(0x2a);
     opt=12;
     goto two;
     break;
     case 0xb0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     p=1;
     write_com(0x97);
     write_data(0x2f);
     opt=13;
     goto two;
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     clearscreen();
     goto start;
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     clearscreen();
     goto start;
     break;
    }
    if(P3!=0xf7);
    delay(30);
    while(P3!=0xf7);
   }
  }
}
two:
  write_com(0x88);
  while(1)
  {
   P3=0xfe;
   if(P3!=0xfe)
   {
    delay(40);
    if(P3!=0xfe)
    {
     switch(P3&0xf0)
     {
      case 0x70:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(0+0x30);
      c=c*10+0;
      j++;
      if(j==11)tishi();
      break;
      case 0xb0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(1+0x30);
      c=c*10+1;
      j++;
      if(j==11)tishi();
      break;
      case 0xd0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(2+0x30);
      c=c*10+2;
      j++;
      if(j==11)tishi();
      break;
      case 0xe0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(3+0x30);
      c=c*10+3;
      j++;
      if(j==11)tishi();
      break;
     }
     if(P3!=0xfe);
     delay(30);
     while(P3!=0xfe);
    }
   }
   P3=0xfd;
   if(P3!=0xfd)
   {
    delay(40);
    if(P3!=0xfd)
    {
     switch(P3&0xf0)
     {
      case 0x70:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(4+0x30);
      c=c*10+4;
      j++;
      if(j==11)tishi();
      break;
      case 0xb0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(5+0x30);
      c=c*10+5;
      j++;
      if(j==11)tishi();
      break;
      case 0xd0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(6+0x30);
      c=c*10+6;
      j++;
      if(j==11)tishi();
      break;
      case 0xe0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(7+0x30);
      c=c*10+7;
      j++;
      if(j==11)tishi();
      break;
     }
     if(P3!=0xfd);
     delay(30);
     while(P3!=0xfd);
    }
   }
   P3=0xfb;
   if(P3!=0xfb)
   {
    delay(40);
    if(P3!=0xfb)
    {
     switch(P3&0xf0)
     {
      case 0x70:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(8+0x30);
      c=c*10+8;
      j++;
      if(j==11)tishi();
      break;
      case 0xb0:
      BUZZER=0;
      delay(80);
      BUZZER=1;
      write_data(9+0x30);
      c=c*10+9;
      j++;
     if(j==11)tishi();
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     if(p==0){write_com(0x97);write_data(0x2b);}
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     if(p==0){write_com(0x97);write_data(0x2d);}
     break;
    }
    if(P3!=0xfb);
    delay(30);
    while(P3!=0xfb);
   }
  }
  P3=0xf7;
  if(P3!=0xf7)
  {
   delay(40);
   if(P3!=0xf7)
   {
    switch(P3&0xf0)
    {
     case 0x70:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     if(p==0){write_com(0x97);write_data(0x2a);}
     break;
     case 0xb0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     if(p==0){write_com(0x97);write_data(0x2f);}
     break;
     case 0xd0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     goto answer;
     break;
     case 0xe0:
     BUZZER=0;
     delay(80);
     BUZZER=1;
     goto answer;
     break;
    }
    }
   if(P3!=0xf7);
   delay(30);
   while(P3!=0xf7);
  }
}
answer:
  write_com(0x98);
  write_data(0x3d);
  if(c==0&&opt==13)
  {
   display(2,0,"分母不能為零");
   clearscreen();
   goto start;
  }
  switch(opt)
  {
   case 10:rzt=(b+c);displayshu(4,2,rzt);break;
   case 11:rzt=(b-c);if(rzt<0){rzt=c-b;write_data(0x2d);}displayshu(4,2,rzt);break;
   case 12:rzt=(b*c);displayshu(4,2,rzt);break;
   case 13:rzt=(b/c);
   if((int)b%(int)c==0)
   displayshu(4,2,rzt);
   else
   rzt=rzt*1000;
   displayshu(4,2,rzt);
   break;
  }
  if(rzt>9999999999)
  {
   clearscreen();
   display(2,1,"超出計算范圍");
   delay(1000);
   goto start;
  }
  while(1)
  {
   P3=0xf7;
   if(P3!=0xf7)
   {
    delay(40);
    if(P3!=0xf7)
    {
     if((P3&0xf0)==0xe0)
     {
      goto start;
     }
     if(P3!=0xf7);
     delay(30);
     while(P3!=0xf7);
    }
   }
  }
}  
      








新建 Microsoft Word 文檔 (2).docx

19.3 KB, 下載次數(shù): 5, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 狠狠干美女 | 婷婷激情在线 | 精品在线免费观看视频 | 国产精品 亚洲一区 | 国产在线一区二 | 国产一区 | 亚洲人人 | 国产精品免费看 | 在线观看成人av | 亚洲久久一区 | 自拍偷拍中文字幕 | 亚洲成人国产 | 日韩在线视频免费观看 | 国产精品视频偷伦精品视频 | 免费亚洲网站 | 久久精品久久久久久 | 国产视频观看 | 少妇精品久久久久久久久久 | 成人av片在线观看 | 91在线 | 九九视频在线观看 | 亚洲性爰 | 日韩欧美二区 | 久久久久九九九女人毛片 | 日韩成人在线电影 | 国产99视频精品免费播放照片 | 色综合天天天天做夜夜夜夜做 | 国产精品久久精品 | 成年人免费在线视频 | 色黄网站| 天堂色综合 | 欧美天堂 | 成人久久一区 | 国产福利在线 | 综合自拍| 狠狠爱综合 | 天天拍天天操 | 色婷婷婷婷色 | 欧美a级成人淫片免费看 | 一区免费视频 | 久久午夜精品 |