单片机课程设计——计算器设计_第1页
单片机课程设计——计算器设计_第2页
单片机课程设计——计算器设计_第3页
单片机课程设计——计算器设计_第4页
单片机课程设计——计算器设计_第5页
免费预览已结束,剩余35页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、标准实用文案大全目录、设计总绪2.1.1设计思想2.1.2设计说明3.1.3关键词:矩阵键盘,单片机,数码管显示,汇编语言 31.4设计目的3.1.5设计要求4.一、设计万案5.2.1硬件电路设计方案5.2.1.1基本结构5.2.1.2系统框架图5.2.1.3工作流程图6.2.1.4单片机主控制模块 7.2.2系统功能描述9.三、各模块功能介绍 1.03.1键盘输入模块.103.1.1键盘分布图103.1.2工作原理1.13.2运算控制模块.1.13.3显示模块123.4振荡电路模块.13四、仿真电路1.4仿真运行结果 1.4五、调试过程总结 1.7附录:18参考文献:1.8源程序代码1.9一

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

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

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

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

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

7、数码管动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,计算控制模 块。功能模块四:显示模块。2.1.2系统框架图键盘控制运算1图2.1 系统总体框架图2.1.3工作流程图开始初始化键盘列扫描数字键有键按下显示复位键记忆对应键值1r数码管显示运算功能键No是其他键Yes计算最后结果记忆其运算符数码管显示图2.2系统工作流程图2.1.4单片机主控制模块AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM FalshProgrammable and Erasable Read Only Memory )的低电压,高性

8、能 CMOS8 位微处理器,俗称单片机。该器件采用 ATMEL高密度非易失存储器制造技术制 造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能 8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性:与MCS-51兼容;4K字节可编程闪烁存储器;1000写/擦循;数据保留时间:10年; 全静态工作:0HZ-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O 线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电 模式;片内振荡器和时钟电路74LS

9、245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相 三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0 口总线负载达到或超过 P0最大负载能力时,必须接入 74LS245等总线驱动器。当片选端/CE低电平有效时,DIR= “0”信号由B向A传输;(接收)DIR= “ 1 ”信号由A向B传输;(发送)当CE为高电平时,A、B均为 高阻态。由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接 地,P2口与驱动器输入线对应相连。P0 口与74LS245输入端相连,E端接地,保 证数据线畅通。

10、8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时, 74LS245输入(P0.1D1 ),其它时间处于输出(P0.1 D1 )。图274LS245引脚图2.2系统功能描述本程序有LCD动态显示,键盘输入显示功能,程序启动时默认为计算器状态(1 )计算器状态下:按“0”“9”,显示相应数字;按“复位”,恢复初始化模式;按“加减乘除”可实现加减乘除的运算功能三、各模块功能介绍3.1键盘输入模块3.1.1键盘分布图3.1.2工作原理本设计采用P3 口作为矩阵键盘输入口,开始工作后,单片机先对矩阵键盘 的行进行扫描。若无键按下,先使 P3为11110000,然后检测外来输入,若有

11、输入,则可使四位的0其中一位置1,即完成了按行号的输入。列扫描远离同行 扫描相同,不过P3初始为00001111.检测完行号与列号后,产生一个8位二进 制码,即可对键盘值进行输入。3.2运算控制模块图3.2计算器运算控制模块控制模块控制着数字录入,数字录入是进行计算的前提,它是将从矩阵键盘上输入的数值、运算符等录入单片机处理器进行处理,从而得出运算结果。计算模块作为计算器的核心模块共有加、减、乘、除四个部分。其设计原理是先将键盘输入的BCD码数字转换为十进制数字,然后再对其进行运算。由于最后需要进行输出显示,所以我们的最终结果以十进制的形式显示在六位的数码显示管上。3.3显示模块图3.3数码管

12、显示屏本设计采用了六位数码管,可以显示0999999 之间的任意整数,由于LED数码管有6个,若采用静态显示,则最少需要 48根数据线与6根地址线, 这对只有40个引脚的单片机来说是不可能实现的。所以我采用了动态扫描的显 示方法。其原理是不同时刻对不同位上的数码管进行选通, 同时对其进行数码输 出。当扫描频率很高时,将不会看到数码管的闪烁。本设计应用了定时器中断来 实现间时显示。3.4振荡电路模块图3,.4 振荡电路振荡电路如图所示。图中晶振的两端分别接单片机的19和18脚。时钟有内部电路产生,定时器件为石英晶体和电容组成的并联谐振回路。3.5起保护作用模块图3.5限流电阻这一排限流电阻,它们

13、的作用是起保护作用,防止数码管的段位被烧坏四、仿真电路n-FFG P佗勺453a<TECF>阳口甲切PllZlFTH pijtttT巾 F3ST1 口溯 PH.Ti'Hr?TAE昭甬TI科12乜III p F p P 卩C1 二 1ni 订即XI叩一ckyeF4加 Pdlffitl 阿曲垃 FQJf户阳 阳比加 PQSBS PElSfiM FQTfT1721«315r1*55S00H000p 1FlMHFiMMp 1Zj 2TwTT图4.1系统电路仿真图仿真运行结果例如:运行23*2时,一次在键盘上输入数据和功能键,功能键不会再数码管上显示出来,只会显示出输入的数

14、据和运行结果:;CLraiofrUEPDLzmE: 巾刖减 POL血*Oifr 即耐1哙.i轉 33*Erjpuz 了川品 raw.怕劉曲rjrzzflSreHJJWT'* 1raFFFi-E*=HSCUHQE3T&T图4.2输入数据23时II:强I-HMt-啊-叩丄切FD -inw<n回回口 ,EIJE图4.3输入数据2HobKTfi.1匚口an=rF=HiaMM_ -ir:FBJlAIIPOLUffiggrawAivpm 创FQI-SKPDI'17rnia'K- &PI E rzziTTT Fjjmrranx:P-* Wirz«MEr

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

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

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

