单片机课程设计报告-简易计算器源程序

上传人:第*** 文档编号:56896748 上传时间:2018-10-16 格式:DOC 页数:16 大小:1.05MB
返回 下载 相关 举报
单片机课程设计报告-简易计算器源程序_第1页
第1页 / 共16页
单片机课程设计报告-简易计算器源程序_第2页
第2页 / 共16页
单片机课程设计报告-简易计算器源程序_第3页
第3页 / 共16页
单片机课程设计报告-简易计算器源程序_第4页
第4页 / 共16页
单片机课程设计报告-简易计算器源程序_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《单片机课程设计报告-简易计算器源程序》由会员分享,可在线阅读,更多相关《单片机课程设计报告-简易计算器源程序(16页珍藏版)》请在金锄头文库上搜索。

1、宁德师范学院单片机课程设计报告题 目 班 级 姓 名 学 号 指导老师 设计时间 11 方案设计与论证方案设计与论证本设计可以采用两种方案,一种是以 FPGA 为核心处理芯片,配备相应的外设;另外一种是以 AT89S51 处理器,配备相应的外设。方案一:采用 FPGA 控制 FPGA 是一种高密度的可编程逻辑器件,自从 Xilinx 公司 1985 年推出第一片 FPGA 以来,FPGA 的集成 密度和性能提高很快,其集成密度最高达 500 万门/片以上,系统性能可达 200MHz。由于 FPGA 器件集 成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高

2、密度的 可编程逻辑器件领域中独占鳌头。 但是而基于 SRAM 编程的 FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法 复杂 ,保密性差,而其对于一个简单的计算器而言,实用 FPGA 有点大材小用,成本太高。方案二:采用 AT89S51 单片机是单片微型机的简称,故又称为微控制器 MCU(Micro Control Unit)。通常由单块集成电路芯 片组成,内部包含有计算机的基本功能部件:中央处理器 CPU,存储器和 I/O 接口电路等。因此,单 片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机广泛用于智能产品, 智能仪表,测控技术,智能接口等

3、,具有操作简单,实用方便,价格便宜等优点,而其中 AT89S52 以 MCS-51 为内核,是单片机中最典型的代表,应用于各种控制领域。通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以 AT89S52 单片 机作为中央处理单元进行计算器的设计,这样设计能够实现对四位加减乘除和除法四位小点数的运算。本设计需要使用 LCD 液晶显示屏和编码键盘。故选择静态显示和用编码键盘。使用 LCD 液晶显 示屏显示运算结果。 2 硬件设计硬件设计 2.1 硬件资源分配硬件资源分配主要用到的硬件:AT89S52 LCD 液晶显示屏 编码键盘 硬件分配:1、P1、P3 口:做为输出口,控制

4、LCD 液晶显示屏显示数据的结果。2、P2 口:做为输入口,与键盘连接,实现数据的输入。 3、LCD 液晶显示屏显示输出。单片机最小系统键盘电路显示电路电源电路图 2-1 系统结构框图2前面叙述了该系统的设计说明,系统采用了比较简单的设计方案,所以该系统的硬件设计的总外 围电路不会产生过多的干扰。在下面的阐述中,对系统的外围电路分别予以介绍。键盘部分采用编码 键盘,显示部分采用 LCD 液晶显示屏完全能够很好的实现显示方面的要求。 2.2 系统电路设计系统电路设计 2.2.1 键盘电路键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20 个以上)和专用驱动芯片的 组合,当按下某个按键

5、时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件 干预。通用计算机使用的标准键盘就是编码键盘。在智能仪器中,使用并行接口芯片 8279 或串行接口 芯片 HD7279 均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软 件均可在芯片资料中得到。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。 非编码键盘成本低廉。 从成本角度出发,本设计选用的是非编码键盘。如图 2-2-1图 2-2-1 扫描键盘电路 2.2.2 显示电路当系统需要显示少量数据时,采用 LCD 液晶显示屏进行显示是一种经济实用的方法。P0 口作为 液晶显示的数据端口

6、,P3.5-P3.7 口作为其控制端口,控制 LCD 液晶显示屏显示输出数据。 最终电路如图 2-2-2 所示:3图 2-2-2 LCD 液晶显示屏显示 3 软件设计软件设计 3.1 主程序主程序 主程序主要是用来对 LCD 液晶显示屏进行初始化的。对输入按键判断,然后进行加减乘除,最后 计算出结果,显示出计算结果。流程图如图 3-1 所示:液晶初始化开始检测 LCD 是否在忙扫描键盘YN加减乘除运算 子程序液晶显示结束图 3-1 主程序流程图3.2 子程序子程序 3.2.1 键盘扫描子程序键盘扫描子程序,首先读出 P1 的低四位,然后读出 P1 口的高四位。然后键值并显示缓存。然后 将键如的

7、值转换为 ASCII 码然后就可以软件来设置硬件按键各个键代表的内容。读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。第一次所有行线均4输出低电平,从所有读入键盘信息(列信息);第二次所有列线均输出低电平,从所有行线读入键盘 信息(行信息)。数字键按下则将相应的数字送入缓存区,功能键按下则执行相应的程序。 3.2.2 显示模块子程序显示模块程序首先要对显示模块进行初始化;然后控制光标的位置;定义液晶显示的控制端口, 用 SBIT 指令完成;然后设置清屏、关闭显示、归位、开显示、显示位置的首地址等等。 4 安装与调试安装与调试 将所有的元器件摆放在好,首先焊接 51 单片机的

