基于51单片机的简易计算器_第1页
基于51单片机的简易计算器_第2页
基于51单片机的简易计算器_第3页
基于51单片机的简易计算器_第4页
基于51单片机的简易计算器_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

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

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

6、造技术制造,与工业标准的 MCS-51指令集和输出管脚相兼容。由于将多功能 8位CPUW闪烁存储器组合在单个芯片中,ATMEL勺AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉 的方案。U21PJCFWpna1F13F03P3田4phmsPld印6PITH17ann口¥22TJ133IDR4_工5me门7XL烟 rrjsd1TDRj-ALU?而real身金3士3?45与小733登15142 或 百 3* 工2J199,畜28101130rW图1 AT89C51K片内部弓I脚图3.2 LED数码管的结构

7、及工作原理LED数码管(LED Segment Displays )是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为 7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1, 2, 3, 4, 5, 6, 8, 10位等等.,LED数码管根据LED的接法不同 分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图 4.5是共阴和共阳极 数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色 有红,绿

8、,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选LED数码管内部引用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用 脚图。vt e 加此为LEU豹网管正面困 各字段的引脚图2这是一个八段两位带小数点10引脚的LED数码管每一笔划都是对应一个字母表示DP是小数点.数码管分为共阳极的 LED数码管、共阴极的LED数码管两种。下图例举的是共阳极的LED数码管,共阳就是 8段的显示字码共用一个电源的正。LED数码管原理图示意如图 3:图3 LED数码管原理图从上图可以看出,要是数码管显示数字,有两个条件: 1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e

9、,f,g,dp) 端接低电平或“0"电平。这样才能显示的。共阳极LED数码管的内部结构原理图:A k gJ 4.f g ,4P.UVT图4共阳极LED数码管的内部结构原理图共阴极LED数码管的内部结构原理图:CVTK/ K/ K7 Ka Ka Ka kA士h -Jl 一. a £ u j .g一gL4kg & s F g 超图5共阴极LED数码管的内部结构原理图110 10f g GNDa b显示 字符码Qfedc.ba十六 进制00 I1_1J_r113F1o-000110062101 _101t5B31001114F4110011066 5110J1016 口6

10、111 -11 0-17D700001_11078J113-1117F9J_1_0_j_1116FA111011177b111111 J007Cc0J_1i_,on0139d1011 I'i"05EE1T'"1 -00179F111000171共阴极数码管显示字段表1显示数字对应的二进制电平信号LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O 口进行驱动,或者使用如

11、BCD码二-十进位转换器进行驱动。静态驱动的优点是编程简单,显不亮度高,缺点是占用 I/O 口多。3.3 矩阵按键键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬 件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时, 只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键扫描程序是一种节省 IO 口的方法,按键数目越多节省IO 口就越可观, 思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但 是,在程序的写法上,采用了最简单的方法,使

12、得程序效率最高。本程序中,如果检 测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大 量的CPU时间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU效率,也不 用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。图6矩阵键盘电路图3.4 蜂鸣器模块单片机的P0.7经三极管驱动扬声器,当有按键输入时,单片机P0.7输出低电平,与此引脚相连的 PNP型三极管基电极也为低电平,三极管导通,压电蜂鸣器两端获得+5V电压而鸣叫;当P0.7输出高电平时,三极管截止,蜂鸣器停止发声

13、。蜂鸣器模块如图3.9所示:P0 71 "Rbu蜂鸣器GND '|Rell图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 个数码管用于显示当前数值的十万,万,千,百,十,个, P1 口接6个数码管的八 段,P0 口分别接6个数码管

14、的公共端,P1 口输出数码管的字形码,P0 口输出数码管的字位码。4.2系统框图:1.主程序流程图图8主程序流程图2.键盘扫描流程图图9键盘扫描流程图4.3程序设计#include<reg51.h>#define uchar unsigned char#define uint unsigned int sbit dula=P2A6;sbit wela=P2A7; 摘要sbit beep=P2A3;uchar temp,key;uchar fun;long int num1,num2,res;uchar aa,dis;uchar codetable=0x00,0x3f,0x06,0x

15、5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x 6f,0x77,0x7G0x39,0x5e,0x79,0x71;uchar code weixuan"0xdf,0xef,0xf7,0xfb,0xfd,0xfe;void delay(unsigned char i)uchar j,k;for(j=i;j>0;j-)for(k=125;k>0;k-);void bee()beep=0;delay(255);delay(255);beep=1;key_scan()P3=0xfe;temp=P3; temp=temp&0xf0;if(temp!=0

16、xf0)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;switch(temp)case 0xed:key=4;bre

17、ak;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;case 0xbb:key=10;break;case 0x7b:key=11;break;whil

18、e(temp!=0xf0)temp=P3;temp=temp&0xf0;P3=0x亿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;while(temp!=0xf0)temp=P3;temp=temp&0xf0;void Init()num1=0;num2=0;wela=1;P

19、0=0xdf;wela=0;dula=1;P0=table1;I摘要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;else for(a6=0;a6<6;a6+)a1=shu%10;if(shu!=0)a1=a1+1;shu=shu/10;P0=tablea1;dula=1;dula=0;P0=weixuana6;wela=1;wela=0;de

20、lay(5);void display。switch (dis)case 0:dis_play(num1);break;case 1:dis_play(num2); break;case 2:dis_play(res); break;void shanshuo()wela=1;P0=0xff;wela=0;delay(255);void check()if(key!=16)bee();if(key>=10)switch (key)case 10:Init();break; / CEcase 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,shanshuo();break; / -case 14:fun=2,aa=1,shanshuo();break; / *case 15:fun=3,aa=1,shanshuo();break; / /elseswitch (aa)case 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论