




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.设计题目:基于单片机的简易计算器设计与仿真一、设计实验条件:地点:实验设备: PC 机( 装有 Keil ; Protues ; Word;Visio)二、设计任务:本系统选用 AT89C51 单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下:( 1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用 LCD 显示数据和结果。( 2)采用键盘输入方式,键盘包括数字键(09 )、符号键( + 、- 、×、÷)、清除键 (onc) 和等号键( = ),故只需要 16 个按键即可,设计中采用集成的计算键盘。( 3)在执行过
2、程中,开机显示零,等待键入数值,当键入数字,通过 LCD 显示出来,当键入 + 、- 、* 、/ 运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值, 按等号就会在 LCD 上输出运算结果。( 4)错误提示:当计算器执行过程中有错误时,会在 LCD 上显示相应的提示 ,如:当输入的数值或计算得到的结果大于计算器的表示范围时, 计算器会在 LCD 上提示 overflow ;当除数为 0 时,计算器会在 LCD 上提示 error 。设计要求:分别对键盘输入检测模块; LCD 显示模块;算术运算模块;错误处理及提示模块进行设计,并用 Visio 画系统方框
3、图, keil 与protues 仿真分析其设计结果。三、设计时间与设计时间安排:1、设计时间: 6 月 27 日7 月 8 日2 、设计时间安排:熟悉课题、收集资料:3天(6月27日 6月29日)可编辑.具体设计(含上机实验) :6天( 6月30日7月5日)编写课程设计说明书:2天( 7月 6日 7月7日)答辩:1天( 7月 8日)四、设计说明书的内容:1 、前言: ( 自己写, 组员之间不能相同,写完后将红字删除,排版时注意对齐 )本设计是基于 51 系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD 上显示相应的结果;设计电路采用
4、AT89C51 单片机为主要控制电路, 利用 MM74C922 作为计算器 4*4 键盘的扫描 IC 读取键盘上的输入; 显示采用字符 LCD 静态显示;软件方面使用 C 语言编程,并用 PROTUES 仿真。2 、设计题目与设计任务:现实生活中人们熟知的计算器,其功能主要如下:( 1)键盘输入;( 2 )数值显示;( 3)加、减、乘、除四则运算; (4) 对错误的控制及提示。针对上述功能,计算器软件程序要完成以下模块的设计: (1)键盘输入检测模块;( 2) LCD显示模块;( 3 )算术运算模块;( 4)错误处理及提示模块。3 、主体设计部分:( 1)、系统模块图:单片机输入模块运算模块显
5、示模块可编辑.( 2)、算术运算程序流程图:开始判断运算符?加乘除减YY判断结果溢出?除数为 0?NN错误信息送显示缓冲数值送显示缓冲可编辑.( 3)、系统总流程图:开始初始化参数初始化LCD显示有否有键值?Y读取键码N数字键清零键功能键根据上次功能键和输入键入数值状态清零的数据计算结果本次功能键?YN结果送显示缓冲结果送显示缓冲等待数值键入等待数值键入结果送显示缓冲数值送显示缓冲等待数值键入LCD 显示可编辑.( 4)、硬件设计:(一)、总体硬件设计:本设计选用 AT89C51 单片机为主控单元; 显示部分:采用 LCD 静态显示;按键部分:采用 4*4 键盘;用 MM74C922 为 4*
6、4 键盘扫描 IC,读取输入的键值。总体设计效果如下图:(二)、单片机接口电路说明:1 、手动上电复位电路:可编辑.当 VCC 上电时, C 充电,在 10K 电阻上出现电压,使得单片机复位;几个毫秒后, C 充满, 10K 电阻上电流降为 0 ,电压也为 0 ,使得单片机进入工作状态。工作期间,按下 S, C 放电。 S 松手, C 又充电,在 10K 电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。2 、内部时钟模式电路:当单片机工作于内部时钟模式的时候,只需在 XTAL1 和XTAL2 引脚连接一个晶体振荡器或者陶瓷振荡器, 并接两个电容后接地即可, 在使用时对于电容的选
7、择有一定的要求:当外接晶体振荡器的时候,电容值一般选择C1=C2=30+10pF或30-10pF ;可编辑.当外接陶瓷振荡器的时候,电容值一般选择C1=C2=40+10pF或40-10pF ;3 、AT89C51 单片机引脚介绍:VCC : 供电电压。GND :接地。P0 口:P0 口为一个 8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。当 P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/ 地址的第八位。在FIASH 编程时,P0口作为原码输入口,当FIASH 进行校验时, P0输出原码,此时P0外部必须被拉高。P1 口: P1 口是
8、一个内部提供上拉电阻的8 位双向 I/O 口, P1 口缓冲器能接收输出 4TTL 门电流。 P1口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流, 这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口: P2 口为一个内部上拉电阻的8 位双向 I/O 口, P2口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存
9、取时, P2 口输出地址的高八位。在给出地址“ 1 ”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口: P3口管脚是 8 个带内部上拉电阻的双向I/O 口,可接收输出4 个 TTL 门可编辑.电流。当 P3 口写入“ 1 ”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL )这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口:P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2
10、/INT0 (外部中断 0)P3.3/INT1 (外部中断 1 )P3.4T0 (记时器 0 外部输入)P3.5T1(记时器 1 外部输入)P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号。RST :复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时, ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6 。因此它可用作对外部输出的脉冲或
11、用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX ,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE 禁止,置位无效。/PSEN :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个可编辑.机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的 /PSEN 信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1 时,/EA 将内部锁
12、定为RESET;当 /EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加12V 编程电源( VPP )。XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 :来自反向振荡器的输出。4 、单片机与复位、时钟电路连接电路图:(三)、键盘接口电路:可编辑.计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的 I/O 口资源,因此在很多情况下都不采用这种方式, 而是采用矩阵键盘的方案。 矩阵键盘采用四条 I/O 线作为行线,四条 I/O 线作为列线组成键盘, 在行线和列线的每个交叉点上设置
13、一个按键。这样键盘上按键的个数就为 4×4个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图 1所示:一般有 16 个键组成,在单片机中正好可以用一个 P口实现 16 个按键功能,这种形式在单片机系统中也最常用。图 1矩阵键盘布局图矩阵键盘内部电路图如图2所示:可编辑.为了进一步节省单片机I/O 口资源,我们在设计中使用了MM74C922芯片。MM74C922是一款 4*4 键盘扫描 IC,它可检测到与之相连的4*4 键盘的按键输入,并通过数据输出口将按键相应的编码输出。其引脚图如图3 所示:图 3 MM94C22 硬件图MM
14、74C922引脚说明:(1) Y1Y4 (脚 1 脚 4): 4*4 键盘第一列至第四。(2) X1X4 (脚 11 、10 、8、7 ): 4*4 键盘第一行至第四行。(3) DOA DOD ( Dataout AD ,脚 1417 ):按键之 BCD 码输出,其中 DOA为 LSB,DOD 为 MSB 。(4) VCC (脚 18 ):电源脚, +3V+15V。 ab126 计算公式大全(5) GND (脚 9):接地管脚。新艺图库可编辑.(6) OSC (Oscillator ,脚 5 ):键盘扫描电路之频率所需外加电容的连引脚。(7) KBM (Keyboard Mask ,脚 6):
15、内部消除开关弹跳电路所外加电容的引脚。(8) OE (Output Enable ,脚 13 ):芯片使能脚,接低电位可使芯片使能。(9) DA ( Data Available ,脚 12 ):数据有效输出脚。任一按键按下时,此脚位会输出高电位,按键释放后此脚又会恢复为低电位。MM74C922对各按键的响应如下表所示:如下图 4 所示,在本设计中,计算器输入键盘的4 条行线、列线分别连接到 MM74C922 的 X1-X4 、Y1-Y4 引脚,MM74C922 的数据输出口与单片机的P2 口相连, MM74C922的 DA 引脚经过一个非门连接到单片机的/INT0 脚,当 MM74C922
16、检测到键盘输入时, DA 产生高电平,与之相连的 /INT0 检测到低电平,给单片机一个中断, 单片机从 P2 口的低四位读入键盘上按下的键的值。可编辑.图 4键盘接口电路图(四)、LCD 显示模块:本设计采用 LCD 液晶显示器来显示输出数据。 通过 D0-D7 引脚向 LCD 写指令字或写数据以使 LCD 实现不同的功能或显示相应数据。图5LCD 模块(五)运算模块(单片机控制):MCS-51 单片机是在一块芯片中集成了 CPU、 RAM 、ROM 、定时器 / 计数器和多功能 I/O 等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器( CPU)、数据存储
17、器( RAM )、程序存储器( ROM/EPROM )、并行 I/O 口、串行口、定时器 / 计数器、中断系统及特殊功可编辑.能寄存器( SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性! 因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。3.5 、软件编程:1 、主函数设计:/*函数声明 */#include<reg51.h>#include<math.h>#define uchar unsigned char#define uint
18、unsigned intchar translate(int keycode);void arithmetic();void init_LCM();void write_data(char ddata);void write_com(char command);void check_BF();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 erro
19、r5="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)可编辑.2 、分块程序设计:( 1)、键盘输入检测程序设计:有键按下时,单片机响应外部中断0 ,转入外部中断 0 中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理。/*键值转化为键盘上按键值函数*/char transla
20、te(int keycode)switch(keycode)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 '
21、;9'break;case 9:return '6'break;case 10:return '3'break;case 11:return '='break;case 12:return '/'break;case 13:return '*'break;case 14:return '-'break;case 15:return '+'break;/*外部中断 0处理函数 */void INT_0(void) interrupt 0 using 0key=translate
22、(P2&0x0f);if(key<='9'&&key>='0')/ 判断按下的键是否为数值num=num*10+(key-'0');可编辑.if (operators>0)y=num;iny=1;elsex=num;if(num<134217728&&num>-134217728)/ 当前数值是否超出限定范围display(num);elsedataoverflow();elseswitch(key)case 'c':x=0;y=0;num=0;iny=0;op
23、erators=0;display(num);break;case '=':arithmetic();iny=0;operators=0;num=0;break;case '+':可编辑.if (operators)arithmetic();operators=1;num=0;break;case '-':if (operators)arithmetic();operators=2;num=0;break;case '*':if (operators)arithmetic();operators=3;num=0;break;cas
24、e '/':if (operators)arithmetic();operators=4;num=0;break;( 2)、算术运算程序设计:/*算术运算函数 */void arithmetic()if (iny)switch(operators)可编辑.case 1:x=x+y;num=x;if(num<134217728&&num>-134217728)display(num);elsedataoverflow();break;case 2:x=x-y;num=x;if(num<134217728&&num>-1342
25、17728)display(num);elsedataoverflow();break;case 3:x=x*y;num=x;if(num<134217728&&num>-134217728)display(num);elsedataoverflow();break;case 4:if (y=0)dealerror();else可编辑.x=x/y;num=x;if(num<134217728&&num>-134217728)display(num);elsedataoverflow();break;y=0;( 3)、 LCD 显示程序设计
26、:利用 LCD 静态显示,通过程序向LCD 写指令字或数据使LCD 完成不同功能或显示相应数据。/*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=1;/* 使能信号开 */P1=ddata;/*将数据送入 p1 口*/EN=0;/* 使能信号关 */check_BF();/*LCD写指令函数 */void write_com(char command)RS=0;/* 写指令 */R_W=0;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;for (i=0;i<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019-2025年一级注册建筑师之建筑结构能力检测试卷B卷附答案
- 2025年3月隐蔽工程影像存档补充协议条款
- 自由探索的班级工作计划
- 2025商务合同谈判策略全解「」
- 2025写字间租赁合同
- 设计有趣的班级互动游戏计划
- 闲置钢管改造方案范本
- 如何让年度工作计划更具可持续性
- 课程与德育融合的创新实践计划
- 2025家庭护理服务合同范例
- 解除租赁合同的协议
- 2025-2030中国碳纤维预浸料行业市场现状供需分析及投资评估规划分析研究报告
- 2025届天津市十二区重点学校高三下学期毕业联考(一)英语试题(含答案)
- 2025-2030中国机器人码垛系统行业市场发展趋势与前景展望战略研究报告
- 2025年上半年广东深圳市光明区建筑工务署招聘特聘专干一般专干7人重点基础提升(共500题)附带答案详解
- 新工科背景下大学化学课程的创新与实践探索
- 2024年中国机械工业集团有限公司国机集团总部招聘笔试真题
- 2025年湖北省高考模拟检测卷(二)-解析卷
- 《卵石动物造型》游戏课件
- 部编版语文三年级下册第六单元集体备课
- 2025年长春师范高等专科学校单招职业技能考试题库必考题
评论
0/150
提交评论