怎样用52单片机做计算机,利用串口小助手实现AT89S52单片机简易计算器完整程序(Keil)...

本文介绍如何利用AT89S52单片机编写一个简易计算器程序,涉及键盘扫描、数字处理和运算符识别,通过串口小助手进行交互。
摘要由CSDN通过智能技术生成

最佳答案

#include

#include

#include /* isdigit()函数 */

#include /* atoi()函数 */

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9]; /* 操作数 */

uchar operator; /* 操作符 */

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

uint compute(uint va1,uint va2,uchar optor);

uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff}; /* 字符码表 */

uchar dbuf[8] = {10,10,10,10,10,10,10,10}; /* 显示缓存 */

/* 延时函数 */

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/*******************************************

键盘扫描程序

将按键转化为字符并作为输出

'$','#'分别表示清零键和没有键按下

*******************************************/

uchar keyscan()

{

uchar skey; /* 按键值标记变量 */

/***********************

扫描键盘第1行

************************/

P1 = 0xfe;

while((P1 & 0xf0) != 0xf0) /* 有按键按下 */

{

delay(3); /* 去抖动延时 */

while((P1 & 0xf0) != 0xf0) /* 仍有键按下 */

{

switch(P1) /* 识别按键并赋值 */

{

case 0xee: skey = '7'; break;

case 0xde: skey = '8'; bre

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值