#8.15#--项目20基于AT89S52单片机简易计算器的设计.pdf
《#8.15#--项目20基于AT89S52单片机简易计算器的设计.pdf》由会员分享,可在线阅读,更多相关《#8.15#--项目20基于AT89S52单片机简易计算器的设计.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、项目项目20 基于基于AT89S52单片机简易计算器的设计单片机简易计算器的设计20.1 项目概述项目概述中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。20.2.项目要求项目要求基于AT89S
2、52单片机的简易计算器,晶振采用12MHz。设计要求如下所示。计算器至少能正常显示八位数;开机时,显示“0”,第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;计算器能对整数进行简单的加、减、乘、除四则运算,在做除法时能自动舍去小数部份;运算结果超过可显示的位数时能进行出错提示。20.3 系统设计系统设计计算器以AT89S52单片机为核心芯片,通过扫描键盘来得到数据,另外通过CPU到得到的数据按要求进行运算并将运算结果送到显示电路进行显示。20.3.1框图设计基于AT89S52单片机的简易计算器由的电源电路、单片机主控电路、按键控制电路、显示电路和复位电路几部分组成,框图组成如图20
3、-1所示。图20-1 AT89S52单片机的简易计算器系统框图20.3.2 知识点知识点通过学习和查阅资料,本项目需要掌握和了解知识如下所示。电源原理及设计。单片机复位电路工作原理及设计。单片机晶振电路工作原理及设计。按键电路的设计。驱动电路74LS07的特性及使用。七段数码管的特性及使用。AT89S52单片机引脚。单片机C语言及程序设计。120.4 硬件设计硬件设计20.41电路原理图电路原理图 用成本低廉且易于购买的七段数码管作为显示器,显示电路中采用两个四位的七段共阳级数码管构成八位显示,用P2口接数码管的位码并以74LS07作为驱动。段码直接在P1口上用单片机直接驱动。键盘用单个按键自
4、制一个44的键盘接在P3口上。复位电路采用经典的上电加按键复位。综上所述,可设计出AT89S52单片机简易计算器电路图如图20-2所示。20.42 元件清单元件清单 基于AT89S52单片机简易计算器元件清单如表20-1所示。表20-1 AT89S52单片机简易计算器元件清单元件名称型号数量用途元件名称型号数量用途单片机AT89S521个控制核心排阻4.7k81个上拉电阻晶振12MHz1个晶振电路数码管四位共阳级2个显示电路电容30PF2个晶振电路驱动器74LS072个显示驱动电解电容10F/10V1个复位电路按键17个按键电路电阻10k5个复位电路、按键电路电源+5V/0.5A1个提供+5V
5、图20-2 简易计算器电路图20.5.软件设计软件设计20.5.1程序流程图程序流程图由于本设计主要是算法问题,所以程序才用C语言编写。主函数对单片机进行初始化,并不断调用扫键函数和运算函数。显示函数采用1ms定时中断来对显示数据进行实时更新。简易计算器程序流程图如图20-3所示。图20-3 简易计算器程序流程图20.5.2程序清单程序清单简易计算器程序清单如下所示。#include2#define LEDS 8/*按键程序*/char keyscan();/*显示程序*/void display();char dsp9=0,0,12,12,12,12,12,12,12;/初始化显示数组/*计
6、算程序*/void calculate(char k,char c18,char c28);/*片选*/unsigned char code Select=0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;/*码选*/unsigned char code LED_CODES=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,/0-40 x92,0 x82,0 xF8,0 x80,0 x90,/5-90 x86,0 xAF,0 xFF,0 x7F,0 xBF,;/E,r,空格,.,-/*main函数*/void main(void)char
7、 i,j,k,c;char a8,b8;/*定时1ms*/TMOD=0;TL0=-(1000/256);TH0=-(1000%256);EA=1;/总中断开关ET0=1;/开中断TR0=1;/启用计数器0KSC:do for(i=1;i9;i+)/数字录入循环 dsp0=keyscan();if(c=2&dsp010)/此段代码验证是否有旧的计算结果在显示,且不再参与新计算 dsp1=dsp0;for(j=2;j9)/旧的计算结果将参与新的计算,作为第一个数3 c=0;if(dsp0=0&dsp1=0&dsp2=12)/个位为0且十位为空时按下0,按键无效,跳回KSC等待正确输入 /*goto
8、跳转标志*/goto KSC;else if(dsp09)break;/有操作符按下,跳出数字录入循环 else for(j=i;j0;j-)dspj=dspj-1;/移位,以正确显示数字 if(i=9)/判断是否输入8个有效数字,是则等待操作符,否则直接判断操作符 do /使用do while无论是否第一个数都取一次操作符 dsp0=keyscan();/获取操作符号 if(dsp0=14|dsp010)/按下C或者第9位数字清零 dsp1=0;for(i=2;i9;i+)dspi=12;c=0;while(dsp0=20)&(c=0);/等号被按下,等待新的操作符(仅对第一个数字有效)el
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8.15 项目 20 基于 AT89S52 单片机 简易 计算器 设计
限制150内