




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、江苏农牧科技职业学院毕业论文(设计)基于 MCS-51单片机的简易计算器的设计与实现【摘要】 当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无 论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是 人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用 户的使用,可是它还在发展之中,以后必将出现功能更加强大的计算器,所以本次设计 是基于 51 单片机来设计的计算器,实现基本功能加减乘除,采用LCD显示结果数据。【关键词】 MCS-51; MM74C92;2 Protues ;矩阵键盘;计算器Design and implemen
2、tation of a simple calculator based onMCS-51 single chip microcomputer 矚慫润厲钐瘗睞枥庑赖。【 Abstract】 Nowadays, with the continuous improvement of peoples living, electronic products have already walked into each and every family, whether life or learning, or entertainment and recreation almost everything c
3、annot do without the electronic products, computing capability of large and complex is the human brain are not competent, and relatively easy to go wrong. The calculator as a fast general-purpose computing tools are easy to use, but it is still in development, later will appear a calculator function
4、 more powerful, so this design is to design based on 51 single chip computer, the realization of the basic functions of add, subtract, multiply and divide, uses LCD to display the results of data聞.創沟燴鐺險爱氇谴净。【 Keywords】 MCS-51;MM74C922 ; Protues;Matrix keyboard ;calculator 残骛楼諍锩瀨濟 溆塹籟。江苏农牧科技职业学院毕业论文(
5、设计)目录第一章 绪论 11.1 设计背景 11.2 设计内容 11.3 设计意义 1第二章 设计方案及技术基础 12.1 设计方案 12.2 方案论证及设计 12.3 MCS-51 单片机及开发环境介绍 . 22.3.1 MCS-51 系列单片简介 . 22.3.2 MM74C922芯片. 3第三章 硬件设计 43.1 硬件电路设计 43.1.1 电路设计原理 43.1.2 硬件电路设计 53.2 时钟电路 53.3 复位电路 63.4 输入模块:键盘接口电路 6第四章 软件设计 84.1 主程序设计 84.2 外部中断 0 处理程序 84.2.1 键值转化为键盘上按键值程序 94.2.2
6、算术运算程序 104.3 LCD 显示程序 . 10第五章 开发体会 135.1 Keil 软件调试 . 135.2 Protues 软件仿真 . 14第六章 总结 15参考文献 16II江苏农牧科技职业学院毕业论文(设计)致 谢 17附 录 18III江苏农牧科技职业学院毕业论文(设计)第一章 绪论1.1 设计背景随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术 的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了 , 单片机的应用 已经越来越贴近生活。计算器在人们的日常中就是比较的常见的电子产品之一。可是它 还在发展之中,以后必将出现功能更加强大的计算器,
7、基于这样的理念,本次设计是用 单片机来设计一个简易计算器。 酽锕极額閉镇桧猪訣锥。1.2 设计内容本次设计是基于 MCS-51单片机来设计的计算器。 计算器将完成的功能有加, 减,乘, 除等功能。设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计 流程有很好的把握,将单片机和其他模块完整的衔接。 彈贸摄尔霁毙攬砖卤庑。1.3 设计意义此次论文的价值和核心在于倡导自己把所学知识运用到现实生活, 为现实生活服务, 把自己的知识转化为实物哪怕是很简单的物件,很简单的功能,但真真切切的让自己感 受到创造的快乐,为自己今后的工作做好铺垫,往后通过更多的学习,更多的尝试,把 知识的作用真正
8、发挥出来,改变大家的生活。 謀荞抟箧飆鐸怼类蒋薔。第二章 设计方案及技术基础2.1 设计方案为了满足计算器的基本要求, 可以基本的运算 (加减乘除),数据归零和出错警告提 示,我们采用基于 51单片机,结合 MM74C922芯片设计一个简易的计算器,用 4*4 的矩 阵键盘实现数据输入,实现基本功能加减乘除,并用 LCD显示数据。设计仿真和调试要 用到 Keil 、 Protues 等软件。 厦礴恳蹒骈時盡继價骚。2.2 方案论证及设计根据功能与要求, 本系统选用 MCS-51单片机为主控机。 通过扩展必要的外围接口电 路,实现对计算器的设计。具体设计如下: 茕桢广鳓鯡选块网羈泪。( 1)由于
9、要设计的是简单的计算器, 可以进行四则运算, 为了得到较好的显示效果,采用 LCD 显示数据和结果鹅娅尽損鹌惨歷茏鴛賴。江苏农牧科技职业学院毕业论文(设计)(2)另外键盘包括数字键( 09)、符号键( +、- 、)、清除键和等号键,故 只需要 16 个按键即可,设计中采用集成的计算键盘。 籟丛妈羥为贍偾蛏练淨。( 3)执行过程:开机显示零,等待键入数值,当键入数字,通过 LCD显示出来,当 键入+、-、*、/ 运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当 再键入数值后将显示键入的数值,按等号就会在 LCD上输出运算结果。 預頌圣鉉儐歲龈讶骅籴。( 4)错误提示:当计算器执行过
10、程中有错误时,会在 LCD上显示相应的提示 , 如: 当输入的数值或计算得到的结果大于计算器的表示范围时, 计算器会在 LCD上提示溢出; 当除数为 0 时,计算器会在 LCD上提示错误。 渗釤呛俨匀谔鱉调硯錦。2.3 MCS-51单片机及开发环境介绍2.3.1 MCS-51系列单片简介MCS-51单片机较之前的单片机相比,功能增强许多,就其指令和运行速度而言,超 过了 Intel8085 的CPU和Z80的CPU,成为工业控制系统中较为理想的机种。 目前与 MCS-51 单片机兼容的一些单片机的时钟频率达到 40MHz甚至更高。 51 系列单片机的特点: (1) 8 位 cpu;(2)片内带
11、振荡器, 频率范围为 1.2MHz12MHz;(3)片内带 128M 的 数据存储器;(4)片内带 4KB的程序存储器;( 5)程序存储器的寻址空间为 64KB;(6) 片外数据存储器的寻址空间为 64KB;(7)128个用户位寻址空间;(8)21 个字节特殊功 能寄存器;(9)4 个 8 位的 I/O 并行接口: P0、P1、P2、P3;(10)两个 16 位定时、计 数器;(11)两个优先级别的五个中断源; ( 12)一个全双工的串行 I/O 接口,可多机通 信;(13)111 条指令,包含乘法指令和除法指令; (14)片内采用单总线结构;(15)有 较强的位处理能力;(16)采用单一 +
12、5V电源 铙誅卧泻噦圣骋贶頂廡。江苏农牧科技职业学院毕业论文(设计)图 2-1 MCS-51 结构图为了进一步节省单片机2.3.2 MM74C922 芯片I/O 口资源,我们在设计中使用了 MM74C92芯2 片。MM74C922是一款 4*4 键盘扫描 IC,它可检测到与之相连的 4*4 键盘的按键输入,并通过数据输出 口将按键相应的编码输出。其引脚图如图 2-2 所示: 擁締凤袜备訊顎轮烂蔷。图 2-2 MM94C922 硬件图MM74C922引脚说明:(1)Y1 Y4(脚 1脚 4): 4*4 键盘第一列至第四江苏农牧科技职业学院毕业论文(设计)(2)X1 X4(脚 11、 10、8、7
13、):4*4 键盘第一行至第四行。(3)DOA DOD(Dataout A D,脚 1417):按键之 BCD码输出,其中 DOA为 LSB, DOD为 MSB。贓熱俣阃歲匱阊邺镓騷。(4)VCC (脚 18):电源脚, +3V+15V。(5)GND(脚 9):接地管脚。(6)OSC(Oscillator ,脚 5):键盘扫描电路之频率所需外加电容的连引脚。 坛摶乡 囂忏蒌鍥铃氈淚。(7)KBM(Keyboard Mask,脚 6):内部消除开关弹跳电路所外加电容的引脚。 蜡變 黲癟報伥铉锚鈰赘。(8)OE (Output Enable ,脚 13):芯片使能脚,接低电位可使芯片使能。(9)DA
14、 (Data Available ,脚 12):数据有效输出脚。任一按键按下时,此脚位会 输出高电位,按键释放后此脚又会恢复为低电位。 買鲷鴯譖昙膚遙闫撷凄。MM74C922对各按键的响应如下表所示:图 2-3 MM74C922 对各按键的响应第三章硬件设计3.1 硬件电路设计3.1.1 电路设计原理4江苏农牧科技职业学院毕业论文(设计)单片机采用 AT89C51单片机,它能够满足数据的采集、控制和数据处理的需求。结 合时钟电路、复位电路、键盘输入完成简易计算器总电路设计。 綾镝鯛駕櫬鹕踪韦辚糴。图 3-1 电路设计原理3.1.2 硬件电路设计图 3-2 总电路设计3.2 时钟电路时钟频率直接
15、影响单片机的速度, 时钟电路的质量也直接影响单片机系统的稳定性。 在 MCS51 单片机片内部有一个高增益的反相放大器,它的的输入端为引脚XTAL1,输出端为引脚 XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方 式,晶振频率均为 30pF。根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟 方式和外部时钟方式。我们采用内部时钟方式。在内部方式时钟电路中,必须在 XTAL1 和 XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路。 驅踬髏彦浃绥譎饴憂锦。江苏农牧科技职业学院毕业论文(设计)图 3-3 时钟电路连接图3.3 复位电路单片机复位是使 CPU和系
16、统中的其他功能部件都处在一个确定的初始状态,并从这 个状态开始工作。无论是单片机刚开始接上电源时,还是断电后或者发生故障后都要复 位。所以,必须弄清楚 MCS-51单片机复位的条件、复位电路和复位后的状态。 猫虿驢绘燈 鮒诛髅貺庑。复位信号从单片机的 RST引脚输入,高电平有效,其有效电平应维持至少 2 个机器 周期。复位操作有上电自动复位与按键手动复位两种方式, 为了方便系统的硬件初始化, 我们采用按键手动复位。 锹籁饗迳琐筆襖鸥娅薔。图 3-4 复位电路连接图3.4 输入模块:键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这 种情况下,编程会很简单,但
17、是会占用大量的 I/O 口资源,因此在很多情况下都不采用 这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条 I/O 线作为行线,四条 I/O 线 作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个I/O 口的利用率。 構氽頑数就为 4*4 个。这种行列式键盘结构能有效地提高单片机系统中黉碩饨荠龈话骛。计算器的键盘布局如图 3-5 与图 3-6 所示:一般有 16 个键组成,在单片机中正好可 以用一个 P口实现 16个按键功能, 这种形式在单片机系统中也最常用。 輒峄陽檉簖疖網儂號泶。6江苏农牧科技职业学院毕业论文(设计)图 3-5 矩阵键盘布局图图 3-6 矩阵键盘
18、内部电路图如下图 3-7 所示,在本设计中,计算器输入键盘的 4 条行线、列线分别连接到MM74C92的2 X1X4、Y1Y4 引脚, MM74C92的2 数据输出口与单片机的 P2口相连,MM74C92的2 DA引脚经过一个非门连接到单片机的 /INT0 脚,当 MM74C92检2 测到键盘输入时, DA产生高电平,与之相连的 /INT0 检测到低电平,给单片机一个中断,单片机从图 3-7 键盘接口电路图P2 口的低四位读入键盘上按下的键的值。 尧侧閆繭絳闕绚勵蜆贅。江苏农牧科技职业学院毕业论文(设计)第四章 软件设计本设计主要包含主程序、外部中断 0 程序4.1 主程序设计主程序函数表示:
19、允许中断;初始化键盘接口连接、LCD显示、 LCD、LCD输入数据函数。 识饒鎂錕缢灩筧嚌俨淒。图 4-1 主程序流程图4.2 外部中断 0 处理程序有键按下时,单片机响应外部中断 0,转入外部中断 0 中断处理函数,在中断处理 函数中完成对按键的判断,以进行下一步的程序处理。其中调用键值转化函数、算术运 算函数。 凍鈹鋨劳臘锴痫婦胫籴。江苏农牧科技职业学院毕业论文(设计)4.2.1 键值转化为键盘上按键值程序该程序函数的作用是将输入的键值转化为数值或符号图 4-3 键值转化为键盘上按键值流程江苏农牧科技职业学院毕业论文(设计)4.2.2 算术运算程序在外部中断函数对键值进行判断后,进行加、减
20、、乘、除运算,运算后的数值如果4.3 LCD显示程序利用 LCD静态显示,通过程序向 LCD写指令字或数据使 LCD完成不同功能或显示相10江苏农牧科技职业学院毕业论文(设计)应数据LCD初始化函数void init_LCM()write_com(0x30);write_com(0x30);write_com(0x30);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);*LCD写数据函数void write_data(char ddata)RS=1;/*写指令 */R_W=0;EN=
21、1;/*使能信号开 */P1=ddata; /*将数据送入 p1 口*/EN=0;/*使能信号关 */check_BF();*LCD写指令函数void write_com(char command) /*写指令 */RS=0;R_W=0;11江苏农牧科技职业学院毕业论文(设计)EN=1;/*使能信号开 */P1=command; /*将数据送入 p1 口*/EN=0;/*使能信号关 */check_BF();/*LCD检查忙碌函数 */void check_BF()char i,x=0x80; P1=0xff;while(x&0x80) RS=0;R_W=1;EN=1;x=P1;EN=0;fo
22、r (i=0;i10;i+);EN=0;/* 关闭使能信号 */*LCD清屏函数 */void clearLCD() write_com(0x01);*LCD显示函数void display(long a) 12江苏农牧科技职业学院毕业论文(设计)long temp,b,c=-1;int lenth=1,i,j;clearLCD();if(a0;i-)b=1;for(j=0;ji-1;j+)b=b*10;write_data(0x30+a/b);a=a%b;第五章 开发体会5.1 Keil 软件调试1. 首先在电脑上正确的下载 keil 软件。2. 在keil 集成开发环境中创建新项目 (Pr
23、oject ),扩展文件名为 .UV2, 并为该项目13江苏农牧科技职业学院毕业论文(设计)选定合适的单片机 CPU器件(本设计采用 ATME公L 司下的 AT89C51)。 阌擻輳嬪諫迁择楨秘騖。3. 用 keil 的文本编辑器编写源文件, 可以是汇编语言, 也可以为 c语言,完成后将该 文件添加到项目中去。注意保存的时候如果是 c语言编写程序必须在后面加 .C 。氬嚕躑竄贸 恳彈瀘颔澩。4. 通过keil 的相关选择项,配置编译环境、连接定位器以及 Debug调试器的功能。5. 对项目中的源文件进行编译连接, 生成绝对目标代码和可选的 HEX文件,如果出现 编译连接错误则返回到第 2步,根
24、据软件中的错误提示进行修改源文件,切记不要浮躁, 一步一步修改直到最后提示没有差错最终生成 hex文件。 釷鹆資贏車贖孙滅獅赘。6. 对没有语法错误的程序进行仿真调试, 调试成功后将 HEX文件写入到单片机应用系 统的ROM中。5.2 Protues软件仿真 1首先在电脑里下载正确的软件,此软件主要是对硬件部分进行模拟。 2进入软件后蓝色框内就是工作区域,可以在里面随意选择元器件,移动元 器件。正确的进行导线连接。3完成所有连接后,双击单片机把生成的HEX文件进行导入。4最后如果程序和连图都没有问题就可以进行仿真了。14江苏农牧科技职业学院毕业论文(设计)图 5-1 系统仿真总图第六章 总结通
25、过这次的毕业论文设计我学习到了很多知识,平时在学校觉得自己好像对专业知 识还是比较了解的。可是遇到这次设计完全没有思绪,找不到切入点。然后我就通过询 问老师与跑图书馆查资料、确定基本设计方案、对所用芯片功能进行查找、调试、上机 仿真等,经历了一次次的困难,却积累了很多宝贵的经验。在整个设计的过程中遇到的 问题主要有以下三点,第一:基础知识掌握的不牢固,主要表现在一些常用的电路的形 式和功能不清楚,对书本上的内容理解不够透彻。第二:对一些常用的应用软件缺少应 用,体现在画电路图和系统的仿真的时候, 对这些软件的操作不熟练, 浪费了很多时间 第三:相关知识掌握的不够全面,缺少系统设计的经验。 怂阐
26、譜鯪迳導嘯畫長凉。这次设计进一步端了我的学习态度,学会了实事求是,严谨的作风,对自己要严格 要求,不能够一知半解,要力求明明白白。如果省略了那些必要的步骤,急于求成,不 仅会浪费时间,还会适得其反。我觉得动手之前,头脑里必须清楚该怎么做,这一点是 很重要的。在此次的毕业设计中我最大的体会就是进一步认识到了理论联系实践的重要 性。一份耕耘,一份收获。通过这段时间的设计,让我明白科学的思维方法和学习方法 是多么重要,只有这样才能够有很高的效率,才能够让自己的工作更完美。总而言之, 此次毕业设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力, 增强我的实际操作能力。谢谢老师给我们提供
27、这么好的机会,为我们之后走向社会奠定 了一个好的基础。 谚辞調担鈧谄动禪泻類。15江苏农牧科技职业学院毕业论文(设计)参考文献1 胡 辉. 单片机原理与应用 . 北京中国水利水电出版社 .20072 何立 . 单片机高级教程 .北京航空航天大学出版社 .20063 赵克林. C语言实例教程 . 北京人民邮电出版社 .20074 张义和,许宏昌,余春长 . 例说51单片机 . 人民邮电出版社 .20085 康维新. MCS-51 单片机原理与应用 .北京中国轻工业出版社 .2009.16 陈立周,陈宇 . 单片机原理及其应用(第 2 版). 北京机械工业出版社 .2008.57 徐爱钧 . 单片
28、机原理实用教程:基于 Protues 虚拟仿真 . 北京电子工业出版 社 .2009(1) 嘰觐詿缧铴嗫偽純铪锩。16江苏农牧科技职业学院毕业论文(设计)致谢起初接触毕业设计的时候,我对于这篇论文完全不知道该怎么着手,可是通过 刘老师耐心的给我讲解,同时查阅各类专业书籍,让我对论文有了一个初步构思, 知道该怎么去一步步的完成它。在完成初稿时也遇到了很多问题,对于仿真软件运 用的陌生,还有就是对于计算器的硬件选择的错误。最后都是在刘老师的帮助下我 克服了这些问题,成功的把毕业设计做完了并完成了仿真。 熒绐譏钲鏌觶鷹緇機库我要正式的向刘老师致谢,如果没有刘老师的帮助我是不可能完成毕业设计 的,这次
29、毕业设计我所学到的不仅仅是书本上的知识,还有坚持一路向前坚持的精 神。这将为我以后的人生道路做好指引,我将受益一生。 鶼渍螻偉阅劍鲰腎邏蘞。17江苏农牧科技职业学院毕业论文(设计)附录#include #include #define uchar unsigned char #define uint unsigned int char translate(int keycode); void arithmetic(); void init_LCM(); void write_data(char ddata); void write_com(char command); void check_B
30、F(); void clearLCD(); void display(long a); void dealerror(); void dataoverflow();long x=0,y=0,num=0; int operators,input,iny=0; char key;char error5=error;char overflow8=overflow;sbit EN=P34;sbit R_W=P35;sbit RS=P36;main()EA=1;EX0=1;IT0=1;P2=0xff; display(0); init_LCM();write_data(0x30); while(1)键值
31、转化为键盘上按键值函数 */char translate(int keycode) switch(keycode)18江苏农牧科技职业学院毕业论文(设计)case 0: return 7; break;case 1: return 4; break;case 2: return 1; break;case 3: return c; break;case 4: return 8; break;case 5: return 5; break;case 6: return 2; break;case 7: return 0; break;case 8: return 9; break;case 9:
32、 return 6; break;case 10: return 3; break;case 11: return =; break;case 12: return /; break;case 13: return *; break;case 14: return -; break;19江苏农牧科技职业学院毕业论文(设计)case 15:return +;break;/* 外部中断 0 处理函数 */ void INT_0(void) interrupt 0 using 0 key=translate(P2&0x0f);if(key=0)/ 判断按下的键是否为数值num=num*10+(key
33、-0);if (operators0)y=num;iny=1;elsex=num;if(num-134217728)/ 当前数值是否超出限定范围 纣忧蔣氳頑莶驅藥悯骛。 display(num); else dataoverflow(); elseswitch(key)case c: x=0; y=0; num=0; iny=0; operators=0; display(num); break;case =: arithmetic(); iny=0; operators=0; num=0; break;20江苏农牧科技职业学院毕业论文(设计)case +: if (operators) ar
34、ithmetic(); operators=1; num=0; break;case -: if (operators) arithmetic(); operators=2; num=0; break;case *: if (operators) arithmetic(); operators=3; num=0; break;case /:if (operators) arithmetic(); operators=4; num=0; break;算术运算函数void arithmetic()if (iny)switch(operators)case 1:x=x+y; num=x;if(num-134217728) display(num); elsedataoverflow();break;21江苏农牧科技职业学院毕业论文(设计)case 2:x=x-y; num=x;if(num-134217728) displ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三试卷:山东省烟台市2025届高三11月期中学业水平检测数学试卷答案
- 2025版文化创意企业设计师聘用合同
- 2025承包经营公司合同-高科技农业种植项目
- 二零二五年度房屋买卖合同(含法律咨询)打印模板
- 二零二五年度住宅小区车位租赁纠纷处理规则合同
- 2025版地下空间开发工程技术咨询服务合同
- 2025至2030年中国财务软件行业发展趋势及投资前景预测报告
- 2025版贸易公司外贸业务代表聘用合同
- 二零二五版企业间商业承揽合同样本
- 二零二五年度淋浴房环保材料研发与应用合同
- 放射科护理服务规范礼仪课件
- 充电桩安装与使用管理制度
- 物料提升机安全知识培训
- 乡村天然气管道铺设合同
- 项目验收表模板
- 航天科技集团招聘笔试题库2024
- 非高危行业生产经营单位主要负责人及安全管理人员安全生产知识和管理能力试题及答案
- FAE现场应用工程师招聘笔试题与参考答案
- 2024年新北师大版八年级上册物理全册教学课件(新版教材)
- 2024年7月浙江省高中学业水平考试数学试卷真题(含答案详解)
- DL∕T 782-2001 110kV及以上送变电工程启动及竣工验收规程
评论
0/150
提交评论