



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子设计结课论文题目:系别:专业:学生:学号:题目类型:理论研究实验研究工程设计工程技术研究软件开发.年月日基于 51 单片机的简易计算器摘要: 工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我以智能化测量控制仪表原理与设计、MCS-51系列单片微型计算机及其应用课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的 8051 单片机为核心,能够实现两位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。本系统的设计说明重点介绍了如下几方面的容:1)基于单片机简易计算器的基本功能,同时对矩阵键盘及16
2、02 显示原理进行了简单的阐述;2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;3)对系统各功能模块的软、硬件实现进行了详细的设计说明。关键词: MCS-51 8051单片机;计算器;加减乘除.目录第一章 绪论 .11.2设计目的 .11.3设计任务 .11.4章节安排说明 .1第二章 计算器系统简介 .22.1单片机发展现状 .22.2计算器系统现状 .22.3简易计算器系统简介 .3第三章 主要器件简介 .43.1MCS-51系列单片机简介 .43.2其它器件简介 .73.2.11602 显示 .73.2.2矩阵按键 .7第四章
3、计算器系统设计 .94.1计算器硬件电路设计 .94.2.2主程序设计 .错误! 未定义书签。结语.17参考文献 .18.第一章绪论1.1 课题简介单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、 工业控制等领域中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。本系统就是充分利用了 8051 芯片的 I/O 引脚。系统统采用 MSC-51系列单片机 Intel8051 为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算程序则是参照教材。至于位数和功能,如果有需要可以设
4、计扩充原系统来实现。1.2 设计目的通过本次工程实践,运用智能化测量控制仪表原理与设计 、MCS-51系列单片微型计算机及其应用所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51 单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。1.3 设计任务在本次工程实践中,主要完成如下方面的设计任务:1)简要综述单片机技术发展的国外现状及数码管动态显示和矩阵键盘基本原理;2)掌握 MCS-51系列某种产品(例如8051)的最小电路及外围扩展电路的设计方法;
5、3)了解单片机数据转换功能及工作过程;4)完成主要功能模块的硬件电路设计及必要的参数确定;5)用 protues 软件完成原理电路的绘制;6)完成系统设计说明书。1.4 章节安排说明整个设计总共分为四个章节,第一章是前言部分,主要介绍了设计基于单片机简易计算器的意义、目的及主要容;第二章简要介绍了单片机发展的国外现状及键盘扫描,数据转换,和动态显示原理进行了简要的说明。第三章是器件简介,这一部分主要介绍了系统的所用主要器件的选择。第四章是系统详细设计阶段,分为硬件设计和程序设计。按照程序设计的各部分实现的功能不同,将整个软件系统分成了三个块,并对每一个功能块所采用的元器件进行了详细介绍。此外还
6、编写了主要功能模块的基本程序,详尽阐述了各模块的工作过程。还有总流程图,源代码,硬器件铺线图。.第二章 计算器系统简介2.1 单片机发展现状单片机的发展趋势:低功耗CMOS化;微型单片化;主流与多品种共存;单片机从8位、 16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1)低功耗 CMOS化MCS-51系列的 8051 推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了
7、CMOS(互补金属氧化物半导体工艺) 。象80C51 就采用了HMOS(即高密度金属氧化物半导体工艺) 和CHMOS(互补高密度金属氧化物半导体工艺 ) 。 CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而 CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。2)微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储 (RAM)、只读程序存储器 (ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D 转换器、 PMW
8、(脉宽调制电路 ) 、WDT(看门狗 ) 、有些单片机将 LCD(液晶 ) 驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、 重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装 ) 越来越受欢迎,使得由单片成的系统正朝微型化方向发展。3 )主流与多品种共存现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有 PHILIPS 公司的产品, ATMEL
9、公司的产品和中国的 Winbond 系列单片机。所以 C8051为核心的单片机占据了半壁江山。而 Microchip 公司的 PIC 精简指令集 (RISC) 也有着强劲的发展势头,中国的 HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。2.2 计算器系统现状计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设.备及电子配件通过人工或机器设备组成。低档计算器的运算器、控
10、制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。为节省电能,计算器都采用CMOS工艺制作的大规模集成电路(见互补金属- 氧化物 - 半导体集成电路),并在部装有定时不操作自动断电电路。计算器可选用的外围
11、设备有微型打印机、盒式磁带机和磁卡机等。2.3 简易计算器系统简介本计算器是以 MCS-51系列 8051 单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对 4*4 键盘扫描进行实时的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,数码管动态显示。.第三章主要器件简介3.1 MCS-51 系列单片机简介8051 是 MCS-51系列
12、单片机的典型产品,以这一代表性的机型进行系统的讲解。8051 单片机包含中央处理器、程序存储器 (ROM)、数据存储器 (RAM)、定时 / 计数器、并行接口、串行接口和中断系统等几大单元及数据总线、 地址总线和控制总线等三大总线,现在我们分别加以说明:中央处理器 :中央处理器 (CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码, CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器 (RAM)8051 部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存
13、放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。图 3-1 8051 部结构图程序存储器 (ROM):8051 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。定时 / 计数器 (ROM):8051 有两个 16 位的可编程定时 / 计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出 (I/O) 口:.8051 共有 4 组 8 位 I/O 口 (P0、 P1 、P2 或 P3),用于对外部数据的传输。全双工串行口 :8051 置一个全双工串行通信口,用于
14、与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051 具备较完善的中断功能, 有两个外中断、两个定时 / 计数器中断和一个串行中断,可满足不同的控制要求,并具有2 级的优先级别选择。时钟电路:8051 置最高频率达 12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但 8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard) 结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿 (Princeton)结构。 INTEL 的 MCS-51系列单
15、片机采用的是哈佛结构的形式,而后续产品16 位的 MCS-96系列单片机则采用普林斯顿结构。下图是 MCS-51系列单片机的部结构示意图3-2 。图 3-2 MCS-51 结构图MCS-51的引脚说明:MCS-51系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置, 40 个引脚中,正电源和地线两根, 外置石英振荡器的时钟线两根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。 现在我们对这些引脚的功能加以说明:MCS-51的引脚说明:MCS-51系列单片机中的 8031、8051 及 8751 均采用 4
16、0Pin 封装的双列直接DIP 结构,右图是它们的引脚配置, 40 个引脚中,正电源和地线两根, 外置石英振荡器的时钟线两根,.4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。 现在我们对这些引脚的功能加以说明:如图 3-3图 3-3 双列直插式封装引脚图Pin9:RESET/Vpd 复位信号复用脚,当 8051 通电,时钟电路开始工作,在 RESET引脚上出现 24 个时钟周期以上的高电平, 系统即初始复位。初始化后,程序计数器 PC指向 0000H, P0-P3 输出口全部为高电平,堆栈指针写入 07H,其它专用寄存器被清“ 0”。 RESET由高电平下降为低电平后,
17、系统即从 0000H地址开始执行程序。 然而,初始复位不改变 RAM(包括工作寄存器 R0-R7)的状态, 8051 的初始态。8051 的复位方式可以是自动复位, 也可以是手动复位。 此外,RESET/Vpd 还是一复用脚, Vcc 掉电其间,此脚可接上备用电源,以保证单片机部 RAM的数据不丢失。见下图 3-4 为两种复位方式和两种时钟方式:Pin30:ALE/当访问外部程序器时,ALE(地址锁存 ) 的输出用于锁存地址的低位字节。 而访问部程序存储器时, ALE端将有一个 1/6 时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外
18、部程序存储器, ALE会跳过一个脉冲。如果单片机是EPROM,在编程其间,将用于.输入编程脉冲。Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号, PC的 16 位地址数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU读入并执行。Pin31:EA/V pp 程序存储器的外部选通线, 8051 和 8751 单片机,置有 4kB 的程序存储器,当 EA 为高电平并且程序地址小于 4kB 时,读取部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对部无程序存储器的80
19、31,EA 端必须接地。在编程时, EA/Vpp 脚还需加上 21V 的编程电压。3.2 其它器件简介3.2.11602显示1602 液晶模块部的字符发生存储器已经存储了 160 个不同的点阵字符图形, 这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“ A”的代码是 01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“ A”。因为 1602 识别的是 ASCII 码,试验可以用 ASCII 码直接赋值,在单片机程序中还可以用字符型常量或变量赋值,如 A 。3.2.2 矩阵按键键盘是
20、单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键扫描程序是一种节省IO 口的方法 , 按键数目越多节省IO 口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上, 采用了最简单的方法, 使得程序效率最高。 本程序中, 如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时
21、间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用 CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。.第四章 计算器系统设计4.1 计算器硬件电路设计8051 单片机一片, 4*4 键盘一个, 1602 lcd 一个,连线和电阻和开关若干。8051 单片机的 P3 口作键盘口, P0为 1602 接口。4.2 计算器程序设计#include#define uchar unsigned char#define uint unsigned intuchar j;/在键盘检测函数中使用
22、,判断是否有按键按下,有则加 1sbit d=P26;/点按键判断void delay(uchar z)/延时函数uchar x,y;for(x=z;x0;x-)for(y=110;y0;y-);ucharcodeA=0,1,2,3,4,5,6,7,8,9,+,-,*,/,=,.;/lcd调用显示数组uchar keyscan()/键盘检测uchar temp,key;j=0;if(d=0) delay(100); if(d=0)key=16;while(d=0);j+;P3=0xfe;temp=P3;if(temp!=0xfe).delay(100);temp=P3;if(temp!=0xf
23、e)j+;switch(temp)case 0x7e:key=3;break;case 0xbe:key=2;break;case 0xde:key=1;break;case 0xee:key=0;break;while(P3!=0xfe);P3=0xfd;temp=P3;if(temp!=0xfd)delay(100);temp=P3;if(temp!=0xfd) j+; switch(temp)case 0x7d:key=7;break; case 0xbd:key=6;break; case 0xdd:key=5;break;case 0xed:key=4;break;while(P3!
24、=0xfd);P3=0xfb;temp=P3;if(temp!=0xfb).delay(100);temp=P3;if(temp!=0xfb) j+; switch(temp)case 0x7b:key=11;break; case 0xbb:key=10;break;case 0xdb:key=9;break;case 0xeb:key=8;break;while(P3!=0xfb);P3=0xf7;temp=P3;if(temp!=0xf7)delay(100);temp=P3;if(temp!=0xf7) j+; switch(temp)case 0x77:key=15;break; c
25、ase 0xb7:key=14;break; case 0xd7:key=13;break;case 0xe7:key=12;break;while(P3!=0xf7);return(key);.sbit rs=P10;/定义 lcd 引脚sbit rw=P11;sbit en=P25;void wc(uchar a)/lcd写指令函数 delay(5); rs=0;/ 写指令 rw=0;/ 写 P0=a;en=0; delay(10); en=1;void wd(uchar a)/lcd写数据函数 delay(5); rs=1;/ 写数据 rw=0;/ 写P0=a;en=0;delay(5)
26、;en=1;unsigned long sum1,sum2; /sum1为第一个数, sum2为第二个数/uchar g1,s1;/小数位float sum_1,sum_2,xs1,xs2;/ 把按下的小数记为 xs void main()uchar i,k,ji,dian,xsw1,xsw2,ts;/i统计数字按下次数, k 为判断是否按下运算符并判断是什么运算,/ji为按下总次数,显示地址用dain 为记是否按下点/xsw为输入的小数位的多少的标注d=1;delay(15);wc(0x38);delay(15);.wc(0x38);delay(15);wc(0x38);wc(0x0c);w
27、c(0x06);wc(0x01);wc(0x80+0x0f);wd(0x30);/初始位为 0wc(0x80+0x0f);while(1)keyscan();if(j0)/当有按键按下, keyscan()函数使 j+ ,才写入数据if(keyscan()=15)/如果输入为归零k=0;sum1=0;sum2=0;ji=0;sum_1=0;sum_2=0;xsw1=0;xsw2=0;xs1=0,xs2=0;ts=0;dian=0;wc(0x06);wc(0x01);wc(0x80+0x0f);wd(0x30);wc(0x80+0x0f);/归零else if(9keyscan()&keysca
28、n()14)/如果输入为运算符dian=0;switch(keyscan()case 10:wd(Akeyscan();k=1;break;case 11:wd(Akeyscan();k=2;break;case 12:wd(Akeyscan();k=3;break;case 13:wd(Akeyscan();k=4;break;.else if(0=keyscan()|keyscan()=16)/如果按下为数字或小数点ji+;/lcd显示用到,标记地址if(k0)/判断是否按下运算符,如果按下,把后面的数交给sum2if(keyscan()=16) /如果按下为小数点wd(A16);/显示点
29、dian+;/ 表示已经按下点/sum=0;else if(dian0)wd(Akeyscan();xsw2+;/按下多少位小数xs2=xs2*10+keyscan();else wd(Akeyscan(); /sum2=a(keyscan(); sum2=sum2*10+keyscan();elseif(keyscan()=16) /如果按下为小数点wd(A16);/显示点dian+;/ 表示已经按下点else if(dian0)wd(Akeyscan();xsw1+;/按下多少位小数.xs1=xs1*10+keyscan();elsewd(Akeyscan();/sum1=a(keysca
30、n();sum1=sum1*10+keyscan();wc(0x07); /写指令,写一个屏幕右移。else if(keyscan()=14&k0) /如果按 =,且之前有运算符输入,显示结果if(xsw10)switch(xsw1)case 1:sum_1=sum1+xs1/10;break;case 2:sum_1=sum1+xs1/100;break;case 3:sum_1=sum1+xs1/1000;break;elsesum_1=sum1;if(xsw20) switch(xsw2)case 1:sum_2=sum2+xs2/10;break;case 2:sum_2=sum2+xs2/100;break;case 3:sum_2=sum2+xs2/1000;brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车和食品合作协议书
- 无纸化商户签约协议书
- 课程置换协议书
- 联通授权协议书
- 自驾免责协议书
- 药厂授权协议书
- 平台店铺代运营协议书
- 药品三方协议书
- 豪车合成协议书
- 旧房屋顶翻合同协议书
- 病假医疗期申请单(新修订)
- 钻孔桩钻孔记录表(旋挖钻)
- 660MW机组金属监督项目
- JBK-698CX淬火机数控系统
- ZJUTTOP100理工类学术期刊目录(2018年版)
- 心理学在船舶安全管理中的应用
- JJF(鄂) 90-2021 电子辊道秤校准规范(高清版)
- 超星尔雅学习通《今天的日本》章节测试含答案
- 餐饮量化分级
- 三一重工SCC2000履带吊履带式起重机技术参数
- [精品]GA38-2004《银行营业场所风险等级和防护级别的规定》
评论
0/150
提交评论