软件技术课程设计(论文)-简易计算器.doc

上传人:小小飞 文档编号:3293388 上传时间:2019-08-08 格式:DOC 页数:34 大小:1.72MB
返回 下载 相关 举报
软件技术课程设计(论文)-简易计算器.doc_第1页
第1页 / 共34页
软件技术课程设计(论文)-简易计算器.doc_第2页
第2页 / 共34页
软件技术课程设计(论文)-简易计算器.doc_第3页
第3页 / 共34页
软件技术课程设计(论文)-简易计算器.doc_第4页
第4页 / 共34页
软件技术课程设计(论文)-简易计算器.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《软件技术课程设计(论文)-简易计算器.doc》由会员分享,可在线阅读,更多相关《软件技术课程设计(论文)-简易计算器.doc(34页珍藏版)》请在三一文库上搜索。

1、 密级 普通 组号 01 湖南科技职业学院软件学院项目文档项 目 题 目 简易计算器 系 部 专 业 软件技术(嵌入式方向) 学 生 姓 名 指 导 老 师 2010年12月课程设计文档编写模板 湖南科技职业学院软件学院项目文档编写模板文档信息 文档名称:项目文档编写模板负责人:文档版本编号:Tech-Spec-Docu密级:文档版本日期:2010-12-21起草人:起草日期:2010-12-21复审人: 复审日期:2011-1-3任务分配表来自From日期电话 / 传真胡斌波2010-12-2115207490538模块名称负责人截止日期完成日期简易计算2011-1-32011-1-1矩阵键

2、盘2011-1-32010-12-251602液晶显示2011-1-32010-12-25电路板的焊接2011-1-32010-12-27版本记录版本编号版本日期修改者说明1.02010-12-21草案1.22010-12-31修改目录一 软件需求说明书(软件计划书,确定软件的总体功能)11.1 引言11.2 业务流程整体说明(使用业务语言)11.3 特殊说明11.4 原始资料2二 需求分析报告52.1 引言52.2 任务概述52.3 功能需求52.4 性能需求72.5 运行环境描述7三 软件设计书(详细设计说明书,建立软件结构)83.1 引言83.2 硬件结构设计83.3 软件结构设计93.

3、4 硬件描述103.4.1 STC90C516RD+芯片103.4.2 矩阵键盘113.4.3 1602液晶123.5 程序描述133.5.1 计算133.5.2 矩阵键盘153.5.3 1602液晶16四 程序设计说明书174.1 引言174.2 各功能核心代码和界面说明174.2.1 功能一:数字字符输入174.2.2 功能二:基本的加、减、乘、除运算204.2.3 功能三:1602液晶同步显示22五 软件测试说明书255.1 引言255.2 计划255.3 测试项目说明265.4 测试计划执行情况265.5 评价27六 用户手册286.1 引言286.2 系统功能介绍286.3 运行环境

4、说明286.4 运行前的准备286.5 输入输出说明和操作说明286.6 安全与保密296.7 常见问题的处理296.8 附录:安装与初始化(必须提供)29软件学院 第30页/共34页一 软件需求说明书1.1 引言为了能够检验我们嵌入式的软件开发及我们的项目完成能力,湖南省科技职业学院(软件学院)特意组织这次项目实践,委托嵌入式3092班项目实践小组第一组开发一款简易计算器,由艾琼龙老师监督完成。该计算器作为一个独立的系统,要实现五位数以内的加、减、乘、除。并且能够精确到百分位,更能兼容正负数的运算以及重复运算。1.2 业务流程整体说明1.3 特殊说明本系统的运行环境为STC90C516RD+

