设计说明文档

合集下载

(完整版)详细设计说明书实例

(完整版)详细设计说明书实例

信息发布系统(详细设计说明书)编写单位:JAVA实践小学期第22组设计人员:版本: 1.0编写日期:2010/9/5目录第一部分、引言 (2)1.1编写目的 (2)1.2背景 (3)1.3定义 (3)3.1程序描述 (5)3.2整体结构 (5)3.3性能 (5)3.4输入输出项 (5)3.5算法 (5)3.6主要类的设计 (5)3.7存储分配 (7)3.8注释 (7)3.9限制条件 (7)3.10测试计划 (7)3.11尚未解决的问题 (7)4.1程序描述 (7)4.2功能 (7)4.3性能 (8)4.4输入输出项 (8)4.5限制条件 (8)5设计特点 (8)5.1 通信便捷 (8)5.2 开发速度快 (8)第六部分、项目分工 (8)附录: (9)第一部分、引言1.1编写目的本说明书在概要设计的基础上,对信息发布系统的各模块、程序分别进行了实现层面上的要求和说明。

软件开发小组的产品实现成员应该阅读和参考本说明进行代码的编写、测试。

1.2背景说明:A、软件系统的名称:信息发布系统B、任务提出者:JA V A实践小学期开发者:第22组成员C、实现完成的系统将可用在所有JA V A虚拟机的个人PC上.为使用者提供信息发布,浏览,评论的方式,沟通各个用户.1.3定义服务器端API :服务器端设计者通过规范的API文档,提供给客户端,以方便客户端的开发,使得同时进行,提高效率,节约时间。

两端通过protocol(协议类)进行通信。

Gson:Google提供的一个类库。

通过使用这个类库,可以把把对象转换成json格式的字符串,以方便在网络中的传输。

也可反向将字符串转换成对象,这样带有方法地操作对象,可以有效,方便地保证信息的沟通。

Json:JavaScript Object Notation,是一种轻量级的数据交换格式。

易于人阅读和编写,同时也易于机器解析和生成。

它基于JavaScript的一个子集,JSON采用完全独立于语言的文本格式,这些特性使得JSON成为理想的数据交换语言。

网站详细设计说明书

网站详细设计说明书

网站详细设计说明书1. 引言本文档旨在对网站的详细设计进行说明。

网站旨在提供用户友好的界面,提供丰富的功能以及优质的用户体验。

2. 设计概述2.1 目标网站的目标是提供一个平台,使用户能够方便地获取所需的信息并进行相关操作。

2.2 功能需求网站的主要功能需求包括但不限于:•用户注册和登录•查看和编辑个人资料•浏览和搜索信息•发布和管理信息•进行在线交流和互动•进行在线支付2.3 技术选型为了满足网站的需求,我们选择以下技术进行开发:•前端技术:HTML、CSS、JavaScript、Vue.js•后端技术:Python、Django框架、MySQL数据库3. 架构设计3.1 前端架构网站的前端采用单页应用的架构,使用Vue.js作为前端框架。

通过使用Vue组件化的开发方式,提高前端代码的可复用性和维护性。

3.2 后端架构网站的后端采用MVC架构,使用Django框架进行开发。

Django提供了强大的ORM功能和丰富的开发工具,使开发变得更加高效和简单。

3.3 数据库设计网站的数据存储采用MySQL数据库,通过ORM技术将数据库与应用程序进行关联。

数据库中的表设计将根据网站的功能需求进行设计,保证数据的一致性和完整性。

4. 页面设计4.1 首页首页是网站的入口,用于展示网站的基本信息和功能导航。

4.2 用户注册和登录页面用户注册和登录页面用于用户进行账号注册和登录操作。

4.3 个人资料页面个人资料页面用于用户查看和编辑个人信息,包括用户名、头像、联系方式等。

4.4 信息浏览页面信息浏览页面用于展示用户发布的信息,用户可以根据关键字进行搜索,筛选和排序。

4.5 信息发布页面信息发布页面用于用户发布新的信息,包括标题、内容、价格等。

4.6 信息管理页面信息管理页面用于用户查看和管理已发布的信息,包括编辑、删除和下架。

4.7 在线交流页面在线交流页面用于用户之间进行实时的在线交流和互动。

4.8 在线支付页面在线支付页面用于用户进行在线支付操作,确保交易安全和可靠。

详细设计说明书(仅用于学习的参考模板)

详细设计说明书(仅用于学习的参考模板)

付高钢村医药管理系统项目详细设计说明书1引言1.1编写目的本说明书是医药管理系统的详细设计。

其编写目的是在概要设计的基础上,针对该项目的每个模块,每个功能的实现方法进行详细的设计和划分,按照详细设计说明书的要求,进一步明确系统结构,为项目开发人员后期的编码工作做准备。

