去年刚学1个月左右写的,还很稚嫩,初学者理解下思路水水就行了
#include<reg52.h>
typedef unsigned int u16;  
typedef unsigned char u8;
#define  led  P1
#define  juzhen  P0
sbit u1=P2^3;
sbit u2=P2^4;
sbit u3=P2^5;
sbit beer=P2^6;
u16 code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

long int we=0,qian=0,hou=0,ge=16,shi=16,bai=16,qian1=16,wan=16,shiwan=16,baiwan=16,qianwan=16,jia=0,jian=0,
    cheng=0,chu=0,qingling=0,dengyu=0;    
void delay(u16 i)
 {
  while(i--)
  {
  } 
  }      
void baibai()
 {
  we=0,qian=0,hou=0,ge=16,shi=16,bai=16,qian1=16,wan=16,shiwan=16,baiwan=16,qianwan=16,jia=0,jian=0,
    cheng=0,chu=0,qingling=0,dengyu=0;    
 }
void sing()
{      unsigned char a,b,c;
    for(c=18;c>0;c--) 
  {
        for(b=50;b>0;b--) 
     {
            for(a=33;a>0;a--)
       {
               beer=~beer;
              delay(200);
      } 
     }
  }
}
void  display ()
 { 
   int i;
   if(qingling==1)
  baibai();
   for(i=0;i<8;i++)
    { 
      led=0x00;
     switch(i)
    {
   case 0:u1=0;u2=0;u3=0;led=duan[qianwan];delay(100);break;
   case 1:u1=1;u2=0;u3=0;led=duan[baiwan];delay(100);break;
   case 2:u1=0;u2=1;u3=0;led=duan[shiwan];delay(100);break;
   case 3:u1=1;u2=1;u3=0;led=duan[wan];delay(100);break;
   case 4:u1=0;u2=0;u3=1;led=duan[qian1];delay(100);break;
   case 5:u1=1;u2=0;u3=1;led=duan[bai];delay(100);break;
   case 6:u1=0;u2=1;u3=1;led=duan[shi];delay(100);break;
   case 7:u1=1;u2=1;u3=1;led=duan[ge];delay(100);break;    
  }
   }
 }
 void input ()
 {
   long int gaibian=20;
   juzhen=0x0f;
   if(juzhen!=0x0f)
   delay(1000);
   if(juzhen!=0x0f)
   {
   switch(juzhen)
   {
    case 0x07:gaibian=0;break;
   case 0x0b:gaibian=1;break;
   case 0x0d:gaibian=2;break;
   case 0x0e:gaibian=3;break;  
   }
   }
     juzhen=0xf0;
   if(juzhen!=0xf0)
   delay(1000);
   if(juzhen!=0xf0)
   {
   switch(juzhen)
   {
    case 0x70:gaibian=gaibian+0;break;
   case 0xb0:gaibian=gaibian+4;break;
   case 0xd0:gaibian=gaibian+8;break;
   case 0xe0:gaibian=gaibian+12;break;  
   } 
   }
   juzhen=0xf0;
   while(1)
   {
     if (juzhen==0xf0)
    {
      break;
    }
   }
    if(gaibian!=20)
  {
   switch(gaibian)
   {
   case 10:qingling=1;break;
   case 11:dengyu=1;break;
   case 12:jia=1;break;
   case 13:jian=1;break;
   case 14:cheng=1;break;
   case 15:chu=1;break;
   default :we=we+1;break;  
   }  
  }
   if(gaibian<10)
   {
   switch(we)
   {
   case 0:ge=16;shi=16;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
   case 1:ge=gaibian;shi=16;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;qian=qian+gaibian*1;break;
   case 2:shi=gaibian;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;qian=qian+gaibian*10;break;
   case 3:bai=gaibian;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;qian=qian+gaibian*100;break;
   case 4:qian1=gaibian;wan=16;shiwan=16;baiwan=16;qianwan=16;qian=qian+gaibian*1000;break;
   case 5:wan=gaibian;shiwan=16;baiwan=16;qianwan=16;qian=qian+gaibian*10000;break;
   case 6:shiwan=gaibian;baiwan=16;qianwan=16;qian=qian+gaibian*100000;break;
   case 7:baiwan=gaibian;qianwan=16;qian=qian+gaibian*1000000;break;
   case 8:qianwan=gaibian;qian=qian+gaibian*10000000;break;  
   }
  }
 }
void main()
 {
   long int pp;
  beer=0;
  while(1)
  {
   display();
  if(jia==0&&jian==0&&cheng==0&&chu==0)
  {
   input();
  }
  else
  {
    hou=qian;
    qian=0;
   we=0,ge=16,shi=16,bai=16,qian1=16,wan=16,shiwan=16,baiwan=16,qianwan=16,qian=0;
       while(dengyu==0)
   {   
   display();
   input();               
   }
   if(jia==1)
   {
           hou=hou+qian;
}
   if(jian==1)
   {
        hou=hou-qian;
   }
   if(cheng==1)
   {
      hou=hou*qian ;
   }
   if(chu==1)
   {     
    if(qian==0)
      {
     hou=0;break;
       }
       hou=hou/qian;      
   } 
    we=0,ge=16,shi=16,bai=16,qian1=16,wan=16,shiwan=16,baiwan=16,qianwan=16;
     pp=hou ;
    while(pp!=0)
    {
      pp=pp/10;
      we=we+1;
}
    if(we>8)
    {
     sing();
     we=0;
    }
    switch(we)
    {
      case 0:ge=0;shi=16;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
     case 1:ge=hou;shi=16;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
      case 2:ge=hou%10;shi=hou/10;bai=16;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
     case 3:ge=hou%10;shi=hou/10%10;bai=hou/100;qian1=16;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
     case 4:ge=hou%10;shi=hou%100/10;bai=hou/100%10;qian1=hou/1000;wan=16;shiwan=16;baiwan=16;qianwan=16;break;
     case 5:ge=hou%10;shi=hou/1000%10;bai=hou/100%10;qian1=hou/1000%10;wan=hou/10000;shiwan=16;baiwan=16;qianwan=16;break;
     case 6:ge=hou%10;shi=hou/10000%10;bai=hou/100%10;qian1=16;wan=hou/1000%10;shiwan=hou/100000;baiwan=16;qianwan=16;break;
     case 7:ge=hou%10;shi=hou/100000%10;bai=hou/100%10;qian1=16;wan=hou/1000%10;shiwan=hou/100000%10;baiwan=hou/1000000;qianwan=16;break;
     case 8:ge=hou%10;shi=hou/1000000%10;bai=hou/100%10;qian1=16;wan=hou/1000%10;shiwan=hou/100000%10;baiwan=hou/1000000%10;qianwan=hou/10000000;break;
    }
   while(1)
   {
    input();
     display();
   }  
  } 
  }
 }