5、单片机系统1.4 原始资料 资料收集:HOT51开发板配套资料谭浩强著C程序设计(第三版) 原有业务流程概述:图1.1 原始单据、原始报表等:原始资料名称查看内容相应模块矩阵键盘输入数据,发出命令输入模块C51芯片资料(STC90C516RD+)P0端口与矩阵键盘相连,接收矩阵键盘的数据信息;P1端口与1602液晶相连,向1602发出显示信号。运算模块1602液晶资料一、时序图1.1读操作时序1.2写操作时序1.3时序参数2、 初始化1.1 显示模式设置1.2 数据控制 控制器内有一个数据地址指针,可以通过他们来访问内部的全部80字节RAM。1.3 读数据输入:RS=H,RW=H,E=H 输出

6、:D0D7=数据1.4 写数据输入:RS=H,RW=L,D0D7=数据,E=高脉冲输出:无2 初始化过程2.1 延时15ms2.2 写指令38H(不检测忙信号)2.3 延时5ms显示模块1602液晶资料2.4 写指令38H(不忙检测忙信号)2.5 延时5ms2.6 写指令38H(不检测忙信号)2.7 (以后每次写指令、读、写数据操作之前需检 测信号)2.8 写指令38H:显示模式设置2.9 写指令08H:显示关闭2.10 写指令01H:显示清屏2.11 写指令06H:显示光标移动设置2.12 写指令0CH:显示开及光标设置显示模块二 需求分析报告2.1 引言 我们的目标是做到能与成品商品计算器

7、相媲美。2.2 任务概述此软件在STC90C516RD+芯片上运行,通过矩阵键盘输入数字和运算符,通过1602液晶将键盘输入的数和符号以及计算后的结果进行显示。2.3 功能需求 功能划分图2.1图2.3图2.4 功能描述功能名称功能标识符功能详细描述数字字符输入Shu_R通过矩阵键盘的扫描触发数字与字符的输入与记录基本的加、减、乘、除运算Yun_Suan通过矩阵键盘的命令来执行两个数的基本运算1602液晶显示数据Xian_Shi同步在液晶上显示各个数据及其符号2.4 性能需求能够正常进行负一百万到一百万以内的计算,并且能精确到小数点后三位。同时实现清零、删除上一个数的功能。2.5 运行环境描述

8、硬件设备:STC90C516RD+、1602液晶、矩阵键盘接口:I/O口控制:以矩阵键盘进行输入用户界面(反映业务流程的用户界面)三 软件设计书3.1 引言为更好的编写软件并对其进行优化,同时也为了更方便焊接电路板。因此,在此建立软件的结构,详细说明每个功能的上下功能模块和输入输出接口。3.2 硬件结构设计 描述硬件功能结构图3.3 软件结构设计 软件功能结构图3.4 硬件描述3.4.1 STC90C516RD+芯片系统:简易计算器 设计人:模块:ST90C516RD+芯片 日期:20XX-XX-XX上层调用:矩阵键盘 下层调用:1602显示 输入:将要进行计算的数字和运算符输入进芯片。 输出

9、:将数字和符号发送到1602上。 硬件模块说明:XTAL1与XTAL2接晶振电路。RESET接复位电路。P1口接矩阵键盘。P2.5、P2.6、P2.7与P0口接1602液晶。第20引脚接地、第40引脚接VCC。 局部注意事项:不要造成短路,烧坏芯片 接口:I/O口 限制条件:无 测试要点:线是否接好 尚未解决的问题:无3.4.2 矩阵键盘系统:简易计算器 设计人:湖斌波模块:矩阵键盘 日期:20XX-XX-XX 上层调用:无 下层调用:ST90C516RD+芯片 无 输出:将要进行计算的数字和运算符输入进芯片。 硬件模块说明:通过P1口将矩阵键盘接入STC90C516RD+芯片。P1.0P1.

10、3接按键横排,P1.4P1.7接按键竖排。按下一个键,表示横排与竖排有接口相连了,芯片依此获得数字或符号。 局部注释项:无 接口:I/O口 限制条件:无 测试要点:接线是否正确,线是否接通 尚未解决的问题:无3.4.3 1602液晶引脚符号功能说明第1脚VSS一般接地第2脚VDD接电源(+5V)第3脚V0液晶显示器对比度调整端第4脚RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚EE(或EN)端为使能(enable)端,下降沿使能。第714脚D0D7双向数据总线0位到第7位第15

