版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于LED的简易计算器设计基于LED的简易计算机设计目录TOC\o"1-3"\u摘要 I1.绪论 12.总体方案设计 13.硬件电路设计 23.1AT89S52简介 23.28279芯片简介 33.3LED数码显示模块介绍 64.系统软件设计 74.1系统软件介绍 74.2主程序 84.3LED显示程序设计 84.4键盘控制设计 115.系统综合调试 125.1外部实际线路连接 125.2调试 136.总结及课设体会 147.结束语 14附录源程序 16参考文献 24PAGEXII1.绪论人类进行计算已经是一天中必不可少的事情了,所以计算器就自然而然的走进了人们的生活中。最开始的计算器就是用LED数码管作为显示屏,只能进行最原始的四则运算的。后来随着科技的发展,计算器的功能越来越健全,什么开方,乘方,甚至连函数运算也包括了,显示屏也不再是LED数码管了。而本次的课设题目是基于LED的简易计算器设计。通过试验箱,和软件相连,能够实现两位数四则运算的简易计算器。2.总体方案设计本课程设计通过AT89S52CPU、8279、键盘以及LED数码显示管来实现简易的计算器,主要可以分成两模块,分别是8279键盘输入模块和LED数码显示模块。8279键盘输入模块:主要是由8279和2*8键盘来完成。8279所控制的键盘第一行的8列和第二行的前两列这10个键盘分别代表的是数字0~9这是个数字,第二行的后六列分别代表“+”“-”“*”“/”“=”和“C”LED数码显示管模块:只要是有数码显示管来完成对按键值的显示,后两位显示要进行运算的两个二位的十进制数第二位是用来显示运算符号,因为条件有限只能用“A”“b”“C”“d”分别代替“+”“-”“*”“/”。按等号之后显示出计算结果,按复位后全部清0。从而完成实验要求。图1总体设计框图3.硬件电路设计基于LED的简易计算器的实现需要以硬件为基础,通过AT89S52CPU和8279键盘以及LED数码显示管连接电路,在计算机方面需要用汇编语言编辑程序,软件与硬件结合,来实现两位十进制数的四则运算。本课程设计通过AT89S52CPU和8279键盘以及LED数码显示管来实现简易计算器设计,主要可以分成两模块,分别为8279键盘输入模块,LED数码显示模块8279键盘输入模块:主要是由8279和2*8键盘来完成。8279所控制的键盘第一行的8列和第二行的前两列这10个键盘分别代表的是数字0~9这是个数字,第二行的后六列分别代表“+”“-”“*”“/”“=”和“C”在计算机上,对软件程序进行编译,内部软件程序功能完全实现的基础上,通过按动8279的按键,来实现LED数码管上的显示。第一个按下的数作为答案前输入的两位数的十位,第二次按下的数作为个位,现实与数码管上。LED数码显示管模块:只要是有数码显示管来完成对按键值的显示,后两位显示要进行运算的两个二位的十进制数第二位是用来显示运算符号,因为条件有限只能用“A”“b”“C”“d”分别代替“+”“-”“*”“/”。按等号之后显示出计算结果,按复位后全部显示为0。3.1AT89S52简介AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。使用AT89S52高密度非易失性存储器技术制造,与工业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的引脚可分为电源、外界晶体振荡器、多功能I/O口、控制和复位等。MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。对于89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开始,接着从外部寻址,寻址地址为:2000H~FFFFH。数据存储器:AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。3.28279芯片简介8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与键盘或传感器组成的矩阵相连,接收输入信息。它能自动消除开关抖动并能对多键同时按下提供保护。显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8或16位LED数码管显示。芯片引脚图如图二所示。图28279芯片图引脚图本课设需要用到CPU模块(F3区)、8279键盘与显示模块(E7区)。系统各跳线器处在初始设置状态,S11E和S12E红开关全部打到上方(ON)。具体芯片图如图3所示。8279对键盘和显示器进行自动扫描,充分地提高CPU的工作效率。Intel8279芯片是一种通用的可编程键盘显示器接口器件,单个芯片就能完成键盘输入和八段显示器显示控制两种功能。循环判断按键是否被按下,按下就响应相应的程序,按键未被按下则等待。8279工作方式命令控制字格式如下:000D1D0K2K1K0其中000为该命令字控制字标示符。D1D0为显示方式控制位。K2K1K0为键盘方式控制位。内部时钟命令控制字格式如下:001P4P3P2P1P0其中010为该命令字标志位。P4P3P2P1P0为CLK引脚输入脉冲分频数,对于不同的CLK输入脉冲频率适当选择设置P4-P0的值,以期得到扫描和去抖动所需的100KHZ定时信号。读取键值命名控制字格式如下:010AIXA2A1A0其中010为命令控制字标识符。A2A1A0为传感器缓冲器行地址。在扫描方式下,设置本命令控制字以后,对8279数据的读操作可以得到当前的键值。具体芯片图如图3所示,键盘控制如图4所示,控制原理图如图5所示。图38279键盘控制与显示图图48279键盘控制图58279显示控制3.3LED数码显示模块介绍数码显示管模块是用来显示按键按出的值与计算结果的值的。数字经过CPU的计算得出结果后再传回显示在数码管上。显示管电路图如图6所示。图6LED数码显示管原理图4.系统软件设计4.1系统软件介绍本次的课设设计所运用的是汇编语言。汇编语言是面向机器的程序设计语言。在汇编语合中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:(1)能够直接访问与硬件相关的存储器或I/O端口;(2)能够不受编译器的限制,对生成的二进制代码进行完全的控制;(3)能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;(4)能够根据特定的应用对代码做最佳的优化,提高运行速度;(5)能够最大限度地发挥硬件的功能同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:(1)编写的代码非常难懂,不好维护;(2)很容易产生bug,难于调试;(3)只能针对特定的体系结构和处理器进行优化;(4)开发效率很低,时间长且单调。4.2主程序图7主程序流程图课程设计的要求是对有键盘输入的两个两位的十进制数进行基础的四则运算4.3LED显示程序设计LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示:为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表:0~9七段数码管共阴级字形代码显示字型Gfedcba段码001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh图8LED数码管显示流程图4.4键盘控制设计图9键盘控制图设置8279的工作方式以及键盘扫描速率,然后判断是否有按键按下,如有按键,就跳到相应的子程序,执行完毕后继续判断,如果没有则等待键盘输入。在本次课程设计中,8279的初始化程序段如下:Z8279EQU239HD8279EQU238HLEDMODEQU80H;右边输入,八位显示外部译码八位显示LEDFEQEQU29H;扫描频率LEDCLSEQU0D1H;清除CODESEGMENTASSUMECS:CODE,DS:CODESTART:;初始化 PUSHCS POPDS MOVDX,Z8279 MOVAL,LEDMOD;置8279工作方式 OUTDX,AL MOVAL,LEDFEQ;置键盘扫描速率 OUTDX,AL MOVAL,LEDCLS;清除LED显示 OUTDX,AL MOVAL,90H OUTDX,AL MOV DX,D8279 MOVAL,40H OUTDX,AL MOVDX,D8279 MOVAL,40H OUTDX,AL MOVAL,00H OUTDX,AL MOVAL,0EFH OUTDX,AL MOVAL,27H OUTDX,AL MOVAL,5BH OUTDX,AL MOVAL,7FH OUTDX,AL NOP MOVDX,Z8279 MOVAL,0C2H OUTDX,AL;置空FIFO寄存器5.系统综合调试5.1外部实际线路连接1.系统各跳线器处在初始设置状态,S11E和S12E红开关全部打到下方(OFF)2.用8位数据线对应连接8255模块的JD3C(PA口)、JD4C(PB口)、JD5C(PC口)到8279模块的JD3E、JD2E、JD4E;3.用导线连接8255模块的CS_8255到地。具体连线如图9所示图10实物连线图5.2调试开始计算乘法的时候当结果超过256时数码管就不能显示出来正确的结果,因为一个寄存器里只能存放的最大的数就是256,当超过了这个寄存器所能储存的最大值时,超过的部分就会存入到寄存器B中,儿寄存器B中的是读不出来的。后来通过中间转换,可以把超过寄存器的部分转换成机器能够存放的数值,最后再通过解码显示出来。解决了乘法结果超过256的显示问题。解决后得出的99*99=9801的显示如图11所示。图11计算显示图6.总结及课设体会经过多次的连接和调试以及软件硬件的结合使用,简易计算器的课程设计完全实现。两位十进制数的简单四则运算。运算的非常准确。同时,通过这次课程设计,也大大提高了对单片机的兴趣,对以后的继续学习也很有帮助。但是这个课程设计也有可以提高的地方。就是在运算结果的精确度方面尤其是除法还不能精准到小数点以后。这是本次课程设计的一个瑕疵,当然也是对以后的努力埋下一个伏笔。7.结束语本次《基于LED的简易计算器设计》课程设计设计实现在硬件与软件结合的基础上。实现了课程设计的所有要求。在设计过程中,通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,加深了对单片机课程的理解。《单片机原理接口技术及应用》这门科目融入了课堂教学和实践教学,可以把抽象的理论知识通过实验简单化、形象化,许多实际中不易接触到的仪器,芯片可以很方便地从实验室选用,让学生感受到实际动手操作的快乐,从而激发学习兴趣和主动性。总之,随着学院教学建设的不断完善,《单片机原理接口技术及应用》一定能够在以后的计算机课程教学改革中发挥更大的作用。通过本次课程设计,我们可以很清楚地看到按键所要表示的数字,基本可以达到本次课程设计的目的。计算机的功能决不仅此而已,要想应用好计算机的一切性能,必须要多钻研、多学、多用。这次课程设计还让我明白了“实践是检验真理的唯一标准”,明白了相互之间的知识交流的重要性,充分体会到了在创造过程中探索的艰难和成功时的喜悦。同时,在实际连电路板的过程中,遇到的问题更多,连线的过程是一个让人思考的过程,也是熟悉各种元器件工作方法和实践动手的好机会,而且还是一个非常细致的工作。顺着原理图依次排查,出现问题,想出各种可能的情况,分析解决。经过不懈的努力最后终于可以实现简单的二进制数的四则运算了。时光飞逝,一转眼,课设进入了尾声了,本学期的课设也在两周内完成了。说这次课设,我认为最重要的就是软件程序与硬件实验箱的结合以及认真的研究老师给的题目。其次,老师的讲解要认真的去听去想,因为只有都明白了,做起事来就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。相信这次经验会为我的将来带来很大的帮助。附录源程序D8255AEQU8000H;8255PA口地址D8255BEQU8001H;8255PB口地址D8255CEQU8002H;8255PC口地址D8255EQU8003H;8255状态/命令口地址LEDBUFEQU50H;显示缓存KEYVALEQU60H;读到的键码Data1EQU70H ;读到的值1Data2EQU 71H ;读到的值2Dizhi1EQU 72H ;算法地址1部分Dizhi2EQU 73H ;算法地址2部分TEMP1EQU74HTEMP2EQU75HNUM EQU76HTEMPMEQU77H;ORG0000HLJMPSTARTORG0100HRD_KB:;键盘扫描MOVA,#02H;扫描第一行MOVDPTR,#D8255CMOVX@DPTR,AMOVDPTR,#D8255AMOVX A,@DPTR ;返回第一行的值MOVR1,#00H ;R1存储键码初始值CJNEA,#0FFH,KEYCAL;判键是否按下MOVA,#01H;扫描第二行MOVDPTR,#D8255CMOVX@DPTR,AMOVDPTR,#D8255AMOVX A,@DPTRMOVR1,#08H ;R1存储键码初始值CJNE A,#0FFH,KEYCALSJMPNOKEY;无键按下KEYCAL:MOVR0,#08H;计算键码SHIFT:RRCA ;把A中最右一位放入CY中JNCTORET ;CY为零时跳转INCR1DJNZ R0,SHIFTSJMP NOKEY;无键按下TORET:MOVKEYVAL,R1 ;KEYVAL储存计算后的键码RETNOKEY:MOVKEYVAL,#0FFH;返回无键标志RETDisplayLED:MOVR0,#LEDBUFMOVR1,#8;共2个八段管MOVR2,#00000000B;从右边开始显示Loop:MOVDPTR,#D8255C ;8255C连接数码管的片选MOVA,#0MOVX@DPTR,A;关所有八段管MOVA,R2RLARLARLAANL A,#11111011BINCR2MOVDPTR,#D8255C ;8255C连接数码管的片选MOVX@DPTR,AMOVA,@R0 ;开始输入数码管的片选和数码管中的位选MOVDPTR,#D8255B ;8255B连接数码管中的位选MOVX@DPTR,A ;显示一位八段管MOVR6,#1INCR0 ;切换下一位要显示的数据ACALLDelayDJNZR1,LoopRETSTART:MOVSP,#80HMOVDPTR,#D8255MOVA,#90H;方式0,PB,PC口输出,PA口输入MOVX@DPTR,AMOVR3,#00H;清零MOVR4,#00HMOVR5,#00HMOVR6,#00HMOVR7,#00HMOVdata1,#00HMOVdata2,#00HMOVdizhi1,#00HMOVdizhi2,#00MOVLEDBUF,#00HMOVLEDBUF+1,#00HMOVLEDBUF+2,#00HMOVLEDBUF+3,#00HMOVLEDBUF+4,#00HMOVLEDBUF+5,#00HMOVLEDBUF+6,#00HMOVLEDBUF+7,#00HMOVTEMP1,#00HMOVTEMP2,#00HMLoop:LCALLDisplayLED ;显示LCALLRD_KB ;有键入?MOV \A,KEYVALCJNEA,#0FFH,GetKey ;比较不相等,跳转;相等,继续显示SJMPMloopGetKey: MOV DPTR,#KeyTable ;键码查表MOVA,KEYVALMOVCA,@A+DPTRJiSuan:MOVR3,ACJNER3,#0FH,Qita;判断是否为清零键?QINGCHU:MOVR3,#00H;清零MOVR4,#00HMOVR5,#00HMOVR6,#00HMOVR7,#00HMOVdata1,#00HMOVdata2,#00HMOVdizhi1,#00HMOVdizhi2,#00HMOVLEDBUF,#00HMOVLEDBUF+1,#00HMOV LEDBUF+2,#00HMOVLEDBUF+3,#00HMOVLEDBUF+4,#00HMOVLEDBUF+5,#00HMOVLEDBUF+6,#00HMOVLEDBUF+7,#00HMOVTEMP1,#00HMOVTEMP2,#00HLJMPMLoopQita: CLRCCJNER3,#0AH,follow;判断是数字键还是功能键?follow:JCShuziLJMPGnShuzi:MOVA,R4;判断是否已有运算符输入,没有就将数值存在data1,有就将数值存在data2 JNZShuzi2 ;A不为0,跳转 MOVA,TEMP1 CJNEA,#00H,NEXT2NEXT1:MOVA,R3MOVB,#10MULABMOVdata1,AMOVTEMP1,#01HLCALLDelay ;加延时的目的是不连续读入键盘上的值LJMP XianShi;显示第一次输入的数值NEXT2: MOVA,TEMP1 CJNEA,#01H,MLoop MOVA,data1 ADDA,R3 MOVdata1,A MOVTEMP1,#02H LCALLDelay LJMPXianShiShuzi2: MOVA,TEMP2 CJNEA,#00H,NEXT4NEXT3: MOVA,R3MOVB,#10MULABMOVdata2,AMOVTEMP2,#01HLCALLDelayLJMPXianShi;显示第二次输入的数值NEXT4: MOVA,TEMP2 CJNEA,#01H,TIAO MOVA,data2 ADDA,R3 MOVdata2,A MOVTEMP2,#02H LCALLDelay LJMPXianShiTIAO: LJMPMLoopGn:MOVR4,#01H;将01h给r4,说明已有运算符输入MOVLEDBUF,#3FHMOVLEDBUF+1,#3FHCJNER3,#0EH,Ja;判断键值是否为"=",不相等说明是"="MOVR4,#00H;将r4清零MOVR5,#00HMOVR6,#00HMOVR7,#00HMOVTEMP1,#00HMOVTEMP2,#00HMOVR3,#0MOVA,dizhi1;执行"="MOVdph,AMOVA,dizhi2MOVdpl,AMOVA,#00hJMP@A+DPTR ;转到本次输入的算法程序Ja:CJNER3,#0AH,Jn;若键值为"+"则将"+"的程序首地址存在dizhi1和dizhi2中MOVDPTR,#JiaMOVA,dphMOVdizhi1,AMOVA,dplMOVdizhi2,AMOVDPTR,#LEDSEGMOVA,R3MOVCA,@A+DPTRMOV LEDBUF+6,A ;符号的显示的位置LJMPMLoopJn:CJNER3,#0Bh,Ce;若键值为"-"则将"-"的程序首地址存dizhi1和dizhi2中MOVDPTR,#JianMOVA,dphMOVdizhi1,AMOVA,dplMOVdizhi2,AMOV DPTR,#LEDSEGMOV A,R3MOVCA,@A+DPTRMOV LEDBUF+6,A ;符号的显示的位置LJMPMLoopCe:CJNER3,#0Ch,Cu;若键值为"*"则将"*"的程序首地址存在dizhi1和dizhi2中MOVDPTR,#ChengMOVA,dphMOVdizhi1,AMOVA,dplMOVdizhi2,AMOV DPTR,#LEDSEGMOV A,R3MOVCA,@A+DPTRMOV LEDBUF+6,A ;符号的显示的位置LJMPMLoopCu:CJNER3,#0Dh,Zhuan;若键值为"/"则将"/"的程序首地址存在dizhi1和dizhi2中MOVDPTR,#chuMOVA,dphMOVdizhi1,AMOVA,dplMOVdizhi2,AMOV DPTR,#LEDSEGMOV A,R3MOVCA,@A+DPTRMOV LEDBUF+6,A ;符号的显示的位置Zhuan:LJMPMLoopJia:MOVA,data1;加法程序ADDA,data2LJMPXianShiJian:MOVA,data1;减法程序SUBBA,data2LJMPXianShiCheng:MOVA,data1;乘法程序MOVB,data2MULABLJMPxianshiMChu:MOVA,data1;除法程序MOVB,data2DIV ABXianShi: MOVR0,#LEDBUF MOVB,#10;显示个位数字DIVABMOVR5,A ;整数位传递给R5MOVA,B MOVDPTR,#LEDSEGMOVCA,@A+DPTRMOV@R0,AMOVA,R5First:CJNEA,#0,NextLJMPMLoop;运算完后继续扫描键盘Next: INCR0MOVB,#10;显示十位数字DIVAB ;A里存的值是Xianshi运算中R5(既整数)的值MOVR5,A MOVA,BMOVDPTR,#LEDSEGMOVCA,@A+DPTRMOV@R0,AMOVA,R5LJMPFirstXianShiM: MOVR7,A;低字节进TEMP1(49) MOVA,B JZfanhui MOVR6,A;把高字节放入TEMP2(26) LCALLHB2;调用转换程序,转换后在r4,r5中(9801)高字节在前 MOVA,R4 ;进行拆分 ANL A,#0F0H ;屏蔽低半字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大产权房买卖合同的法律咨询
- 版借款合同样式
- 版合同协议印刷范本
- 石料场承包合同范例填写在线制作
- 放心装饰选购合同
- 投资借款合同范本指南
- 借款协议三人版范例
- 智能语音识别软件开发合同
- 购销意向书合同格式
- 酒店用品采购合同的解除
- 《全国较大事故案例》课件
- 2024-2025学年上学期天津初中地理七年级期末模拟卷1
- 病理学知到智慧树章节测试课后答案2024年秋温州医科大学
- 2023年湖北交投智能检测股份有限公司社会招聘笔试真题
- 2024企业所得税培训
- 眼科考试题含答案
- 共话五千年传承根与魂主题团日活动
- 小学校门口突发问题应急预案(5篇)
- 2024年危险品货车租赁合同条款
- 2024年大型风力发电项目EPC总承包合同
- 植物学#-形考作业4-国开(ZJ)-参考资料
评论
0/150
提交评论