基于PIC的简易计算器课程设计报告_第1页
基于PIC的简易计算器课程设计报告_第2页
基于PIC的简易计算器课程设计报告_第3页
基于PIC的简易计算器课程设计报告_第4页
基于PIC的简易计算器课程设计报告_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:基于PIC单片机的简易计算器 院 系: 机电工程学院 班 级: 2012级电气工程及其自动化专业 姓 名: 学 号: 指导教师: 设计时间: 2014年12月8日 出勤实物报告总分目录前言1第一章 系统整体设计方案21.1 1.1 系统功能设计 1.1.1 系统软件功能模块2 1.1.2系统硬件模块2第二章 硬件设计部分22.1 系统结构图3 2.2 电路图3 2.3 单片机电路部分4 2.4 电源和烧写电路部分4 2.5 数码管显示电路部分4 2.6矩阵按键电路4第三章 各部分程序设计53.1 主程序设计5 3.2 数码管显示部分6

2、 3.3 矩阵按键部分73.3.1键盘扫描部分73.3.2 各个键盘子程序流程图8第四章 成果展示11结论12参考文献13附件14单片机课程设计题目(五号楷体居中书写)前言从古至今,计算便是人类的一个无法逃避的需求,而计算工具便是人类进行计算的一大助力。中国所采用的最早的计算工具是筹策,也叫做算筹。这种算筹多用竹子制成,放在布袋里便可随身携带。至于由筹算发展而来的珠算盘,至明代已于现代珠算盘基本相同。在西方,计算工具则于17初世纪开始有了较大的发展。如英国数学家纳皮尔发明的“纳皮尔算筹”和英国牧师奥却德发明了圆柱型对数计算尺。圆柱型对数计算尺已经可以计算三角函数、指数函数和对数函数。这些这些计

3、算工具的发明运用为现代计算器发展奠定了良好的基础。十九世纪末、二十世纪初电子技术异军突起。20世纪50年代末,随着电子技术在二十世纪的迅猛发展,第一台电子计算器终于出世。从第一台电子计算器发展至今,电子计算器技术已经十分成熟。所能够进行的运算种类变得异常丰富,计算量也是十分庞大。甚至类型已经开始趋于细化,出现了各种专业功能的计算器。如个人所得税计算器, 房贷计算器, 油耗计算器等。本设计仅是一十分简易的电子计算器。对于设计者所需掌握的相应技术也较为简单。于硬件方面,只需设计者能够熟识基本的电子器件并能够读懂电路图成功焊接好硬件即可。软件方面,则要求设计者能够熟识PIC的35条汇编指令并能够较为

4、熟练的运用MPLAB软件进行编程即可。本设计的难点并不在于各个子程序的设计编写而在于如何对子程序进行合理的编排以便在使用者按下按键之后所设计的简易电子计算器能够正确的执行设计者所设定的功能,进行简单的加减乘除运算。本设计的简易电子计算器功能简单,所能进行的运算量也非常小。所以它的功用并不在于实际运用而在于帮助设计者了解PIC单片机以及简单的电子技术,为更加深入的学习单片机和电子技术奠定一定的基础。若是本设计还能对于初学者学习PIC单片机起到微薄的助力,那便是对设计者最大的鼓励了。第1章 系统总体方案设计1.1 系统功能设计 1.1.1 系统软件功能模块本设计是一个无符号简单整数计算器。他能够实

5、现8位二进制以内的无符号整数的加减乘除。并具有清零功能。1.1.2系统硬件模块输入硬件:4x4矩阵键盘,对十六个键盘分别定义0至9以及加减乘除和清零功能。显示硬件:LCD数码管。能够正确显示出被计算数和计算结果。其他各类主要硬件:名称数量16F8871晶体整荡器1保险管1发光二极管1电解电容1电容310K电阻91K电阻5USB1第2章 硬件设计部分本章主要是对简易计算器硬件电路的简单介绍。本简易计算器的电路主要由电源电路、烧写电路、数码管显示电路以及矩阵按键电路组成(由于指示灯部分硬件虽焊接当本成本中并未使用故不做介绍)。下面将分述这几大模块电路的具体功能及原理。2.1系统结构图如图1所示:4

