




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告课程名称: 单片机原理及应用课程设计设计题目: 简易计算器 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 2班 学生姓名: 学 号: 起止日期:指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日摘 要该简易计算器以STC89C52单片机为核心,8255芯片,数码管,利用汇编语言编写相应程序进行有效四则运算。该计算器计算精度不高,只能实现简单的加减乘除,且有效数字位数有限。该装置由STC89C52模块,4x4键盘(包括19,+,-,*,/等十六个字符),数码管显示屏组成。STC89C52为主模块,其控制键盘及8255模块。键盘可以实现数字及运算符号的输入,8255控制的数码管可以进行人机交互,显示按下键盘所对应的字符以及显示运算结果。显示部分:采用数码管显示。按键部分:采用4*4键盘;通过扩展必要的外围接口电路,用汇编对单片机进行编程,实现对计算器的设计。关键字:STC89C52;8255;LED数码管目录1 设计要求11.1要求12 硬件设计部分22.1 主控芯片 STC89C52 22.28255芯片32.3 键盘42.4 LED数码显示管43 软件设计部分63.1 LED显示程序设计63.2 读键输入程序设计63.3 数值送显示缓冲程序设计73.4 运算主程序设计84 系统测试94.1 软件调试步骤94.2 程序调试步骤104.3 矩阵4*4键盘的调试104.4 数码管程序调试104.5 测试结果105 总结与思考11 参考文献12致谢13附录一14附录二26简易计算器1 设计要求1.1 要求设计一个简易计算器,要求能够进行简单的加减乘除运算,具体要求如下:1. 4X4键盘输入,数码管显示。2. 完成整数的加减乘除,加法和减法要求可以实现连加、连减。3. 可进行错误判断,溢出、除零等错误将显示一个字符 E 。4. 由于键盘只有16个按键,安排如下: +-+ | 7 | 8 | 9 | + | | 4 | 5 | 6 | - | | 1 | 2 | 3 | * | | 0 | . | = | / | +-+2 硬件设计部分2.1主控芯片 STC89C52 STC89C52是一个低功耗,高性能CMOS 8位单片机,片内含4k BytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。STC89C52具有如下特点:40个引脚(引脚图如图1所示),4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,STC89C52RC设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 图 1 STC89C51VCC(40):5V;GND(20):接地;P0口(3932):P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流。P1口(18):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流。P2口(2128):P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流;P3口(1017):P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流。P3口也可作为AT89C51的特殊功能口。RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间。ALE/PROG(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过图 21个ALE脉冲。PSEN(29):外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现。EA/VPP(31):当EA保持低电平时,外部程序存储器地址为(0000HFFFFH)不管是否有内部程序存储器。FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入; XTAL2(18):来自反向振荡器的输出。2.2 8255芯片利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255 PA和PB口做输出,实现在数码管上从0到F循环显示的效果。图 3 8255和STC89C522.3 键盘键盘输入采用4*4的矩阵键盘。4*4键盘分别与P3.0P3.7相连。P3.0P3.3作为输入口(回送线),P3.4P3.7作为输出口(扫描线)。16个按键分别用于控制数字“09”以及数学运算符号“+、-、*、/”。 键盘模块电路如下图所示:图 42.4 LED数码显示管LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示管,排列形状如图5所示:图 5与8255的PA,PB,PC口的连接如下图所示:图 6 LED显示接口3 软件设计部分3.1 LED显示程序设计为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字09的共阳极字形代码如下表:表格 13.2 读键输入程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如下:图 7 读键流程图3.3 数值送显示缓冲程序设计简易计算器所显示的数值最大位两位。要显示数值,先判断数值正负,如果是负值,则符号位显示“-”,然后将数值除以10,余数送显最最低位,判断商是否为0,若为0则返回,若不为0,则将商除以10,将余数送显高位。程序框图如下:图 8 数值送显示流程图3.4 运算主程序设计 首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键(“+”“-”“*”“/”“=” ),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。运算主程序框图如下所示:图 9 运算流程图4 系统测试4.1 软件调试步骤(1)打开软件后,在project菜单中选择New Project命令,打开一个新项目,保存此项目,输入工程文件名后,并保存工程文件的目录。(2)为项目文件选择一个目标器件,即选择8051的类型,在Data base列表框中选择“ATML 89C52”,确定。(3)上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。(4)把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。(5)开始编辑,对项目文件进行编辑,若没有错误后进行硬件调试。4.2 程序调试步骤 程序调试应一个模块一个模块地进行,首先单独以调试各功能程序,检查程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐渐将各子程序连接起来进行总调试。故调试步骤如下:4.3 矩阵4*4键盘的调试键盘程序是整个程序的基础,我们必须保证其正确。调试方法:先把程序下载到单片机,让数码管显示,在有键按下时显示的是否为设定的值。4.4 数码管程序调试 正确的显示数值是整个储蓄的关键。调试方法:先把程序下载到单片机,让数码管显示数值。4.5 测试结果 实例测试:将写入程序的单片机插入实验板插座内,程序正确的有09数值的显示和正常的四则运算以及判断错误、溢出、除0。5 总结与思考电子设计正在当今社会发挥越来越重要的作用,其采用的软硬件结合技术也逐渐成熟,该模拟系统正是采用软硬相结合的方法实现的。STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程FLASH存储器,可以为众多嵌入式控制应用系统提供灵活、超有效的解决方案。 在键盘设计方面,主要是软件的设计,通过程序编码来完成硬件方面所无法工作的部分,例如关于在扫描键盘时,需要逐行拉低并进行判断、编码。判断时,需要不断的屏蔽字节,来获取所需要的数据,而这一点硬件是无法做到的。此次课程设计是做简易计算器,这个需要对51芯片有足够的理解,能够充分认识每个引脚的详细功能,对于汇编语言也必须掌握的比较好。正是由于此次设计让我们明白了单片机在实践中的运用。参考文献1 朱定华,戴汝平.单片微机原理与应用. 北京:清华大学出版社,20032 康华光主编.电子技术基础:模拟部分(第五版). 北京:高等教育出版社,20053 康华光主编.电子技术基础:数字部分(第五版). 北京:高等教育出版社,20054 柳淳主编. 电子制作技能与技巧. 北京:中国电力出版社,20085 马全喜主编,李晓慧、何怀明副主编. 电子元器件与电子实习. 北京:机械工业出版社,20076 彭介华主编. 电子技术课程设计指导. 北京:高等教育出版社,19977 陈涛 编著. 单片机应用及C51程序设计. 北京:机械工业出版社,20088 张义和 陈敌北 编著,刘丹等改编.例说8051.北京:人民邮电出版社,20069 戴佳,戴卫恒,刘博文编著.51单片机C语言应用程序设计实例精讲(第二版).北京:电子工业出版社,200810 张鑫主编,华臻,陈书谦副主编.单片机原理及应用.北京:电子工业出版社,2005致谢 这次课程设计通过我们小组的努力终于顺利完成了,在设计中遇到了很多问题,最后在指导老师的辛勤指导下,终于迎刃而解,让我们所学到的理论与实践相结合,在实践中领悟理论,让我们的综合能力得到了一定的提升。让我们充分的了解到单片机的奥妙以及单片机在实践生活中的广泛应用。至此,感谢各位领导和指导老师!附录一PAPORT EQU 0D1FFH ; 端控制口 A口 PBPORT EQU 0D2FFH ; 位控制口和键盘列线输出口 B口 PCPORT EQU 0D5FFH ; 键盘行码读入C口BIAOZHI1 EQU 63HBIAOZHI2 EQU 62HBIAOZHI3 EQU 61HDATA111 EQU 66HDATA222 EQU 67HDATA13 EQU 65HDATA12 EQU 68HDATA22 EQU 69HDATA23 EQU 64H DATA11 EQU 70H DATA21 EQU 71H DIZHI1 EQU 72H DIZHI2 EQU 73H LEDBUF EQU 58H ;置显示缓冲单元首地址 ORG 0000H LJMP STARTLEDMAP: DB 0A0H,0BBH,62H,2AH;0,1,2,3DB 39H,2CH,24H,0BAH ;4,5,6,7DB 20H,28H,30H,25H ;8,9,A,BDB 0E4H,23H,64H,74H;C,D,E,FDB 0FFH ;全暗DISPLAYLED: / MOV 60H,#39H/ MOV 61H,#2CH MOV R0,#LEDBUF MOV R1,#3 ;共两个八段管 MOV R2,#0F7H ; EFH=1111 0111B从边开始显示LOOP: MOV DPTR,#PAPORT MOV A,R2 MOVX DPTR,A ;显示一位八段管 MOV A,R0 MOV DPTR,#PBPORT ;段控口地址 MOVX DPTR,A ;输出到段控口 CALL DELAY1MS MOV A,R2 ;显示下一位 RL A MOV R2,A INC R0 DJNZ R1,LOOP RETKEY1:MOV DPTR,#0D5FFH ;是否有键按下MOV A,#0F0HMOVX DPTR,AACALL DELAY1MSMOVX A,DPTRANL A,#0FH ;屏蔽高位RETLKEY1:ACALL DELAY10MS;判断是否为干扰信号ACALL DELAY10MSACALL KEY1JNZ LKEY2 ;非干扰则跳转至扫描行线ACALL DELAY10MSAJMP MLOOPLKEY2:MOV R2,#10H ;扫描列线MOV R1,#00HLKEY4:MOV DPTR,#0D5FFHMOV A,R2MOVX DPTR,AACALL DELAY1MSMOVX A,DPTR;扫描行线LZERO:JNB ACC.0,LONE ;第四行MOV A,#0CHAJMP LKEYPLONE:JNB ACC.1,LTWO ;第三行MOV A,#08HAJMP LKEYPLTWO:JNB ACC.2,LTHR;第二行MOV A,#04HAJMP LKEYPLTHR:JNB ACC.3,NEXT ;第一行MOV A,#00HLKEYP:ADD A,R1;计算键码值PUSH ACCLKEY3:ACALL DELAY10MS ;判断按键是否一直持续ACALL KEY1JNZ LKEY3POP ACCMOV R3,A;键码存在R3中RET;按键子程序返回NEXT:INC R1;列线加1MOV A,R2JB ACC.7,KND;扫描完最后一根列线则返回RL AMOV R2,AAJMP LKEY4KND:AJMP MLOOPDELAY10MS:;延迟程序MOV R7,#40AJMP DLY1DELAY1MS:MOV R7,#4DLY1:MOV R6,#123DLY2:DJNZ R6,DLY2NOPDJNZ R7,DLY1RETSTART: MOV SP,#40H MOV LEDBUF+0,#03FH MOV LEDBUF+1,#03FH MOV LEDBUF+2,#03FH MOV DPTR,#0D7FFH ;PCOM初始化 MOV A,#81H MOVX DPTR,A MOV DPTR,#0D1FFH ;初始化PAMOV A,#0FFHMOVX DPTR,AMOV DPTR,#0D2FFH ;初始化PBMOV A,#0FFHMOVX DPTR,AMOV DPTR,#0D5FFH ;初始化PCMOV A,#0FFHMOVX DPTR,A/*ALOOP: MOV DPTR,#PAPORT MOV A,#0EFH MOVX DPTR,A ;显示一位八段管 MOV A,#30H MOV DPTR,#PBPORT ;段控口地址 MOVX DPTR,A ;输出到段控LJMP ALOOP*/MLOOP: LCALL DISPLAYLED ; 显示 LCALL KEY1 ; 有键入? JZ MLOOP ; 无键入,继续显示 ACALL DELAY10MS LCALL LKEY1 ;读入键码JISUAN: MOV R3,A CJNE R3,#0FH,QU ;判断是否为清零键? MOV R3,#00H ;清零 MOV R4,#00H MOV R5,#00H MOV BIAOZHI1,#00H MOV BIAOZHI2,#00H MOV BIAOZHI3,#00H MOV DATA21,#00H MOV DATA23,#00H MOV DATA11,#00H MOV DATA12,#00H MOV DIZHI1,#00H MOV DIZHI2,#00H MOV DATA13,#00H MOV DATA22,#00H MOV DATA111,#00H MOV DATA222,#00H MOV LEDBUF+0,#03FH MOV LEDBUF+1,#03FH MOV LEDBUF+2,#03FH LJMP MLOOPQU: CLR C CJNE R3,#0AH,FOLLOW ; 判断是数字键还是功能键?FOLLOW:JC SHUZI ;R310,说明是数字键 LJMP GNSHUZI: MOV A,R4 ;判断是否有运算符输入, JNZ SHUZI1 ;有就将数值存在DATA2 MOV A,BIAOZHI1 CJNE A,#00H , DA11 INC BIAOZHI1 MOV A,R3 MOV DATA11,A LJMP LJ11DA11: MOV A,BIAOZHI1 CJNE A,#01H ,DA12 INC BIAOZHI1 MOV A, R3 MOV DATA12,A LJMP LJ12DA12: MOV A,BIAOZHI1 CJNE A,#02H ,D111 INC BIAOZHI1 MOV A,R3 MOV DATA13,A LJMP LJ13LJ11: MOV DATA111 ,A LJMP D111LJ12: MOV A,DATA11 MOV B,#10 MUL AB ADD A,DATA12 MOV DATA111 ,A LJMP D111LJ13: MOV A,DATA11 MOV B,#100 MUL AB MOV DATA111 ,A MOV A,DATA12 MOV B,#10 MUL AB ADD A,DATA111 ADD A,DATA13 MOV DATA111,AD111: MOV A ,DATA111 LJMP XS ;显示第一次输入的数值SHUZI1: MOV A,BIAOZHI2 CJNE A,#00H , DA21 INC BIAOZHI2 MOV A,R3 MOV DATA21,A LJMP LJ21DA21: MOV A,BIAOZHI2 CJNE A,#01H ,DA22 INC BIAOZHI2 MOV A, R3 MOV DATA22,A LJMP LJ22DA22: MOV A,BIAOZHI2 CJNE A,#02H ,D222 INC BIAOZHI2 MOV A,R3 MOV DATA23,A LJMP LJ23LJ21: MOV DATA222 ,A LJMP D222LJ22: MOV A,DATA21 MOV B,#10 MUL AB ADD A,DATA22 MOV DATA222 ,A LJMP D222LJ23: MOV A,DATA21 MOV B,#100 MUL AB MOV DATA222,A MOV A,DATA22 MOV B,#10 MUL AB ADD A,DATA222 ADD A,DATA23 MOV DATA222,AD222: MOV A,DATA222 LJMP XS ;显示第二次输入的数值GN: MOV R4,#01H ;将01H给R4,说明已有运算符输入 CJNE R3,#0EH,JA ;判断键值是否为=? MOV R4, #00h ;将R4清零 MOV A,DIZHI1 ;执行= MOV DPH,A MOV A,DIZHI2 MOV DPL,A MOV A,#00H JMP A+DPTR ;转到本次输入的算法程序JA: CJNE R3, #0AH, JN ;若键值为+则将+的程序首地址 MOV DPTR,#JIA ;存在DIZHI1和DIZHI2中 MOV A,DPH MOV DIZHI1, A MOV A,DPL MOV DIZHI2, A MOV LEDBUF+0,#03FH MOV LEDBUF+1,#03FH MOV LEDBUF+2,#03FH LJMP MLOOPJN: CJNE R3, #0BH, CE ;若键值为-则将-的程序首地址存 MOV DPTR, #JIAN ;DIZHI1和DIZHI2中 MOV A, DPH MOV DIZHI1, A MOV A,DPL MOV DIZHI2, A MOV LEDBUF+0,#03FH MOV LEDBUF+1,#03FH MOV LEDBUF+2,#03FH LJMP MLOOPCE: CJNE R3,#0CH, CU ;若键值为*则将*的程序首地址存在 MOV DPTR,#CHENG ;址存在DIZHI1和DIZHI2中 MOV A,DPH MOV DIZHI1, A MOV A, DPL MOV DIZHI2, A MOV LEDBUF+0,#03FH MOV LEDBUF+1,#03FH MOV LEDBUF+2,#03FH LJMP MLOOPCu: CJNE R3, #0DH, ZHUAN ;若键值为/则将/的程序首地址存在 MOV DPTR ,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 明星考试题及答案
- 风雨考试题及答案
- 咖啡考试题及答案
- 中级财务会计(山东工商学院)知到智慧树答案
- 建筑起重机械防御台风培训考试试题(附答案)
- 国家基层高血压、糖尿病防治管理指南培训考核试题及答案
- 2025版新能源汽车租赁及代购一体化服务合同
- 2025年工业自动化设备购销合同样本
- 2025年全新建材代购代理合同
- 2025版市政道路施工合同gf
- 2025年建筑工程-安全员C证-安全员(C证·上海)历年参考题库典型考点含答案解析
- 光伏项目施工组织设计方案
- 2025政府采购评审专家入库题库与答案
- 2025至2030医学混合成像系统行业产业运行态势及投资规划深度研究报告
- 2025年内蒙古交通集团考试笔试试题(含答案)
- 低压安全隐患排查
- 学堂在线 高技术与现代局部战争 章节测试答案
- 水费收缴使用管理办法
- 《研学旅行指导师实务》课件-第1章 研学旅行指导师职业基础
- 广东省汕头市金平区2023-2024学年七年级下学期期末数学试题(无答案)
- PWM控制技术的最新科技成果-介绍ISL6752
评论
0/150
提交评论