课程设计(论文)基于单片机的简易计算器的设计.doc

上传人:仙人指路1688 文档编号:3993510 上传时间:2023-03-30 格式:DOC 页数:18 大小:236KB
返回 下载 相关 举报
课程设计(论文)基于单片机的简易计算器的设计.doc_第1页
第1页 / 共18页
课程设计(论文)基于单片机的简易计算器的设计.doc_第2页
第2页 / 共18页
课程设计(论文)基于单片机的简易计算器的设计.doc_第3页
第3页 / 共18页
课程设计(论文)基于单片机的简易计算器的设计.doc_第4页
第4页 / 共18页
课程设计(论文)基于单片机的简易计算器的设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《课程设计(论文)基于单片机的简易计算器的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的简易计算器的设计.doc(18页珍藏版)》请在三一办公上搜索。

1、 基于单片机的简易计算器 课程设计说明书 专业班级:12级电子信息3班 成 员: 指导教师: 设计时间:2013至2014学年第二学期 物理与电气工程学院 2014年6月6日摘要近几年单片机技术的发展很快,其中,电子产品的更新速度迅猛。计算器是日常生活中比较常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的硬件和软件条件,设计出计算器,加强对计算器的理解,融合所学的知识加以运用显得尤为重要。本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用4*4矩阵键盘,可以进行加、减带符号数字运算(两位整数),并在数码管上动态显示操作过程及结果。关键词: 单片机、 数码管、

2、计算器、矩阵键盘目录序言4第1章 计算器设计原理分析51.1 STC89C52的引脚功能51.2输入与输出原理71.2.1 输入模块71.2.2显示模块71.2.3原理仿真图81.2.4 程序流程图9第二章 计算器硬件分析102.1 硬件资源分配102.2 键盘电路的设计102.3 硬件框图11心得体会12源程序:13参考文献18序言随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化,电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出一个简易的计算器,加

3、强对计算器的理解,融合所学的知识加以运用显得尤为重要。现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校因此设计一款简单实用的计算器会有很大的实际意义。本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决课题设计实际问题的能力,为单片机应用和开发打下良好的基础。1、 对字符数码模块的工作原理,如初始化、清屏、显示、调用及外特性有较清楚的认识,并会使用LCD实现计算结果的显示。2、

4、在充分分析内部逻辑的概念,进行软件和调试,学会使用,并能够以其为平台设计出加减运算能力简易计算器的软件程序。 3、充分理解单片机设计计算器的原理,明白流程并加以运用。第1章 计算器设计原理分析1.1 STC89C52的引脚功能单片机STC89C52为40引脚芯片,见图1。图 1 STC89C52引脚图(1) 口线:P0、P1、P2、P3共四个八位口。P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在编程时,P

5、0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在Flash编程和校验时,P1口接收低8位地址字节。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入和定时器/计数器2的触发输入。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口

6、拉高,此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。(2) 其他引脚说明:RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRT0位可以使此功能无效。DISRT0默认状态下,复位高电平有效。ALE/PROG

7、:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低八位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它对外输出时钟或用于定时目的。 PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲;在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意是:如果加密LB1被编程,复位时内部会锁存EA端状态。 1

8、.2输入与输出原理1.2.1 输入模块采用矩阵式键盘作为输入模块:矩阵式按键输入模块。其原理图如图3所示。图 2 矩阵键盘输入功能介绍:如图2,AT89C52单片机的P1.0-P1.7链接键盘,键盘模块每一次案件都将显示(功能键不显示),并输出。1.2.2显示模块采用LED数码管动态显示:采用LED数码管的动态显示,其特点是:其亮度比静态显示的亮度要差一些;但其电路比较简单,适合于显示位数较多的情况。如图3所示。图 3 4位数码管的动态显示1.2.3原理仿真图图51.2.4 程序流程图YNNYYNN按键次数清0,R4给50H是否“0”NNYYBCD码转换减法运算加法运算是否“-”是否“+”FU