6、个LCD显示管PIC16F887主控芯片 4×4矩阵键盘 图12.2 电路图电源和烧写部分如图2所示:4*4矩阵键盘 数码管显示部分单片机部分 图22.3 单片机电路部分本系统选用的控制芯片是PIC16F887单片机。PIC16F887单片机是一款低功耗、高性能增强型闪存式8位单片机,拥有高性能 RISC CPU,优化的C语言编译器架构和汇编精简指令集,程序存储器线性寻址可达8 KB。与其他8位单片机比较,PIC16F887单片具有更快的处理速度,更高的性价比,片上资源更加丰富,使得开发更加高效快捷。 单片机部分具体电路图如上图2中所示,除16F887芯片之外主要还有复位以及时钟电路

7、(晶振为4MZ)。2.4 电源和烧写电路部分对于电源,现今USB供电十分方便,而PIC16F887具有低功耗特性,因此本设计采用USB供电方式。烧写则使用PIC系列单片机的在线调试器MAPLAB ICD2在线烧写程序的方式。此部分具体电路图如上图2中所示。2.5 数码管显示电路部分由4位数码管组成。4位数码管模块共12个引脚,其中1、2、3、4、5、7、10、11分别对应数码管的8个段选,6、8、9、12分别对应4位数码管的位选。(电路中外加了4个PNP型三极管,以让单片机通过控制三极管的开关间接的控制数码管显示电路。) 具体电路图如上图2中所示。2.6 矩阵按键电路采用4x4矩阵按键电路,共

8、16个按键。此部分具体电路图如上图2中所示。第3章 各部分程序设计开始3.1 主程序设计初始化键盘扫描按键是否按下 否 是调用相应按键子程序调用显示子程序结束 图33.2 数码管显示部分本设计用了4位数码管,用来显示用户输入的操作数和最后结果。其中PORTB的1、2、3、4引脚分别控制4位数码管的位选,PORTC的8个引脚控制数码管的段选。显示时先将输入的数值或最后结果存放到变量中,再把所存入的值各位分开调用查表子程序后输入3个不同的数码管中进行显示。流程图如下图4所示: 图43.3矩阵按键部分 3.3.1键盘扫描部分判断键盘上有无键按下。将列线(Y0-Y3)全部输出为0,此时读行线(X0-X

9、3)的状态,如果行线全为1,则表示没有任何键按下;如果行线不全为0,则表示有键按下。若有键按下,则需扫描按键的位置。先令列线Y0为低电平0,其余三根列线均为高电平1,此时读取行线的状态。如果行线均为高电平,则Y0这一列上没有按键按下,如果行线不全为高电平,则其中为低电平的行线与Y0相交的键被按下。如果列Y0上没有键被按下,则可以按照同样的方法依次检测列Y1、Y2、Y3有没有键按下。这样逐行扫描可以找到按键按下的位置。流程图如下图5所示: 3.3.2各个键盘子程序流程图 各个按键内程序流程图如上图69图所示。 图6 图7 图9 图8加减法程序过于简单因此流程图省略,下图1011图为乘法以及除法子

10、程序。对于乘法本设计采用左移思想,对于除法则是采用了累减的方法。 图 11 图10第四章 成果展示在做出硬件实物并验证无误之后。在MPLAB编译器用汇编指令编程调试之后。本设计的简易计算器终于成功开发出来。实现了预期目标。本简易计算器在每次计算完成之后都必须清零才可重新运算,并且由于运算程序的限制,只有结果为255以内的加减乘除本程序才能正确计算出结果,结果超出255的运算本简易计算器并不能正确计算出结果。结论本设计从整体来说难度并不大。对于PIC汇编并不算十分熟知的人来说难度也是大多集中于细节部分。本设计的总体设计思路并无多大多大难度。由于设计者对于PIC汇编亦不过是一初学者,如何把总体设计