本文档的预期的读者是:项目开发人员项目经理项目测试人员1.2背景在前一阶段的概要设计文档中,已经通过顺序图解决了该系统功能的实现流程,包括系统的各模块间的关系设计等。

本文档就是在前一阶段成果的基础上,继续对系统的各模块进行详细的划分和说明。

2概述本项目的任务提出者:见概要设计文档单位:见概要设计文档开发者:见概要设计文档用户:见概要设计文档实现该软件的计算中心或计算机网络:见概要设计文档2.1基线以需求分析和概要设计为基准。

2.2范围本概要设计文档提供给系统设计开发人员,包括详细设计人员和项目组成员。

2.3定义2.4参考资料2.5术语与缩写解释3模块命名规则驼峰标识,由单词的全拼组成,除首单词外每个单词的首字母大写,例如:medcineManager4模块汇总4.1模块汇总表5子系统模块设计5.1类别管理模块5.1.1功能描述用户登录进入类别管理页面,能进行药品类别的管理,主要包括类别的添加,修改,查看和统计。

5.1.2相关模块5.1.3类图5.1.4类别管理类5.1.4.1方法5.1.4.1.1方法—药品信息的添加:public String add()5.1.4.1.1.1功能对药品的类别信息进行添加,类别编码是类别对象的一个标示,当添加一个类别信息时,需要判断此类别是否已经在数据库中,如果存在,则提示已存在该类别。

5.1.4.1.1.2参数无5.1.4.1.1.3算法无5.1.4.1.2方法—类别信息的模糊查询:public String queryallcategory()5.1.4.1.2.1功能为了方便用户查询已有类别,类别信息管理模块提供了类别模糊查询。

设计说明书格式

设计说明书格式

设计说明书格式设计说明书是一种详细描述产品设计和开发过程的文档,旨在为团队成员提供必要的指导和参考。

它涵盖了设计目标、设计原理、设计方法、设计过程和相关资源等内容。

设计说明书的规范和清晰的格式对于确保产品开发的高效性和质量至关重要。

本文将介绍一个常用的设计说明书格式,以便帮助团队成员撰写出完整、准确且易于理解的说明书。

一、标题页设计说明书的第一页是标题页,应包含以下信息:- 产品名称:简明扼要地描述产品的名称,以便快速识别。

- 设计说明书:明确文档的类型,以帮助读者确认文档的用途。

- 版本号:每次更新文档时都应更新版本号,以便跟踪和管理文档的变化。

- 日期:文档的创建日期或最近一次编辑日期。

- 编写人员:列出所有参与文档编写的人员姓名。

二、目录目录可帮助读者快速找到所需的信息。

根据文档的长度和结构,将内容分成几个主要部分,并在目录中编号。

例如,可以将文档分为“引言”、“设计目标”、“设计原理”、“设计方法”、“设计过程”和“参考资源”等。

三、引言引言部分是设计说明书的开头,用于介绍整个文档的内容和背景。

在引言中,可以包含以下信息:- 产品的简要描述:阐述产品的基本概念、主要功能和预期用途。

- 特别说明:对设计过程中的任何特殊要求、限制或依赖关系进行解释。

四、设计目标设计目标部分详细说明产品设计的目标和要求。

这些目标通常包括以下几个方面:- 功能性目标:列出产品的基本功能要求,描述产品能够执行的特定任务。

- 性能目标:阐述产品的性能指标,如速度、准确性、稳定性等。

- 用户体验目标:描述产品所需提供的用户体验,如易用性、可访问性和可定制性等。

五、设计原理设计原理部分解释产品设计的基本原理和理论背景。

这有助于读者理解为什么选择特定的设计方法和技术。

设计原理应涵盖以下几个方面:- 技术基础知识:列出相关的技术基础知识,以便读者理解设计决策的合理性。

- 设计方法选择:解释为什么选择特定的设计方法,并指出它与产品设计目标的关联性。

设计说明书模板

设计说明书模板

设计说明书模板一、设计说明书概述。

设计说明书是指对于某一产品、工程或系统的设计方案、设计原理、设计要求、设计计算、设计参数等进行详细的说明和阐述的文档。

它是设计人员在完成设计工作后,对设计方案进行详细描述和说明的文书,是设计成果的集中体现。

二、设计说明书的结构。

1. 标题页。

设计说明书的标题页应包括产品名称、设计单位名称、设计人员姓名、日期等信息。

2. 目录。

目录应包括设计说明书的各个章节和段落的标题及页码。

3. 引言。

引言部分应包括对设计说明书的目的、范围、背景、依据等进行简要介绍。

4. 总体设计。

