简易计算器的设计方案.docx

上传人:b****3 文档编号:24732218 上传时间:2023-06-01 格式:DOCX 页数:18 大小:238.50KB
下载 相关 举报
简易计算器的设计方案.docx_第1页
第1页 / 共18页
简易计算器的设计方案.docx_第2页
第2页 / 共18页
简易计算器的设计方案.docx_第3页
第3页 / 共18页
简易计算器的设计方案.docx_第4页
第4页 / 共18页
简易计算器的设计方案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

简易计算器的设计方案.docx

《简易计算器的设计方案.docx》由会员分享,可在线阅读,更多相关《简易计算器的设计方案.docx(18页珍藏版)》请在冰豆网上搜索。

简易计算器的设计方案.docx

简易计算器的设计方案

简易计算器的设计方案

1计算器设计目的

通过本次工程实践,运用《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。

通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。

随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。

电子产品的更新速度快就不足惊奇了。

计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。

现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。

本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。

通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。

2计算器设计的任务与要求

近几年单片机技术的发展很快,其中,电子产品的更新速度迅猛。

计算器是日常生活中比较常见的电子产品之一。

如何才能使计算器技术更加的成熟,充分利用已有的硬件和软件条件,设计出更出色的计算器。

本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用4*4矩阵键盘,可以进行加、减、乘、除带符号数字运算(七位整数、六位小数),并在液晶显示屏LCD1602上静态显示操作过程及结果。

3设计方案和论证

3.1电源模块

于本系统采用电池供电,我们考虑了如下几种方案为系统供电。

方案1:

采用5V蓄电池为系统供电。

蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。

但是蓄电池的体积过于庞大,在使用极为不方便。

因此我们放弃了此方案。

方案2:

采用3节1.5V干电池共4.5V做电源,经过7805的电压变换后为单片机,传感器供电。

经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。

综上所述采用方案2。

3.2主控制器模块

方案1:

采用可编程逻辑器件CPLD作为控制器。

CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。

采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。

但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高。

且从使用及经济的角度考虑我们放弃了此方案。

方案2:

采用STC89C52单片机作为整个系统的核心,用其控制密码锁控制,以实现其既定的性能指标。

充分分析我们的系统,其关键在于密码锁的控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。

这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。

STC89C52单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。

因此,这种方案是一种较为理想的方案。

从方便使用的角度考虑,我们选择了方案2。

4设计原理及功能说明

4.1简易计算器设计基本原理

根据功能和指示要求,本系统选用以MCS-51单片机为主控机。

通过扩展必要的外围接口电路,实现对计算器的设计。

4.2MCS-51系列单片机简介

stc89c52是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。

stc89c52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构如图4-1所示,现在分别加以说明:

图4-1stc89c52内部结构图

中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

数据存储器(RAM):

stc89c52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

定时/计数器:

stc89c52有两个16位的可编程定时/计数器,以实现定时或计数产生中断,用于控制程序转向。

并行输入输出(I/O)口:

stc89c52内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但stc89c52单片机需外置振荡电容。

如图4-2:

 

 

图4-2MCS-51内部结构图

5单元电路的设计

5.1主控制模块

主控制最小系统电路如图5-1所示。

图5-1单片主控电路

5.2单片机的时钟电路与复位电路设计

本系统采用STC系统列单片机,相比其他系列单片机具有很多优点。

一般STC单片机资源比其他单片机要多,而且执行速度快;STC系列单片机使用串口对单片机进行烧写,下载程序较为方便;STC51单片机内部集成了看门狗电路;且具有很强抗干扰能力。

本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图5-2图5-3

图5-2时钟电路图5-3复位电路

由于单片机P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组I/O口在使用时必须外接上拉电阻。

5.3键盘电路设计

在单片机应用系统中,一般都会设置键盘,主要为了控制运行状态,输入一些命令或数据,以完成特定的人机交互,对于输入参数较多、功能复杂的系统,需要采用矩阵式键盘进行输入控制。

本系统采用4*4矩阵式键盘,键盘连接方式如图5-4所示:

图5-4键盘电路

5.4液晶显示电路设计

液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。

电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏LCD进行显示,具体连接方式如图:

图5-5液晶显示电路

6硬件设计

6.1主程序流图

如下图6-1为主程序流程图:

图6-1主程序流程图

6.2运算程序设计

STC89C52单片机是一块芯片中集成了CPU、RAM、ROM、定时器、计数器、和多功能I/O等一台计算器所需要的基本功能部分。

如果按功能划分,它由如下功能部分组成,即微处理器(CPU)、数据处理器(RAM)、程序处理器(ROM/CPROM)、并行I/O口、串行口、定时器、计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。

