资源简介
实现一简易的加减法计算器的功能,要求该计算器能够进行6位无符号数的加减计算(也可以乘除)

代码片段和文件信息
#include “reg52.h“
#include “intrins.h“
#include “lcd.h“
#define KEY P0
typedef unsigned int u16;
typedef unsigned char u8;
u8 code smgduan[17]={0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x71};//显示0~F的值
u8 dec1[6]={000000}dec2[6]={000000}defalut[6] = {000000};
unsigned long int de1=0de2=0defmul=1;
u8 Disp[] = “ Pechin Science “;
u8 KeyValue;
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
void delay(unsigned int i){
while(i--);
}
void DigDisplay(u8 ju8 k){
u8 i;
for(i=0;i {
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//显示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//显示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//显示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//显示第7位
}
if(j==1){
P1=smgduan[dec1[i]];
}else if(j==2){
P1=smgduan[dec2[i]];
}else if(j==3){
P1 =smgduan[defalut[i]];
}
delay(100); //间隔一段时间扫描
P1=0x00;//消隐
}
}
u8 flag = 0;//是否是第二次按下
void keydown(){
char a=0;
KEY=0x0f;
if(KEY!=0x0f)//读取按键是否按下
{
delay(1000);//延时10ms进行消抖
if(KEY!=0x0f)//再次检测键盘是否按下
{
flag = 1;
//测试列
KEY=0X0F;
switch(KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//测试行
KEY=0XF0;
switch(KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(KEY!=0xf0)) //检测按键松手检测
{
delay(1000);
a++;
}
}
}
}
void main(){
u8 i=0j=0operator=0flag1=0n;
// LcdInit();
/* for(i=0;i<16;i++)
{
LcdWriteData(Disp[i]);
} */
//u8 dec1[6]={000000}dec2[6];
// “A为+““B为减““C为等于“
while(1){
i = 0;
while(i<7){ //32+12 =
keydown();
if(flag==1&&KeyValue!=10&&KeyValue!=11&&KeyValue!=12&&KeyValue!=13){ //只接收数据
flag = 0;
dec1[i]=KeyValue;
i++;
}
DigDisplay(1i);//1代表被减数 2代表减数 3代表结果 i代表位数
while(KeyValue==10||KeyValue==11||KeyValue==12||KeyValue==13){
if(flag==1){
flag=0;
if(KeyValue==10) {operator = 0; dec1[i]=10;}
if(KeyValue==11) {operator = 1; dec1[i]=11;}
if(KeyValue==12) {operator = 2; dec1[i]=12;}
if(KeyValue==13) {operator = 3; dec1[i]=13;}
}
j=i+1 ;
DigDisplay(1j);
keydown();
if(flag==1){
i=0;
flag=0;
dec2[i]=KeyValue;
i++;
flag1 =1;
break;
}
}
if(flag1==1){
break;
}
}
for(n =j-1;n>0;n-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 23733 2018-07-05 22:22 简易计算器\New Project.pdsprj
目录 0 2018-07-05 23:52 简易计算器\
文件 8936 2018-07-05 23:52 简易计算器\MCU_test
文件 11704 2018-07-05 23:52 简易计算器\MCU_test.LST
文件 10668 2018-07-05 23:52 简易计算器\MCU_test.M51
文件 10997 2018-07-05 23:52 简易计算器\MCU_test.OBJ
文件 3966 2018-07-05 23:52 简易计算器\MCU_test.c
文件 4350 2018-07-05 23:52 简易计算器\MCU_test.hex
文件 48 2018-07-05 23:52 简易计算器\MCU_test.lnp
文件 695 2018-07-05 23:52 简易计算器\MCU_test.plg
文件 57495 2018-07-05 23:52 简易计算器\MCU_test.uvopt
文件 13255 2018-07-05 23:52 简易计算器\MCU_test.uvproj
文件 58895 2018-07-05 23:32 简易计算器\MCU_test_uvopt.bak
文件 13415 2018-07-05 00:00 简易计算器\MCU_test_uvproj.bak
相关资源
- FTP课程设计(服务端+客户端)
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 高频电子线路课程设计报告收音机
- 直流稳压电源的课程设计、安装及调
- EDA课程设计_密码锁
- 51单片机多功能自行车测速仪
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 数据结构课程设计 6 1 彩票系统
- 端口扫描课程设计详细的报告
- 51单片机基于protues的几个仿真实例
- 步进电机课程设计(个人设计)
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 校园网络规划与设计课程设计
- 51单片机控制舵机程序
- 编译原理课程设计:词法语法编译器
-
simuli
nk 课程设计 qpsk - 武汉理工大学 单片机课程设计 16*16点
- 数据库VFP课程设计
- 51单片机读取温度数据存储到SD卡中并
- 分页系统模拟实验 操作系统 课程设
- 【单片机】51单片机数码管显示万年历
- 模拟段页式虚拟存储管理中地址转换
- 硬件课程设计—流水灯(quartus软件
- 超市收银系统eclipse access大学课程设计
评论
共有 条评论