11、脚VCC接高电平第16脚GND接地系统:简易计算器 设计人:胡广晟模块:1602显示 日期:20XX-XX-XX上层调用:STC90C516RD+芯片 下层调用:无 输入:芯片将获得的数字和符号发送到液晶上进行显示。 输出:无 硬件模块说明:1602通过排阻与单片机的P0口相连,其中1602的引脚1(通过滑动变阻器)、16接地,引脚2、15直接拉制高点平,引脚4接RS端,引脚5控制读写信号,第6脚为使能端,其余的引脚就接收、发送及显示数据 局部注释项:无 接口:I/O口 限制条件 测试要点:接线是否正确,是否连通3.5 程序描述3.5.1 计算系统:简易计算器 设计人:XXX模块:计算 日期:

12、20XX-XX-XX上层调用模块:矩阵键盘 可调用的下层模块:1602液晶 输入:将要进行运算的数字和运算符输入进计算中。 输出:将得出的结果发送到液晶上显示。 处理过程说明:首先初始化,然后输入一个数字,如过键盘按下删除键则删除一位数 局部注释项:无 算法本程序所选用的算法是C51单片机自身的算术运算来计算两个数的值。 流程逻辑 接口矩阵键盘输入数字运算符或删除,计算将结果输入进液晶 限制条件 测试要点:计算是否正确 尚未解决的问题:无3.5.2 矩阵键盘系统:简易计算器 设计人:胡斌波模块:矩阵键盘 日期:2010-1-2上层调用模块:无 可调用的下层模块:计算、1602液晶 输入:无 输

13、出:将键盘输入的数和运算符发送到计算中进行处理同时也发送到1602上显示。 处理过程说明:键盘扫描。检查第一列,若有键按下则判断输入的数或清零;检查第二列,若有键按下则判断输入的数;检查第三列,若有键按下则判断输入的数或等于;检查第四列,若有按键按下则判断删除或小数点或负号根据按下次数判断运算符。 局部注释项:暂无 流程逻辑 接口通过将芯片上两个引脚连接起来,让芯片判断该给后面的程序发送的数据 限制条件:无 测试要点:按下后,液晶上是否正常显示 尚未解决的问题:无3.5.3 1602液晶系统:简易计算器 设计人:XXX模块:1602液晶 日期:20XX-XX-XX上层调用模块:计算、矩阵键盘

14、可调用的下层模块:无 输入:要显示的数字和符号。 输出:无 处理过程说明:首先1602赋初值(使能信号置零且数据/命令和读/写置零,50微秒后使能信号置一,50微秒后使能信号置零),然后扫描要显示的数据。主函数中1602先初始化。 初始化写入的指令由液晶本身决定。 算法:指针、取余 流程逻辑 接口矩阵键盘发送数字运算符,计算发送数字。 限制条件:无 测试要点:显示是否与输入一致。 尚未解决的问题:暂无四 程序设计说明书4.1 引言 编写目的说明本软件的各功能模块实现技巧及核心代码4.2 各功能核心代码和界面说明4.2.1 功能一:数字字符输入 实现技巧利用扫描矩阵键盘来确定输入的内容,传给C5

15、1芯片,记录数据。 功能界面 核心代码void key()/键盘扫描uchar t;/定义中间变量/*检测第1列*/P1=0xef; if(P1&0x0f)!=0x0f)/观察高四位有没有非零状态。delay_50us(100);t=P1;/把P1的值赋给中间变量tif(t&0x0f)!=0x0f)/扫描时判断t的值以得知相应按键是否被按下switch(t)case 0xee:Shu_Ru(1);break;/1case 0xed:Shu_Ru(4);break;/4case 0xeb:Shu_Ru(7);break;/7case 0xe7:ping();break;/归零(初始化) whil