9、N功能键处理功能键互换保存到显示区保存到R4 数字清0按键次数清0第二次按键第一次按键是否为功能键YNYNUM数字处理START初始化是否为数字键KEY扫描键盘DIR动态显示LOOP图6第二章 计算器硬件分析2.1 硬件资源分配主要用到的硬件:单片机STC89C52 、数码管 、4*4按键键盘硬件分配:1、 P1口:作为输入口,与键盘连接,实现数据的输入;2、 P0、P2口:作为输出口(P2口为片选,P0口为输出),控制数码管显示屏显示数据的结果;3、 数码管显示输出。2.2 键盘电路的设计键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合;当按下某个按

10、键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的键盘就是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。本设计选用的是独立式键盘。如图7所示。图7 4*4独立式键盘2.3 硬件框图图4 系统组成及硬件框图心得体会通过本次课程设计我真正的自己完成了对给定要求系统的硬件设计、电路设计、电路板设计、软件设计以及对成品的调试过程。从整个过程中学习到了很多方面的知识,了解到以

11、往学习中认识和学习,也对将来从事工作自己知识在某方面的之处,是对以往学习科目的一种贯穿和承接,从而能更好的大有裨益。本次实验过程中,我切实体验到了认真对待每一个细小零件的重要性。对于实验室提供的零件要具有检错能力。此外从本次试验中我学会到了,焊接电路布局的重要性,以及在布线时,对线路的长度要有一定的冗余,以提供纠错方便。从本次课设中我也看到了身的很多不足之处,对知识的掌握不够扎实,有一知半解的现象。有时做事不够稳定,过于毛躁,不能平心静气的去分析所遇到的问题和错误。这在以后的工作和生活中是不可取的,通过对自身问题的认识与改正相信再遇到同样问题时会更好的解决。以后的设计实验也会更好的完成。本次实

12、验中我和队友学会了更好的沟通,我们一起问老师,查资料,体会到了合作的重要性。当然也突出了我们学单片机学的不扎实,不会的有很多,通过这次试验我们一定会更加努力的学习,更快更好的完成任务,为以后奠定基础。源程序:ORG 0000H ;0 1 2 3 LJMP START ;4 5 6 7 ORG 0100H ;8 9 + -START:MOV R3,#0 ;按键次数 ; = MOV 60H,#0 ;功能键清空 MOV 34H,#0 ;计算结果 MOV 33H,#0 ; MOV 50H,#0 MOV 51H,#0;LOOP1:LCALL DIR ;调显示子程序LOOP2:LCALL TKEY JZ

13、LOOP2 LCALL KEY INC R3; N0:CJNE A,#0,N1 ;判断是否为数字键 LJMP NUM ;转数字键处理N1:CJNE A,#1,N2 LJMP NUMN2:CJNE A,#2,N3 LJMP NUMN3:CJNE A,#3,N4 LJMP NUMN4:CJNE A,#4,N5 LJMP NUMN5:CJNE A,#5,N6 LJMP NUMN6:CJNE A,#6,N7 LJMP NUMN7:CJNE A,#7,N8 LJMP NUMN8:CJNE A,#8,N9 LJMP NUMN9:CJNE A,#9,S1 LJMP NUM;S1:CJNE A,#10,S2

14、;判断是否为功能键 + LJMP FUN;转功能键处理S2:CJNE A,#11,S3;- LJMP FUNS3:CJNE A,#15,S4;= LJMP FUNS4:LJMP D3 ;判断是否为清除键 ,其他全是清零;NUM:CJNE R3,#1,NUM1 ;判断第几次按键数字处理 LJMP D1 ;为第一个数字NUM1:CJNE R3,#2,NUM2; LJMP D2;为第二个数字NUM2:LJMP D3;第三个数字转溢出D1: MOV R4,A ;输入值暂存R4 MOV 34H,A ;输入值送显示缓存MOV 33H,#0LJMP LOOP1 ;等待再次输入D2:MOV R7,A ;个位数