18、RG00H;程序存放的首地址START:MOVR3,#0;初始化显示为空MOVGONG,#O功能键清零MOV32H,#00H;(32H)=00H,存放输入的数据MOV33H,#00H;(33H)=00HMOV34H,#00H;(34H)=00HMLOOP:CALLDISP;调显示子程序,call通过入口地址跳转有返回,返回地址压入堆栈。WAIT:CALLTESTKEYNEXT1:CJNEA,#1,NEXT2LJMPE1NEXT2:CJNEA,#2,NEXT3LJMPE1NEXT3:CJNEA,#3,NEXT4LJMPE1NEXT4:CJNEA,#4,NEXT5LJMPE1NEXT5:CJNEA

19、,#5,NEXT6LJMPE1NEXT6:CJNEA,#6,NEXT7LJMPE1NEXT7:CJNEA,#7,NEXT8LJMPE1NEXT8:CJNEA,#8,NEXT9LJMPE1NEXT9:CJNEA,#9,NEXT10LJMPE1NEXT10:CJNEA ,#10,NEXT11;判断是否功能键LJMPE2;转功能键处理NEXT11:CJNEA,#11,NEXT12LJMPE2NEXT12:CJNEA ,#12, NEXT13LJMPE2NEXT13:CJNEA,#13,NEXT14LJMPE2NEXT14:CJNEA,#14,NEXT15LJMPE2NEXT15:LJMPE3;判断是

20、否清除键E1:CJNE R3,#1,N1;判断第几次按键,若(R3)不等于(1),则跳转到N1处执行LJMPE11N1:CJNER3,#2,N2LJMPE12N2:CJNER3,#3,N3LJMPE13N3:LJMPE3E11:M OVR4,AMOV34H,AMOV33H,#00HMOV32H,#00HLJMPMLOOPE12:MOVR7,AMOVB,#10MOVA,R4MULABADDA,R7MOVR4,AMOV32H,#00HMOV33H,34HMOV34H,R7;为第一个数字;为第二个数字;为第三个数字;第四个数字转溢出;输入值暂存R4;输入值送显示缓存;等待再次输入;个位数暂存R7;十

21、位数,输入的值乘10,即为十位数;输入值存R4;输入值送显示缓存LJMPMLOOPE13: MOV R7,AMOVB,#10MOVA,R4MULABJBOV,E3;输入溢出ADDA,R7JBCY,E3;输入溢出MOVR4,AMOV32H,33H;输入值送显示缓存MOV33H,34HMOV34H,R7LJMPMLOOPE3:MOVR3,#0;按键次数清零MOVR4,#0;输入值清零MOVYJ,#0;计算结果清零MOVGONG,#O;功能键设为零MOV32H,#00H;显示清空MOV33H,#00HMOV34H,#00HLJMPMLOOPE2:MOV34H,#00HMOV33H,#00HMOV32

22、H,#00HMOVRO,GONG;与上次功能键交换MOVGONG,AMOVA,R0CJNEA,#10,N21;判断功能键LJMPJIA;"+ "N21:CJNEA,#11,N22LJMPJIAN IIIIJN22:CJNEA,#12,N23LJMPCHENGjN23:CJNEA,#13,N24LJMPCHU;"/"N24:CJNEA,#0,N25LJMPFIRST;首次按功能键N25:LJMPDENn_n j 一N4:LJMPE3FIRST:MOVYJ,R4;输入值送结果MOVR3,#0;按键次数清零LJMPDISP1;结果处理加法/JIA: MOVA,

23、YJ;上次结果送累加器ADDA,R4JBCY,N4MOVYJ,AMOVR3,#0LJMPDISP1/减法JIAN:MOVA,YJSUBBA,R4JBCY,N4的值为1,则执行转移MOVYJ,AMOVR3,#0LJMPDISP1/乘法/CHENG: MOVA,YJMOVB,AMOVA,R4MULABJBOV,N4MOVYJ,ALJMPDISP1/除法;上次结果加输入值溢出;存本次结果;按键次数清零;上次结果减输入值;负数溢出,JB位变量条件转移指令,;上次结果乘输入值溢出若直接寻址位CHU:MOV A,R4MOV B,AMOV A,YJDIV ABMOV YJ,AMOV R3,#0LJMPDIS

24、P1/等于/;上次结果除输入值DEN:MOVR3,#0LJMPDISP1DISP1:MOVB,#10MOVA,YJMOVB,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,AMOVA,YJ1JZDISP11MOV32H,ADISP11:LJMPMLOOP;十位送显示缓存;结果是否为二位数;百位数送显示缓存;长跳转指令DISP:MOV R0,#34HDIR1:MOV DPTR,#SEGTAB;基寄存器DPTR存入输入的数据值MOV A,R0;寄存器间接寻址MOVC A,A+DPTR;基寄存器加变址寄存器间接寻址MOV P0,ACJNE R0,#34H,DIR2SETB P2.0DIR2:CJNE R0,#33H,DIR3SETB P2.1CALL D1MSCLR P2.1;P2.1端口清零DEC RO;减1指令SJMP DIR1DIR3:SETB P2.2CALL D1MSCLR P2.2RETDIMS:MOVR7,#02HDMS:MOVR6,#0F0HDJNZR6,$;减1不为0跳转指令DJNZR7,DMSRETSEGTAB: DBOCOH,0F9H,0A4H,0B0H;0 1 2 3定义字节DB99H,92H,82H,0F8H;4 5 6 7DB80H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论