16、e(P1&0x0f)!=0x0f);/*检测第2列*/P1=0xdf; if(P1&0x0f)!=0x0f)/观察高四位有没有非零状态。delay_50us(100);t=P1;if(t&0x0f)!=0x0f)/扫描时判断t的值以得知相应按键是否被按下switch(t)case 0xde:Shu_Ru(2);break;/2case 0xdd:Shu_Ru(5);break;/5case 0xdb:Shu_Ru(8);break;/6case 0xd7:Shu_Ru(0);break;/0while(P1&0x0f)!=0x0f);/*检测第3列*/P1=0xbf; if(P1&0x0f)!

17、=0x0f)/观察高四位有没有非零状态。delay_50us(100);t=P1;if(t&0x0f)!=0x0f)/扫描时判断t的值以得知相应按键是否被按下switch(t)case 0xbe:Shu_Ru(3);break;/3case 0xbd:Shu_Ru(6);break;/6case 0xbb:Shu_Ru(9);break;/9case 0xb7:Out();X_F1=5;break;/等于 while(P1&0x0f)!=0x0f);/*检测第4列*/P1=0x7f; if(P1&0x0f)!=0x0f)/观察高四位有没有非零状态delay_50us(100);t=P1;if(

18、t&0x0f)!=0x0f)/扫描时判断t的值以得知相应按键是否被按下switch(t)case 0x7e:yun_suan();break;/运算方法case 0x7d:Zheng_Fu();break;/正负case 0x7b:xiao_dian();break;/小数点case 0x77:Delete();init();break;/删除 while(P1&0x0f)!=0x0f);void Shu_Ru(long double shu)/输入一个数字uint a=0;if(X_F1=5)/判断是否已得出结果ping();/初始化if(shu10&sif=1)/如果当前输入的是shu1而

19、且shu1小于零shu1=shu1*(-1);/把shu1转换为正数a=1;/判断转换依据if(shu20&sif=2)/如果当前输入的为shu2而且shu2小于零shu2=shu2*(-1);/把shu2转换为正数a=2;/判断依据if(X_D=1&m=100)/小数输入if(sif=1&shu1=0)/规定数的大小及判定输入的是第几个数shu1=shu1+shu/m;/如:shu1=23.0,shu=2.0;shu1=23.0+2.0/10=23.2if(sif=2&shu2=0)shu2=shu2+shu/m;m=m*10;/变量缩小10倍以便下一个数输入else if(X_D!=1)/

20、没有小数点if(sif=1&shu1=0)/规定数的大小范围shu1=shu1*10+shu;if(sif=2&shu2=0)shu2=shu2*10+shu;if(a=1)/返回shu1原正负情况shu1=shu1*(-1);a=0;/初始化if(a=2)/返回shu2原正负情况shu2=shu2*(-1);a=0;4.2.2 功能二:基本的加、减、乘、除运算 实现技巧基本的加、减、乘、除运算其实是C51芯片自己的算数运算功能;只不过先把两个要进行运算的数储存在两个变量shu1、shu2中,再根据键盘输入的运算标识来进行运算。 功能界面 核心代码void Out()/输出结果if(X_F1=

21、5)/判断是否已运算init();/清除屏幕shu1=shu3;/把结果作为第一个数if(Z_F=1&sif=2)/结束第二个数的输入,判断是否为负数shu2=shu2*(-1);X_D=0;/除去小数点的输入媒介Z_F=0;/除去负数的输入媒介switch(yif)/判断运算类型/case 1:shu3=shu1+shu2;break;/加法运算case 2:shu3=shu1-shu2;break;/减法运算case 3:shu3=shu1*shu2;break;/乘法运算case 4:shu3=shu1/shu2;break;/除法运算default :shu3=shu1+shu2;br

