资源简介
实现一简易的加减法计算器的功能,要求该计算器能够进行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
相关资源
- 基于89C51单片机的LCD音乐闹钟(详细注
- 课程设计 可视化计算器 VS2017实现
- 数电课程设计8人抢答器
- 基于STC 51单片机的智能循迹小车
- 51单片机心形流水灯
- 东北大学软件学院数据结构课程设计
- 51单片机,DS18B20实现程序
- 交通灯程序设计1
- 51单片机+adc0809+PT100的24路温度巡检仪
- 《嵌入式系统开发》课程设计基于Q
- LED点阵显示汉字
- 吃金豆小游戏 课程设计
- 实现呼吸灯
- 进程状态模拟转换.docx
- 51单片机流水灯仿真+程序
- 51单片机DHT11温湿度
- 山东大学计算机组成原理课程设计
- 基于51单片机HC-06蓝牙模块使用
- labview简易信号发生器
- 基于51单片机的HC-08蓝牙程序
- 汇编语言计算器课程设计
- 汇编课程设计 :简单计算器的设计与
- CA6140车床拨叉831008工艺课程设计
- 交通咨询系统数据结构课程设计 报告
- 51单片机实用计算器汇编+数码管.zip
- 51单片机 菜单程序OLED屏
- 51单片机跑uC/OS II 2个任务
- 汇编语言课程设计--计算器
- 基于51单片机的GPS定位程序
- 基于51单片机和PROTEUS的非常形象的交
评论
共有 条评论