单片机的计算器设计方案完整文档格式.docx
- 文档编号:14786458
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:21
- 大小:466.33KB
单片机的计算器设计方案完整文档格式.docx
《单片机的计算器设计方案完整文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的计算器设计方案完整文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
÷
清零
表3-1
3.2计算器的软件设计
#include<
reg51.h>
//头文件
#defineuintunsignedint//
#defineucharunsignedchar
sbitlcden=P2^3。
//定义引脚
sbitrs=P2^4。
sbitrw=P2^0。
sbitbusy=P0^7。
chari,j,temp,num,num_1。
longa,b,c。
//a,第一个数b,第二个数c,得数
floata_c,b_c。
ucharflag,fuhao。
//flag表示是否有符号键按下,fuhao表征按下的是哪个符号
ucharcodetable[]={
7,8,9,0,
4,5,6,0,
1,2,3,0,
0,0,0,0}。
ucharcodetable1[]={
7,8,9,0x2f-0x30,
4,5,6,0x2a-0x30,
1,2,3,0x2d-0x30,
0x01-0x30,0,0x3d-0x30,0x2b-0x30}。
voiddelay(ucharz>
//延迟函数
{
uchary。
for(z。
z>
0。
z-->
for(y=0。
y<
110。
y++>
。
}
voidcheck(>
//判断忙或空闲
do{
P0=0xFF。
rs=0。
//指令
rw=1。
//读
lcden=0。
//禁止读写
delay(1>
//等待,液晶显示器处理数据
lcden=1。
//允许读写
}while(busy==1>
//判断是否为空闲,1为忙,0为空闲
voidwrite_com(ucharcom>
//写指令函数
P0=com。
//com指令付给P0口
rs=0。
rw=0。
lcden=0。
check(>
lcden=1。
voidwrite_date(uchardate>
//写数据函数
P0=date。
rs=1。
voidinit(>
//初始化
num=-1。
//使能信号为高电平
write_com(0x38>
//8位,2行
write_com(0x0c>
//显示开,光标关,不闪烁*/
write_com(0x06>
//增量方式不移位显竟獗暌贫柚?
write_com(0x80>
//检测忙信号
write_com(0x01>
//显示开,光标关,不闪烁
num_1=0。
i=0。
j=0。
a=0。
//第一个参与运算的数
b=0。
//第二个参与运算的数
c=0。
flag=0。
//flag表示是否有符号键按下,
fuhao=0。
//fuhao表征按下的是哪个符号
voidkeyscan(>
//键盘扫描程序
P3=0xfe。
if(P3!
=0xfe>
delay(20>
延迟20ms
if(P3!
{
temp=P3&
0xf0。
switch(temp>
case0xe0:
num=0。
break。
case0xd0:
num=1。
case0xb0:
num=2。
case0x70:
num=3。
}
while(P3!
if(num==0||num==1||num==2>
//如果按下的是'
7'
'
8'
或'
{
if(j!
=0>
write_com(0x01>
j=0。
if(flag==0>
//没有按过符号键
a=a*10+table[num]。
else//如果按过符号键
b=b*10+table[num]。
else//如果按下的是'
/'
flag=1。
fuhao=4。
//4表示除号已按
i=table1[num]。
write_date(0x30+i>
P3=0xfd。
=0xfd>
delay(5>
num=4。
num=5。
num=6。
num=7。
if(num==4||num==5||num==6&
&
num!
=7>
4'
5'
6'
fuhao=3。
//3表示乘号已按
P3=0xfb。
=0xfb>
num=8。
num=9。
num=10。
num=11。
if(num==8||num==9||num==10>
1'
2'
3'
elseif(num==11>
-'
fuhao=2。
//2表示减号已按
P3=0xf7。
=0xf7>
num=12。
num=13。
num=14。
num=15。
switch(num>
case12:
{write_com(0x01>
}//按下的是"
清零"
case13:
{
//按下的是"
0"
a=a*10。
write_date(0x30>
P1=0。
elseif(flag==1>
//如果按过符号键
b=b*10。
case14:
{j=1。
if(fuhao==1>
{write_com(0x80+0x4f>
//按下等于键,光标前进至第二行最后一个显示处
write_com(0x04>
//设置从后住前写数据,每写完一个数据,光标后退一格
c=a+b。
while(c!
write_date(0x30+c%10>
c=c/10。
}
write_date(0x3d>
//再写"
="
a=0。
elseif(fuhao==2>
//光标前进至第二行最后一个显示处
//设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 计算器 设计方案 完整
![提示](https://static.bdocx.com/images/bang_tan.gif)