22、eak;/默认加法运算void yun_suan()/运算方法选择if(X_F1=5)/判断是否已按下=键long double a=shu3;/把结果赋给中间变量aping();/清屏shu1=a;/把结果传给shu1(shu2默认不变)a=0;/中间变量清零if(Z_F=1&sif=1)/结束第一个数的输入 判断是否为负数shu1=shu1*(-1);yif+;/运算判断依据 分别为+,-,*,/if(yif=5)/运算方法循环yif=1;/返回加法运算sif=2;/输入的新数为第2个数X_D=0;/清除小数点m=10;/输入新数时返回初始值Z_F=0;/正负初始化4.2.3 功能三:16

23、02液晶同步显示 实现技巧通过不断的扫描并显示要显示的数据,一旦数据变化,显示也跟着变化。 功能界面 核心代码void sendstring(uchar addr,uchar *p)/液晶1602输出字符 sendcmd(addr); while(*p!=0) sendbyte(*p); delay_50us(50); p+; void senddata(uchar addr,long double dat)/拆分多位数为单位数显示uint a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;uint k=0;/显示负号赋初值long dat1=0;sendcmd(

24、addr);/选择显示的位置if(dat=5)/千分位大于5(四舍五入)b+;/百分位进一sendbyte(ascb);s+;五 软件测试说明书5.1 引言主要测试PCB板和仿真图,液晶显示、矩阵键盘。1602液晶能否正常工作。 其次测试软件和硬件的兼容性和使用性能。5.2 计划 测试方案测试方案测试内容目的进度负责人测试人用户界面测试用户界面完成用户界面完成胡斌波周涛功能流程测试功能流程完成功能需要完成胡广晟胡斌波性能测试性能完成性求能完成周涛胡广晟 测试项目测试名称测试目的测试内容测试进度液晶LCD1602液晶显示是否正确显示数字,显示字符预进行矩阵键盘键盘是否灵活,正确灵活,按键正确预进

25、行基本运算基本运算是否符合逻辑符合逻辑预进行 测试准备为了保证电机在工作时能正常运行,我们决定做一下测试。为了保证测试的成功,我们需要一些基本的工具。工具:电脑,89C51单片机,液晶显示屏,USB JTAG仿真器,Keil uVision2软件,Protel 99SE软件,STC_ISP_V483软件等工具。5.3 测试项目说明 测试项目名称及测试内容测试项目 测试内容矩阵键盘 是否正常输入基本运算 是否符合逻辑LCD1602 正确显示输入字母,数字 测试用例用例输入输出步骤及操作进度矩阵键盘输入357输出357代码要求显示数字或者字符完成基本运算乘乘进行乘法运算完成液晶LCD1602输入2

26、11输出数字211代码要求显示数字或者字符完成 进度用例进度矩阵键盘完成基本运算完成液晶LCD1602完成 条件需求项目需求内容设备需求 基本电脑 软件需求 Keil程序编译器Stc_isp下载器 各种单片机小工具 人员需求 2-3人 测试资料单片机原理及接口技术教材 DS1302使用说明书 Lcd1602使用说明书 HOT-51电路图5.4 测试计划执行情况 测试项目测试项目 测试内容矩阵键盘 是否正常输入基本运算 是否符合逻辑LCD1602 正确显示输入字母,数字 测试机构和人员胡斌波主程序代码、PPT胡广晟文档 部分代码 PPT周涛PPT 文档张鸿博电路板焊接 测试结果(按顺序给出每一测

27、试项目的:a.实测结果数据;c.该项测试表明的事实;d.该项测试发现的问题。)测试项目 测试数据矩阵键盘 基本运算 是否正常输入LCD1602 是否符合逻辑5.5 评价 软件能力1.本软件具有通过液晶显示简易计算,矩阵键盘输入数据,C51单片机实现基本运算。 2.本软件只能进行5位(含5位)以内的基本运算保留两位小数。3.软件已测试通过,个功能均可以实现,请放心使用。4.由于本程序的线程太长,液晶的显示反映速度稍有迟缓。 建议对于线程的太长,反映迟缓,只能优化缩减代码,以达到反映速度慢的问题。 缺陷和限制本程序只能实现5位数以内的基本运算,但结果超出范围时将会出现数据溢出。 测试结论经过测试,