11、思路细化并正确编写出程序才是最为困难之事。当初学者落入细处之后往往便不能考虑全面,所写程序也是漏洞百出。面对于此,唯有一步步的调试所编程序找出错误并加以改正而已。通过此,设计者才能不断的增加自身编程能力,而非纸上谈兵。由于设计者水平以及所能拥有的时间有限,所能设计出的成品便显得十分简单,不但仅仅只能对结果为255以内的数据进行正确计算,每次重新计算亦都需清零。如需改进运算量则加减乘除子程序都将改变,甚至显示子程序也必须做出相应调整。对于时间有限的设计者来说,亦是有心无力!参考文献1李荣正.PIC单片机原理及应用M.北京航空航天大学出版社.2006:239-2562王幸之.AT89系列单片机原理

12、与接口技术M.北京航空航天大学出版社.2004:189-196.3田丰国.基于PIC16F877A单片机软件环分的步进电机控制系统J.电气技术2009:58.4张明峰.PIC单片机入门与实战M.北京航空航天大学出版史.2004:187-201.5李学海.PIC单片机实用教程M.北京航空航天大学出版社.2002:56-79.12附件*; *; Filename: xxx.asm *; Date: *; File Version: *; *; Author: *; Company: *; *; *;*; *; Files required: *; *; *; *;*; *; Notes: *; *

13、; *; *; *;*list p=16f887 ; list directive to define processor#include <p16f887.inc> ; processor specific variable definitions_CONFIG _CONFIG1, _LVP_OFF & _IESO_OFF &_BOR_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ;* VARIABLE DEFINITIONSw_temp EQU 0x71 ; variable used for context

14、saving status_temp EQU 0x72 ; variable used for context savingNUM EQU 0X36GEEQU 0X31SHANGEQU 0X32SH1EQU 0X33BAIEQU 0X34YUSHUEQU 0X35COUNTEQU 0X40PANEQU 0X41SHUEQU0X42R1EQU0X43COUNDEQU0X44ZONGEQU0X45ZONG1EQU0X46ZONG2EQU0X47;*ORG 0x000 ; processor reset vectorclrf PCLATH ; ensure page bits are cleared

15、 goto MAIN ; go to beginning of programORG 0x004 ; interrupt vector locationmovwf w_temp ; save off current W register contentsmovfSTATUS,w ; move status register into W registermovwfstatus_temp ; save off contents of STATUS register; isr code can go here or be located as a call subroutine elsewhere

16、movf status_temp,w ; retrieve copy of STATUS registermovwfSTATUS ; restore pre-isr STATUS register contentsswapf w_temp,fswapf w_temp,w ; restore pre-isr W register contentsretfie ; return from interruptMAIN BSFSTATUS,RP1BSFSTATUS,RP0CLRFANSELCLRFANSELHBCFSTATUS,RP1BCFSTATUS,RP0BSFSTATUS,RP0CLRFTRIS

17、BCLRFTRISDMOVLW0F0HMOVWFTRISCBCFSTATUS,RP0MOVLW0xFFMOVWFPORTDMOVWFPORTBCLRFNUMCLRFPANCLRFZONGCLRFZONG1CLRFZONG2STCALL JIANPANCALLDELAY10MSCALLLOOPGOTOSTJIANPANMOVLW0F0HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F0HBTFSCSTATUS,ZRETURNCALLDELAY10MSCALLDELAY10MSMOVLW0F0HMOVWFPORTCMOVLW0F0HANDWFPORTC,WSUBLW0F

18、0HBTFSCSTATUS,ZRETURNMOVLW0FEHMOVWFPORTCBTFSSPORTC,4GOTOJIAN0BTFSSPORTC,5GOTOJIAN1BTFSSPORTC,6GOTOJIAN2BTFSSPORTC,7GOTOJIAN3MOVLW0FDHMOVWFPORTCBTFSSPORTC,4GOTOJIAN4BTFSSPORTC,5GOTOJIAN5BTFSSPORTC,6GOTOJIAN6BTFSSPORTC,7GOTOJIAN7MOVLW0FBHMOVWFPORTCBTFSSPORTC,4GOTOJIAN8BTFSSPORTC,5GOTOJIAN9BTFSSPORTC,6

