ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:314.49KB ,
资源ID:8394136      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8394136.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计计算器设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计计算器设计.docx

1、单片机课程设计计算器设计 一、设计总绪1.1设计思想 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89c51单片机、LCD显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及汇编语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握应用程序开发环

2、境,常用的LCD显示器的使用方法和一般键盘的使用方法 此设计是基于单片机技术的简易计算器的方案,本次设计所提出的一种基于单片机技术的简易计算器的方案,采用具有数据处理能力的中央处理器CPU,随机存储器ROM,多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统单片机,配以汇编语言编写的执行程序,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。 1.2设计说明本次课程设计讨论了单片机技术的计算器构思,设计方案,工作原理,主要系统包括单片机80C51,排阻RESPACK8,

3、开关,六位数码管显示器等,主要组成部分包括:键盘输入模块,运算模块,控制模块,显示模块。通过键盘输入数值,单片机进行运算后在数码管显示出结果。1.3关键词:矩阵键盘,单片机,数码管显示,汇编语言1.4设计目的 通过本次课程设计,运用单片机微型计算机原理及应用所学到的知识及查询相关资料,完成简易计算器的设计,进一步提高单片机的系统设计和开发能力,达到理论知识与实践更好的结合,提高综合运用所学知识和设计能力的目的。1.5设计要求 要求设计一个单片机应用系统,利用keil和proteus软件完成系统软硬件的设计及模拟调试。实现五位数(可为带小数点)的加减乘除运算,通过按键输入十进制数据。利用六位数码

4、管显示运算结果。并实现复位操作。由于要设计的是简单的计算器,可以进行四则运算,为了得到教好的显示效果,采用LCD显示数据和结果。、另外键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算机键盘来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果,执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出 二、设计方案2.1硬件电路设计方案2.1.1基本结构 计算器一般由运算器、控制器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备

5、组成。键盘是计算器的输入部件,一般采用接触式或传感式。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池。计算器都采用CMOS工艺制作的大规模集成电路。 本次课程设计中我是采用了以MCS51系列的单片机AT89C51单片机为核心构成的简易计算器。该系统通过单片机控制,实现对4*4键盘进行实时扫描的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。整个系统可分为三个主要

6、功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,计算控制模块。功能模块四:显示模块。2.1.2系统框架图 图2.1 系统总体框架图2.1.3工作流程图 No Yes 图2.2 系统工作流程图2.1.4单片机主控制模块 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存

7、储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS-51 兼容 ;4K字节可编程闪烁存储器 ;1000写/擦循;数据保留时间:10年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源 ;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路 74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051

8、单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收)DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1D1),其它时间处于输出(P0.1D1)。 图2 74LS245引脚图 2.2系

9、统功能描述本程序有LCD动态显示,键盘输入显示功能,程序启动时默认为计算器状态。 (1)计算器状态下: 按“0”“9”,显示相应数字; 按“复位”,恢复初始化模式; 按“加减乘除”可实现加减乘除的运算功能 三、各模块功能介绍3.1键盘输入模块 3.1.1键盘分布图 图 3.1 计算器键盘图 3.1.2工作原理 本设计采用P3口作为矩阵键盘输入口,开始工作后,单片机先对矩阵键盘的行进行扫描。若无键按下,先使P3为11110000,然后检测外来输入,若有输入,则可使四位的0其中一位置1,即完成了按行号的输入。列扫描远离同行扫描相同,不过P3初始为00001111.检测完行号与列号后,产生一个8位二

10、进制码,即可对键盘值进行输入。3.2运算控制模块 图3.2 计算器运算控制模块 控制模块控制着数字录入,数字录入是进行计算的前提,它是将从矩阵键盘上输入的数值、运算符等录入单片机处理器进行处理,从而得出运算结果。计算模块作为计算器的核心模块共有加、减、乘、除四个部分。其设计原理是先将键盘输入的BCD码数字转换为十进制数字,然后再对其进行运算。由于最后需要进行输出显示,所以我们的最终结果以十进制的形式显示在六位的数码显示管上。3.3显示模块 图 3.3 数码管显示屏 本设计采用了六位数码管,可以显示0999999之间的任意整数,由于LED数码管有6个,若采用静态显示,则最少需要48根数据线与6根

11、地址线,这对只有40个引脚的单片机来说是不可能实现的。所以我采用了动态扫描的显示方法。其原理是不同时刻对不同位上的数码管进行选通,同时对其进行数码输出。当扫描频率很高时,将不会看到数码管的闪烁。本设计应用了定时器中断来实现间时显示。3.4振荡电路模块 图 3,.4 振荡电路 振荡电路如图所示。图中晶振的两端分别接单片机的19和18脚。时钟有内部电路产生,定时器件为石英晶体和电容组成的并联谐振回路。3.5起保护作用模块 图 3.5 限流电阻 这一排限流电阻,它们的作用是起保护作用,防止数码管的段位被烧坏。 四、仿真电路 图4.1 系统电路仿真图仿真运行结果 例如:运行23*2时,一次在键盘上输入

