基于单片机的计算器带程序.docx
- 文档编号:7110746
- 上传时间:2023-01-18
- 格式:DOCX
- 页数:27
- 大小:374.38KB
基于单片机的计算器带程序.docx
《基于单片机的计算器带程序.docx》由会员分享,可在线阅读,更多相关《基于单片机的计算器带程序.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机的计算器带程序基于单片机的计算器带程序摘摘要要当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。
计算器作为一种快速通用的计算工具方便了用户的使用。
计算器可谓是我们最亲密的电子伙伴之一。
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本系统就是充分利用了AT89S52芯片的I/O引脚。
系统以采用MCS-51系列单片机Intel8051为中心器件来设计计算器控制器,以矩阵键盘输入、八位数码管显示,实现了能根据实际输入值计算并显示的功能。
关键词:
计算器AT89S52八位数码管矩阵键盘1实训设计容41.1设计目的41.2设计任务42系统硬件设计42.1芯片介绍42.1.1主控芯片AT89S52概述与介绍42.1.2MAX232芯片介绍92.2硬件电路102.2.1键盘接口电路102.2.27段LED数码管102.2.3程序下载接口112.2.4单片机时钟电路112.2.5单片机复位电路123软件设计123.1按键扫程序设计123.2算法设计134电路板制作过程135作品调试145.1硬件调试145.2程序调试14致16参考文献:
17附录:
181实训设计容实训设计容1.1设计目的设计目的通过本次课题设计,应用单片机原理及应用等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
1.2设计任务设计任务在本次实训中,主要完成如下方面的设计任务:
(1)基本部分:
1.八位数码管动态显示2.4*4矩阵键盘输入3.能实现整数的加、减、乘、除4.数据位数超出8位有报警提醒功能
(2)发挥部分:
1.具备连续运算功能2.能实现若干位小数的运算3.能实现乘方和阶乘等其他特殊运算2系统硬件设计系统硬件设计硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。
单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。
本设计选用以AT89S52单片机为主控单元,显示部分采用7段LED动态显示,按键部分采用4*4矩阵键盘。
2.1芯片介绍芯片介绍2.1.1主控芯片主控芯片AT89S52概述与介绍概述与介绍单片微型计算机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU(CentralProcessingUnit)、随机存取存储器RAM(RandomAccessMemory)、只读存储器ROM(Read-onlyMemory)、基本输入/输出(Input/Output)接口电路、定时器/计数器等部件都制作在一块集成芯片上,构成一个完整的微型计算机,从而实现微型计算机的基本功能。
单片机部基本结构示意图如图2.1所示:
图2.1AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8k在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52引脚如图2.2:
图2.2VCC:
电源GND:
地P0口:
P0口是一个双功能的8位行I/O口,字节地址为80H,位地址为80H87H。
P0口既可做输入/输出端口使用,又可作为地址/数据总线分时传输低8位并行数据。
其特点有如下:
1P0口是一个双功能的端口:
地址/数据分时复用口和通用I/O口。
2具有高电平、低电平和高阻抗3钟状态的I/O口端口称为双向I/O端口。
P0口作为地址/数据总线复用时,相当于一个真正的双向I/O口。
而用作通用I/O口时,由于引脚上需要外加上拉电阻,端口不存在高阻状态,此时P0口只是一个准双向口。
3为保证引脚上的信号能正确读入,在读入操作前应首先向特殊功能寄存器P0写入FFH。
4单片机复位后,特殊功能寄存器P0的值为FFH。
5一般情况下,如果P0口作为地址、数据复用口时,就不能再作通用I/O口使用。
6P0口能驱动8个TTL负载。
P1口:
是单一功能的并行I/O口,字节地址为90H,位地址为90H97H。
它只用作通用的数据输入/输出口。
其具有如下特点:
P1口由于有部上拉电阻,没有高阻抗输入状态,所以称为准双向口。
作为输出口时,不需要再在片外接上拉电阻。
P1口读引脚输入时,必须先向特殊功能寄存器P1写入FFH。
P1口能驱动4个TTL负载。
P2口:
是一个双向功能的8位并行I/O口,字节地址为A0H,位地址为A0HA7H。
既可用作通用的输入/输出口,又可用作高8位地址总线。
其有如下特点:
用作高8位地址输出线应用时,与P0口输出的低8位地址一起构成16位的地址总线,可以寻址64KB地址空间。
作为通用I/O口使用时,P2口为准双向口,功能与P1一样。
P2口能驱动4个TTL负载。
P3口:
是一个双功能的8位并行I/O口,字节地址为B0H,位地址为BOHB7H。
它的第一功能是通用输入/输出口,作为第二功能使用时,个引脚定义如表1:
表1P3口特点如下:
部有上拉电阻,不存在高阻抗输入状态,是一个准双向口。
作第二功能的输入/输出或作通用输入时,必须先向特殊功能寄存器P3写入FFH。
P3口的某位不作为第二功能使用时,则自动处于通用输入/输出口功能,可作为通用输入/输出口使用。
P3口能驱动4个TTL负载。
RST:
复位输入。
晶振工作时,RST脚持续至少个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
中断:
51系列单片机有2个外部中断源、2个定时/计数中断源及一个串行口中断源。
这些中断如图2.3:
每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。
IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
IE寄存器功能如图2.4所示:
图2.3图2.4定时器:
51系列单片机具有两个16位的定时器/计数器(T/C),它可用于定时控制、延时、对外部事件计数和检测等场合。
本次试验只用到定时功能,该功能也是通过计数来实现的,只不过此时的计数脉冲来自单片机芯片部,是系统脉冲经12分频后送来的,由于一个机器周期等于12个震荡脉冲周期,所以此时的T/C是每到一个机器周期就加1,计数频率为振荡器频率的1/12。
2.1.2MAX232芯片介绍芯片介绍MAX232引脚定义如图2.5所示:
DCD:
载波检测。
主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。
RXD:
此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入。
TXD:
此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。
DTR:
数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。
GND:
信号地;DSR:
数据设备就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。
RTS:
请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。
CTS:
清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。
RI:
Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定图2.52.2硬件电路硬件电路2.2.1键盘接口电路键盘接口电路矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键,这样键盘上按键的数量就为4*4个。
这样行列式键盘结构能有效的提高单片机系统中I/O口的利用率。
计算器的键盘布局如图2.6所示:
有16个键组成,在单片机中正好用一个P端口实现16个按键功能。
图2.62.2.27段段LED数码管数码管电路采用动态显示,如图2.7所示,由两个四位共阳极数码管通过P0口、P2口与单片机分别相连,且数码管a,b,c,d,e,f,g,dp分别依次与单片机的P0口相连,P0口做为段码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就认为数码管是同时点亮的,就可以达到动态显示的效果。
数码管用的是两个共阳极的四连体。
S8550为PNP型三极管,发射极接VCC,集电极接数码管公共端,基极通过电阻接单片机IO口,这里是P2口。
低电平时导通。
图2.72.2.3程序下载接口程序下载接口利用串行口芯片232烧录入程序如图2.8所示:
图2.82.2.4单片机时钟电路单片机时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在MCS-51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
此电路采用12MHz的石英晶体。
电路如图2.9所示:
图图2.92.2.5单片机复位电路单片机复位电路复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。
RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4s才能完成复位操作。
复位操作有上电自动复位和按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。
在本设计中采用了按键电平复位方式,3软件设计软件设计主程序的设计详见附录三。
3.1按键扫程序设计按键扫程序设计按键扫程序的过程为:
开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。
其流程图如图3.1所示。
图3.13.2算法设计算法设计计算的过程实际上就是对以下对象进行操作:
用h1,h2,h3,h4分别存放数1、符号、数2、结果,刚开始输入时是对h1进行操作,将输入的数存入h1,当按下一个”+”,用h2存放”+”代表的值,再次输入数字时就是对h3进行操作,最后按下等号就是将h1+h3的值赋给h4,并清空h1、h2、h3。
4电路板制作过程电路板制作过程印制电路板是以一定尺寸的绝缘板为基材,以铜泊为导线,经加工,用一层或若干层导电图形,以及设计好的孔来实现元件间的电气连接关系。
PCB图的制作是电路板制作过程复杂重要的一个过程。
制作PCB图时应该注意线的粗细,走向和孔的大小等等。
线太细的话,在制作过程中容易引起断线,孔太大容易渗锡,太小元件放不下,附铜在一般的高频电路板中能够减小误差。
图4.1制作流程图
(1)PCB图的打印:
将原理图,PCB图和装配图一起打印
(2)转印:
将热转印纸倒敷在铜板有铜的那一面,用转印机转印到铜板上,让热转印纸上的电路线都印到铜板上。
(3)腐蚀:
熨烫好的铜板待冷却后,热转印纸自动脱落,将印上电路图的铜版放到有三氯化铁的盆中腐蚀,剩下的部分就是一个完整的铜线电路图。
氯化铁的浓度不需要很高可以加点热水,这样腐蚀的速度也会比较快。
(4)钻孔:
钻孔要注意孔的尺寸,是不是和要装的器件相对应,如果器件要求的孔较大的话,应该换用较大的针头。
(5)焊接:
焊接前要放置元件,从比较矮的器件到比较高的器件,器件越贴近电路板越好,这样可以减小干扰。
焊接的时候可油上一层松香,不仅有助焊接还可以防止铜层氧化,要注意不要接成短路,焊点不要太大,注意不要虚焊。
(6)检查:
检查是否虚焊。
管脚位置是否正确,特别是三极管要注意。
(7)调试:
接上电源,用万用表、示波器检测。
5作品调试作品调试5.1硬件调试硬件调试a.把电路板焊好后,先通过检查电路板表面检查是否有漏焊、错焊、接触不良等b.编写检测程序逐个点亮数码管,检查数码显示部分是否有硬件问题c编写检测程序检测矩阵扫描是否有硬件问题5.2程序调试程序调试重点就是这个部分,很多程序就是在调试过程中慢慢完善,先前所完成的程序部分只能算一个基本框架,当然,这一切是建立在硬件没用问题的基础上程序在进行调试时,可以像硬件一样使用分模块调试,这样可以最迅捷的找出问题所在,不受其他模块的影响总结这次单片机课程设计不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固。
经过两周的努力,基本完成了单片机课设。
这是一个磨练意志的过程。
从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。
一方面通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用Proteus软件画电路图时,然后再转换成一维的WORD中进行编辑,这个过程中让我掌握了计算机辅助的设计技术。
当然,这是一个需要不断的尝试,不断的校核,不断的修改,最后完成一个合理的设计的过程,需要的是细心和耐心。
在很大程度上培养了我拼搏的工作精神,使我受益匪浅,更加明确了自己专业的方向。
致本次的工作能够得到顺利的完成,首先要感的是学院能够给我们这个展现自己的能力的机会,让我们能够从中学到一些东西。
再者我想感在我做实训设计中那些在身边帮助我的每位同学,本来我对PROTEL,PROTUES,以及KEIL这三款软件不是非常熟悉,是身边的同学在关键时候给予我耐心的帮助,让我现在对这些软件更加熟悉,也使我在实训设计中的制版和仿真能够成功。
最后要感的是我们的指导老师,是老师平日里的辛勤教导,教给我们相关知识,为我们的实训成功打下了基础。
总之,感每一位关心过我,帮助过我的人。
滴水之恩,当涌泉相报。
最后,再次感我的指导老师和同学们。
参考文献:
参考文献:
1毅刚、喜源、谭晓昀、曲春波著.MCS-51单片机应用设计.工业大学,19972恢先、黄辉先著.单片机原理与应用.人民邮电出版,2009.73朱定华著.单片机原理与接口技术.电子工业,2001.44志海、黄玉清、连鑫著.单片机原理及应用(第二版).电子工业,2009.85XX文库附附录:
录:
1电路原理图2PCB图3源程序ORG0000HLJMPSTART;动态显示子程序DIR:
MOVDPTR,#TABMOVA,78HMOVCA,A+DPTRMOVP0,ASETBP2.7;1.仿真时是采用高电平点亮,但是由于硬件是8550PNP型三极管驱动,故而下载到板上必须改为CLRP2.7,一直改到P2.0处LCALLDELAYCLRP2.7;2.仿真时是采用低电平灭灯,但是由于硬件是8550PNP型三极管驱动,故而下载到板上必须改为SETBP2.7,一直改到P2.0处MOVA,79HMOVCA,A+DPTRMOVP0,ASETBP2.6LCALLDELAYCLRP2.6MOVA,7AHMOVCA,A+DPTRMOVP0,ASETBP2.5LCALLDELAYCLRP2.5MOVA,7BHMOVCA,A+DPTRMOVP0,ASETBP2.4LCALLDELAYCLRP2.4MOVA,7CHMOVCA,A+DPTRMOVP0,ASETBP2.3LCALLDELAYCLRP2.3MOVA,7DHMOVCA,A+DPTRMOVP0,ASETBP2.2LCALLDELAYCLRP2.2MOVA,7EHMOVCA,A+DPTRMOVP0,ASETBP2.1LCALLDELAYCLRP2.1MOVA,7FHMOVCA,A+DPTRMOVP0,ASETBP2.0LCALLDELAYCLRP2.0RETTAB:
DB0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0FFH;共阳数码管;延时子程序DELAY:
MOVR6,#2LOOP1:
MOVR7,#248NOPLOOP2:
DJNZR7,LOOP2DJNZR6,LOOP1RET;键盘检测子程序(无键按下继续检测,有键按下赋A键值)KEY:
LCALLKS;调用检测按键子程序JNZK1;有键按下继续LCALLDELAY2;无键按调用延时去抖ACALLDIR;调用动态显示AJMPKEY;返回继续检测按键K1:
LCALLDELAY2;有键按下延时去抖动LCALLKS;再调用检测按腱子程序JNZK2;确认有按键进行下一步ACALLDIR;调用动态显示AJMPKEY;无键按下返回继续检测K2:
MOVR2,#0EFH;将扫描值送入R2暂存MOVR3,#00H;将第一列值送入R3暂存K3:
MOVP1,R2;将R2值送入P1口L0:
P1.0,L1;P1.0等于1跳转到L1MOVA,#00H;将第一行值送入ACCAJMPLK;跳转到键值处理程序L1:
P1.1,L2;P1.1等于1跳转到L2MOVA,#04H;将第二行的行值送入ACCAJMPLK;跳转到键值处理程序L2:
P1.2,L3;P1.2等于1跳转到L3MOVA,#08H;将第三行行值送入ACCAJMPLK;跳转到键值处理程序L3:
P1.3,NEXT;P1.3等于1跳转到NEXT处MOVA,#0CH;将第四行行值送入ACCLK:
ADDA,R3;行值与列值相加后的键值送入APUSHACC;将A中的值送入堆栈暂存K4:
LCALLDELAY2;调用延时去抖程序LCALLKS;调用按键检测程序JNZK4;按键没有松开继续返回检测POPACC;将堆栈值送入ACCMOVDPTR,#KEYTABMOVCA,A+DPTRRETNEXT:
INCR3;列值加一MOVA,R2;R2值送入AJNBACC.7,KEY;扫描完至KEY处进行下一扫描RLA;扫描未完将值左移一位进行下一列扫描MOVR2,A;将ACC值送入R2暂存AJMPK3;跳转到K3继续KS:
MOVP1,#0FH;将P1口高四位置0低四位置1MOVA,P1;读P1口XRLA,#0FH;将A中的值与A中的值相异或RET;子程序返回KEYTAB:
DB7,8,9,10,4,5,6,11,1,2,3,12,0,14,15,13;键值表;40ms延时去抖动子程序DELAY2:
MOVR6,#8HLP1:
MOVR7,#0FAHLP2:
DJNZR7,LP2DJNZR6,LP1RET;主程序START:
MOV78H,#0;初始化:
78H放0的段码,其余放熄灭码MOV79H,#10MOV7AH,#10MOV7BH,#10MOV7CH,#10MOV7DH,#10MOV7EH,#10MOV7FH,#10MOVR5,#0;R5是按键次数,初始置0MOV30H,#0;30H是功能键存放单元,置为0MOV40H,#0;40H单元初始置为0MOV41H,#0;41H单元初始置为0SETBP3.2LOOP:
LCALLDIRLCALLKEYINCR5;判断按下的是哪个键S1:
CJNEA,#10,S2;不是+键,跳到S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 计算器 程序