19、GOTOJIANABTFSSPORTC,7GOTOJIANBMOVLW0F7HMOVWFPORTCBTFSSPORTC,4GOTOJIANCBTFSSPORTC,5GOTOJIANDBTFSSPORTC,6GOTOJIANEBTFSSPORTC,7GOTOJIANFRETURNJIAN0CALLSFANGCALLCHENG10MOVLW.0ADDWFZONG,WMOVWFNUMRETURNJIAN1CALLSFANGCALLCHENG10MOVLW.1ADDWFZONG,WMOVWFNUMRETURNJIAN2 CALLSFANGCALLCHENG10MOVLW.2ADDWFZONG,WMOV

20、WFNUMRETURNJIAN3CALLSFANGCALLCHENG10MOVLW.3ADDWFZONG,WMOVWFNUMRETURNJIAN4CALLSFANGCALLCHENG10MOVLW.4ADDWFZONG,WMOVWFNUMRETURNJIAN5CALLSFANGCALLCHENG10MOVLW.5ADDWFZONG,WMOVWFNUMRETURNJIAN6CALLSFANGCALLCHENG10MOVLW.6ADDWFZONG,WMOVWFNUMRETURNJIAN7CALLSFANGCALLCHENG10MOVLW.7ADDWFZONG,WMOVWFNUMRETURNJIAN

21、8CALLSFANGCALLCHENG10MOVLW.8ADDWFZONG,WMOVWFNUMRETURNJIAN9CALLSFANGCALLCHENG10MOVLW.9ADDWFZONG,WMOVWFNUMRETURNJIANACALLSFANGBSFPAN,0MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANBCALLSFANGBSFPAN,1MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANCCALLSFANGBSFPAN,2MOVFNUM,WMOVWFSHUCLRFNUMRETURNJIANDCALLSFANGBSFPAN,3MOVFNUM,WMOV

22、WFSHUCLRFNUMRETURNJIANECALLSFANGBTFSCPAN,0CALLJIABTFSCPAN,1CALLJIANBTFSCPAN,2CALLCHENGBTFSCPAN,3CALLCHURETURNJIANFCALLSFANGGOTOMAINRETURNLOOPCALLCALCCALLDISPLAYCALLDELAY10MSRETURNCALCMOVFNUM,WCALLDIV10MOVWFGEMOVFSHANG,WCALLDIV10MOVWFSH1MOVFSHANG,WMOVWFBAIRETURNDISPLAYMOVFGE,WCALLCHABIAOMOVWFPORTDBCF

23、PORTB,1CALLDELAY2BSFPORTB,1MOVFSH1,WCALLCHABIAOMOVWFPORTDBCFPORTB,2CALLDELAY2BSFPORTB,2MOVFBAI,WCALLCHABIAOMOVWFPORTDBCFPORTB,3CALLDELAY2BSFPORTB,3RETURNDIV10MOVWFYUSHUCLRFSHANGMOVLW.10DIVLOOPSUBWFYUSHU,FINCFSHANG,FBTFSCSTATUS,CGOTODIVLOOPDECFSHANG,FADDWFYUSHU,WRETURNDELAY2 DECFSZ30H,FGOTODELAY2RETURNCHABIAOADDWFPCL,FRETLW0XC0RETLW0XF9RETLW0XA4RETLW0XB0RETLW0X99RETLW0X92RETLW0X82RETLW0XF8RETLW0X80RETLW0X90DELAY10MSMOVLW0DHMOVWF20HLOOP1MOVWF0FFHMOVWF21HLOOP2DECFSZ21HGOTOLOOP2DECFSZ20HGOTOLOOP1 RETURNSFANGMOVLW00HMOVWFPORTCMOVLW0F0HAND

温馨提示

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

评论

0/150

提交评论