总体设计部分应包括产品的总体设计方案、设计原理、设计要求等内容。

5. 结构设计。

结构设计部分应包括产品的结构设计方案、设计计算、设计参数等内容。

6. 材料选用。

材料选用部分应对产品所选用的材料进行详细的说明和阐述。

7. 工艺流程。

工艺流程部分应对产品的生产工艺流程进行详细的说明和阐述。

8. 设备选型。

设备选型部分应对产品所选用的设备进行详细的说明和阐述。

9. 质量控制。

质量控制部分应对产品的质量控制措施进行详细的说明和阐述。

10. 安全保障。

安全保障部分应对产品的安全保障措施进行详细的说明和阐述。

11. 维护保养。

维护保养部分应对产品的维护保养措施进行详细的说明和阐述。

12. 总结。

总结部分应对设计说明书进行总体的概括和总结。

13. 参考文献。

参考文献部分应列出设计说明书所引用的各种参考文献。

三、设计说明书的编写要点。

1. 精细。

设计说明书的编写要精细,对于设计方案、设计原理、设计要求等内容要进行详细的阐述。

2. 准确。

设计说明书的编写要准确,对于设计计算、设计参数等内容要进行准确的描述和计算。

3. 全面。

设计说明书的编写要全面,要对产品的各个方面进行详细的说明和阐述。

4. 规范。

设计说明书的编写要规范,要符合相关的规范和标准。

四、设计说明书的应用范围。

设计说明书适用于各种产品、工程或系统的设计过程中,可以作为设计成果的集中体现,也可以作为设计成果的交流和沟通工具。

概要设计说明书模板

概要设计说明书模板

概要设计说明书模板篇一:概要设计说明书模板XXX项目概要设计说明书公司实施部门:项目经理:生效日期:(文档编号:)目录1. 编制目的 ................................................ ................................................... ........ 错误!未定义书签。

2. 适用范围 ................................................ ................................................... ........ 错误!未定义书签。

3. 文件说明 ................................................ ................................................... ........ 错误!未定义书签。

1. 概述 ................................................ ................................................... . (3)1.1 1.2 1.3 1.4 1.5系统简介 ................................................ ................................................... .............................. 3 系统目标 ................................................ ................................................... .............................. 3 系统设计原则 ................................................ ................................................... ...................... 3 系统运行环境 ................................................ ................................................... ...................... 3 开发环境 ................................................ ................................................... (3)2. 总体结构 ................................................ ................................................... ......................................... 3 2.1系统部署 ................................................ ................................................... (3)系统拓扑结构 ................................................ ................................................... .. (3)2.1.2 系统部署说明 ................................................ ................................................... .............. 4 2.2 软件部署 ................................................ ................................................... (4)3. 数据流程 ................................................ ................................................... ......................................... 4 3.1 3.2 3.3数据流程图 ................................................ ................................................... .......................... 4 数据流程图说明 .................................................................. 4 数据字典 ................................................ ................................................... (4)2.1.14. 系统模块设计................................................. ................................................... ................................. 4 4.1 4.2子系统模块结构图 ................................................ ................................................... .............. 4 子系统模块概要设计 ................................................ ................................................... . (4)5. 数据库设计 ................................................ ................................................... ..................................... 5 5.1 5.2结构概................................................... .............................. 5 表结构 ................................................ ................................................... . (5)6. 永久性数据结构................................................. ................................................... ............................. 6 6.1 6.2 6.3文件组织结构 ................................................ ................................................... ...................... 6 文件结构 ................................................ ................................................... .............................. 6 数据备份、恢复 ................................................ ................................................... (6)7. 系统业务功能设计.......................................................................... 6 7.1 7.2业务内容 ................................................ ................................................... .............................. 7 处理流程 ................................................ ................................................... (7)8. 其它设计 ................................................ ................................................... ......................................... 7 9. 术语表 ................................................ .................(原文来自:小草范文网:概要设计说明书模板)................................................ . (7)XXX项目概要设计说明书文档编号:版本:1. 概述 1.1 系统简介简要描述本系统基本情况。

详细设计说明书

详细设计说明书

详细设计说明书篇一:最好软件详细设计说明书参考文档中大软件详细设计D0903-0302丁丁网上购书系统详细设计Version r.0.0.1修订历史目录1 2 3 4 5 6绪言及目标 ........................................................ ........................................................... ................. 3 范围 ........................................................ ........................................................... ............................. 3 定义及缩写 ........................................................ ............................................................................ 3 引用 ........................................................ ........................................................... ............................. 3 角色及职责 ........................................................ ........................................................... ................. 3 工具及环境 ........................................................ ........................................................... ................. 4 6.1 6.2 6.3 6.4 7研发硬件配置 ........................................................ ........................................................... ...... 4 研发语言及编译器 ........................................................ (4)软件支持工具 ........................................................ ........................................................... ...... 4 第三方工具 ........................................................ ........................................................... . (4)高层分析 ........................................................ ........................................................... ..................... 5 7.17.2 7.3 7.4数据模型视图 ........................................................ ........................................................... ...... 5 抽象类视图 ........................................................ ........................................................... .......... 6 时序图......................................................... ........................................................... ................. 6 用户界面架构 ........................................................ ............................... 错误!未定义书签。

