单片机设计报告基于51单片机的简易计算器设计.docx
- 文档编号:5949572
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:26
- 大小:172.30KB
单片机设计报告基于51单片机的简易计算器设计.docx
《单片机设计报告基于51单片机的简易计算器设计.docx》由会员分享,可在线阅读,更多相关《单片机设计报告基于51单片机的简易计算器设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机设计报告基于51单片机的简易计算器设计
电子课程设计报告
基于51单片机的简易计算器设计
姓名:
朱启超
专业:
电子信息科学与技术
班级:
2011-1班
学号:
201101050741
同组人:
指导教师:
王桂海
信息科学与工程学院电子信息系
2013年6月10日
摘要
课程设计环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次课程设计中,以《模拟电子技术基础》、《数字电子技术基础》和《单片微型计算机原理及应用》课程中所学知识为基础,设计了简易计算器。
本系统以MCS-51系列单片机为核心,能够实现两位数的四则运算。
该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。
本系统的设计说明重点介绍了如下几方面的内容:
1)基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;
2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;
3)对系统各功能模块的软、硬件实现进行了详细的设计说明。
关键字:
MCS-51单片机;计算器;加减乘除
目录
摘要2
目录3
前言4
课题简介4
设计目的4
设计任务4
第一章计算器系统简介5
1.1单片机发展现状5
1.2计算器系统现状6
1.3简易计算器系统简介6
第二章MCS-51系列单片机简介7
2.1中央处理器(CPU)8
2.2内部数据存储器(RAM)9
2.3程序存储器(ROM)9
2.4定时/计数器9
2.5MCS-51单片机引脚说明10
2.6中断系统10
第三章设计思路与步骤12
3.1系统框图12
3.2硬件电路设计13
3.3程序设计13
3.4软件仿真13
第四章电路焊接与试验14
结论14
参考文献14
附录15
附录一15
附录二15
前言
课题简介
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本系统就是充分利用了MCS-51芯片的I/O引脚。
系统采用MSC-51系列单片机Intel8051为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算程序则是参照教材。
至于位数和功能,如果有需要可以设计扩充原系统来实现。
设计目的
通过本次课程设计,运用《数字电子技术基础》、《单片微型计算机原理及应用》所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。
通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
设计任务
在本次工程实践中,主要完成如下方面的设计任务:
1)简要综述单片机技术发展的国内外现状及数码管动态显示和矩阵键盘基本原理;
2)掌握MCS-51系列某种产品的最小电路及外围扩展电路的设计方法;
3)了解单片机数据转换功能及工作过程;
4)完成主要功能模块的硬件电路设计及必要的参数确定;
5)用Protues软件完成原理电路的绘制并实现与KeiluVision4软件的连接仿真;
6)完成系统实物设计。
第一章计算器系统简介
1.1单片机发展现状
单片机的发展趋势:
低功耗CMOS化;微型单片化;主流与多品种共存;单片机从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
1)低功耗CMOS化
MCS-51系列的8051推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
2)微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
3)主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以C8051为核心的单片机占据了半壁江山。
而Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
1.2计算器系统现状
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。
低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。
高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。
键盘是计算器的输入部件,一般采用接触式或传感式。
为减小计算器的尺寸,一键常常有多种功能。
显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。
除显示计算结果外,还常有溢出指示、错误指示等。
计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。
为节省电能,计算器都采用CMOS工艺制作的大规模集成电路(见互补金属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。
计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。
1.3简易计算器系统简介
本计算器是以MCS-51系列单片机为核心构成的简易计算器系统。
该系统通过单片机控制,实现对4×5键盘扫描进行实时的按键检测,并把检测数据存储下来。
整个计算器系统的工作过程为:
首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。
整个系统可分为三个主要功能模块:
功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,数码管动态显示。
第二章MCS-51系列单片机简介
MCS-51系列单片机虽已有10多种产品,但可分为两大系列:
MCS-51子系列与MCS-52子系列。
MCS-51子系列中主要有8031、8051、8751三种类型。
而MCS-52子系列也有3种类型8032、8052、8752。
各子系列配置见表2-1所示。
表2-1MCS-51系列单片机配置一览表
系
列
内存储器(字节)
定时器/
计数器
并行
I/O
串行
I/O
中断源
制造工艺
无
ROM
片内
ROM
片内
EPROM
片内
RAM
MCS-51
子系列
8031
8051
4K
8751
128
2×16位
4×8位
1
5
HMOS
80C31
80C51
4K
87C51
4K
128
3×16位
4×8位
1
5
CHMOS
MCS-52
子系列
8032
8052
8K
8752
8K
256
3×16位
4×8位
1
6
HMOS
80C232
80C252
8K
87C252
8K
256
3×16位
4×8位
1
7
CHMOS
MCS-51系列单片机的内部结构框图如图2-1所示。
MCS-52系列单片机的内部结构包含一个8位中央处理器CPU、128个字节(MCS-52子系列为256字节)的片内数据存储器RAM、4KB(MCS-52子系列为8KB)的片内程序只读存储器ROM、18个(MCS-52子系列为21个)特殊功能寄存器SFR、4个8位并行输入输出I/O接口、一个串行I/O接口、2个(MCS-52子系列为3个)16位定时器/计数器和1个具有5个(MSC-52子系列为6个或7个)中断源,可编程为2个优先级的中断系统八大部分,现在我们就主要部分加以说明:
图2-1MCS-51系列单片机内部结构图
2.1中央处理器(CPU)
中央处理器(CPU)是整个单片机的核心部件,它决定了单片机的主要功能特性。
它由运算部件和控制部件两大部分组成。
1)运算部件
运算部件是以算术逻辑单元ALU为核心,加上累加器A、寄存器B、暂存器TMP1和TMP2、程序状态存储器PSW及专门用于位操作的布尔处理机组成的(见图1-1),它能实现数据的算是逻辑运算、位变量处理和数据传送操作。
2)控制部件
控制部件是单片机的神经中枢,它包括定时和控制电路、指令寄存器、译码器以及信息传送控制等部件。
它以主振频率为基准发出CPU的时序,对指令进行编译,然后发出各种控制信号,完成一系列定时控制的微操作,用来协调单片机内部各功能部件之间的数据传送、数据运算等操作,并对外发出地址锁存ALE、外部程序存储器选通
以及通过P3.6和P3.7发出数据存储器读
、写
等控制信号,并且接受处理外接的复位RST和外部程序存储器访问控制
信号。
2.2内部数据存储器(RAM)
MCS-51系列单片机的内部数据存储器由读写存储器RAM组成,用于存储数据。
它由RAM块和特殊功能寄存器(SFR)块组成。
对于MCS-51子系列,RAM块有128个字节,其编址为00H~7FH;SFR块占128个字节,其编址为80H~FFH,两者连续但不重叠。
对于MCS-52子系列,RAM块有256个字节,编址为00H~FFH;SFR块仍占128个字节,编制为80H~FFH。
后者比前者多128个字节的编址是重叠的,由于访问内部数据存储器各部分所用指令不同,并不会引起混乱。
2.3程序存储器(ROM)
计算机的工作是按照事先编制好的程序命令一条条循序执行的,程序存储器就是用来存放这些已编好的程序和表格常数,它由只读存储器ROM或EPROM组成。
计算机为了有序的工作设置了一个专用寄存器——程序计数器PC,用以存放将要执行的指令系统。
每取出指令的1个字节后,其内容自行加1,指向下一字节地址,依次使计算机从程序存储器取指令执行,完成某种程序操作。
由于MCS-51单片机的程序计数器为16位,因此,可寻址的地址空间为64KB。
与此相对应得程序存储器编址从0000H开始,最大可至FFFFH。
2.4定时/计数器
在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。
比如,在单片机控制的电力系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。
若采用光电脉冲发生器作为检测元件,则先应对每个采样周期中光电脉冲发生器发出的脉冲进行计数,然后再通过实时计算求的对应的转速。
对于定时/计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都有以下特点:
1)定时/计数器有多种工作方式,可以是计数方式也可以是定时方式。
2)定时/计数器的计数值是可变的,当然对计数的最大值有一定限制,这取决于计数器的位数,计数的最大值也就限制了定时的最大值。
3)可以按照规定的定时或计数值,在定时时间到或者计数终止时,发出终端请求,以便实现定时控制。
MCS-51单片机内带有两个16位定时/计数器T0和T1,两者均可作为定时器或计数器使用。
2.5MCS-51单片机引脚说明
MCS-51系列单片机芯片均为40个引脚,HMOS工艺制造的芯片采用双列直插(DIP)方式封装,其引脚示意及功能分类如图2-2所示。
CMOS工艺制造的低功耗芯片也有采用方形封装的,但为44个引脚,其中4个引脚是不使用的。
图2-2MCS-51系列单片机引脚及总线结构
(a)管脚图;(b)引脚功能分类
MCS-51系列单片机的40个引脚中有2个专用于主电源的引脚,2个外接晶体的引脚,4个控制或与其他电源复用的引脚,以及32条输入输出I/O引脚。
2.6中断系统
MCS-51系列单片机的中断系统属于8位单片机中功能较强的1种中断系统,它可以提供5个中断源,每个中断源有两个优先级别可供选择,可实现两级中断服务程序嵌套。
此外,所有中断均可有软件设定为允许中断或禁止中断,也就是说,用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以中断指令使CPU接受中断请求。
MCS-51单片机的中断系统结构示意图如图2-3所示。
图2-3MCS-51单片机的中断系统结构示意图
第三章设计思路与步骤
3.1系统框图
1)系统模块图
2)系统运算流程图
3.2硬件电路设计
AT89C52单片机一片,74HC573两片,4×5键盘一个,8位共阴极的七段数码管一个,连线和电阻和开关若干。
AT89C52单片机的P1.0~P1.4为键盘扫描输出线,P2.0~P2.2和P2.4为键盘扫描输入线。
74HC573用于对单片机进行拓展。
键盘由4×5共20个按键组成,10个数字键(由0-9组成)5个运算符号(加减乘除等于)组成,1个清除键(作用相当于整体复位),1个小数点,1个开方运算,1个求倒数运算和一个负号(正号)。
数码管采用动态显示方式,通过74HC573接到单片机的P0口。
电路设计图见附录。
3.3程序设计
见附录。
3.4软件仿真
使用KeiluVision4与Protues连接仿真:
例如:
2+5=7
其他验证不再一一列举。
第四章电路焊接与试验(略)
结论
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
设计达到了预期的效果,但是由于单片机中只有单精度数据,以至于计算数据出现了六位数据以上时,后面的数据就会默认零,如果不默认为零,出现的就是乱码。
回顾起此次课程设计,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
参考文献
[1]张毅坤、陈善久、裘雪红.单片微型计算机原理及应用.西安电子科技大学出版社.1998.
[2]阎石.数字电子技术基础(第五版).高等教育出版社.2005.
[3]童诗白、华成英.模拟电子技术基础(第四版).高等教育出版社.2006.
附录
附录一
电路设计图:
附录二
程序清单:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ucharcodeled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
ucharxx[8];
sbitdula=P2^6;
sbitwela=P2^7;
voiddisplaypro(doubleh)
{
ucharpoint=8,m;
bitsymbol;
chari;
doubleproh;
symbol=0;
if(h<0)
{
symbol=1;
h=-h;
}
if(h>=0&&h<10){point=1;proh=h*10000000;}
if(h>=10&&h<100){point=2;proh=h*1000000;}
if(h>=100&&h<1000){point=3;proh=h*100000;}
if(h>=1000&&h<10000){point=4;proh=h*10000;}
if(h>=10000&&h<100000){point=5;proh=h*1000;}
if(h>=100000&&h<1000000){point=6;proh=h*100;}
if(h>=1000000&&h<10000000){point=7;proh=h*10;}
if(h>=10000000&&h<100000000){point=8;proh=h;}
if(h<100000000)
{
for(i=7;i>=0;i--)
{
m=proh/pow(10,i);
xx[7-i]=table[m];
proh=proh-(m*pow(10,i));
if(proh<0)
proh=0;
}
if(h>=1)//由于keil中单精度和双精度是一样的,只能表示六位数,如不把后面两位清零,将会出现乱码。
{
xx[6]=0x3f;
xx[7]=0x3f;
}
else
xx[7]=0x3f;
xx[point-1]+=128;//显示小数点
}
else//超过八位数时,计算器报错显示E
{
for(i=6;i>=0;i--)
xx[i]=0x00;
xx[7]=0x79;
}
while(xx[7]==0x3f)//去除0.0000000显示的问题,即把0.0000000显示成0.
{
for(i=7;i>0;i--)
xx[i]=xx[i-1];
xx[0]=0x00;
}
if(symbol==1)//若为负数时,将数组中的数据后移
{
for(i=6;i>=0;i--)
{
if(xx[i]==0x00)
{
xx[i]=0x40;
break;
}
}
}
}
voiddelay(unsignedcharx)
{
unsignedchari,j;
for(i=0;i for(j=0;j } unsignedcharkeyscan()//key为按键返回值 { uchartemp,row=0,col=0,key; uintadd; P2&=0xe8; P1|=0x1f; temp=P1; temp|=0xe0; if(temp! =0xff) { delay(15); temp=P1; temp|=0xe0; if(temp! =0xff) { row=P1; P2|=0x17; P1&=0xe0; col=P2; col|=0xe8; add=row*256+col; switch(add) { case0xfefe: key=0;break; case0xfdfe: key=1;break; case0xfbfe: key=2;break; case0xf7fe: key=3;break; case0xeffe: key=10;break; case0xfefd: key=4;break; case0xfdfd: key=5;break; case0xfbfd: key=6;break; case0xf7fd: key=7;break; case0xeffd: key=11;break; case0xfefb: key=8;break; case0xfdfb: key=9;break; case0xfbfb: key=15;break; case0xf7fb: key=14;break; case0xeffb: key=12;break; case0xfeef: key=16;break; case0xfdef: key=17;break; case0xfbef: key=18;break; case0xf7ef: key=19;break; case0xefef: key=13;break; default: key=20;break; } returnkey; } elsereturn20; } elsereturn20; } voidmain() { uchark,i,hand,h2; bitxsd=0; chardatae; doubledatatemp,h1=0,h3=0,h4=0; displaypro(0); while (1) { k=keyscan(); if(k==20) hand=0; for(i=0;i<8;i++) { wela=1; P0=led[i]; wela=0; P0=0xff; dula=1; P0=xx[i]; dula=0; delay(20); P0=0xff; } switch(k) { case20: break; case0: case1: case2: case3: case4: case5: case6: case7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 设计 报告 基于 51 简易 计算器