软件设计文档模板11.docx
- 文档编号:14571520
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:20
- 大小:676.86KB
软件设计文档模板11.docx
《软件设计文档模板11.docx》由会员分享,可在线阅读,更多相关《软件设计文档模板11.docx(20页珍藏版)》请在冰点文库上搜索。
软件设计文档模板11
************************************
控制软件
设
计
说
明
书
目录
1摘要3
1.1编写目的3
1.2背景3
1.3参考资料3
2程序系统的结构.4
3主要函数模块(标识符)设计说明9
3.1主要函数控制模块9
3.2主要函数功能模块………………………………………………………………………11
3.3程序流程逻辑15
3.4程序的存储分配18
3.5函数注释设计18
3.6限制条件18
3.7测试条件18
1摘要
1.1编写目的
概要说明书的目的是为了定义************控制软件操作流程的体系结构,将软件系统需求转换为系统的设计要求,逐步开发强壮的系统构架,使设计适合于实施环境,为提高性能而进行设计。
描述组成的各个部分之间的相互关系和它们之间的通信,同时便于软件的详细设计和编程。
目的在于:
为设计人员提供详细的设计依据;
为修改、维护提供便利条件;
项目负责人将按计划书的要求布置和控制开发工作全过程;
项目质量保证组将按此计划书做阶段性和总结性的质量验证和确认
1.2背景
项目名称:
**************控制软件
项目开发单位:
**********有限公司
本说明书的预期读者包括:
Ø项目开发人员;
Ø技术管理人员;
Ø软件质量保证技术计划的专业人员;
Ø参与本项目开发进程各阶段验证,确认以及最后项目验收,坚定提供相应报告的相关人员;
Ø合作各方有关部分负责人,项目小组负责人与全体项目成员。
1.3参考资料
部分关键技术参考资料:
GB8566-1995软件生存期过程
GB8567-88计算机软件产品开发文件编制指南
GB/T11457-1995软件工程术语
XML:
http:
//www.w3.org/XML/
2程序系统的结构
图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间
的层次结构关系。
图表1:
主程序和其它程序之间的关系(主程序调用其它程序中的功能模块)
图表2:
主程序及主程序中各个功能模块之间的执行关系
图表3:
系统初始化程序中各个功能模块
图表4:
**********程序及程序中各个功能模块之间关系
图表5:
************程序及程序中各个功能模块之间关系
图表6:
************程序及程序中各个功能模块之间关系
图表7:
**********程序及程序中各个功能模块之间关系
图表8:
系统菜单程序及程序中各个功能模块之间关系
图表9:
注册用户程序及程序中各个功能模块之间关系
图表10:
删除用户程序及程序中各个功能模块之间关系
图表11:
密码修改程序及程序中各个功能模块之间关系
图表12:
系统设置程序及程序中各个功能模块之间关系
3主要函数模块(标识符)设计说明
针对主程序中的控制、功能模块,做出了以下的说明。
对于控制、功能模块下的具体子函数,其很多条目的内容往往与它所隶属的上一层模块的对应条目的内容相同,在这种情况下,简单地说明这一点即可。
3.1主要函数控制模块
while
(1)
{
_WDR();
if(Check_Huagai_Off_Program()==true)//滑盖合上了吗?
Sleep_Operate3();
_CLI();
Send_W25Q16BV_Order_Or_Data_Byte(Release_power);//发送Flash退出POWER_DOWN模式命令
contr_SPI_CS|=1< _SEI(); for(temp=0;temp<19;temp++)//延时 { _WDR(); _NOP(); } if(use_demo_sign==false)//演示模式 { Mode_Select_Operate();//模式选择处理程序 } Else//使用模式 { Huagai_Opened_Program();//滑盖打开操作程序 } Sleep_Operate3(); } 该段程序位于主程序中。 其功能是循环判断的方式,确定系统需要执行的操作,Sleep_Operate3()使系统进入掉电模式,以降低系统功耗,外部中断唤醒系统,重新进入循环判断 Mode_Select_Operate();//模式选择处理程序 该函数就是一级子函数。 该函数对应的操作是根据内部EEPROM的标志位判断执行演示模式还是使用模式的相关操作 voidUse_Mode_Operate(void) { _WDR(); temp=Set_Day_Time_Program (1); if(temp! =ACK_SUCCESS)return; if(Check_Huagai_Off_Program()==true)//滑盖合上了吗? return; Clear_Screen_Buffer_Program(); Infilling_Character_String(36,2,common,chu_ci_shi_yong);//初次使用 Infilling_Character_String(43,4,common,qing_xiu_gai);//请修改 Infilling_Character_String(29,6,common,guan_li_yuan_mi_ma);//管理员密码 Full_Screen_Buffer_Program(); Delay_1s(); temp=Add_Change_The_Password(add_password,administrator); if(temp! =ACK_SUCCESS)return; if(temp==ACK_SUCCESS) { _WDR(); _CLI(); eedata_use_sign=No_Null; __EEPUT(use_sign_addr,eedata_use_sign);//将非空标志写入地址 use_demo_sign=true; _SEI(); } if(Check_Huagai_Off_Program()==true)//滑盖合上了吗? return; } 该函数即为二级子函数。 该函数就是当判断EEPROM中的数据后,执行使用模式的操作,用来注册管理员用户的 密码,在注册成功后相应标志位会清除,系统下次使用时模式选择不再执行。 3.2主要函数功能模块 ;---------------------------录入/修改密码子程序------------------------------ ucharAdd_Change_The_Password(ucharadd_change_password,ucharpw_type) { _WDR(); if(add_change_password==add_password) { Clear_Three_Quarter_Screen_Buffer_Program(); if((language_sign! =English)||(language_sign==Chinese)) { Infilling_Character_String(29,3,common,qing_shu_ru_mi_ma);//请输入密码。 Infilling_Character_String(53,5,common,liang_ci);//2次。 } Three_Quarter_Screen_Buffer_Program(); Delay_1s();//延时1S。 if(Check_Huagai_Off_Program()==true)//滑盖合上了吗? { returnACK_TIMEOUT1; } } Disp_Add_Password_ID(add_change_password,1); count=0x00; T_sleep=0; p=password1; while(! (Chek_Outtime1())) { if(Check_Huagai_Off_Program()==true)//滑盖合上了吗? { returnACK_TIMEOUT1; } key_temp=Check_Key_Board_Program(); Delay_10ms();//延时10MS。 if((key_temp! =key_false)&&(key_temp! =key_error)) { key_sign1=true; key_name1=key_temp; } if(key_sign1==true) { key_sign1=false; if(key_name1==key_enter) { _WDR(); T_sleep=0; key_name1=key_false; if(count==0x00) { Key_Bell(); Delay_10ms();//延时10MS。 key_name1=key_false; returnQuit; } if((count==6))//第一次密码输入结束 { count++; p=password1+6; Disp_Add_Password_ID(add_change_password,2); Add_Bell(); Delay_10ms();//延时10MS。 } elseif(count==13)//第二次输入结束 { if((password1[0]==password1[6])&&(password1[1]==password1[7])&& (password1[2]==password1[8])&&(password1[3]==password1[9])&& (password1[4]==password1[10])&&(password1[5]==password1[11]))//两次输入相同 { password1[0]=((password1[0]<<4)|password1[1]); password1[1]=((password1[2]<<4)|password1[3]); password1[2]=((password1[4]<<4)|password1[5]); Clear_Three_Quarter_Screen_Buffer_Program(); if(add_change_password==add_password) Infilling_Character_String(34,4,common,tian_jia_cheng_gong);//添加成功。 Infilling_Character_String(90,4,common,gan_tan_hao);//"! " if(add_change_password==change_password) Infilling_Character_String(21,4,common,xiu_gai_cheng_gong);//密码修改成功 Three_Quarter_Screen_Buffer_Program(); Delay_10ms();//延时0MS。 Success_Bell(); Save_Password(pw_type,password1); Delay_10ms();//延时10MS。 returnACK_SUCCESS; } else//两次输入密码不相同 { p=&password1[0]; count=0; Clear_Three_Quarter_Screen_Buffer_Program(); if((language_sign! =English)||(language_sign==Chinese)) { Infilling_Character_String(36,4,common,mi_ma_cuo_wu);//密码错误。 Infilling_Character_String(32,6,common,chong_xin_shu_ru);//请重新输入。 } Three_Quarter_Screen_Buffer_Program(); Delay_10ms();//延时d*10MS。 Failure_Bell(); Delay_1s();//延时1S。 Disp_Add_Password_ID(add_change_password,1); Delay_10ms();//延时10MS。 } } else_NOP(); } if(key_name1==key_c) { _WDR(); T_sleep=00; key_name1=key_false; if((count==0)||(count==7)) { Key_Bell(); returnQuit; } if(count<=6) { p=password1; count=0; Disp_Add_Password_ID(add_change_password,1); Key_Bell(); Delay_10ms();//延时10MS。 } if((count>7)&&(count<=13)) { p=password1+6; count=7; Disp_Add_Password_ID(add_change_password,2); Key_Bell(); Delay_10ms();//延时10MS。 } } if(key_name1<=9) { T_sleep=00; if((count==6)||(count==13))continue; *p++=key_name1; count++; if(count<=6) { Gotoxy((count-1)*9,6); Display_Char(reverse,Number_X[password1[count-1]]); Key_Bell(); Delay_10ms();//延时10MS。 continue; } temp=count-7; Gotoxy((temp-1)*9,6); Display_Char(reverse,Number_X[password1[count-2]]); Key_Bell(); _WDR(); Delay_10ms();//延时10MS。 key_name1=key_false; } } } returnACK_TIMEOUT1; } 以上函数为添加/修改密码函数功能模块。 通过3×4键盘输入6位密码,每添加一个密码需输入两次,系统自动对比两次的输入是否一致,若一致则密码添加成功并保存,若两次不一致,系统会提示密码输入错误,要求重新输入。 3.3程序流程逻辑 主程序流程图 模式选择程序流程图 打开滑盖处理程序流程图 3.4程序的存储分配 程序位于MCU的内部ROM中 变量位于内部的SRAM中 特殊标志位位于内部EEPROM中 显示字库位于外部Flash中 3.5注释设计 ;----------Delay------------------------------------------------------------- ;延时程序 Delay_10ms();//延时10MS 在参数定义之前会有分隔符和一些说明文字标明以下定义的功用;同时在一些重要语句后面会有用“//”隔开的注释说明。 这些注释是阐述下面代码的总定义和该行语句对应的功能。 便于程序员调试和在此基础上进行二次开发。 3.6限制条件 工作电源: DC4-6V 静态电流: <10ua 工作温度: -40~60℃ 3.7测试条件 测试电源: DC4-6V 测试温度: 室温25摄氏度 :
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 文档 模板 11