一个单片机的简易计算器

这个博客介绍了一个基于C8051F320x单片机的简易计算器,具备16键加LCD显示功能,支持正整数的加、减、乘、整除运算,结果显示范围限制在-9999999到99999999。程序详细说明了按键检测、显示处理和计算过程。存在的限制包括只能处理整数和显示结果位数受限。
摘要由CSDN通过智能技术生成

 //-----------------------------------------------------------------------------
// 
// 目标器件: C8051F320x
//
// 编译工具: Silicon Laboratories IDE
//
//-----------------------------------------------------------------------------
//程序描述:
//  16 Key + LCD Display
//  可以进行正整数的加、减、乘、整除运算,计算结果显示范围:-9999999~99999999
//-----------------------------------------------------------------------------
// 头文件包含
//-----------------------------------------------------------------------------
#include <c8051F320.h>                
//;************************************************************************
//;*  p1.0 : 1st column (k0,k4,k8,kc)
//;*  p1.1 : 2nd column (k1,k5,k9,kd)
//;*  p1.2 : 3rd column (k2,k6,ka,ke)
//;*  p1.3 : 4th column (k3,k7,kb,kf)
//;*  p1.4 : 1st row (k0,k1,k2,k3)  p1.7-p1.4 connect to 74LS21
//;*  p1.5 : 2nd row (k4,k5,k6,k7)
//;*  p1.6 : 3rd row (k8,k9,ka,kb)
//;*  p1.7 : 4th row (kc,kd,ke,kf)
//:*  p2.6 : =0 a key is pressed   
//;**********************************

//-----------------------------------------------------------------------------
//全局变量定义
//-----------------------------------------------------------------------------

                                 
unsigned char DispData0[8]={'0',' ',' ',' ',' ',' ',' ',' '};//                       
unsigned int x;
unsigned char *lcdpoint0;         //指向 lcddata数组的指针
unsigned char *lcdpoint1;         //指向 lcddata数组的指针
sbit rs = P2^3;
sbit e = P2^5;
sbit aKey = P2^6;
//-----------------------------------------------------------------------------
// 函数定义
//-----------------------------------------------------------------------------
void PORT_Init (void);           //通用I/O口及交叉开关初始化
void SYSCLK_Init (void);         //系统时钟初始化
void LCD_Init(void);             //液晶初始化
void LCD_Instruction(unsigned char comnd);
void LCD_Data(unsigned char data0);
void LCD_Display (void);
void Delay8_33us(unsigned int iM);

void ClearLCD(void);   //清除显示内容
void GetKey(unsigned char chkey);//获得显示字符
void GetResult(void);     // 计算结果
int ii,i=0;
un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值