基于AT89C51单片机简易计算器的设计推荐文档Word下载.docx
- 文档编号:6541527
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:35
- 大小:317.57KB
基于AT89C51单片机简易计算器的设计推荐文档Word下载.docx
《基于AT89C51单片机简易计算器的设计推荐文档Word下载.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机简易计算器的设计推荐文档Word下载.docx(35页珍藏版)》请在冰点文库上搜索。
(1)4×
4集成计算键盘
集成计算键盘本质上是4×
4矩阵键盘,矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×
4个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
矩阵键盘的工作原理:
计算器的键盘布局如图2所示:
一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
矩阵键盘内部电路图如图所示:
(三)、LED显示模块
如图
本设计采用LED共阴数码管来显示输出数据。
共阴数码管的每一位都是公共的阴极,只有输入低电平的时候才有可能被点亮,所以位选的时候被选中的位必须是低电平。
本设计采用两个74HC573锁存器来驱动数码管,引脚如上图所示。
74HC573-1是控制段选的,74HC573-2是控制位选的,P2.6和P2.7端口是锁存使能位,置高电平时锁存器透明(即输入和输出相同),置低电平时锁存。
74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
HC573引脚功能:
引脚号符号名称及功能
1OE3态输出使能输入(低电平)
2-9D0-D7数据输入
12-19Q0-Q73态锁存输出
11LE锁存使能输入
10GND接地(0V)
20VCC电源电压
(四)运算模块(51单片机控制)
51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!
因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。
单片机最小系统
复位时单片机的初始化操作,只要给RST引脚加上两个机器周期以上的高电平信号,就可以使STC89C51单片机复位。
本次采用的是12M晶振,按钮复位电路。
三、软件设计
现实生活中人们熟知的计算器,其功能主要如下:
1、键盘输入;
2、数值显示;
3、加、减、乘、除四则运算;
针对上述功能,计算器软件程序要完成以下程序的设计:
1、键盘输入检测程序
2、LED显示程序
3、算术运算程序
1、程序流程图
系统总流程图
算术运算程序流程图
2、程序清单
#include<
reg52.h>
math.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
sbitwela=P2^7;
//定义端口
sbitdula=P2^6;
longin1,in2,out,x;
intcnt,i,flag;
ucharcodenum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//LED显示字模,共阴
voiddelay(uintxms)//延时函数
{
uintj;
for(i=xms;
i>
0;
i--)
for(j=114;
j>
j--);
}
voiddisplay()//显示函数声明
ucharw1,w2,w3,w4,w5,w6,f=0;
longy;
if(x>
=0)//显示六位计时数
{
if(x>
=1e6)
{
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[12];
dula=0;
delay
(2);
P0=0xef;
P0=0x3e;
P0=0xdf;
P0=num[0];
return;
}
w1=x%10;
w2=x/10%10;
w3=x/100%10;
w4=x/1000%10;
w5=x/10000%10;
w6=x/100000%10;
if(f==1||w6)
f=1;
P0=0xfe;
P0=num[w6];
if(f==1||w5)
P0=0xfd;
P0=num[w5];
if(f==1||w4)
P0=0xfb;
P0=num[w4];
if(f==1||w3)
P0=num[w3];
if(f==1||w2)
P0=num[w2];
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=num[w1];
dula=0;
delay
(2);
}
else
y=labs(x);
if(y>
=1e5)
w1=y%10;
w2=y/10%10;
w3=y/100%10;
w4=y/1000%10;
w5=y/10000%10;
if(f==0)
{
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=0x40;
dula=0;
delay
(2);
}
P0=0xfd;
P0=0xfb;
P0=0xf7;
if(f==0)
P0=0x40;
voidkeyscan()//键盘扫描函数
uchartemp;
P1=0xfe;
temp=P1;
temp=temp&
0xf0;
if(temp!
=0xf0)
delay(8);
temp=P1;
temp=temp&
if(temp!
temp=P1;
switch(temp)
case0xee:
if(cnt<
6)
{
cnt++;
if(flag==0)
{
in1=in1*10+7;
x=in1;
}
else
in2=in2*10+7;
x=in2;
}
break;
case0xde:
in1=in1*10+8;
in2=in2*10+8;
case0xbe:
in1=in1*10+9;
in2=in2*10+9;
case0x7e:
if(cnt!
=0&
&
flag==0)
cnt=0;
flag=4;
while(temp!
temp=P1;
temp=temp&
P1=0xfd;
case0xed:
in1=in1*10+4;
in2=in2*10+4;
case0xdd:
in1=in1*10+5;
in2=in2*10+5;
case0xbd:
in1=in1*10+6;
in2=in2*10+6;
case0x7d:
flag=3;
P1=0xfb;
//消除抖动
case0xeb:
in1=in1*10+1;
in2=in2*10+1;
case0xdb:
in1=in1*10+2;
in2=in2*10+2;
case0xbb:
in1=in1*10+3;
in2=in2*10+3;
case0x7b:
flag=2;
=0xf0)
P1=0xf7;
=0xf0)//证明有键按下,if语句是为了让键盘松开
case0xe7:
cnt=0;
in1=0;
in2=0;
out=0;
flag=0;
x=0;
case0xd7:
in1=in1*10+0;
in2=in2*10+0;
case0xb7:
//如果得到符号位
switch(flag)
case1:
out=in1+in2;
//加
break;
case2:
out=in1-in2;
//减
case3:
out=in1*in2;
//乘
case4:
if(in2)
out=in1/in2;
//除
x=out;
case0x77:
flag=1;
=0xf0)//等待按键松开
}
voidmain()//主函数
while
(1)
keyscan();
display();
四、设计总结
1、软件调试
在软件调试的过程中,一开始没有做数值溢出方面的控制,导致LED显示的输入数据或计算结果与实际不相符。
通过多次调试,软件能够正常运行,基本实现与其功能,通过矩阵键盘输入第一个数据后,按下所需运算符号后,再次通过矩阵键盘输入第二个数据,最后按下等号,能够正确显示计算结果。
如需继续计算,继续按照上述步骤输入数据即可。
2、硬件调试(略)
3、总结
课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为计算机专业的学生来说掌握单片机的开发技术是十分重要的。
设计基于单片机设计简易计算器,对于我这个实践中的新手来说,这是一次考验。
这次课程设计我学到很多很多的东西,学会了怎么在遇到问题时去解决问题。
不仅巩固了以前所学过的知识,而且学到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 单片机 简易 计算器 设计 推荐 文档