土建设计说明

土建设计说明

土建设计说明土建设计说明文档是针对土建工程进行设计的业务规划、技术规范、编制依据和施工要求,旨在保证土建工程的安全、可靠、节能和符合环保要求。

本文将就土建设计说明文档进行详细的介绍,内容共分为五个部分,包括设计内容介绍、设计依据、设计标准、设计经验总结和设计注意事项。

一、设计内容介绍土建设计说明文档的设计内容包括:建筑物结构、建筑物外立面、屋面设计、建筑物排水、地基处理、应力分析、设备基础、附属设施比如照明、消防和安全措施等等。

这些设计内容是依据土建工程的规模和工程类型而不同的,且在设计和实施过程中要考虑到工程项目所在的环境和现场条件。

二、设计依据土建设计说明文档的设计依据主要包括以下几个方面:1. 土建规定根据国家有关土建规定,结合建筑、土木和水利等相关规范和标准,设计土建工程时应符合各个方面的规定和标准要求。

2. 工程勘察工程勘察是土建设计的重要依据之一,勘察时应对研究区域的地质、水文、气象和生态等因素进行调查,以确保整个土建工程的可靠性。

3. 工程建设要求针对工程建设要求,考虑土建工程施工管理流程,从技术、安全、节能和环保等方面综合考虑,制定相关设计方案和配套方案,确保工程顺利实施。

三、设计标准土建设计说明文档的设计标准应该根据实际情况制定,本章节将介绍一些针对设计标准的说明。

1. 土建结构设计土建结构时最重要的依据就是相关标准和规范。

设计土建结构时要符合国家土建标准和规范,确保土建工程的安全性和可靠性。

2. 建筑防火建筑防火是保证土建工程的重要方面之一。

设计土建工程时要符合建筑防火相关的国家标准和规范,制定相应的建筑防火措施。

3. 地基处理地基处理是土建工程建设的基本要求之一。

设计土建工程时应根据实际情况,合理选择适合的地基处理方案。

地基压实度和承载力是设计地基处理的主要依据。

四、设计经验总结土建设计说明文档的设计经验总结有助于总结以往的土建工程实施经验,并针对经验总结进行设计方案的调整和改进。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子密码锁的设计一、任务要求(1)设计任务与要求①基本要求当输入一个正确密码时就能开锁,输入错误次数到达预设定次数时就会自动报警。

②主要性能指标※能够从键盘中输入密码※能够判断密码是否正确※能够实现密码的修改※在操作错误达到一定次数后能够报警③扩展功能※断电或者单片机复位后能够保存之前的操作※能够实现密码的修改综上所述电子密码锁的设计,应该包含以下功能:(1)电源供电电路。

(2)微控制器主控电路。

(3)数字显示电路及参数设定按键。

(4)错误报警电路。

根据以上分析,本次电子密码锁设计的主要重点是以下几个部分:4x4矩阵键盘设计、LCD信息显示、密码的掉电存储和密码的比较和处理。

当然,除了这几个部分外还有定时器/计数器计时中断和报警等功能模块。

二、功能模块分析(1)单片机接口分配AT89C51单片机在一块芯片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O功能部件,具有一台微型计算机的基本结构,按功能可以将其分成八个组成部分:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、I/O口、串行口、定时器/计数器及中断系统。

在本设计中,单片机的各个接口我是这样分配的:P0口接一个上拉电阻后与LCD1602的8位双向数据端D0~D7相接,P1口用作矩阵键盘接口,P2口的P2.0~P2.2和LCD1602的4~6引脚相接,P2.5和P2.6接串行存储器AT24C02,P3口用作开锁电路和报警电路的接口。

(2)单片机最小系统设计单片机最小系统就是指能使单片机工作的最少的器件构成的系统。

因为单片机已经包含了数据存储器和程序存储器,所以只要在其外部加上时钟电路和复位电路就可以构成单片机最小系统。

(3)时钟电路单片机工作需要晶振给CPU提供频率,时钟电路就是给单片机提供晶振频率的电路。

图1时钟电路单片机允许的振荡晶体可在1.2~24MHz之间选择,一般为11.0592MHz,电容C2,C3的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定的影响,可在20~100pF之间选择,典型值位30pF。