12、数据和功能键,功能键不会再数码管上显示出来,只会显示出输入的数据和运行结果。 图4.2 输入数据23时 图4.3 输入数据2 图4.4 计算23*2的运行结果五、调试过程总结 开始在做这个单片机课设的时候,感觉无从下手,一点头绪都没有。后来上网查了好多资料,向学长请教。终于功夫不负有心人,做出了这个单片机的课设。调试过程中也遇到了一些问题,先是数码管显示数据不完整,经过仔细检查发现是线路连接的错误;后来又遇到计算时会出现运算错误,经过查找发现原来是编程的问题。在利用keil软件编程的过程中,会出现各种各样的问题,有的是由于粗心而引起的,有的是因为概念模糊而导致的。再用proteus进行仿真时,

13、会出现的问题主要是线路连接问题,可能会不小心把线连错,其他的我觉得只要元器件选择好,各引脚的功能清楚的话一般不会有太大的问题。在这次做课程设计的过程中我深深体会到了要独立完成一个作品的设计是多么不容易。虽然我做的只是最基础的,但是从这个最小的系统中却是利用了单片机的最基础的功能。在这个过程中,我们不仅仅是编程仿真那么简单,还需要有极大的耐心与毅力。设计的过程中会遇到各种各样的问题,我们应该静下心来好好研究,这对于我们以后的工作也是非常重要的。总的来说,这次课程设计,一个礼拜的紧张忙碌终于完成了。感觉自己的收获还是很多的,无论是对专业知识的了解还是对硬件的设计,都是需要我们下很大的功夫去研究的。

14、通过这次课程设计,最大的一点体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是汇编语言,尽管大家都知道汇编编这个程序很困难,但还是互相学习,到处找资料看,问同学,所以我的软件主程序才能编译成功,系统才能调试出结果。很感谢那些热心教导我的同学和指导我的老师。附录:参考文献:【1】姜志海、刘连鑫等,单片机微型计算机原理及应用M。北京:电子工业出版社,2011【2】周润景,张丽娜。基于PROTEUS的电路及单片机系统设计与仿真M。北京:北京航空航天大学出版社,2006源程序代码YJ EQU 50H ;结果存放YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;

15、功能键存放 ORG 00H ;程序存放的首地址START: MOV R3,#0 ;初始化显示为空 MOV GONG,#0 ;功能键清零 MOV 32H,#00H ;(32H)=00H,存放输入的数据 MOV 33H,#00H ;(33H)=00H MOV 34H,#00H ;(34H)=00HMLOOP: CALL DISP ;调显示子程序, call通过入口地址跳转有返回,返回地址压入堆栈。WAIT: CALL TESTKEY NEXT1: CJNE A,#1,NEXT2 LJMP E1NEXT2: CJNE A,#2,NEXT3 LJMP E1NEXT3: CJNE A,#3,NEXT4

16、LJMP E1NEXT4: CJNE A,#4,NEXT5 LJMP E1NEXT5: CJNE A,#5,NEXT6 LJMP E1NEXT6: CJNE A,#6,NEXT7 LJMP E1NEXT7: CJNE A,#7,NEXT8 LJMP E1NEXT8: CJNE A,#8,NEXT9 LJMP E1NEXT9: CJNE A,#9,NEXT10 LJMP E1NEXT10: CJNE A,#10,NEXT11 ;判断是否功能键 LJMP E2 ;转功能键处理NEXT11: CJNE A,#11,NEXT12 LJMP E2NEXT12: CJNE A,#12, NEXT13 LJ

17、MP E2NEXT13: CJNE A,#13,NEXT14 LJMP E2NEXT14: CJNE A,#14,NEXT15 LJMP E2NEXT15: LJMP E3 ;判断是否清除键E1: CJNE R3,#1,N1 ;判断第几次按键,若(R3)不等于(1),则跳转到N1处执行 LJMP E11 ;为第一个数字N1: CJNE R3,#2,N2 LJMP E12 ;为第二个数字N2: CJNE R3,#3,N3 LJMP E13 ;为第三个数字N3: LJMP E3 ;第四个数字转溢出E11: MOV R4,A ;输入值暂存R4 MOV 34H,A ;输入值送显示缓存 MOV 33H,

18、#00H MOV 32H,#00H LJMP MLOOP ;等待再次输入E12: MOV R7,A ;个位数暂存R7 MOV B,#10 MOV A,R4 MUL AB ;十位数,输入的值乘10,即为十位数 ADD A,R7 MOV R4,A ;输入值存R4 MOV 32H,#00H ;输入值送显示缓存 MOV 33H,34H MOV 34H,R7 LJMP MLOOPE13: MOV R7,A MOV B,#10 MOV A,R4 MUL AB JB OV,E3 ;输入溢出 ADD A,R7 JB CY,E3 ;输入溢出 MOV R4,A MOV 32H,33H ;输入值送显示缓存 MOV

19、33H,34H MOV 34H,R7 LJMP MLOOPE3: MOV R3,#0 ;按键次数清零 MOV R4,#0 ;输入值清零 MOV YJ,#0 ;计算结果清零 MOV GONG,#0 ;功能键设为零 MOV 32H,#00H ;显示清空 MOV 33H,#00H MOV 34H,#00H LJMP MLOOPE2: MOV 34H,#00H MOV 33H,#00H MOV 32H,#00H MOV R0,GONG ;与上次功能键交换 MOV GONG,A MOV A,R0 CJNE A,#10,N21 ;判断功能键 LJMP JIA ;N21: CJNE A,#11,N22 LJ

