用矩阵写了一个计算器,目前计算偶尔出问题,还不完善
计算器实例
7 8 9 +
4 5 6 -
1 2 3 *
0 = /

main.c文件

#include <stc15f2k60s2.h>
#include <juzhen.h>extern unsigned char display[];
extern unsigned char key;void Timer0Init();void main()
{Timer0Init();EA=1;ET0=1;P2=0XA0;P0=0X00;P2=0X1f;while(1){ anjian();xianshi();jisuan();}
}void Timer0Init(void)      //2毫秒@11.0592MHz
{AUXR |= 0x80;     //定时器时钟1T模式TMOD &= 0xF0;       //设置定时器模式TL0 = 0x9A;       //设置定时初值TH0 = 0xA9;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时
}
void shuma() interrupt 1
{unsigned char i;P2=0XE0;P0=0XFF;P2=0X1f;P2=0XC0;P0=1<<i;P2=0X1f;P2=0XE0;P0=display[i];P2=0X1f;i++;if(i>=8)i=0;}

juzhen,c文件

#include <stc15f2k60s2.h>
#include <juzhen.h>
unsigned char display[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
unsigned char smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char jieguo,qian,hou;
unsigned char suan;
sbit h1=P3^0;
sbit h2=P3^1;
sbit h3=P3^2;
sbit h4=P3^3;
unsigned char key;
int i=-1;
sbit l1=P4^4;
sbit l2=P4^2;
sbit l3=P3^5;
sbit l4=P3^4;void xianshi()
{if(i==-1){display[0]=display[1]=0xbf;}if(i==0){display[0]=smg[qian/10];display[1]=smg[qian%10];display[2]=0xff;display[3]=0xff;display[4]=0xff;display[5]=0xff;display[6]=0xff;display[7]=0xff;      }if(i==1){display[0]=smg[hou/10];display[1]=smg[hou%10];display[2]=0xff;display[3]=0xff;display[4]=0xff;display[5]=0xff;display[6]=0xff;display[7]=0xff;      }if(i==2){display[0]=smg[jieguo/10];display[1]=smg[jieguo%10];display[2]=0xff;display[3]=0xff;display[4]=0xff;display[5]=0xff;display[6]=0xff;display[7]=0xff;    }}/**********************7  8   9   +4 5   6   -1  2   3   *0      =  /**********************/void jisuan()
{if(i==0){qian=key;}if(i==1){hou=key;}if(i>=3)i=0;if(suan==1){jieguo=qian+hou;}if(suan==2){jieguo=qian-hou;}if(suan==3){jieguo=qian*hou;}if(suan==4){jieguo=qian/hou;}
}void anjian()
{l1=0;l4=l2=l3=1;h1=h2=h3=h4=1;if(h1==0){Delay10ms();if(h1==0){key=7;i++;}while(!h1);}if(h2==0){Delay10ms();if(h2==0){key=4;i++;}while(!h2);}if(h3==0){Delay10ms();if(h3==0){key=1;i++;}while(!h3);}if(h4==0){Delay10ms();if(h4==0){key=0;i++;}while(!h4);}l2=0;l3=l1=l4=1;h1=h2=h3=h4=1;if(h1==0){Delay10ms();if(h1==0){key=8;i++;}while(!h1);}if(h2==0){Delay10ms();if(h2==0){key=5;i++;}while(!h2);}if(h3==0){Delay10ms();if(h3==0){key=2;i++;}while(!h3);}//       if(h4==0)
//  {//  Delay10ms();
//      if(h4==0)
//      {key=9;}
//      while(!h4);
//  }   l3=0;l1=l2=l4=1;h1=h2=h3=h4=1;if(h1==0){Delay10ms();if(h1==0){key=9;i++;}while(!h1);}if(h2==0){Delay10ms();if(h2==0){key=6;i++;}while(!h2);}if(h3==0){Delay10ms();if(h3==0){key=3;i++;}while(!h3);}if(h4==0){Delay10ms();if(h4==0){i=2;}while(!h4);}      l4=0;l1=l2=l3=1;h1=h2=h3=h4=1;if(h1==0){Delay10ms();if(h1==0){suan=1;}while(!h1);}if(h2==0){Delay10ms();if(h2==0){suan=2;}while(!h2);}if(h3==0){Delay10ms();if(h3==0){suan=3;}while(!h3);}if(h4==0){Delay10ms();if(h4==0){suan=4;}while(!h4);}  }void Delay10ms()       //@11.0592MHz
{unsigned char i, j;i = 108;j = 145;do{while (--j);} while (--i);
}

juzhen,h

#ifndef __JUZHEN_H_
#define __JUZHEN_H_void Delay10ms();
void anjian();
void xianshi();
void jisuan();#endif

基于stc15f2k60s2芯片单片机编程(计算器,不完美)相关推荐

  1. 基于stc15f2k60s2芯片单片机编程(时钟DS1302)

    **stc15f2k60s2芯片编程(时钟DS1302)** main.c函数 #include <STC15F2K60S2.H> #include <intrins.h> # ...

  2. 基于stc15f2k60s2芯片单片机编程(数码管)

    **蓝桥杯stc15f2k60s2芯片编程(数码管)** ** ** (1)数码管显示01234567 ** ** #include <stc15f2k60s2.h>unsigned ch ...

  3. 基于stc15f2k60s2芯片单片机编程(串口+超声波)

    通过单片机发送当前超声波测量的距离给串口1显示 (感谢广东某大神的帮助) #include <stc15f2k60s2.h> #include <intrins.h>void ...

  4. 基于stc15f2k60s2芯片单片机编程(闹铃)

    用定时器中断写时钟加调节 1)关闭蜂鸣器.继电器等无关外设: 2)设备初始化时钟为 23 时 59 分 50 秒,闹钟提醒时间 0 时 0 分 0 秒. A.时间显示格式 2 3 - 5 9 - 5 ...

  5. 基于stc15f2k60s2芯片单片机编程(秒表)

    用定时器做一个秒表,精确到0.1,S7按下,开始计时,S6按下清零 #include <stc15f2k60s2.h> #include <intrins.h> void Ti ...

  6. 基于stc15f2k60s2芯片单片机编程(EEPROM24C02实验)

    主函数 #include <stc15f2k60s2.h> #include <intrins.h> #include <12.h> void shumaguan( ...

  7. 51单片机设计简易计算机原理,基于AT89C51单片机简易计算器的设计(DOC).docx

    PAGE PAGE # 基于AT89C51单片机简易计算器的设计 [摘要]单片机的出现是计算机制造技术高速发展的产物,它是嵌 入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域, 电子.科技 ...

  8. 用计算机设计电路图,基于51单片机的计算器设计(含电路图,程序)

    基于51单片机的计算器设计(含电路图,程序)(课题申报表,任务书,开题报告,中期检查表,外文翻译,论文11200字,程序,答辩PPT) 摘 要 计算器一般是指"电子计算器",能进行 ...

  9. 基于51单片机的计算器设计

    能做计算器的单片机 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子.科技.通信.汽车.工业等.本次设计是设计一个简易计算器,能够进 ...

  10. AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc

    一个基于AVR单片机的计算器程序 #include #include//延时函数的头文件 #include // 中断函数的头文件 #define uint unsigned int #define ...