如图6-2:

图6-2运算程序

7硬件的制作与调试

1.检查元件的好坏

按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别进行检测,一定要仔细认真。

2.放置、焊接各元件

按原理图的位置放置各元件,在放置过程中要先放置、焊接较低的元件,后焊较高的和要求较高的元件。

仿真图7-1如下:

图7-1仿真图

8总结

在这次课程设计中,我主要负责的是仿真和编程。

要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

参考文献

[1]王千.实用电子电路大全[M].电子工业出版社,2004,28-36

[2]彭为.单片机典型系统设计实例精讲[M].电子工业出版社,2006,69-88

[3]张荣.基于单片机的智能系统设计与实现[M].电子工业出版社,2005,35-38

[4]朱勇.单片机原理与应用技术[M].清华大学出版社,2006,14-16

[5]潘永雄.新编单片机原理与应用[M].西安电子科技大学出版社,2003,78-86

[6]胡全.51单片机的数码管动态显示技术[J].信息技术,2009,13:

25~26

附录1:

总体电路原理图

 

附录2:

元器件清单

Comment

名称

型号规格

数量

10uF

电容

C1

1

20pF

电容

C2,C3

2

LCD1602

液晶

LCD1

1

Header2

电源接口

P1

1

2K

电阻

R1

1

10K

电阻

R3

1

SW-PB

独立按键

S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17

17

sw-灰色

电源开关

SW1

1

U1

单片机STC89C52

U1

1

12M

晶振

Y1

1

 

附录3:

部分源程序

if(jjcc==0)

{

Num_str[Lcd_dis1_i]=s;

Lcd_dis1_i++;

Lcd_num2_add=Lcd_dis1_i;

}

else

{

if(Num_str[Lcd_num2_add]==0)

Num_str[Lcd_dis1_i-1]=s;

}

Dis_str(0x80,Num_str);

}

if(jjcc==5)

{

Lcd_dis1_i=4;

Lcd_num2_i=0;

Lcd_num2_add=4;

memset(Num_str,0,16);

Num_str[0]='A';

Num_str[1]='n';

Num_str[2]='s';

Num_str[3]=s;

Dis_str(0x80,"");

Dis_str(0x80,Num_str);

}

}

voidmain(void)

{

ucharnum_key1;

init_1602();

write_1602dat('0');

memset(Num_str,0,16);

while

(1)

{

num_key1=saom();//读按键值

delayms(10);

if(num_key1<18)//是否有按键按下,小于16时有按键按下

{

batt=0;delayms(30);batt=1;

switch(num_key1)

{

case11:

if(Num_str[Lcd_num2_add]<=0x39&&Num_str[Lcd_num2_add]>=0x30)

num2=atof(Num_str+Lcd_num2_add);//从数组中取第二个数字

else

break;

Lcd_num2_i=0;

//XS_JG(0x8a,num2);

switch(jjcc)

{

case1:

num1+=num2;//加

break;

case2:

num1-=num2;//减

break;

case3:

num1*=num2;//乘

break;

case4:

num1/=num2;//除

break;

}

XS_JG(0xc0,num1);

Dis_str(0x80+Lcd_dis1_i,"=");

jjcc=5;//等号标志

break;

case12:

if(Num_str[0]==0||Lcd_num2_i>0)

break;

fuhao('+');

jjcc=1;Dian_i=0;

break;//按下加号键

case13:

if(Num_str[0]==0||Lcd_num2_i>0)

break;

fuhao('-');

jjcc=2;Dian_i=0;

break;//按下减号键

case14:

if(Num_str[0]==0||Lcd_num2_i>0)

break;

fuhao('*');

jjcc=3;Dian_i=0;

break;//按下乘号键

case15:

if(Num_str[0]==0||Lcd_num2_i>0)

break;

fuhao('/');

jjcc=4;Dian_i=0;

break;//按下除号键

case10:

if(Dian_i==0&&(Lcd_num1_i!

=0||Lcd_num2_i!

=0))//输入小数点时前面必须有数字

{

Dian_i++;//小数点

Num_str[Lcd_dis1_i]='.';

Lcd_dis1_i++;

Dis_str(0x80,Num_str);

}

break;

case16:

jjcc=0;

Dian_i=0;

Lcd_dis1_i=0;

Lcd_num1_i=0;

Lcd_num2_i=0;

Lcd_num2_add=0;

memset(Num_str,0,16);

Dis_str(0x80,"0");//清除显示

Dis_str(0xc0,"");

/*********************删除一个数字*******************/

case17:

if(Lcd_dis1_i==0)

break;

/*********************删除一个数字删除小数点按等号后不再撤销*******************/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1