20、MP JIAN ;N22: CJNE A,#12,N23 LJMP CHENG ;*N23: CJNE A,#13,N24 LJMP CHU ;/N24: CJNE A,#0,N25 LJMP FIRST ;首次按功能键N25: LJMP DEN ;=N4: LJMP E3FIRST: MOV YJ,R4 ;输入值送结果 MOV R3,#0 ;按键次数清零 LJMP DISP1 ;结果处理 /加法/JIA: MOV A,YJ ;上次结果送累加器 ADD A,R4 ;上次结果加输入值 JB CY,N4 ;溢出 MOV YJ,A ;存本次结果 MOV R3,#0 ;按键次数清零 LJMP DISP

21、1 /减法/JIAN: MOV A,YJ SUBB A,R4 ;上次结果减输入值 JB CY,N4 ;负数溢出,JB位变量条件转移指令,若直接寻址位的值为1,则执行转移 MOV YJ,A MOV R3,#0 LJMP DISP1 /乘法/CHENG: MOV A,YJ MOV B,A MOV A,R4 MUL AB ;上次结果乘输入值 JB OV,N4 ;溢出 MOV YJ,A LJMP DISP1 /除法/CHU: MOV A,R4 MOV B,A MOV A,YJ DIV AB ;上次结果除输入值 MOV YJ,A MOV R3,#0 LJMP DISP1 /等于/DEN: MOV R3,

22、#0 LJMP DISP1DISP1: MOV B,#10 MOV A,YJ MOV B,#10 MOV A,YJ1 DIV AB MOV YJ1,A MOV A,B MOV 33H,A ;十位送显示缓存 MOV A,YJ1 JZ DISP11 ;结果是否为二位数 MOV 32H,A ;百位数送显示缓存DISP11: LJMP MLOOP ;长跳转指令DISP: MOV R0,#34HDIR1: MOV DPTR,#SEGTAB ;基寄存器DPTR存入输入的数据值 MOV A,R0 ;寄存器间接寻址 MOVC A,A+DPTR ;基寄存器加变址寄存器间接寻址 MOV P0,A CJNE R0,

23、#34H,DIR2 SETB P2.0 DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 ;P2.1端口清零 DEC R0 ;减1指令 SJMP DIR1DIR3: SETB P2.2 CALL D1MS CLR P2.2 RETD1MS: MOV R7,#02HDMS: MOV R6,#0F0H DJNZ R6,$ ;减1不为0跳转指令 DJNZ R7,DMS RETSEGTAB: DB 0C0H, 0F9H, 0A4H, 0B0H ;0 1 2 3定义字节 DB 99H, 92H, 82H, 0F8H ;4 5 6 7 DB 80H,

24、 90H, 88H, 83H ;8 9 A B DB 0C6H, 0A1H, 86H, 8EH ;C D E FTESTKEY:ACALL DISP MOV P1,#0FH ;读入键状态 MOV A,P1 CPL A ;将累加器A的内容逐位求反,不影响标志 ANL A,#0FH ;高四位不用,与操作,屏蔽高四位 RETKEYTABLE: DB 0D7H,0EBH,0DBH,0BBH ;键码定义 DB 0EDH,0DDH,0BDH,0EEH DB 0DEH,0BEH,077H,07BH DB 07DH,07EH,0B7H,0E7H ;DB 07EH,07DH,07BH,0E7H ;键码定义 ;D

25、B 0D7H,0B7H,0DEH,0BDH ;DB 0EBH,0DBH,0BBH,0DDH ;DB 077H,0EEH,0BEH,0EDHGETKEY: MOV R6,#10 ;读键子程序 ACALL DELAY MOV P1,#0FH MOV A,P1 CJNE A,#0FH,K12 LJMP MLOOPK12: MOV B,A MOV P1,#0EFH MOV A,P1 CJNE A,#0EFH,K13 MOV P1,#0DFH MOV A,P1 CJNE A,#0DFH,K13 MOV P1,#0BFH MOV A,P1 CJNE A,#0BFH,K13 MOV P1,#07FH MOV

26、 A,P1 CJNE A,#07FH,K13 LJMP MLOOPK13: ANL A,#0F0H ORL A,B ;或操作,用于数据拼装 MOV B,A MOV R1,#16 MOV R2,#0 MOV DPTR,#KEYTABLEK14: MOV A,R2 MOVC A,A+DPTR CJNE A,B,K16 MOV P1,#0FHK15: MOV A,P1 CJNE A,#0FH,K15 MOV R6,#10 ACALL DELAY MOV A,R2 RETK16: INC R2 DJNZ R1,K14 AJMP MLOOPDELAY: MOV R7,#10TS1: MOV R6,#0FFH TS2: NOP ; 空操作指令 NOP DJNZ R6,TS2 DJNZ R7,TS1 RET END

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1