版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机项目开发流程介绍1.确定设计任务确定待开发产品的功能、 所实现的指标、 成本,进行可行性分析。 这一过程要越详细越好, 不要在设计的半途才发现自己还不清楚到底 要设计一个怎样的产品, 而且相关技术标准的考察也要详细完备, 这 样才能选择恰当的单片机以及外围电路, 免得后来出现重大的设计失 误。另外还要估计设计的完成时间,这一步经常被忽视,许多工程师 并没有仔细地研究自己将要进行的项目,而是草草开工。2.总体设计明确设计任务后, 我们就可以进行总体方案的设计了, 这时候就 要根据产品功能确定需要的单片机, 选择时单片机的性能要能满足设 计任务,另外还要考虑到产品的功耗、使用环境等问题。3.
2、硬件设计根据功能确定各部分电路。绘制原理图及 PCB 图,选购元器件、 焊接线路板、组装、调试。4.软件设计 绘制流程图,进行资源分配及结构设计,确定算法及设计结构, 设计、编制各子程序模块,仿真、调试,固化。5.样机联调软硬件结合起来调试,找错、修改软硬件,进行软硬件调试,进 行老化实验;高、低温试验和振动试验6.送检完成样机联调后, 就要送到质检部或其他检验部门进行最后的功 能和性能检验。 质检部门有可能是公司内部的也有可能是专门的组织 机构。7.产品定型 编制使用说明书,技术文件,制定生产工艺流程,形成工艺,进 入小批量生产。整个过程有可能会有反复, 比如说第六步的送检没有通过, 就有
3、可能回到前面的几步,甚至是回到第一步。二.原理图设计规范原理图设计的基本要求是:图纸清晰、准确、规范、易读。1.文档相关要求(1) 按统一的要求选择图纸幅面、 图框格式、 电路图中的图形符号、 文字符号。( 2)各功能块布局要合理,整个原理图要布局均衡。(3) 将各功能部分模块化(比如单片机部分, A/D 转换部分, D/A 转换部分、电源部分等) ,各功能模块界线要清晰,方便读图。(4)元件标号按功能块进行标记,元器件明细表中不允许出现无型 号的器件。相同型号的元器件不允许采用不同的表示方法。元 件参数 /数值要准确标记。2.技术性质要求1)接插口(如电源,数据引线,接口等)尽量分布在图纸的
4、四周,示意出实际插口外型及每一个插脚的功能。(2)可调元件(如电位器),切换开关等对应的功能须标记清楚。( 3)每一部件(如 TUNER,IC 等)电源的去耦电阻 /电容需置于对 应插脚的就近处。( 4)滤波器件(如高 /低频滤波电容,电感)需置于作用部位的就近 处。(5)重要的控制或信号线需标明流向及用文字标明功能。(6) 重要器件(如接插座, IC,TUNER 等)外框用粗线(统一 0.5 mm)。(7) 信号完整性及电磁兼容性考虑。三.PCB 图设计规范PCB的设计流程可分为网表输入、规则设置、 元器件布局、布线、检 查、复查、输出等步骤。1.元器件布局的基本原则 遵循先难后易、先大后小
5、的原则。 布局可以参考原理图的大致的布局,根据信号流向规律放置主要 元器件。相同结构电路部分应尽可能采取对称布局。按照均匀分布、重心平衡、版面美观的标准来优化布局同类型的元件应该在 x 或 y 方向上一致。同一类型的有极性分立元件也要力争在 x 或 y 方向上一致,以便于生产和调试。 元器件布局时候,使用同一种电源的元件应考虑尽量放在一起, 以便于将来的电源分割。2.电子电路性能的考虑电源线和地线尽量加粗去耦电容尽量与 VCC 直接连接总的连线尽可能地短 ,关键信号线最短强信号、弱信号、高电压信号和弱电压信号要完全分开 高频元件的间隔要充分 模拟信号、数字信号分开,尽量远离 集成电路的去耦电容
6、应尽量靠近芯片的电源角,高频以最靠近为 原则。使之与电源和地之间形成的回路最短。旁路电容应均匀分布在集成电路周围。用于阻抗匹配目的的阻容器件的放置,应根据其属性合理布局。 匹配电容电阻的布局要分清楚其方法,对于多负载的终端匹配一 定要放在信号的最远端进行匹配。3.生产装配技术的考虑元件的放置要便于调试和维修,大元件边上不能放置小元件,需要调试的元件周围应有足够的空间,发热元件应有足够的空间以利于散热,热敏元件应远离发热元件。双列直插元件相互的距离要大于 2 毫米。电阻电容等贴片小元件 相互距离应大于 0.7 毫米。贴片元件焊盘外侧与相邻插装元件焊盘 外侧要大于 2 毫米。压接元件周围 5 毫米
7、内不可以放置插装元器 件。焊接面周围 5 毫米内不可以放置贴装元件。 所有标记字符不可以放在焊盘上,要保证装配以后还可以清晰地 看到字符信息。所有字符在 x 或 y 方向上应一致,字符大小应尽 量统一。在以后生产时需要采用自动生成技术的电路板,要放置 PCB 的 mark 点和预留生产工艺边框,这样方便自动生成技术的应用。四.汇编语言设计规范现在许多书籍中, 把软件设计成为软件工程。 软件设计如果不统 一编程规范, 则最终写出的程序可读性差, 这不仅给代码的理解带来 障碍,增减维护阶段的工作量, 同时不规范的代码隐含错误的可能性 也比较大。1.排版 程序块使用缩进方式,函数和标号使用空格缩进。
8、例如:ORG 0000HLJMP STARTORG 0030HSTART:CLR P1.0; P1.0 输出低电平“ 0”,让点亮发光二极管ACALLDELAY ;调用延时子程序延时一段时间, 让发光二极管亮段时间SETBP1.0; P1.0 输出高电平“ 1”,熄灭发光二极管ACALLDELAY; 调用延时子程序延时一段时间,让发光二极管熄灭一段时间AJMPSTART ;跳转到程序开头重复执行;*延时子程序 *DELAY:MOV R7, #255Y1:MOV R6, #255DJNZR6,$DJNZR7,Y1RET;延时子程序返回END;程序结束在指令的操作数之间的,使用空格进行间隔,采用这
9、种松散方式 编写代码的目的是使代码更兼清晰。例如:CJNE R2, #20H, LOOP一行最多写一条语句。变量定义时,保持对齐。便于阅读和检查内存的使用情况。例如:LEDEQU30H ;BEEPEQU31H ;FlagEQU32H ;2.注释 注释的原则是有助于对程序的阅读理解,注释不宜太多也不能太少。程序在必要的地方必须有注释,注释要准确、易懂、简洁。 而如下的注释则意义不大:MOV FLAG, #00H; 将 FLAG 赋值为 0 但如下的注释则给出了额外有用的信息: JNZ CHECK_Err ;假如校验出错 注释应与其描述的代码相近,对代码的注释应放在其上方或右方 (对单条语句的注释
10、)相邻位置,不可放在下面,如放于上方则 需与其上面的代码用空格隔开。头文件、源文件的头部,应进行注释。注释必须列出:文件名、 作者、目的、功能、修改日志等。子程序的头部应进行注释,列出:目的、功能、输入参数、输出 参数、涉及的通用变量和寄存器、调用的其他子程序和模块、修 改日志等。对重要代码段的功能、意图进行注释,提供有用的、额外的信息。 并在该代码段的结束处加一行注释表示该代码段结束。维护代码时,要更新相应的注释,删除不再有用的注释。保持代 码、注释的一致性,避免产生误解。3.命名常量的命名 常量的命名规则:单词的字母全部大写,各单词之间用下画线隔开。变量命名规定:V前缀+主体;注释 变量命
11、名要考虑简单、直观、不易混淆。 前缀是可选项,表示变量类型,主体是必选项。子程序的命名 单词首字母是大写,其余均为小写。子程序名应以一个动词开头,应 类似一个动词断语或祈使句。例如: Test_Protec,t Check_EEPROM,Init_Para4.关于缩写 标识符缩写形式如下的几种缩写技术。a.去掉所有不在词头的元首字母。如 screen写成scrn, primtive写成 prmv。b.使用每个单词的头一个或几个字母。如 Channel Activation 写成 Cha nActiv, Release In dicati on 写成 Rell nd。c.使用变量名中每个有典型意
12、义的单词。如 Count of Failure 写成 FailCnt。d.去掉无用的单词后缀ing,ed等。女口 Paging Request写成PagRec。e.使用标准的或惯用的缩写形式(包括协议文件中出现的缩写形式)。如 BSIC (Base Station Identification Code)、 MAP (MobileApplication Part)。缩写应该保持一致性。如 Channel不要有时缩写成Chan,有时缩 写成Ch。Length有时缩写成Len,有时缩写成len。五.C51 语言设计规范1. 注释文件(模块)起始注释内容 功能描述、版权、作者名称、修改时间、背景介绍
13、等,复杂的算法需 要加上流程说明,不同的公司会有不同的要求,但必须要有要求。 比如本书采用下面的格式: / / / / / / / / / / / / / / / / / / / / / / / / / / /功能描述:控制 LED 闪烁 / / 单片机: 51 系列单片机 / /晶振: 11.059MHz / /编写: hc / /日期: 2007 / /版本: V1.0/ / / / / / / / / / / / / / / / / / / / / / / / /函数开头的注释内容 函数名称、功能、说明输入、返回、函数描述、流程处理、 全局变量、其中变量数据类型:un sig nedch
14、ar 前缀 unsignedint 前缀 ui unsignedlong前缀 ulbit 前缀 bucsignedchar前缀 sc signedint 前缀 si signedlong 前缀 sl 指针前缀 p调用样例等,复杂的函数需要加上变量用途说明/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 函数名: LcdInit/ / 能描述: LCD 初始化/ / 全局变量:/ / 输入:无/ / 返回:无/ / / / / / / / / / / / / / / / / / / / / /
15、/ / / / / / / / / / / / / /程序中的注释内容 注释内容应简练、清楚、明了,一目了然的语句不加注释。 2. 命名 命名必须具有一定的实际意义。1)常量的命名:全部用大写。2)变量的命名:变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。例:ucReceivData接收数据(3)函数的命名: 函数名首字大写,若包含有两个单词的每个单词首字母大写。 函数原型说明包括: 引用外来函数及内部函数, 外部引用必须在右侧 注明函数来源:模块名及文件名, 内部函数,只要注释其定义文件名。3.编辑风格(1)缩进:缩进用Tab作为单位,一个Tab为四个
16、空格大小。预处 理语句、全局数据、函数原型、标题、附加说明、函数说明、 标号等均顶格书写。语句块的“ ”“ ”配对对齐,并与其前一 行对齐。( 2) 空 格:数据和函数在其类型,修饰名称之间适当空格并据情况 对齐。关键字原则上空一格,如:If ()等,运算符的空格规定如下:“一”、“”、“”、“+ “一一”、“”、“! ”、“ +”、“ - ”(指正负号),“ & ”(取地址或 引用)、“*”(指使用指针时)等几个运算符两边不空格(其中 单目运算符系指与操作数相连的一边) ,其他运算符(包括大多 数二目运算符和三目运算符) ,“?:”两边均空一格,“(”、“) 运算符在其内侧空一格,在做函数定
17、义时还可据情况多空或不 空格来对齐,但在函数实现时可以不用。 “,”运算符只在其后 空一格,须对齐时也可不空或多空格,对语句行后加的注释应 用适当的空格与语句隔开并尽可能对齐。(3) 对齐:原则上关系密切的行为对齐,对齐包括类型、修饰、名 称、参数等各部分对齐。 另外每一行的长度不应超过屏幕太多, 必要时适当换行,换行时尽可能在“, ”处或运算符处,换行后 最好以运算符大头,并且以下各行均以该句首行缩进,但该语 句仍以首行的缩进为准,即如其下一行为“ ”应为首行对齐。(4)空行:程序文件结构各部分之间空两行,若不必要也可只空一 行,各函数实现之间一般空两行。(5)修改:版本封存以后的修改一定要
18、将老语句用 /*/ 封闭,不能自 行删除或修改,并要在文件及函数的是修改记录中加以记录。(6)形参:在定义函数时,在函数名后面括号中直接进行形式参数 说明,不再另行说明。4.可维护性(1)语句嵌套层次不得超过 5 层。嵌套层次太多,增加了代码的复 杂度及测试的难度,容易出错,增加代码维护的难度。(2)避免相同的代码段在多个地方出现。当某段代码需要在不同的 地方重复使用时,应根据代码段的规模大小使用函数,调用或 宏调用的方式代替。 这样,对该代码段的修改就可在一处完成, 增强代码的可维护性。(3)每个函数完成单一的功能,不设计多用途面面俱到的函数。多 功能集于一身的函数,很可能使函数的理解、测试
19、、维护等变 得困难。 使函数功能明确化, 增加程序可读性, 亦可方便维护、 测试。5.程序正确性和效率( 1)严禁使用未经初始化的变量 引用未经初始化的变量可能会产生不可预知的后果, 特别是引用未经 初始化的指针经常会导致系统崩溃,需特别注意。(2)防止数据存储器的操作越界。数据存储器的操作越界是软件系 统主要错误之一,后果往往非常严重。(3)这样变量的有效取值范围,防止表达式出现上溢或下溢。(4)防止易混淆的指令和操作数拼写错误。(5)避免函数中不必要语句,防止程序中的垃圾代码,预留代码应以注释的方式出现。程序中的垃圾代码不仅占用额外的空间,而且还常常影响程序的功能与性能,很可能给程序的测试
20、、维 护等造成不必要的麻烦。(6)通过对系统数据机构的划分与组织的改进,以及对程序算法的优化来提高空间效率。这种方式是解决软件空间效率的根本办 法。(7) 在多重循环中,应将最忙的循环放在最内层。( 8)避免循环体内含判断语句,将与循环变量无关的判断语句移到循环体外。目的是减少判断次数。循环体中的判断语句是否可以移到循环体外,要视程序的具体情况而言,一般情况,与循环变量无关的判断句可以移到循环体外,而有关的则不可以。( 9)中断和恢复,中断程序应该尽量短,应该在中断中进行标记,在主程序中处理,但实时性很高的程序段例外。中断时应该保存所有涉及的通用变量和寄存器,如 A , PSW,DPTR 等。
21、10) 堆栈设置堆栈对于程序非常重要,对于堆栈的设置要合理。堆栈大小,在 嵌套调用和容易溢出,造成系统故障;堆栈太大,浪费 RAM 资源。 为了节约堆栈资源, 中断时要求不要保存太多资源, 中断嵌套和程序 嵌套层数不要太多, 尽量不要超过 5 层。着就要求合理的划分功能模 块。(11) 看门狗电路 看门狗电路用于在单片机死机时自动复位。 单片机需要定时向看门狗 发送脉冲,俗称“喂狗”。喂狗不可太勤,这样看门狗没有起到作用; 也不可太慢, 这样容易造成单片机复位。 正确的喂狗应该在主循环中 进行,最好是建立一个和独立的系统监控进程。 不可以在定时中中断 中喂狗,因为单片机有时可能会在主循环中死掉
22、。6.接口(1)去掉没有必要的公共变量,编程时应尽量少用公共变量。公共 变量是增大模块间耦合的原因之一,故应减少没必要的公共变 量以降低模块间的耦合度。应该构造仅有一个模块或函数可以 修改、创建,而其余有关模块或函数只访问的公共变量,防止 多个不同模块或函数都可以修改、创建同一公共变量的现象。(2)当向公共变量传递数据时,要防止越界现象发生。对公共变量 赋值时,若有必要应进行合法性检查,以提高代码的可靠性、 稳定性。(3)尽量不设计多参数函数,将不使用的参数从接口中去掉,降低 接口复杂度,减少函数间接口的复杂度。4)对所调用函数的返回码要仔细、全面地处理。防止把错误传递到后面的处理流程。如有意不检查其返回码,应明确指明。(5)检查接口函数所有输入参数的有效性。( 6)检查函数的所有非参数输入,如外部数据、公共变量等。7.代码可测性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025网站广告项目合同详细样本
- 2025关于保姆雇佣合同范本
- 2025年度产学研联合培养人才合作协议书4篇
- 二零二五年度银行间存款代理合同标准范本4篇
- 2025铝合金门窗合同(建创)
- 2025年度绿色节能建筑成套配电箱采购规范合同3篇
- 二零二五年度床上用品品牌形象设计合同8篇
- 2025年洗车服务行业环保污水处理设施建设合同3篇
- 2025年度木材厂租地合同与林业生态旅游合作3篇
- 二零二五年度园林景观植物虫害防治管理协议4篇
- 道路沥青工程施工方案
- 《田口方法的导入》课件
- 内陆养殖与水产品市场营销策略考核试卷
- 票据业务居间合同模板
- 承包钢板水泥库合同范本(2篇)
- DLT 572-2021 电力变压器运行规程
- 公司没缴社保劳动仲裁申请书
- 损伤力学与断裂分析
- 2024年县乡教师选调进城考试《教育学》题库及完整答案(考点梳理)
- 车借给别人免责协议书
- 应急预案评分标准表
评论
0/150
提交评论