ImageVerifierCode 换一换
格式:DOC , 页数:26 ,大小:453.55KB ,
资源ID:565268      下载积分:15 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-565268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机的简易计算器.doc)为本站会员(聆听****声音)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的简易计算器.doc

1、摘要 目录 摘要.第一章 绪论. 1.1课题简介. 1.2设计目的. 1.3简易计算器系统简介.第二章 总体电路设计.第三章 主要模块介绍. 3.1AT89C51. 3.2LED数码管的结构及工作原理. 3.3 矩阵按键. 3.4 蜂鸣器模块.第四章 计算器系统设计. 4.1 计算器硬件. 4.2 系统框图. 4.3 程序设计.结语 .参考文献. 摘 要 课程设计教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次课程设计中,我以MCS-51系列单片微型计算机及其应用课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的AT89C51单片机为核心,能够实现六位数的四

2、则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管显示。本系统的设计说明重点介绍了如下几方面的内容:1)基于单片机简易计算器的基本功能,同时对矩阵键盘及LED数码管显示原理进行了简单的阐述;2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;3)对系统各功能模块的软、硬件实现进行了设计说明。关键词:MCS-51单片机;计算器;加减乘除 第一章 绪论1.1课题简介单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种

3、。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。本系统就是充分利用了51芯片的I/O引脚。系统统采用MSC-51系列单片机AT89C51为中心器件来设计计算器控制器。1.2设计目的通过本次工程实践,运用MCS-51系列单片微型计算机及其应用所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。1.3 简易计算器系统简介本计算器是以MCS-51系列AT89C51单片机为核心构成的简易

4、计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入LED数码管显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,LED数码管显示。 第二章 总体电路设计本次设计采用AT89C51单片机作为控制芯片,采用单片机上的按键来模仿输入信号。通过键盘扫描将输入按键信号读入单片机,根据按键的号码进行不同的显示,并通过蜂鸣器发出信号。显示模块则利用六位八段数

5、码管,进行按键号码的显示。 本系统功能由硬件和软件两大部分协调完成,硬件部分主要完成按键输入的模拟、蜂鸣器的驱动、按键号码的显示等功能;而软件主要完成对按键输入的扫描、中断对数据初始化及数码显示管的显示控制等功能。 第三章 主要模块介绍3.1 AT89C51简介 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用A

6、TMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图1 AT89C51芯片内部引脚图 3.2 LED数码管的结构及工作原理 LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位

7、“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等.,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图4.5是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图。 图2 这是一个八段两位带小数点10引脚的LED数码管每一笔划都是对应一个字母表示 DP是小数点.数码管分为共阳极的L

8、ED数码管、共阴极的LED数码管两种。下图例举的是共阳极的LED数码管,共阳就是8段的显示字码共用一个电源的正。LED数码管原理图示意如图3: 图3 LED数码管原理图 从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。共阳极LED数码管的内部结构原理图: 图4 共阳极LED数码管的内部结构原理图共阴极LED数码管的内部结构原理图:图5 共阴极LED数码管的内部结构原理图表1 显示数字对应的二进制电平信号LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出

9、我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动: 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动,或者使用如BCD码二-十进位转换器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口多。3.3 矩阵按键 键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键

10、扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。 图6 矩阵键盘电路图3.4 蜂鸣器模块单片机的P0.7经三极管驱动扬声器,当有按键输入

11、时,单片机P0.7输出低电平,与此引脚相连的PNP型三极管基电极也为低电平,三极管导通,压电蜂鸣器两端获得+5V电压而鸣叫;当P0.7输出高电平时,三极管截止,蜂鸣器停止发声。蜂鸣器模块如图3.9所示: 图7蜂鸣器模块电路原理图 第四章 计算器系统设计4.1 计算器硬件AT89C51单片机一片,4*4键盘一个,6位共阳极的八段数码管一个,连线和电阻和开关若干。51单片机的P2口作键盘口,其中P2.4-P2.7为键盘扫描输出线,P2.0-P2.3为键盘扫描输入线。键盘由4*4共16个按键组成,10个数字键(由0-9组成)5个运算符号(加减乘除等于)组成,1个清除键(作用相当于整体复位)。6个数码

12、管用于显示当前数值的十万,万,千,百,十,个,P1口接6个数码管的八段,P0口分别接6个数码管的公共端,P1口输出数码管的字形码,P0口输出数码管的字位码。4.2 系统框图:1.主程序流程图图8 主程序流程图2.键盘扫描流程图 图9 键盘扫描流程图4.3 程序设计#include#define uchar unsigned char#define uint unsigned intsbit dula=P26;sbit wela=P27;sbit beep=P23;uchar temp,key;uchar fun;long int num1,num2,res;uchar aa,dis;uchar

13、 code table=0x00,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code weixuan=0xdf,0xef,0xf7,0xfb,0xfd,0xfe;void delay(unsigned char i)uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void bee()beep=0;delay(255);delay(255);beep=1;key_scan() P3=0xfe; temp=P3; temp=temp

14、&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; swi

15、tch(temp) case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=8; break; case 0xdb: key=9; break;

16、case 0xbb: key=10; break; case 0x7b: key=11; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; whil

17、e(temp!=0xf0) temp=P3; temp=temp&0xf0; void Init()num1=0;num2=0;wela=1;P0=0xdf;wela=0;dula=1;P0=table1;dula=0;key=16;aa=0;dis=0;res=0;void dis_play(long int nm)uchar a1,a6;long int shu;shu=nm;if(shu=0) wela=1; P0=0xdf; wela=0; dula=1; P0=table1; dula=0;elsefor(a6=0;a6=10)switch (key) case 10:Init();break; / CE case 11: switch (fun) case 0:res=num1+num2,dis=2;break; case 1:res=num1-num2,dis=2;break; case 2:res=num1*num2,dis=2;break; case 3:res=num1/num2,dis=2;break; ;break; / = case 12:fun=0,aa=1,shanshuo();break; / + case 13:fun=1,aa=1,sha

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2