8、底座,确定简易计算器的键盘和液晶显示的排 练位置,先将 51 单片机的底座焊接四周的四个点固定就好,之后再随需要焊接必要的底座引脚,接着 焊接比较复杂的矩阵按键,各个按键之间的连接,使用细导线。在使用细导线焊接两个焊点时,先 将两个焊点焊上焊锡。之后加热焊锡再将细导线接入,使之固定。 之后再将单片机的晶振和复位电路焊入单片机的地座上。确定最小单片机系统焊接完整后再将按 键扫描接在单片机的 P1 口,后将各个细导线按顺序分别焊到单片机的 P1 端口的引脚处。再将 1602 液晶显示的底座焊接在电路板上的相应位置上,从单片机和电源处将细导线按顺序分别焊接到液晶显 示的底座上。 将 51 单片机烧入

9、 C 语言程序,插入电路板上,再检查电路的接线和焊点处是否有焊错和虚焊, 最重要的是要检查电路是否短路。诺是没有错误则可以通电进行测试。 首先接上电源,打开开关,在液晶显示屏上显示出“0”则表示液晶显示是正常的,如果没有显示字符 等,则可以查看电路中在液晶显示的第三个引脚上的接线是否正确,可改变其电压,使 1602 液晶显示 的字符的亮度改变。如显示正常则可测试矩阵按键,逐个按下没个按键,观察每个按键的功能是否正 确。如果正确则调试结束。图 4-1 实物图(正面)5图 4-2 实物图(反面)5 性能测试性能测试与结果分析与结果分析 将已经焊接好的简易计算器通电后,测试计算器的最大计算值与最小计

10、算值。经过测试计算器的 最大运算值可以是 9999*9999,最小的运算值可以是 0。经过接不同的电源测试,51 单片机的工作电 压范围为 3V5.5V。实物效果图如图 5-1 所示:6图 5-1 实物效果图6 心得体会心得体会在硬件的制作过程中我走了好多的弯路,主要是在系统还没有设计很有把握就开始动手制作了。 后来发现与设计的要求还有偏差,反复的改过了几次,浪费了大量的时间和体力。感受到设计人员要 有耐心,要认真的从要求开始研究。软件的编写过程中费了很大的力气,因为软件的编写要求很高, 要很细心,一不小心就会调用错误,很深刻的体会到作为软件编程人员是绝不能粗心大意的。一个程 序的完成的速度和

11、质量高低与细心与否有着很大联系。编程时,我充分使用了结构化的思想。这样因 为语句较少,程序调试比较方便,功能模块可以逐一的调试,充分体现了结构化编程的优势。当每个 模块都完成时,将其功能加到一起就完成了整体的设计。 参考文献:参考文献: 1谭浩强. C 语言程序设计M.北京:清华大学出版社,2000 2靳达.求是科技.单片机应用系统开发实例导航M.:人民邮电出版社,2006 3刘守义. 单片机应用技术M.:西安电子科技大学出版社,2001 4林志琦.基于 PROTEUS 的单片机可视化软硬件仿真M.北京:北京航空航天大学出版社,2006 5胡汉才.单片机原理及接口技术.清华大学出版社,1996

12、 6徐江海.单片机实用教程M.北京:机械工业出版社,2007 7张磊. C 语言程序设计M.北京:高等教育出版社,20057附录:附录: 1 电路图电路图82 实物图(正反面)实物图(正反面)9实物图(正面)实物图(反面)3 源程序源程序 /* 接盘按键说明:接盘按键说明: -| 1 | 2 | 3 | + | - - - - - - - - - - - - -| 4 | 5 | 6 | - |- - - - - - - - - - - - -| 7 | 8 | 9 | * |- - - - - - - - - - - - - | C | 0 | = | / | -*/ /操作简介操作简介 /

13、 按第一个数,再按按第一个数,再按+-*/,再按再按=显示出结果,然后按显示出结果,然后按 C 清屏清屏 / 加最大加最大 9999+9999=19998 / 减最大减最大 9999-0 =9999 / 乘最大乘最大 9999*9999=99980001 / 除除 1/9=0.1111 保留小数点后保留小数点后 4 位位 #include #define uint unsigned int #define uchar unsigned char /-LCD1602- /P00-07= D0-7 sbit rs=P27; /指令指令 or 数据数据 sbit wela=P26; /读读 or 写

14、写 sbit lcden=P25; /使能信号使能信号 /-LCD1602- /-KEY- /P1 口口 /-KEY- uchar code table= “ “;long int data_a,data_b; /第一个数和第二个数第一个数和第二个数 long int data_c;/计算结果计算结果uchar dispaly10; /显示缓冲显示缓冲/*/ / 描述描述: 延时延时 t us 函数函数 /*/10void LCD_Delay_us(unsigned int t) while(t-); /t=0,退出退出 /*/ / 描述描述: 延时延时 t ms 函数函数 /*/ void LCD_Delay_ms(unsigned int t) unsigned int i,j; for(i=0;i999)write_date(0+dispaly3); /显示千位显示千位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号