急求用单片机设计简易计算器!!!!

用单片机知识设计简单计算器,包括+,-,*,=功能即可``谢谢... 用单片机知识设计简单计算器,包括+,-,*,=功能即可``谢谢 展开
 我来答
beyondwpd
2007-12-29 · TA获得超过736个赞
知道答主
回答量:143
采纳率:0%
帮助的人:155万
展开全部
1. 4X4键盘输入,点阵字符型液晶显示。
2. 由于所采用的浮点程序库的限制(MCU平台只找到这个……),浮点运算采用3字节二进制补码表示,有效数字6位。对于输入输出,采用3字节BCD码浮点数格式,有效数字只有4位,因此最终有效数字只有4位。
3. 可进行连续输入,例如:1.23+4.56*8.23/234.8 ,但是运算结果为从左到右,这也是8位简易计算器的方式。
4. 可进行错误判断,溢出、除零等错误将显示一个字符 E 。
5. 由于键盘只有16个按键,安排如下:
+---------------+
| 7 | 8 | 9 | + |
| 4 | 5 | 6 | - |
| 1 | 2 | 3 | * |
| 0 | . | = | / |
+---------------+
6. 按键的缺少导致取消了一些特殊函数,即开根号,三角函数(sin, cos, tan, ctg)的实现,由于这些函数在浮点程序库中均已提供,如果硬件允许,在原来的框架上添加这些附加功能是很容易的(可以看作和+, -, *, /等价的按键操作,调用不同的子程序进行运算即可)
7. 按两次 = 等于清灵。因为按键实在太少,才采用了这个做法。
8. 相应举例:
按键 结果 说明
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123+= 123 按下等号而没有第二个操作数,保留第一个操作数
并认为此次运算结束(等号的功能)

123+321/111 4.0 等价于(123+321) / 111

2.3+5.4=/0.1+ 77 等号后直接按 / ,则将前面的运算结果作为第一个
操作数
1/0= E 错误显示

要源码去这里:http://macroling.bokee.com/2390458.html

参考资料: http://macroling.bokee.com/2390458.html

潇湘电子工程师
2008-01-08 · TA获得超过3703个赞
知道大有可为答主
回答量:4170
采纳率:0%
帮助的人:2362万
展开全部
ptotues软件中带了一个比较好的,你可以去看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霍桂兰辉云
2019-08-24 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.4万
采纳率:29%
帮助的人:923万
展开全部
给你些子程序,自己看着凑吧。呵呵。有了这些,写出来应该不难了。
;@@@@@@@@@双字节整数运算@@@@@@@@@@@@@@@@@@
;***********双字节无符号加法**************
;入口:R6(H),R7,R4(H),R5,出口:和R6(H),R7(L)
UADD:
MOV
A,R7
ADD
A,R5
MOV
R7,A
MOV
A,R6
ADDC
A,R4
MOV
R6,A
RET
;***********双字节无符号减法**************
;入口:被减数R6(H),R7(L),减数R4(H),R5(L),出口:差R6(H),R7(L)
CLR
C
MOV
A,R7
SUBB
A,R5
MOV
R7,A
MOV
A,R6
SUBB
A,R4
MOV
R6,A
RET
;***********双字节无符号乘法**************
;入口:R6(H),R7(L),R4(H),R5(L),出口:积R6(H),R7(L)
UMUL:
MOV
A,R7
MOV
B,R5
MUL
AB
MOV
R0,B
XCH
A,R7
MOV
B,R4
MUL
AB
ADD
A,R0
XCH
A,R6
MOV
B,R5
MUL
AB
ADD
A,R6
MOV
R6,A
RET
;***********双字节无符号除法*****************
;入口:R6(H),R7(L),R4(H),R5(L),出口:商R6(H),R7(L),余R4(H),R5(L)
;影响:R2,R3,
;堆栈需求:1
UDIV:
CLR
C
CLR
A
MOV
R2,A
MOV
R3,A
MOV
B,#10H
MOVBIT:
MOV
A,R7;R6、R7中数据左移一位到R2、R3中,C到R7
RLC
A
MOV
R7,A
MOV
A,R6
RLC
A
MOV
R6,A
MOV
A,R3
RLC
A
MOV
R3,A
MOV
A,R2
RLC
A
MOV
R2,A
CLR
C
;R2R3-R4R5
MOV
A,R3
SUBB
A,R5
PUSH
Acc
MOV
A,R2
SUBB
A,R4
JBC
Cy,MOVBIT0;不够减,清C继续左移
MOV
R2,A;够减,存回余数并置位C
POP
Acc
MOV
R3,A
SETB
C
SJMP
MOVBIT1
MOVBIT0:
POP
Acc
MOVBIT1:
DJNZ
B,MOVBIT
MOV
A,R7
RLC
A
MOV
R7,A
MOV
A,R6
RLC
A
MOV
R6,A
MOV
A,R2
MOV
R4,A
MOV
A,R3
MOV
R5,A
RET
(7)
标号:
DIVD
功能:双字节二进制无符号数除法
入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
出口信息:OV=0
时,双字节商在R2、R3中,OV=1
时溢出。
影响资源:PSW、A、B、R1~R7
堆栈需求:
2字节
DIVD:
CLR
C
;比较被除数和除数
MOV
A,R3
SUBB
A,R7
MOV
A,R2
SUBB
A,R6
JC
DVD1
SETB
OV
;溢出
RET
DVD1:
MOV
B,#10H
;计算双字节商
DVD2:
CLR
C
;部分商和余数同时左移一位
MOV
A,R5
RLC
A
MOV
R5,A
MOV
A,R4
RLC
A
MOV
R4,A
MOV
A,R3
RLC
A
MOV
R3,A
XCH
A,R2
RLC
A
XCH
A,R2
MOV
F0,C
;保存溢出位
CLR
C
SUBB
A,R7
;计算(R2R3-R6R7)
MOV
R1,A
MOV
A,R2
SUBB
A,R6
ANL
C,/F0
;结果判断
JC
DVD3
MOV
R2,A
;够减,存放新的余数
MOV
A,R1
MOV
R3,A
INC
R5
;商的低位置一
DVD3:
DJNZ
B,DVD2
;计算完十六位商(R4R5)
MOV
A,R4
;将商移到R2R3中
MOV
R2,A
MOV
A,R5
MOV
R3,A
CLR
OV
;设立成功标志
RET
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式