28、本项目程序实现了基本的加、减、乘、除运算及显示。六 用户手册6.1 引言随着计算机科学的发展,计数器已深入地渗透到我们的生活中。计数器可以帮助我们人脑更快捷更精确的完成复杂的数据运算。为我们人日常生活省去了大量的时间和精力。计数器已成为现代社会最普便、最实用的计算工具。6.2 系统功能介绍本产品是基于51系列的单片机进行的数字计算机系统的设计,可以完成计算器的键盘输入,进行加、减、乘、除5位无符号数字的简单四则运算,并在1602液晶上相应的显示结果。本系统强大,适用性强6.3 运行环境说明简单说明运行本软件所要求的: 硬件设备环境,例如使用什么型号的计算机、配备多少内存及硬盘等; 系统软件的环

29、境,例如WINDOWS、SQL*NET等; 应用软件环境,例如运行本软件时需要在系统中有哪些其他子系统的支持等。必要时可以说明软件运行的基本环境和最佳环境。6.4 运行前的准备说明这个软件在运行前用户应该作的准备工作,如:代码的编制、数据的准备、工作流程的调整等等。在这里应该列出所需要做的准备工作清单,以告诉用户在使用前应做好的准备工作。有些系统初始化的工作,特别是需要系统维护人员操作的安装和初始化工作操作方法可在后面附录的安装与初始化中描述,在这里不必详细说明。6.5 输入输出说明和操作说明这一部分是用户手册的核心,这部分内容应该按照工作的流程顺序来编写。对于每个相对独立运行的子系统或程序模

30、块,应说明软件的进入和退出方法。(在WINDOWS环境下的软件只需说明快捷方式启动软件的方法即可,通常情况下不必再说明用命令启动软件的方法。)在编写操作说明时为了用户使用的方便,应该针对每一个工作流程编写相应的软件操作步骤和方法,其内容应该包括: 功能简介。 工作流程中相应软件模块的进入与退出方法。 以醒目的方式列出常规工作时操作步骤,详细说明每个步骤中的屏幕和使用方法 这一部分应该尽量让软件的使用操作人员对整个操作过程有一个明确的概念,在文件编排上应该把使用者的注意力集中在使用软件解决他工作中的问题上。 对向计算机输入的数据和计算机输出的内容给予适当的说明。在语言上应该使用易于用户理解的词汇

31、而尽量不要用计算机专业术语。6.6 安全与保密说明软件对保密管理的要求及违反保密规定后可能造成的后果。在一些子系统中,保密字乱用后,可能造成个人工作量统计错误等等。本软件只是关于简易计算器的设计,切记保密管理,其内容与计算器功能相对应,更改后会使计算器丧失部分功能。6.7 常见问题的处理1. Q:输入数字运算不精确怎么办?A:初始化再运算。2.Q:在数字显示过程中,出现了跳位现象怎么办?A:受到延时函数delay( )的延时影响,导致数码管动态显示位码出错,再纠正6.8 附录:安装与初始化(必须提供) 安装列出软件安装的步骤,说明安装过程中的每一步操作方法。这一部分的内容应该让初次接触这个系统的使用者依照手册中所列的步骤和操作方法顺利地将软件安装上。 初始化列出软件正式运行前所需要进行初始化工作的清单和初始化操作的步骤。对于初始化中的每个步骤应给予适当的说明,使进行初始化工作的人能够充分理解初始化中每一步骤的实际作用,以便于合理地配置应用系统,充分发挥系统的作用参考文献1.单片机原理及接口技术,作者:李朝青,北京航空航天大学出版社2006年12月第3版2.Protel 99SE 入门与提高,作者:张立宝,人民邮电出版社2007年7月刊第3050页3.C程序设计(第三版),作者:谭浩强,清华大学出版社 2005年7月第3版

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1