最新文章

  1. VMware虚拟机上的文件如何和Windows进行共享
  2. CSS Guide Lines
  3. bzoj2006 NOI2010 数据结构+堆维护区间和最大
  4. 知物由学 | 干货!一文了解安卓APP逆向分析与保护机制
  5. 有关技术管理的一些思考
  6. AHK-UMSS框架 (AHK通用修饰键解决方案,任何键都是修饰键)
  7. MyBatis总结六:resultMap详解(包含多表查询)
  8. android url格式化,Android利用SpannableString实现格式化微博内容
  9. PHP中register_globals参数为OFF和ON的区别
  10. java 拟合曲线_如何通过指数曲线拟合数据
  11. CISCO 路由器的E1模块配置指南
  12. 洛克人html5,《洛克人Zero/Zx合集》:跳票冷饭,与预期有差但依旧很香
  13. SIMIS计算机联锁系统,steam游戏sim
  14. windows 7中的windows键相关的快捷键
  15. hashmap允许null键和值吗_【29期】Java集合框架 10 连问,你有被问过吗?
  16. python爬虫入门——爬取淘宝商品评论信息
  17. Java输入/输出流
  18. 2021高校毕业礼物,竞争太激烈了!
  19. mysql复制表 复制表结构和数据 改变字段
  20. ALS推荐算法学习总结

热门文章

  1. 6个超级实用的免费网盘搜索网站分享
  2. 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
  3. 全栈开发之基于云开发实现微信聊天功能
  4. WEBService-SOAP协议
  5. 软考 系统架构设计师 2009-2018年英语翻译及重点词汇
  6. u深度制作win10系统安装盘教程
  7. 手把手教你制作一块Linux开发板(基于Planck-pi)
  8. Linux账号安全控制与PAM认证模块
  9. JAVA对接圆通API
  10. 【广外女生】远程监控软件2008A免费版本