(4)复位电路计算机每次开始工作,CPU和系统中的其他部件都必须要有一个确定的初值,即复位状态。

图2复位电路单片机RST引脚是高电平有效。

单片机在上电瞬间C1充电,RST引脚端出现正脉冲,只要RST断保持两个机械周期(大约10ms)以上的高电平,单片机就能复位。

在单片机工作后,如果还想再次复位,只需按下开关,单片机就能重新变成复位状态。

(5)最小系统单片机加上时钟电路和复位电路就构成了能使其正常工作的最小系统。

单片机最小系统是单片机正常工作的基础,任何一个单片机系统设计都是基于单片机最小系统的基础上来完成的,而在单片机系统实物设计中,最应该首先解决的也应该是单片机最小系统问题,只有保证了单片机最小系统的正确性,才能保证接下来的其他模块的正确设计。

图3单片机最小系统3.3 矩阵键盘设计一组键或者一个键盘,需要通过接口电路和CPU相连接,CPU可以采用查询接口或者中断的方式了解有没有键被按下,并检查是哪个键被按下。

无论是查询方式还是中断方式都要用到单片机的I/O口。

由于单片机I/O口较少的原因,当系统中需要用到较多按键时,为了能够更合理更有效地利用单片机的I/O口,一般采用矩阵键盘的方式来实现多按键的功能。

图4 4x4矩阵键盘矩阵键盘又叫做行列式键盘。

行列式键盘的硬件结构比较简单,由行输出口和列输出口构成行列式键盘,按键设置在行、列交点上。

图3-4中,P1.0~P1.3是行输出口,P1.4~P1.7是列输出口。

行输出口和列输出口不相交,只有当键被按下时相应的行和列才能相连。

如此,只要检测行和列是否相连就可以知道是否有键按下。

由于按键设置在行、列线交点上,行、列分别连接到按键开关的两端,平时无键按下时,行线处于高电平,假设列线为低电平,当有键按下时,按下的键就会将相应的行和列连通,使得对应的行线被列线拉低,也变为低电平。

这就是识别矩阵键盘是否有键被按下的关键。

当确定有键被按下时,通过逐行扫描,读出I/O口的值可以知道哪一行的值被改变了,被改变了的行即是被按下的按键所在行。

同时,由于每个键都有它的行值和列值,行值和列值得组合就是这个按键的编码,当算法一定时,每个按键的编码是固定的,且各个按键的编码互不相同,所有通过读I/O的值还能具体知道是哪一个键被按下,这样就实现了键盘的识别。

3.4 LCD显示模块设计在单片机应用系统中,常用的显示设备有单个发光二极管、八段LED显示器、液晶显示器(LCD)、屏幕显示器(CRT)等。

在本次设计中,基于设计所要实现的功能和节约成本等实际情况,我采用LCD1602作为本次设计的显示器。

LCD1602是一种字符型液晶显示器,是一种专门用于显示字母、数字、符号等的点阵式液晶显示器。

LCD1602的显示容量为16x2个字符(可以显示2行,每行显示16个字符),芯片工作电压为4.5~5.5V,工作电流为2.0mA(5.0V),模块最佳工作电压是5.0V。

LCD1602具有16个引脚,如表3-1所示。

在LCD1602的有关设计中,主要是通过编写程序控制LCD1602的4、5、6引脚来实现数据或者指令的写入和执行,再通过数据或者指令的写入和执行来进一步实现LCD1602的显示功能。

图5 LCD模块仿真图三、关键部分程序分析报警子程序报警子程序的原理很简单,即当输入密码错误次数超过规定的最高允许次数时,不断给蜂鸣器脉冲,使其不断发音。

同时,由于CPU一直在给蜂鸣器提供脉冲,故无暇处理诸如密码扫描等事件,也就是说,在蜂鸣器报警的同时也屏蔽了键盘的输入。

本次设计中,密码输入错误次数不得高于3次。

键盘扫描子程序矩阵键盘扫描子程序应该具有以下2个基本的功能:(1)能判断是否有键按下;(2)能确定是哪个键被按下。

其软件管理主要分为以下三步来完成:(1)判断整个键盘是否有键按下。

让所有的行为0,然后读列的数值。

如果列的数值全部为1,说明没有键被按下,否则说明有键被按下。

(2)识别被按下的键的位置。

采用一行一行的扫描方法,逐行输出0,然后读列的值。

如果列的数值全部为1,说明不是这一行的按键被按下,扫描下一行,如果列的数值不全为1,则说明被按下的按键时在这一行。

(3)查键值表,返回键值对应信息,以便确定各按键应该完成的功能。