51单片机课设 计算器相关推荐

  1. 51单片机课设代做_微波炉控制系统设计

    微波炉控制系统设计 一.设计要求 选用温度传感器.按键.LED灯和蜂鸣器等,采用MCS-51系列单片机实现温度的设置.显示和报警. (1)可通过按键设置三种最高温度值,如低温(20°),中温(30°) ...

  2. imut 51单片机课设 模拟室内温度检测器 *秋昊

    写在前面的话: 本文主要讲述了一下IMUT的单片机课设报告. 下面的百度云链接中包括了:ICL7109手册,ICL7109自检_标度转换(excel),课设报告(word版),演示视频,程序源码. 链 ...

  3. 51单片机课设项目大全

    1-基于51单片机的音乐彩灯 2-基于51单片机的蓝牙智能台灯设计 3-基于51单片机的篮球计分器 4-基于51单片机的无线病床呼叫系统设计 5-基于51单片机的语音实时采集系统 6-基于51单片机的 ...

  4. 51单片机课设——模拟电梯控制系统

    基于51单片机的模拟电梯控制系统 利用51单片机模拟5层电梯控制系统,还原真实生活场景.当某层被按下呼梯按键(电梯厢外)时,电梯将运行到该楼层,同时步进电机模拟电梯运转,液晶显示屏实时显示楼层数及电梯 ...

  5. 单片机课设基于51单片机的波形发生器(公开资源)(四种波形)(同时输出两种波形)

    单片机课设-波形发生器 前言 一.课设任务是什么? 二.如何解决这几个任务? 三.仿真原理图 四.代码 4.1 LCD1602代码 4.2 波形输出以及8*8点阵显示代码 4.3 波形选择 五.仿真源 ...

  6. 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示

    [Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...

  7. 51单片机实现简易计算器

    本来做出来之后时间也是比较久了,具体代码的意义我暂时没有再回看,给标注出来,相信读者也是看了就明白,主要是当初在调试折腾的过程需要下一些功夫,因为当时是初学者,完成慢,成品也不好,还请多多包涵. 目录 ...

  8. c语言51单片机计算器,新基于51单片机的简易计算器

    <新基于51单片机的简易计算器>由会员分享,可在线阅读,更多相关<新基于51单片机的简易计算器(24页珍藏版)>请在人人文库网上搜索. 1.基于51单片机的简易计算器1.前言: ...

  9. 单片机课设-LED点阵广告牌设计

    单片机课设系列文章-2-LED点阵广告牌设计   文章目录  

  10. 51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告)

    本设计: 基于51单片机的简易计算器设计(仿真+程序+原理图+PCB+设计报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号S0001 芯片可以替换为 ...

最新文章

  1. python request timeout是什么意思_request timeout是什么意思
  2. sitemesh的使用
  3. (七)全半角转换(转)
  4. C#中的thread和task之 Thread ThreadPool
  5. 常用公有云接入——谷歌
  6. 中国电信第三大IDC机房落户南海
  7. 计算机网络知识大总结,包含各种熟悉得不能再熟悉的术语解析
  8. UNetbootin | 轻松制作Linux/BSD安装引导U盘
  9. hdu 3996 Gold Mine ( 最大权闭合图 )
  10. 如何把一张图片做成一个好看的电脑图标
  11. 日期插件datepicker的使用
  12. 栈 -- 以及用栈实现计算器
  13. Android改机 安卓改机软件 免root/不刷机/拒绝Xposed 实现 技术分析
  14. Ubuntu查看IP地址
  15. EfficientNet 简介
  16. LG E900 越狱
  17. php实现addon安装卸载,插件Addon文件
  18. Convert Kilometers to Miles 2010.3.6
  19. android 亮屏分析,Android亮屏速度分析总结
  20. thinkpad x12018换固态_【求助】ThinkPad X1Carbon 更换ssd - 笔记本电脑(Notebook)版 - 北大未名BBS...

热门文章

  1. idea、Pycharm提高效率常用配置
  2. WiFi漫游卡顿严重,如何有效改善实现无缝漫游
  3. 【python】2022年618一起抢优惠券
  4. 微信开放平台与微信公众平台的支付关系
  5. 大数据分析之纳税人画像-实现和优化思路
  6. 产品经理技术脑:怎么看懂接口文档
  7. 计算机播放音乐自录,如何录制电脑内部播放的声音及音乐
  8. 为什么越来越多的人选择FUP T10S系列超声波探伤仪
  9. [转载]世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)
  10. 我国医院信息化的现状与发展策略