15、暂存R7MOV B,#10MOV A,R4MUL AB ;十位数ADD A,R7MOV R4,A ;输入值存R4MOV 33H,34H ;输入值送显示缓存MOV 34H,R7LJMP LOOP1D3: MOV R3,#0 ; 按键次数清0 MOV R4,#0 ; 输入值清0 MOV 50H,#0 ; 计算结果清0MOV 60H,#0 ; 功能键设为0MOV 34H,#00H ; 显示清空MOV 33H,#00HLJMP LOOP1;FUN:MOV 34H,#00H;功能键处理 MOV 33H,#00H MOV R0,60H ;与上次功能键交换MOV 60H,AMOV A,R0CJNE A,#1

16、0,FUN1 ;判断功能键LJMP ADDY ;“+”FUN1:CJNE A,#11,FUN2 LJMP SUBY ;“-”FUN2:CJNE A,#0,FUN3 LJMP FIRST ;首次按功能键FUN3:LJMP DENG ;“=”FUN4:LJMP D3;FIRST:MOV 50H,R4;输入值送结果运算单元 MOV R3,#0;按键次数清0 LJMP BCD;结果处理ADDY:MOV A,50H;上次结果送累加器 ADD A,R4;上次结果加输入值JB CY,FUN4;溢出MOV 50H,A;存本次结果MOV R3,#0;按键次数清0 LJMP BCDSUBY:MOV A,50H S

17、UBB A,R4;上次结果减输入值JB CY,FUN4;负数溢出MOV 50H,AMOV R3,#0 LJMP BCDDENG:MOV R3,#0 LJMP BCD;BCD: MOV B,#10 ;将计算结果转换成BCD码,转到显示 MOV A,50H ;结果送累加器 DIV AB ;结果除10 MOV 51H,A ;暂存商 MOV A,B ;取个位数 MOV 34H,A ;个位数送显示缓存 MOV A,51H JZ RETURN MOV 33H,A ;十位数送显示缓存RETURN:LJMP LOOP1;DIR: MOV R0,#34H ;动态显示子程序DIR1: MOV DPTR,#TAB1

18、 MOV A,R0 MOVC A,A+DPTR MOV P0,A CJNE R0,#34H,DIR2 SETB P2.0 LCALL DELAY10MS CLR P2.0 DEC R0 SJMP DIR1DIR2:SETB P2.1 LCALL DELAY10MS CLR P2.1 RETTAB1:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH /共阳LED显示码表;TKEY:ACALL DIR ;扫描键盘程序 MOV P1,#0FH MOV A,P1 CPL A ANL A,#0FH RET

19、KEY:MOV R6,#10 ACALL DELAY10MS MOV P1,#0FH MOV A,P1 CJNE A,#0FH,KEY2 LJMP LOOP1KEY2:MOV B,A MOV P1,#0EFH MOV A,P1 CJNE A,#0EFH,KEY3 MOV P1,#0DFH MOV A,P1 CJNE A,#0DFH,KEY3 MOV P1,#0BFH MOV A,P1 CJNE A,#0BFH,KEY3 MOV P1,#07FH MOV A,P1 CJNE A,#07FH,KEY3 LJMP LOOP1KEY3:ANL A,#0F0H ORL B,A MOV R1,#16 MO

20、V R2,#0 MOV DPTR,#TABKEY4:MOV A,R2 MOVC A,A+DPTR CJNE A,B,KEY6 MOV P1,#0FHKEY5:MOV A,P1 CJNE A,#0FH,KEY5 MOV R6,#10 ACALL DELAY10MS MOV A,R2 RETKEY6:INC R2 DJNZ R1,KEY4 AJMP LOOP1 DELAY10MS:MOV R6,#10 DL:MOV R7,#250 DJNZ R7,$ DJNZ R6,DL RETTAB:DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H / 按键键值表 END参考文献1 胡 辉. 单片机原理与应用. 北京:中国水利水电出版社,2007 2 林志琦. 单片机原理接口及应用. 北京:中国水利水电出版社,2007 3 赵克林. C语言实例教程. 北京:人民邮电出版社,2007 4 姜承昊. 最新LED驱动电路设计、应用与制造新技术新工艺实用手册. 北京:中国科学技术文献出版社,2008 5 6

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号