采用某种算法,将被按下的键所在的行和列的信息合并成为一个信息,该信息即为此键的键值。

用相同的方法给每一个键确定键值。

在给按键确定键值时必须采用同一种算法,并且计算出来的键值应该是互不相同的。

#include <reg51.h>#include <string.h>#include <intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned int#define NOP3() _nop_();_nop_();_nop_()uchar time_1s=0,i=0;uchar time_50ms=0;sbit rs=P2^2;sbit rw=P2^1;sbit e=P2^0;sbit SCL=P2^5;sbit SDA=P2^6;sbit P35=P3^5;sbit P36=P3^6;sbit P37=P3^7;uchar data kong[7]={'\0','\0','\0','\0','\0','\0',0};uchar data mima[7]={'1','2','3','4','5','6',0};uchar data mima0[7]={'\0','\0','\0','\0','\0','\0',0};uchar data mima1[7]={'\0','\0','\0','\0','\0','\0',0};uchar data mima2[7]={'\0','\0','\0','\0','\0','\0',0};uchar data mima3[7]={'\0','\0','\0','\0','\0','\0',0};uchar data table1[7]={'8','8','8','8','8','8',0};uchar code table2[15]="Enter Password:";uchar code table4[16]="Password Error!";uchar code table5[14]="Old Password:";uchar code table6[14]="New Password:";uchar code table7[12]="Enter Again:";uchar code table8[12]="Enter Error!";uchar code table9[15]="Modify Success!";uchar code table10[13]="Welcome back!";//***********************************//相关函数的声明//***********************************void delay1ms();void delay(uchar n);void write_1602com(uchar com);void write_1602dat(uchar dat);void initinal(void);bit lcdbusy();uchar key_scan();void enter_password(void); //功能:显示输入密码画面void password_error(void);//功能:显示输入密码错误后的画面void ok(void);//功能:显示输入密码正确后的画面void new_password(void);//功能:显示输入新密码的画面void enter_again(void);//功能:显示再次输入新密码的画面void enter_error(void);//功能:显示两次输入的密码不一样后的画面void modify_success(void);//功能:显示更改成功后的画面void welcome(void); //功能:显示欢迎画面void wtite_1602com(uchar com);void write_1602dat(uchar dat);/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delay(uchar n){ unsigned char i,x,y;for(i=0;i<n;i++){for(x=0;x<10;x++)for(y=0;y<33;y++); } }/*****************************************************函数功能:延时1ms***************************************************/void delay1(uchar n){ unsigned char i,j;for(i=0;i<n;i++){ for(j=0;j<10;j++)delay(10);} }/*****************************************************函数功能:定时器子函数,调用该函数可以计时***************************************************/void time( ){ TMOD = 0x01; //定时器0,工作方式1TH0 = (65536-50000)/256;TL0 = (65536-50000)%256; //50ms中断一次EA = 1;ET0 = 1;TR0 = 1;}/*****************************************************函数功能:定时函数,在一段时间内没有键按下则关闭显示器***************************************************/void time_1( ) interrupt 1{TH0 = (65536-65536)/256;TL0 = (65536-65536)%256;time_50ms++;if(time_50ms==20){time_1s++;time_50ms=0;}if(time_1s==20){write_1602com(0x01);write_1602com(0x0c);time_1s=0; while(1);}}//***********************************//功能:使蜂鸣器发音//***********************************void warn(){P37=1;NOP3();NOP3();NOP3();P37=0;NOP3();NOP3();NOP3(); }//***********************************//函数名:bit lcdbusy()//功能:检测忙标志//***********************************bit lcdbusy(){bit result; rs=0;rw=1;e=1;delay(1);result=(bit)(P0&0x80);e=0;return result;}//************************************************ //函数名:写命令函数//功能:调用该函数可能定义1602液晶显示器的各种命令//************************************************ void write_1602com(uchar com){while(lcdbusy());e=0; rw=0; rs=0;P0=com; delay(1);e=1; delay(1);e=0;}//************************************************* //函数名:写数据函数//功能:调入该函数可以向1602液晶显示器输入数据//************************************************* void write_1602dat(uchar dat){while(lcdbusy());e=0;rw=0;rs=1;P0=dat;delay(1);e=1;delay(1);e=0;}//************************************************** //函数名:初始化函数//功能:对1602液晶显示器进行初始化//**************************************************void initinal(void){rs=0;e=0;write_1602com(0x38); //数据总线为8位,显示2行,0=5×7点阵/每字符write_1602com(0x0f); //显示功能开,有光标,光标不闪烁write_1602com(0x06); //显示光标write_1602com(0x01); //清屏write_1602com(0x80);}//*********************************************//函数名:显示函数//功能:显示输入密码//*********************************************void enter_password(void){ uchar j;initinal();write_1602com(0x80);for(j=0;j<15;j++){write_1602dat(table2[j]);delay(10);}write_1602com(0xc0+0x0a);}//********************************************//函数名:显示函数//功能:显示输入密码错误后的画面//********************************************void password_error(void){uchar j;write_1602com(0x0c); //显示功能开,无光标write_1602com(0x80); //显示位置第一行第一列write_1602com(0x01);for(j=0;j<15;j++){write_1602dat(table4[j]);delay(10);}}//******************************************//函数名:显示函数//功能:显示输入旧密码的画面//******************************************void old_password(void){uchar j;initinal();write_1602com(0x80);for(j=0;j<14;j++){write_1602dat(table5[j]);delay(10);} write_1602com(0xc0+0x0a);}//******************************************//函数名:显示函数//功能:显示输入新密码的画面//******************************************void new_password(void){uchar j;initinal();write_1602com(0x80);for(j=0;j<14;j++){write_1602dat(table6[j]);delay(10);}write_1602com(0xc0+0x0a);}//******************************************//函数名:显示函数//功能:显示再次输入新密码的画面//******************************************void enter_again(void){uchar j;initinal();write_1602com(0x80);for(j=0;j<12;j++){write_1602dat(table7[j]);delay(10);}write_1602com(0xc0+0x0a);}//********************************************//函数名:显示函数//功能:显示两次输入的密码不一样后的画面//******************************************** void enter_error(void){uchar j;write_1602com(0x0c); //显示功能开,无光标write_1602com(0x80); //显示位置第一行第一列write_1602com(0x01);for(j=0;j<12;j++){write_1602dat(table8[j]);delay(10);}} //******************************************//函数名:显示函数//功能:显示更改成功之后的画面//******************************************void modify_success(void){uchar j;write_1602com(0x0c);write_1602com(0x80);write_1602com(0x01);for(j=0;j<15;j++){write_1602dat(table9[j]);delay(10);}}//******************************************//函数名:显示函数//功能:显示欢迎画面//******************************************void welcome(void){uchar j;write_1602com(0x0c); //显示功能开,无光标write_1602com(0x80); //显示位置第一行第4列write_1602com(0x01);write_1602com(0x80);for(j=0;j<13;j++){write_1602dat(table10[j]);delay(10);}}//**************************************************//函数名:键盘识别函数//功能:通过扫描对键盘进行识别//************************************************** uchar key_num(){uint temp,b;while(1){P1=0xfe; //开始扫描第一行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;if(temp!=0xf0){while(temp!=0xf0){temp=P1;temp=temp&0xf0;}switch(b){case 0xee: return '4';break;case 0xde: return '3';break;case 0xbe: return '2';break;case 0x7e: return '1';break;}}}P1=0xfd; //扫描第二行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;if(temp!=0xf0){while(temp!=0xf0){temp=P1;temp=temp&0xf0;}switch(b){case 0xed: return '8';break;case 0xdd: return '7';break;case 0xbd: return '6';break;case 0x7d: return '5';break;}}}P1=0xfb; //扫描第三行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;if(temp!=0xf0){while(temp!=0xf0){temp=P1;temp=temp&0xf0;}switch(b){ case 0xeb: return 'b';break;case 0xdb: return 'a';break;case 0xbb: return '0';break;case 0x7b: return '9';break;}}}}} /****************************************只扫描第四行,禁止数字键输入****************************************/uchar key_gn(){uint temp,b;while(1){P1=0xf7; //扫描第四行temp=P1;temp=temp&0xf0;if(temp!=0xf0){delay(1);temp=P1;b=temp;temp=temp&0xf0;if(temp!=0xf0){while(temp!=0xf0){ temp=P1;temp=temp&0xf0;}switch(b){case 0xe7: return 'f';break;case 0xd7: return 'e';break;case 0xb7: return 'd';break;case 0x77: return 'c';break;}}} }}/****************************************密码函数:将输入的密码写放进数组****************************************/uchar enter(uchar password[]){uchar m=0,j,back=0;for(m=0;;){j=key_num();time_50ms=0;time_1s=0;if(j>='0'&&j<='9'&&m<6){write_1602com(0x06);password[m]=j; m++;write_1602dat('*');}if(j=='a'){password[m+1]='\0';return 1;}if(j=='b'){if(m>0){write_1602com(0x11);write_1602dat(0x20);write_1602com(0x11);password[m]='\0';m--;}} }}/******************************************启动I2C总线函数******************************************/void Start(){ SCL=1;SDA=1;NOP3();SDA=0;NOP3();SCL=0;}/******************************************I2C停止******************************************/void Stop(){ SDA=0;SCL=1;NOP3();SDA=1;NOP3();}/******************************************发送应答位函数******************************************/void CHECK_ACK(){ SDA=0;NOP3();SCL=1;NOP3();SCL=0;NOP3();SDA=1;}/****************************************** 发送非应答位函数******************************************/ void CHECK_NACK(){ SDA=1;NOP3();SCL=1;NOP3();SCL=0;NOP3();SDA=0;}/****************************************** I2C初始化******************************************/ void Init_24cxx(){ SDA=1;NOP3();SCL=1;NOP3();}/****************************************** 读I2C函数******************************************/ uchar I2C_Read(){uchar i,temp;temp=0;SDA=1;SCL=0;for(i=0;i<8;i++){temp=temp<<1;SCL=1;NOP3();if(SDA==1){temp=temp+1;}NOP3();SCL=0; }return temp;}/****************************************** 写I2C函数******************************************/ void I2C_Write(uchar date1){uchar i,temp;temp=date1;SCL=0;for(i=0;i<8;i++){SDA=(bit)(temp&0x80);SCL=1;NOP3();SCL=0;temp=temp<<1;}NOP3();}/****************************************** 写相应地址的数据******************************************/ void Write_add(uint address,uchar date1){uchar addrh,addrl;addrh=address>>8;addrl=address%256;EA=0;Start();I2C_Write(0xa0);//发送命令字+芯片编号+P0+W CHECK_ACK();I2C_Write(addrh);//发高位地址CHECK_ACK();I2C_Write(addrl);//发低位地址CHECK_ACK();I2C_Write(date1);//发送数据CHECK_ACK();Stop();//停止EA=1;}/****************************************** 读相应地址的数据******************************************/ uchar Read_add(uint address){uchar addrh,addrl,temp;addrh=address>>8;addrl=address%256;EA=0;Start();I2C_Write(0xa0);CHECK_ACK();I2C_Write(addrh);//发高位地址CHECK_ACK();I2C_Write(addrl);//发低位地址CHECK_ACK();Start();I2C_Write(0xa1);CHECK_ACK();temp=I2C_Read();CHECK_NACK();Stop();EA=1;return temp;}/******************************************写数据函数:将数组写入AT24C02******************************************/void Write_nums(uchar table[]){int x=10;while(x--){ Write_add(0x00,table[0]); Write_add(0x00,table[0]);Write_add(0x10,table[1]); Write_add(0x10,table[1]);Write_add(0x20,table[2]); Write_add(0x20,table[2]);Write_add(0x30,table[3]); Write_add(0x30,table[3]);Write_add(0x40,table[4]); Write_add(0x40,table[4]);Write_add(0x50,table[5]); Write_add(0x50,table[5]);} } /****************************************主函数****************************************/void main(){ uchar k=0,j=0;// Write_nums(mima);mima[0]=Read_add(0x00);mima[1]=Read_add(0x10);mima[2]=Read_add(0x20);mima[3]=Read_add(0x30);mima[4]=Read_add(0x40);mima[5]=Read_add(0x50);time(); initinal();for(k=0;k<6;k++){mima0[k]=kong[k];}for(;strcmp(mima,mima0)!=0;){enter_password();enter(mima0);if(strcmp(mima,mima0)==0||strcmp(table1,mima0)==0){welcome();P36=0;delay1(20);if(strcmp(table1,mima0)==0)break;}else {password_error();for(k=0;k<6;k++){mima0[k]=kong[k];}i++;delay1(20);if(i>=5){write_1602com(0x01);write_1602com(0x0c);while(1)warn();}}} while(1){ j=key_gn();time_50ms=0;time_1s=0;if(j=='c'){ for(k=0;k<6;k++){mima1[k]=kong[k];}for(k=0;k<6;k++){mima2[k]=kong[k];}for(k=0;k<6;k++){mima3[k]=kong[k];}for(;strcmp(mima,mima1)!=0;){old_password();enter(mima1);if(strcmp(mima,mima1)==0||strcmp(table1,mima1)==0){new_password();enter(mima2);enter_again();enter(mima3);if(strcmp(mima2,mima3)==0){modify_success();for(k=0;k<6;k++){mima[k]=mima2[k];}Write_nums(mima);welcome();break;}else {enter_error();delay1(20);welcome();break;}} else{password_error();delay1(20);i++;if(i>=5){write_1602com(0x01);write_1602com(0x0c);while(1)warn();}} }} if(j=='d')P36=1; }}四、模拟仿真结果分析在PROTEUS中画出仿真电路图和在KEIL中编写出程序后,需要验证其正确性和可行性,最好的办法就是就它们联合起来仿真和调试。

相关文档
最新文档