您好,欢迎来到品趣旅游知识分享网。
搜索
您的当前位置:首页《小型智能电子产品开发》自编讲义

《小型智能电子产品开发》自编讲义

来源:品趣旅游知识分享网


吴加国 编著

《小型智能电子产品开发》讲义

第1单元 编写项目任务书

1.1 用户要求

用户(产品开发委托方)要求就是用户提出的,对产品功能和技术指标的要求。例如某个用户提出《智能数显时间继电器》产品的要求如下:

工作电压:AC220V,允许电压波动范围为(85-110%) Ue; 延时范围:0.01s-99.99s,1s-99min99s,1min-99h99min;(可设置) 重复误差:延时范围大于1s时,Er(相对误差)≤1%; 延时范围小于1s时,Dr(绝对误差)≤50ms 工作模式:通电延时

触点数量:2组延时触点转换(带复位、起动功能) 触点容量:3A AC250V(阻性) 电寿命:1X105次

安装方式:面版式、导轨式、装置式

1.2 目标分析

根据用户要求,分析实现产品功能和技术指标的。例如《智能数显时间继电器》的目标分析如下:

1、接线图,如图1-1所示。

图1-1接线图

2、面板功能布局图,如图1-2所示。

图1-2面板功能布局图

3、面板功能说明如下: “R”健:

1)复位功能:按此键对计时显示的数字及计时输出状态进行复位,恢复到初始状态。 2)确认功能:时间参数设置完毕后,必须按此键确认。 “M”健:连续按动“M”键,参数设定依次出现下列莱单设置值:“P0”、“P1”、“P2”,但“P0”不显示。

1)P1---S: 延时范围0.01s~99.99s; 2)P1---A: 延时范围1s~99min99s; 3)P1---H: 延时范围1min~99h99min; 4)P2---U:正计时; 5)P2---D:倒计时; “”位移键:时间参数设置过程中,按此键选择某种功能中需要调整设置的参数。

“▲”增量键:按此键对选中的项目进行加数,实现递增变化。 启动:按下启动键开始计时。

暂停:计时过程中,启动键放开暂停计时,再次按下则累计计时。 4、继电器重复起动间隔时间应≥0.5s。

5、在强电场环境下“复位”和“起动”连接导线较长时,请使用屏蔽导线,且“复位”与“起动”端子切勿输入电压,以免损坏产品。

1.3 编写任务书

每个应用项目在正式动手进行设计前,应该认真进行目标分析,编写出设计任务书。编写任务书时必须以用户的愿望为依据,最后必须得到用户的完全认可。如果产品开发委托方与设计方不是同一个经济核算单位,还要签定技术开发合同,以保护双方的权利和义务。

1.4 编写、签订技术合同

技术合同是当事人就技术开发、转让,咨询或者服务订立的确立相互之间权利和义务的合同。

技术合同分为四类: (1)技术开发合同 (2)技术转让合同 (3)技术咨询合同 (4)技术服务合同。

技术合同可以分为多种,技术开发合同、技术转让合同与技术咨询和服务合同各具特征,但作为技术合同的一种,都具有以下特征:

(1)技术合同的标的不是一般的商品或劳务,而是凝聚着人类智慧的创造性的技术成果。 (2)技术合同的至少一方当事人是能够利用自己的技术力量从事技术开发、技术转让、提供技术咨询和服务的法人或自然人,其主体一方具有特定性。

(3)技术合同反映了技术成果在交换领域的债权关系,因此技术合同要接受合同法的调整;由于技术合同又是基于技术的开发、转让、服务而产生的合同关系,因而在技术成果所有权等方面要接受知识产权制度的调整。

(4)技术合同是双务、有偿合同。在技术合同中,当事人双方都承担相应的义务,因此是双务合同。技术合同当事人一方从对方取得利益的,须向对方支付一定的代价,因此是有偿合同。

通常技术合同都有主管部门监制的范本,如下所示:

合同编号:

技术开发(委托)合同

项目名称: 用简明、准确的文字表达合同的标的和名称

委托方(甲方):用《企业法人营业执照》规定的法定名称(买方)

受托方(乙方):用《企业法人营业执照》规定的法定名称 (卖方)

签订时间:如果没有时间约定,就无法确认合同的履行和有效 签订地点:涉及发生争议后的法律管辖 有效期限:涉及发生争议后的诉讼时效

中华人民共和国科学技术部印制

填 写 说 明

一、本合同为中华人民共和国科学技术部印制的技术开发(委托)合同示范文本,各技术合同认定登记机构可推介技术合同当事人参照使用。 二、本合同书适用于一方当事人委托另一方当事人进行新技术、新产品、新工艺或者新材料及其系统的研究开发所订立的技术开发合同。 三、签约一方为多个当事人的,可按各自在合同关系中的作用等,在“委托方”、“受托方”项下(增页)分别排列为共同委托人或共同受托人。 四、本合同书未尽事项,可由当事人附页另行约定,并可作为本合同的组成部分。

五、当事人使用本合同书时约定无需填写的条款,应在该条款处注明“无”等字样。

技术开发(委托)合同

委托方(甲方):用《企业法人营业执照》规定的法定名称(买方) 住 所 地:用《企业法人营业执照》规定的住所地 法定代表人:《企业法人营业执照》规定的法定代表人姓名 项目联系人: 项目方指定的项目具体联系人 联系方式 :是指信函、传真、电话、邮箱或项目联系人等 通讯地址: 最便于联系的通讯地址 电话: 传真: 电子信箱: 受托方(乙方):用《企业法人营业执照》规定的法定名称(卖方) 住 所 地: 用《企业法人营业执照》规定的住所地 法定代表人: 用《企业法人营业执照》规定的法定代表人名称 项目联系人: 让与方指定的项目联系人 联系方式 : 是指信函、传真、电话、邮箱或项目联系人等 通讯地址:最便于联系的通信地址 电话: 传真: 电子信箱: 本合同甲方委托乙方研究开发 例如,一种计算机控制软件;一种新型配方 项目,并支付研究开发经费和报酬,乙方接受委托并进行此项研究开发工作。双方经过平等协商,在真实、充分地表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议,并由双方共同恪守。 第一条 本合同研究开发项目的要求如下:

1.技术目标: ①新产品开发;②新工艺开发;③新材料开发;④新的技术系统开发;⑤其它原创性的技术开发;⑥达到某某技术标准的新技术或新产品。

2.技术内容: ①所属技术领域;②小试、中试、扩试等阶段性技术成果;③商业化生产的技术成果(也称工业化生产);④技术文件:技术图纸、工艺、配方、标准、计算机软件程序等;⑤理论知识、方法或者产业技术。 3.技术方法和路线: ①总体技术改造;②研制新设备;③研制试验装备;④消化、吸收、仿制的新技术;⑤编制软件程序;⑥设计工艺路线;⑦设计;⑧治理污染、环境保护;⑨提高工作效率等。 第二条 乙方应在本合同生效后 Ⅹ 日内向甲方提交研究开发计划。研究开发计划应包括以下主要内容:

1. 阶段性计划内容,第1、2、3、------阶段 2. 项目开始之日、阶段性目标、项目完成之日 3. 具体进度 第三条 乙方应按下列进度完成研究开发工作:

1. 总体计划Ⅹ年Ⅹ月Ⅹ日至Ⅹ年Ⅹ月Ⅹ日 2. 阶段性时间分配,第1、2、3、------阶段 3. 达到的计划目标Ⅹ年Ⅹ月Ⅹ日至Ⅹ年Ⅹ月Ⅹ日 第四条 甲方应向乙方提供的技术资料及协作事项如下: 1.技术资料清单: ①基础技术资料;②有关背景技术资料;③目前技术的基础状态、状况和技术水平;④相关技术标准;⑤样机或者样品;⑥其它相关技术信息。

2.提供时间和方式:何时何地;①当事人当面交付②委托第三人交付;③邮寄

3.其他协作事项: ①需要另一方协助的事项;②另一方必须给予帮助才能完成的,另一方就必须给予帮助或协助。

本合同履行完毕后,上述技术资料按以下方式处理: ①退回当事人一

方;②留下自行处理;③在Ⅹ年内保存,不得丢失;③各自存档保管 第五条 甲方应按以下方式支付研究开发经费和报酬:

1.研究开发经费和报酬总额为 人民币ⅩⅩ元;或美元ⅩⅩ元 其中:(1)委托人向研究开发人约定支付的研究开发经费和报酬 (2)经费是从事研究开发的(包括设备或仪器)投入,占总额Ⅹ%,合计人民币Ⅹ元

(3)报酬是为他人付出劳动所得,占总额Ⅹ%,共计人民币Ⅹ元

(4)为他人付出劳动所得,占总额Ⅹ%,共计人民币Ⅹ元 2.研究开发经费由甲方 Ⅹ (一次、分期或提成)支付乙方。具体支付方式和时间如下:

(1)一次性支付:Ⅹ年Ⅹ月Ⅹ日至Ⅹ年Ⅹ月Ⅹ日支付;银行转账、托收或现金支付Ⅹ元

(2)分期支付:①Ⅹ年Ⅹ月Ⅹ日,银行转账、托收或现金支付Ⅹ元;②Ⅹ年Ⅹ月Ⅹ日,银行转账、托收或现金支付Ⅹ元

(3)提成支付:①提成支付计算方式;②支付时间:Ⅹ年Ⅹ月Ⅹ日,银行转账、托收或现金支付Ⅹ元

(4)双方约定Ⅹ年Ⅹ月Ⅹ日通过第三方向乙方支付:银行转帐、托收或现金支付

乙方开户银行名称、地址和帐号为:

开户银行: 地址: 帐号: 3.双方确定,甲方以实施研究开发成果所产生的利益提成支付乙方的研究开发经费和报酬的,乙方有权以 ①合同约定监督;②每月、季、半年一次的;③双方约定的第三方负责监督 的方式查阅甲方有关的会计帐目。

第六条 本合同的研究开发经费由乙方以 ①自由合理支配;②按照合同约定专款专用;③保证开支经济合理 的方式使用。甲方有权以 ①合同约定监督研究开发进度;②合同约定的第三方负责监督;③有知情权 的方式检查乙方进行研究开发工作和使用研究开发经费的情况,但不得妨碍乙方的正常工作。

第七条 本合同的变更必须由双方协商一致,并以书面形式确定。但有下列情形之一的,一方可以向另一方提出变更合同权利与义务的请求,另一方应当在 Ⅹ 日内予以答复;逾期未予答复的,视为同意:

1.发生了使合同基础发生变化的客观情况 2.主要人员变动、国家变动等使原合同的继续履行显失公平或合同无法履行

3.法律法规规定的合同可以变更的情形出现 4.考虑双方合作过程中可能发生的变更,为维护双方利益,应留下空间

第 未经甲方同意,乙方不得将本合同项目部分或全部研究开发工作转让第三人承担。但有下列情况之一的,乙方可以不经甲方同意,将本合同项目部分或全部研究开发工作转让第三人承担:

1. 不涉及和损害甲方技术权益、经济利益和商业秘密,如本合同的 2.例如:主管技术的项目负责人变动、国家重大产业计划变动、 显失公平等情况

3.考虑技术进步的发展,独家难以承担一个完整的项目,这里就有对外合作问题

乙方可以转让研究开发工作的具体内容包括: ①不涉及本项目技术权益的;②不属于本项目核心技术的,实属S类或Z类技术。 第九条 在本合同履行中,因出现在现有技术水平和条件下难以克服的技术困难,导致研究开发失败或部分失败,并造成一方或双方损失的,

Z类技术和S类工艺

双方按如下约定承担风险损失: ①双方约定承担,约定优先;②合同无约定,由当事人合理分担,合理分担不等与平均分担;③当事人可以约定一定数量的资金作为承担未来可能发生的风险损失。 双方确定,本合同项目的技术风险按 ①当事人认可的专家权威机构确的方式认定。认定技术风险的基本内容应当包括技术风险的存在、范围、程度及损失大小等。认定技术风险的基本条件是:

1. 本合同项目在现有技术水平条件下具有足够的难度; 2. 乙方在主观上无过错且经认定研究开发失败为合理的失败。 一方发现技术风险存在并有可能致使研究开发失败或部分失败的情形时,应当在 Ⅹ 日内通知另一方并采取适当措施减少损失。逾期未通知并未采取适当措施而致使损失扩大的,应当就扩大的损失承担赔偿责任。

第十条 在本合同履行中,因作为研究开发标的的技术已经由他人公开(包括以专利权方式公开),一方应在 Ⅹ 日内通知另一方解除合同。逾期未通知并致使另一方产生损失的,另一方有权要求予以赔偿。 第十一条 双方确定因履行本合同应遵守的保密义务如下: 甲方:

1. 保密内容(包括技术信息和经营信息): ①涉及本合同的技术文件、资料、经营信息和商业秘密;②未经乙方同意不得对外转让或泄露。

认;②国家或地方指定机构;③当事人约定几名专家确认;

2.涉密人员范围:直接或间接涉及本合同技术的有关人 。 3.保密期限:①依法保密;②约定保密期限,约定优先,但此约定不得违背国家有关规定③无保密期限 。 4.泄密责任:①当事人合同约定优先;②依照法律法规承担责任。 乙方:

1. 保密内容(包括技术信息和经营信息): ①涉及本合同的技术文件、资料、经营信息和商业秘密;②本合同技术标的及应用方向;③本技术的

销售市场和方向 。 2.涉密人员范围: ①直接或间接涉及本合同技术的有关人员;②乙方的研究开发人员;③涉及与该技术成果的相关人员。 3.保密期限:①依法保密;②约定保密期限,约定优先,但此约定不得违背国家有关规定③无保密期限 4.泄密责任:①当事人合同约定优先;②依照法律法规承担责任。 第十二条 乙方应当按以下方式向甲方交付研究开发成果: 1.研究开发成果交付的形式及数量: ①约定交付的形式与数量;②双方当事人举行交付签字形式;③交付时双方的书面认可。 第十三条 双方确定,按以下标准及方法对乙方完成的研究开发成果进行验收: ①不得使用淘汰或禁止的标准;②约定的标准和方法;③约定使用国际标准、国家标准、专业标准、企业标准或者其他国外标准等;④无标准的,按行业的一般要求鉴定;⑤方法:专家评议、国家规定的部门检测结论、鉴定会或双方认可的方式。 第十四条 乙方应当保证其交付给甲方的研究开发成果不侵犯任何第三人的合法权益。如发生第三人指控甲方实施的技术侵权,乙方应当 ①承担甲方由此而产生的经济损失和其它责任;②本约定具有溯及力合同结束后,本约定仍然有约束力 。 第十五条 双方确定,因履行本合同所产生的研究开发成果及其相关知识产权权利归属,按下列第 1或2 种方式处理:

1. Ⅹ (甲、乙、双)方享有申请专利的权利。

专利权取得后的使用和有关利益分配方式如下: ①研究开发人员取得专利权,委托人可以免费实施该专利;②研究开发人转让专利申请权,委托人享有同等条件的优先受让(购买)的权利;③专利权为双方共有,利益归双方共有;④允许当事人的其它约定。 2.按技术秘密方式处理。有关使用和转让的权利归属及由此产生的利益按以下约定处理:

2.研究开发成果交付的时间及地点: Ⅹ年Ⅹ月Ⅹ日在ⅩⅩ地交付 。

(1)技术秘密的使用权:①甲方;②乙方;③双方共有 (2)技术秘密的转让权:①甲方;②乙方;③双方共有 (3)相关利益的分配办法:①归实施方所有;②双方按比例分享;③双方均有。 双方对本合同有关的知识产权权利归属特别约定如下: ①双方约定,约定优先;②如无约定则按法律的有关规定。 第十六条 乙方不得在向甲方交付研究开发成果之前,自行将研究开发成果转让给第三人。

第十七条 乙方完成本合同项目的研究开发人员享有在有关技术成果文件上写明技术成果完成者的权利和取得有关荣誉证书、奖励的权利。 第十 乙方利用研究开发经费所购置与研究开发工作有关的设备、器材、资料等财产,归 Ⅹ (甲、乙、双)方所有。 第十九条 双方确定,乙方应在向甲方交付研究开发成果后,根据甲方的请求,为甲方指定的人员提供技术指导和培训,或提供与使用该研究开发成果相关的技术服务。

1.技术服务和指导内容:甲方技术人员和主要操作人员掌握该技术成果,包括设计指导、技术指导、工艺方法指导、技术培训与授课讲座。 2:地点和方式: ①合同约定地点;②甲方住所地;③乙方住所地;方式:培训、现场指导。 3.费用及支付方式: ①甲方支付人民币ⅩⅩ元;②双方按比例承担费用;方式:银行汇款、转帐、现金支付等。 第二十条 双方确定:任何一方违反本合同约定,造成研究开发工作停滞、延误或失败的,按以下约定承担违约责任:

1. Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付 (支付违约金或损失赔偿额的计算方法)。

2. Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付 (支付违约金或损失赔偿额的计算方法)。 3. Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付 (支付违约金或损失赔偿额的计算方法)。 4 Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付 (支付违约金或损失赔偿额的计算方法)。 5. Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付 (支付违约金或损失赔偿额的计算方法)。 6. Ⅹ 方违反本合同第 Ⅹ 条约定,应当①支付违约金Ⅹ元;②按合同总额的Ⅹ%赔偿支付(支付违约金或损失赔偿额的计算方法)。 第二十一条 双方确定,甲方有权利用乙方按照本合同约定提供的研究开发成果,进行后续改进。由此产生的具有实质性或创造性技术进步特征的新的技术成果及其权属,由 Ⅹ (甲、乙、双)方享有。具体相关利益的分配办如下:①合同约定优先;②后续改进归完成者所有,他人无权分

享,任何分享都是有偿的;③约定双方共有,则利益共享。 乙方有权在完成本合同约定的研究开发工作后,利用该项研究开发成果进行后续改进。由此产生的具有实质性或创造性技术进步特征的新的技术成果,归 Ⅹ (甲、乙、双)方所有。具体相关利益的分配办法如下:①合同约定优先;②后续改进归完成者所有,他人无权分享,任何分享都是有偿的;③约定双方共有,则利益共享。 第二十二条 双方确定,在本合同有效期内,甲方指定 Ⅹ 为甲方项目联系人,乙方指定 Ⅹ 为乙方项目联系人。项目联系人承担以下责任:

1.按照约定的联系时间、联系方式和联系地点完成交办的相关工作。 2.防止因人事变动而使合同难以履行或无法履行 3.保证按约定和法律法规,以适当的时间、方式、标准履行本合同 一方变更项目联系人的,应当及时以书面形式通知另一方。未及时通知并影响本合同履行或造成损失的,应承担相应的责任。

第二十三条 双方确定,出现下列情形,致使本合同的履行成为不必要或不可能的,一方可以通知另一方解除本合同; 1.因发生不可抗力或技术风险;

2.技术风险出现,技术风险指当事人努力履行,现有水平无法达到,有足够技术难度,同行专家认定为合理失败。 第二十四条:双方因履行本合同而发生的争议,应协商、调解解决。协商、调解不成的,确定按以下第 1或2 种方式处理: 1.提交 当事人约定的Ⅹ 仲裁委员会仲裁; 2.依法向 ××Ⅹ 人民起诉。

第二十五条 双方确定:本合同及相关附件中所涉及的有关名词和技术术语,其定义和解释如下:

1.对没有标准和惯例的名词、技术术语要有标准的约定和解释,防止歧义或误解

2.文字、符号标准化和规范 3.注意词序变换,避免引起争议

3. 在合同履行中,第三人公开相同的技术成果,。

第二十六条 与履行本合同有关的下列技术文件,经双方确认后,

①协商一致;②合同约定 为本合同的组成部分: 1.技术背景资料:名称、份数 2.可行性论证报告:名称、份数 3.技术评价报告:名称、份数 4.技术标准和规范:名称、份数 5.原始设计和工艺文件:名称、份数 6.其他:除以上条款外的其它约定 第二十七条 双方约定本合同其他相关事项为:①除上述条款约定之外,双方当事人尚需要其他特别约定的内容和需要说明的问题;②可以约

定中介条款(阐明中介方的权利与义务) 第二十 本合同一式 Ⅹ 份,具有同等法律效力。 第二十九条 本合同经双方签字盖章后生效。

甲方:印章应与《企业法人营业执照》规定的名称一致

(盖章)

法定代表人/委托代理人: ①法定代表人签名②委托代理人符合《民法通则》委托代理的规定签名 (签名) 年 月 日

乙方:印章应与《企业法人营业执照》规定的名称一致

(盖章)

法定代表人/委托代理人:①法定代表人签名②委托代理人符合《民法通则》委托代理的规定签名 (签名) 年 月 日 印花税票粘贴处:

(以下由技术合同登记机构填写) 合同登记编号:

1.申请登记人: 自然人、法人或其他经济组织 2.登记材料:(1)科技部技术合同登记表 (2)技术开发(委托)合同文本 (3)一般是指附件或其他佐证材料

3.合同类型: 技术开发合同 4.合同交易额:是指技术开发(委托)合同成交的总金额 5.技术交易额:是指从合同交易总额中扣除购置设备、仪器、零部件、原材料等非技术性费用后的剩余金额。但合理数量标的的直接成本不计入非技术性费用

技术合同登记机构(印章) 经办人:

年 月 日

具体的技术开发合同参见如下:

合同编号:

技术开发(委托)合同

项目名称: 数字智能电力电容器 委托方(甲方): 武汉华源 电气设备有限责任公司 受托方(乙方): 南京谷峰 电子科技有限公司

签订时间: ?? 签订地点: 南京江宁庄排路158号 有效期限: 2年

中华人民共和国科学技术部印制

填 写 说 明

一、 本合同为中华人民共和国科学技术部印制的技术开发(委托) 合同示范文本,各技术合同登记机构可推介技术合同当事人参照使用。

二、 本合同书适用于一方当事人委托另一方当事人进行新技术、新 产品、新工艺、新材料或者新品种及其系统的研究开发所订立的技术开 发合同。

三、 签约一方为多个当事人的,可按各自在合同关系中的作用等, 在“委托方”、“受托方”项下(增页)分别排列为共同委托人或共同受 托人。

四、 本合同书未尽事项,可由当事人附页另行约定,并可作为本合 同的组成部分。

五、 当事人使用本合同书时约定无需填写的条款,应在该条款处注 明“无”等字样。

技术开发(委托)合同

武汉华源电气设备有限责任公司

住 所 地: 武汉市古田二路丰茂路附二号 项目联系人: 吕德志

联系方式

通讯地址: 武汉市古田二路丰茂路附二号 电 话: 传 真:

电子信箱: 受托方(乙方): 委托方(甲方):

南京谷峰电子科技有限公司 住 所 地: 南京市江宁开发区庄排路158号 法定代表人: 张高锋 项目联系人: 涂腊宝

联系方式

通讯地址: 南京市江宁开发区庄排路 电 话: 传 真: 025-

电子信箱: gfxx_nj@163.com

本合同甲方委托乙方研究开发 数字智能电力电容器 项目,并支付研究开发经费和报酬, 乙方接受委托并进行此项研究开发工作。双方经过平等协商,在真实、充分地表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议,并由双方共同恪守。 第一条 本合同研究开发项目的要求如下: 1.技术目标: 数字智能电力电容器满足《DL/T 842-2003低压并联电容器装置使用技术条件》中华人民共和国电力行业标准,具有主机和从机两种功能,支持△和Y型两种接线方式。

158号

2.技术内容: 1)结构模具制定;2)原理图PCB绘制;3)程序设计编写;4)实验验证;5)功能模块:分补共补,等电压投切,过零投切,温度保护,谐波保护,过压过流保护,支持静态、动态投切,智能化组网,终端支持远程功能模块升级。

3.技术方法和路线: 1)补偿方式采用功率因数+无功功率自动或远方控制投切;2)投切原理可控硅+继电器采用等电位过零投切技术;3)CPU采用ARM7 32位高速芯片;4)采样使用ARM内部12位AD 使用快速FFT运算;5)采用IAP在应用编程实现远程终端程序升级;6)采用RS485+载波+GPRS实现智能化组网。

第二条 乙方应在本合同生效后 15 日内向甲方提交研究开发计 划。研究开发计划应包括以下主要内容: 1. 项目分步详细时间计划安排 ;

2. 项目各功能模块详细说明 ; 3. 项目分段验收方式 ; 4. 项目验收标准 。

第三条 乙方应按下列进度完成研究开发工作:

1. 一期合同签订后第1~2月:确定项目整体设计;实现项目整体的硬件、软件系统方案设计工作、技术准备工作 2. 二期第3~7月:技术开 ; 3. 三期第8~9月:现场调试;在甲方现场进行功能及完整性调试 ;

4. 四期第10月:项目验收 。 第四条 甲方应向乙方提供的技术资料及协作事项如下:

1.技术资料清单: 1)详细功能技术说明文件;2)项目相关设计标准;3)结构外形要求技术文件;4)项目精度要求。

2.提供时间和方式: 提供时间:合同生效后5日内;方式:受权

人签字和加盖公章原件或传真件,一式两份,双方各持一份。

3.其他协作事项: 另一方必须给予帮助才能完成的,另一方就必须给予帮助或协助 。

本合同履行完毕后,上述技术资料按以下方式处理: 双方存档保留 。

第五条 甲方应按以下方式支付研究开发经费和报酬:

1.研究开发经费和报酬总额为 ??万元 。 其中:(1) 硬件材料?????万元 ; (2) 研发费用?????万元 ; (3) 试验费用?????万元 ;

2. 研究开发经费由甲方 分期 (一次、分期或提成)支付乙 方。具体支付方式和时间如下:

(1) 合同生效后支付30% (2) 二期支付30% (3) 三期支付30% (4) 四期支付10% 乙方开户银行名称、地址和帐号为:

开户银行: 中国光大银行南京江宁支行 地址: 南京市江宁开发区庄排路158号

帐号:

第六条 本合同的研究开发经费由乙方以 保证开支经济合理 的方

式使用。甲方有权以 合同约定的第三方负责监督 的方式检查乙方进行研究开发工作和使用研究开发经费的情况,但不得妨碍乙方的正常工作。

第七条 本合同的变更必须由双方协商一致,并以书面形式确定 。 但有下列情形之一的,一方可以向另一方提出变更合同权利与义务的请 求,另一方应当在 3 日内予以答复;逾期未予答复的,视为同意。

1. 发生了使合同基础发生变化的客观情况 ;

2. 主要人员变动、国家变动等使原合同的继续履行显失公平或合同无法履行 ;

3. 法律法规规定的合同可以变更的情形出现;

4. 考虑双方合作过程中可能发生的变更,为维护双方利益,应留下空间。

第 未经甲方同意,乙方不得将本合同项目部分或全部研究开 发工作转让第三人承担。但有下列情况之一的,乙方可以不经甲方同意,将本合同项目部分或全部研究开发工作转让第三人承担: 1. 不涉及和损害甲方技术权益、经济利益和商业秘密; 2. 例如:主管技术的项目负责人变动、国家重大产业计划变动、 显失公平等情况;

3. 考虑技术进步的发展,独家难以承担一个完整的项目,这里就有对外合作问题;

乙方可以转让研究开发工作的具体内容包括: ①不涉及本项目技术权益的;②不属于本项目核心技术的 。

第九条 在本合同履行中,因出现在现有技术水平和条件下难以克 服的技术困难,导致研究开发失败或部分失败,并造成一方或双方损失 的,双方按如下约定承担风险损失: ①双方约定承担,约定优先;②合同无约定,由当事人合理分担,合理分担不等与平均分担;③当事人可以约定一定数量的资金作为承担未来可能发生的风险损失 。

双方确定,本合同项目的技术风险按 ①当事人认可的专家权威机构确认;②国家或地方指定机构;③当事人约定几名专家确认; 的方式认定。认定技术风险的基本内容应当包括技术风险的存在、范围、程度及损失大小等。

认定技术风险的基本条件是:

1. 本合同项目在现有技术水平条件下具有足够的难度; 2. 乙方在主观上无过错且经认定研究开发失败为合理的失败。

一方发现技术风险存在并有可能致使研究开发失败或部分失败的情 形时,应当在 3 日内通知另一方并采取适当措施减少损失。逾期未 通知并未采取适当措施而致使损失扩大的,应当就扩大的损失承担赔偿 责任。

第十条 在本合同履行中,因作为研究开发标的的技术已经由他人 公开(包括以专利权方式公开),一方应在 3 日内通知另一方解除合 同。逾期未通知并致使另一方产生损失的,另一方有权要求予以赔偿。 第十一条 双方确定因履行本合同应遵守的保密义务如下: 甲方:

1. 保密内容(包括技术信息和经营信息): ①涉及本合同的技术文件、资料、经营信息和商业秘密;②未经乙方同意不得对外转让或泄露 。

2.涉密人员范围: 直接或间接涉及本合同技术的有关人 。 3.保密期限:约定保密期限,约定优先,但此约定不得违背国家有关规定 。

4.泄密责任: ①当事人合同约定优先;②依照法律法规承担责任 。 乙方:

1. 保密内容(包括技术信息和经营信息): ①涉及本合同的技术文件、资料、经营信息和商业秘密;②本合同技术标的及应用方向;③本技术的销售市场和方向 。

2.涉密人员范围: ①直接或间接涉及本合同技术的有关人员;②乙方的研究开发人员;③涉及与该技术成果的相关人员 。

3.保密期限:约定保密期限,约定优先,但此约定不得违背国家有关规定 。

4.泄密责任: ①当事人合同约定优先;②依照法律法规承担责任 。 第十二条 乙方应当按以下方式向甲方交付研究开发成果: 1.研究开发成果交付的形式及数量: 样机5台;②双方当事人举行交付签字形式;③交付时双方的书面认可 。

2.研究开发成果交付的时间及地点:合同生效后第10个月的20日在乙方公司交付 。

第十三条 双方确定,按以下标准及方法对乙方完成的研究开发成 果进行验收: ①不得使用淘汰或禁止的标准;②约定的标准和方法;③约定使用国际标准、国家标准、专业标准、企业标准或者其他国外标准等;④无标准的,按行业的一般要求鉴定;⑤方法:专家评议、国家规定的部门检测结论、鉴定会或双方认可的方式 。

第十四条 乙方应当保证其交付给甲方的研究开发成果不侵犯任何 第三人的合法权益。如发生第三人指控甲方实施的技术侵权的,乙方应当 ①承担甲方由此而产生的经济损失和其它责任;②本约定具有溯及力合同结束后,本约定仍然有约束力 。

第十五条 双方确定,因履行本合同所产生的研究开发成果及其相 关知识产权权利归属,按下列第 1 种方式处理: 1. 双 (甲、乙、双)方享有申请专利的权利。

专利权取得后的使用和有关利益分配方式如下: 专利权为双方共有,利益归双方共有 。

2.按技术秘密方式处理。有关使用和转让的权利归属及由此产生 的利益按以下约定处理:

(1)技术秘密的使用权: 双方共有 (2)技术秘密的转让权: 双方共有 (3)相关利益的分配办法: 双方按比例分享 。 双方对本合同有关的知识产权权利归属特别约定如下: ①双方约

定,约定优先;②如无约定则按法律的有关规定 。

第十六条 乙方不得在向甲方交付研究开发成果之前,自行将研究 开发成果转让给第三人。

第十七条 乙方完成本合同项目的研究开发人员享有在有关技术成 果文件上写明技术成果完成者的权利和取得有关荣誉证书、奖励的权利。

第十 乙方利用研究开发经费所购置与研究开发工作有关的设

备、器材、资料等财产,归 乙 (甲、乙、双)方所有。

第十九条 双方确定,乙方应在向甲方交付研究开发成果后,根据 甲方的请求,为甲方指定的人员提供技术指导和培训,或提供与使用该 研究开发成果相关的技术服务。

1.技术服务和指导内容:甲方技术人员和主要操作人员掌握该技术成果,包括设计指导、技术指导、工艺方法指导、技术培训与授课讲座 。 2:地点和方式:乙方住所地;方式:培训、现场指导 。 3.费用及支付方式: 甲方支付人民币一万元;方式:现金支付 。 第二十条 双方确定:任何一方违反本合同约定,造成研究开发工 作停滞、延误或失败的,按以下约定承担违约责任:

1. 甲 方违反本合同第 五 条约定,应当 按合同总额的20%赔偿支付 (支付违约金或损失赔偿额的计算方法)。

2. 乙 方违反本合同第 八 条约定,应当 按合同总额的20%赔偿支付 (支付违约金或损失赔偿额的计算方法)。 3. 乙 方违反本合同第 十一 条约定,应当 按合同总额的20%赔偿支付 (支付违约金或损失赔偿额的计算方法)。

4 乙 方违反本合同第十三条约定,应当 按合同总额的20%赔偿支付 (支付违约金或损失赔偿额的计算方法)。

第二十一条 双方确定,甲方有权利用乙方按照本合同约定提供的 研究开发成果,进行后续改进。由此产生的具有实质性或创造性技术进 步特征的新的技术成果及其权利归属,由 双 (甲、乙、双)方享有。 具体相关利益的分配办法如下: 约定双方共有,则利益共享 。

乙方有权在完成本合同约定的研究开发工作后,利用该项研究开发 成果进行后续改进。由此产生的具有实质性或创造性技术进步特征的新 的技术成果,归 双 (甲、乙、双)方所有。具体相关利益的分配办 法如下: 约定双方共有,则利益共享 。

第二十二条 双方确定,在本合同有效期内,甲方指定 吕德志 为甲方项目联系人,乙方指定 涂腊宝 为乙方项目联系人。 项目联系人承担以下责任:

1. 按照约定的联系时间、联系方式和联系地点完成交办的相关工作;

2.防止因人事变动而使合同难以履行或无法履行;

3.保证按约定和法律法规,以适当的时间、方式、标准履行本合同。 一方变更项目联系人的,应当及时以书面形式通知另一方。未及时 通知并影响本合同履行或造成损失的,应承担相应的责任。

第二十三条 双方确定,出现下列情形,致使本合同的履行成为不 必要或不可能的,一方可以通知另一方解除本合同; 1.因发生不可抗力或技术风险;

2.技术风险出现,技术风险指当事人努力履行,现有水平无法达到,有足够技术难度,同行专家认定为合理失败。 3.在合同履行中,第三人公开相同的技术成果。 第二十四条 双方因履行本合同而发生的争议,应协商、调解解决。协商、调解不成的,确定按以下第 2 种方式处理: 1.提交 / 仲裁委员会仲裁; 2.依法向人民起诉。

第二十五条 双方确定:本合同及相关附件中所涉及的有关名词和 技术术语,其定义和解释如下:

1. 对没有标准和惯例的名词、技术术语要有标准的约定和解释,防止歧义或误解

2. 文字、符号标准化和规范 3. 注意词序变换,避免引起争议

第二十六条 双方约定本合同其他相关事项为: 除上述条款约定之外,项目中遇到的其它问题本着合理、合法友好协商解决 。 第二十七条 本合同一式 3 份,具有同等法律效力。

第二十 本合同经双方签字盖章后生效。

甲方: (盖章) 法定代表人/委托代理人: (签名) 年 月 日

乙方: (盖章) 法定代表人/委托代理人: (签名) 年 月 日

印花税票粘贴处:

(以下由技术合同登记机构填写)

合同登记编号:

1.申请登记人: 2.登记材料:(1) (2) (3) 3.合同类型: 4.合同交易额: 5.技术交易额:

技术合同登记机构(印章)

经办人:

年 月 日

第2单元 硬件电路设计

2.1 电路组成方案选择

1、单片机选择:

1)51单片机;2)PIC单片机; 3)AVR单片机;4)其它。 2、显示器选择:

1)LED数码管;2)LCD液晶显示器。 3、继电器选择:

1)小型电磁继电器;2)固态继电器。 4、输入电路选择:

1)直接输入;2)变压器隔离输入; 3)光耦输入。 5、安装方式选择:

1)面板式;2)装置式;3)导轨式。 6、壳体选择:

1)柜装仪表壳 48×48; 2)柜装仪表壳 48×96 。

2.2 元器件选择

在电路组成方案确定后,将主要的元件选定,其他元件可以等原理图设计好后再定,或者在原理图设计好后,再根据PCB的要求选择元器件。

2.3 原理图绘制(层次电路)

1、系统硬件的基本组成部分,如图2-1所示。

图2-1 系统硬件的基本组成

2、智能数现时间继电器整机电路原理图,如图2-2所示。

图2-2 智能数现时间继电器整机电路原理图

3、层次电路可以根据上面整机电路来绘制(设计) 利用Protel99SE或Proteus软件来绘制电路原理图和PCB图,用Proteus软件来绘制电路原理图还可以用来仿真,建议用Proteus软件来绘制电路原理图。

第3单元 软件设计

3.1 软件任务分析

软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。

软件任务分析环节是为软件设计作一个总体规划。从软件的功能来看可分为两大类:一类是执行软件,它能完成各种实质性的功能,如测量、计算、显示、打印、输出控制、通信等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色:执行软件的设计偏重算法效率,与硬件关系密切,千变万化;监控软件着眼全局,主要处理人机关系,其特点是逻辑严密,千头万绪。

软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(应输入、输出定义)。在为各执行模块进行定义时,要将牵涉到的数据结构和数据类型问题一并规划好。

各执行模块规划好后,就可以规划监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对来讲,执行模块任务明确单纯,比较容易编程。而监控程序较易出问题,这如同当一名操作工人比较容易,而要当好一个厂长就比较困难了。 软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序对实时性要求不是很高,延误几十毫秒甚至几百毫秒也没关系,故通常将监控程序(键盘解释程序)、显示程序、打印程序等与操作者打交道的程序放在后台程序中来执行。而前台程序安排一些实时性要求较高的内容,如定时系统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使系统进人睡眠状态”,以利于系统节电和抗干扰。

3.2 数据类型与结构的规划

上节中的软件任务分析只是一个粗糙的分析和大体上的安排,还不能开始编程。系统中各个执行模块之间有着各种因果关系,互相之间要进行各种信息传递。如数据处理模块和检测模块之间的关系,检测模块的输出信息就是数据处理模块的输人信息;同样数据处理模块和显示模块、打印模块之间也有这种“产销”关系。各模块之间的关系体现在它们的接口条件上,即输人条件和输出结果上。为了避免出现产销脱节现象,就必须严格规定好各个接口条件,即各接口参数的数据结构和数据类型。这一步工作可以这样来做将每一个执行模块要用到的参数和要输出的结果列出来,对于与不同模块都有关的参数,只取一个名称,以保证同一个参数只有一种格式。然后为每一个参数规划一种数据类型和数据结构。

从数据类型上来分类,可分为逻辑型和数值型,但通常将逻辑型数据归到软件标志中去考虑,而将“数据类型分类”理解为“数值类型分类”。数值类型可分为定点数和浮点数。定点数有直观、编程简单、运算速度快的优点,其缺点是表示的数值动态范围小,容易滥出。浮点数则相反,数值动态范围大,相对精度稳定,不易溢出;但编程复杂,运算速度低。

如果一个参数的变化范围有限,就可用定点数来表示,以简化程序设计和加快运行速度。如某温度控制系统,温度范围为33. 0~44. 0℃,控制精度为0. 1℃。如果用一个字节来表示温度(温度分辨率为0.05℃),就可以表示12. 8℃的温度变化范围。采用坐标变换算法后,00H~0FFH就可以表示32.0~44.75℃的温度范围了,从而实现一个字节的定点表示方法。当参数的变化范围太宽时,只好采用浮点数来表示,如智能电桥中被测对象的变化范围达10个数量级(1pF~10 000μF),定点数是无法胜任的。

如果某参数是一系列有序数据的集合,如采样信号系列,则不光有数据类型问题,还有一个数据存放格式间题,即数据结构间题。在单片机应用系统中,数据结构比较简单,对于“数组”,一般采用顺序存放的格式,这样就可以用简单的下标运算来访问数组中的任何一个元素。对于“队列”,一般采用环形队列结构,为此应规划好三样东西,队列存储区域、队首指针和队尾指针,并计算出总共需要的RAM字节数。

3.3 硬件资源分配

完成数据类型和数据结构的规划后,便可开始分配系统的资源了。系统资源包括程序存储器(多为片内)、RAM、定时器/计数器、中断源等。

在任务分析时,实际上已将定时器/计数器、中断源等资源分配好了。因此,如果采用汇编语言进行程序设计,资源分配的主要工作是RAM资源的分配。片外RAM的容量比片内RAM大,通常用来存放批量大的数据,如采样数据系列。真正需要认真考虑的是片内RAM的分配。如果采用C语言进行程序设计,大部分资源就由编译器来分配。

片内RAM分配时应注意充分发挥各自的特长,做到物尽其用:00H~1FH这32字节可以作为工作寄存器,其中00H~0FH可用来作为0区、1区工作寄存器。在一般的应用系统中,后台程序用0区工作寄存器,前台程序用1区工作寄存器。如果有高级中断,则高级中断可用2区工作寄存器(10H~17H)。如果前台程序中不使用工作寄存器,则系统只需0区工作寄存器。未作工作寄存器的其他单元便可以转为其他使用目的了。系统上电复位时,自动定义0区为工作寄存器,1区为堆栈,并向2区、3区延伸。如果系统前台程序要用1区、2区作工作寄存器,就应将堆栈空间重新规划。

在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。

20H~2FH这16字节具有位寻址功能,用来存放各种软件标志、逻辑变量、位输人信息副本、位输出信息副本、状态变量、逻辑运算的中间结果等。当这些项目全部安排好后,保留一两个字节备用,剩下的单元才可改作其他用途。

30H~7FH为一般通用寄存器,只能存人整字节信息。通常用来存放各种参数、指针、中间结果,或用做数据缓冲区。也常将堆栈安放在片内RAM的高端,如68H~7FH。

C52等增强型单片机片内RAM空间为256字节或更多,80H~0FFH同样可以作为一般通用寄存器来使用,但只能通过R0和R1来间接使用,故适合安排各种数组和表格。

如果将系统的各种开销安排后,所剩单元很少,这往往不是好兆头。应该留有足够的余地,因为现在还处于规划阶段,随着软件设计的发展进程,几乎都会出现新的资源要求。如果在规划阶段资源已经很紧张,则建议修改硬件设计,增加RAM资源。

RAM资源规划好后,应列出一张RAM资源的详细分配清单,作为编程依据。

3.4 系统软件功能

本系统功能主要由软件控制实现,采用C语言对单片机编程。软件主要实现了以下功能:

(1)REST键:

1)复位功能:按此键对计时显示的数字及计时输出状态进行复位,恢复到初始状态。 2)确认功能:时间参数设置完毕后,必须按此键确认。

(2)MODE键:连续按动MODE键,参数设定依次出现下列菜单设置值:“P0”、“P1” 、“P2”,但“P0”不显示。 1)P1---S: 延时范围0.01s~99.99s; 2)P1---A: 延时范围1s~99min99s;

3)P1---H: 延时范围1min~99h99min; 4)P2---U:正计时; 5)P2---D:倒计时;

(3)位移键:时间参数设置过程中,按此键选择某种功能中需要调整设置的参数。 (4)增量键:按此键对选中的项目进行加数,实现递增变化。 (5)启动:按下启动键开始计时。

(6)暂停:计时过程中,启动键放开暂停计时,再次按下则累计计时。

3.5 绘制流程图

1、系统软件总流程图如图3-1所示:

图3-1 系统软件总流程图

2、初始化模块流程图如图3-2所示:

图3-2 初始化模块流程图

3、显示模块流程图如图3-3所示:

图3-3 显示模块流程图

4、按键模块流程图如图3-4所示:

图3-4 按键模块流程图

5、启动键模块流程图如图3-5所示:

图3-5 启动键模块流程图

6、复位模块流程图如图3-6所示:

图3-6 复位模块流程图

7、功能处理模块流程图如图3-7所示:

图3-7 功能处理模块流程图

8、移位处理模块流程图如图3-8所示:

图3-8 移位处理模块流程图

9、增量处理模块流程图如图3-9所示:

图3-9 增量处理模块流程图

10、T0中断处理模块流程图如图3-10所示:

图3-10 T0中断处理模块流程图

11、T1中断处理模块流程图如图3-11所示:

图3-11 T1中断处理模块流程图

12、计时处理模块流程图如图3-12所示:

图3-12 计时处理模块流程图

3.6 程序设计

本项目采用C语言进行程序设计,因此在程序开头要进行预处理,具体见如下说明:

/*STC90C52RC,12Mhz晶振,P0口输出段码,P2口作位扫描,用共阳极LED数码管*/ #include

#define uchar unsigned char #define uint unsigned int

sbit key0=P3^1; //启动

sbit key1=P3^3; //继电器控制 sbit key2=P3^4; //复位 sbit key3=P3^5; //功能选择 sbit key4=P3^6; //移位 sbit key5=P3^7; //加一

//*****************************************************************// // 定义状态字符区 // //*****************************************************************//

//mcon模式选择M0M1M2 //scon位移选择S0S1S2S3 //fcon延时范围选择F0F1F2 //jcon计时范围选择J0J1

uchar bdata flag; //状态特征字节

sbit FLAG_RT=flag^0; //复位特征字(0:非1:是) sbit FLAG_QD=flag^1; //启动特征字(0:非1:是)

sbit FLAG_JS=flag^2; //计时方式特征字(0:正计时1:倒计时) sbit FLAG_XY=flag^3; //按键响应特征字(0:非1:是) sbit FLAG_GY=flag^4; //记忆特征字(0:非1:是) sbit FLAG_YW=flag^5; //移位特征字(0:非1:是) sbit FLAG_JY=flag^5; //加一特征字(0:非1:是)

//sbit FLAG_ZD=flag^7; //外部中断特征字(0:非1:是)

uchar bdata seed; //计时特征字节

sbit SEED_JS1=seed^0; //计时方式00.01~99.99s特征字,即计时方式一 sbit SEED_JS2=seed^1; //计时方式1s~99min99s特征字,即计时方式二 sbit SEED_JS3=seed^2; //计时方式1min~99h99min特征字,即计时方式三

uchar bdata yxzt; //状态特征字节

sbit FLAG_T0=yxzt^0; //运行状态:等待(0:非1:是) sbit FLAG_T1=yxzt^1; //运行状态:调整(0:非1:是) sbit FLAG_T2=yxzt^2; //运行状态:计时(0:非1:是) sbit FLAG_T3=yxzt^3; //运行状态:暂停(0:非1:是) sbit FLAG_T4=yxzt^4; //运行状态:时间到(0:非1:是)

char code seg_7[21]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80, 0x90,0xBF,0x8C,0x92,0x88,0x,0xC1,0xA1,0x86,0x8E,0xFF,0x00};

/*共阳极LED段码表\"0\"\"1\"\"2\"\"3\"\"4\"\"5\"\"6\"\"7\"\"8\"\"9\"\"-\"\"P\"\"S\"\"A\"\"H\"\"U\"\"d\" \"E\"\"F\"\"熄灭\"\"全亮\"*/

uchar data seg[10]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x00}; 数码显示单元

uchar data buf[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 数码显示缓存区

uchar data bgn[8]={11,1,10,12,11,2,10,15}; 功能显示缓存区

uchar data scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 位选扫描区

uchar data initial[8]={0,0,0,0,0,0,0,0}; 主程序初始化

char data mcon=0xFF,scon=0x00,fcon=0x00,jcon=0x00; 计数用

char data con04s=0x00; //T1闪烁计时用

int data con=0x0000; //T0计数计时用 //*函数说明*//

void delay_1ms(uint); //延时函数

void clearmen(void); //初始化函数 void show(void); //显示函数 void keyscan(void); //键处理函数 void timer_jishi(void); //计时方式函数

void time_intt0(void); //10ms中断处理函数 void time_intt1(void); //0.4s中断闪烁函数

1、 系统软件主程序如下:

main()

////////////

{

clearmen(); while(1) {

show(); keyscan(); } }

2、 初始化模块程序如下:

void clearmen() {

uchar i,j;

for(j=0;j<200;j++) {

for(i=0;i<=7;i++) {

P2=scan_con[i]; P0=seg_7[20]; delay_1ms(1); P2=0xFF; } }

for(i=0;i<=7;i++) {

seg[i]=initial[i]; }

flag=0;seed=0;yxzt=0;//状态初始化 FLAG_T0=1; //置等待状态 SEED_JS1=1; //置计时方式一

TMOD=0x11;//T/C0方式1方式2计数

TH0=(65536-10000)/256;//10ms定时初值TL0=(65536-10000)%256; TH1=(65536-50000)/256;//50ms定时初值 TL1=(65536-50000)%256; ET0=0; //T0中断允许位关断 ET1=0; //T1中断允许位关断 TR0=0; //T0计时关断 TR1=0; //T1计时关断 EA=1; }

3、 显示模块程序如下:

void show() //显示函数 {

uchar k;

for(k=0;k<=7;k++) { P0=seg_7[seg[k]];

if(seg[0]!=0|seg[1]!=0|seg[2]!=0|seg[3]!=0) {

if(FLAG_T1==0) {

if(SEED_JS1==1) {

if(k==1|k==5)//计时方式为00.01s~99.99s,则对第五位段码dp取反 { P0=seg_7[seg[k]]&0x7f; } }

if(SEED_JS2==1) {

if(k==3|k==7)//计时方式为1s~99min99s,则对第七位段码dp取反 { P0=seg_7[seg[k]]&0x7f; } }

if(SEED_JS3==1) {

if(k==3|k==7)//计时方式为1min~99h99min,则对第七位段码dp取反 {

P0=seg_7[seg[k]]&0x7f; } } } }

P2=scan_con[k]; delay_1ms(1); P2=0xff; } }

4、 按键模块程序如下:

5、 启动键模块程序如下:

if(key0==0)//一直按着启动键吗? {

if(seg[0]!=0|seg[1]!=0|seg[2]!=0|seg[3]!=0) {

if(FLAG_T0==1&&FLAG_T1==0&&FLAG_T2==0) //如果等待为1与调整为0启动为0 {FLAG_T2=1;FLAG_T0=0;FLAG_T3=0;}//置计时为1,等待为0,暂停为0 if(FLAG_T4==0)//运行状态:时间未到 {

if(FLAG_T2==1) {

FLAG_QD=1; //启动状态置1 if(FLAG_QD==1) {

ET0=1; //T0中断允许位打开 TR0=1; //T0计时打开 } } } else {

FLAG_QD=0; //启动状态置0 if(FLAG_QD==0) {

ET0=0;TR0=0;//T0中断允许位关断、T0计时关断 } } } }

else //如果未按着 {

if(FLAG_T2==1&&FLAG_T3==0&&FLAG_T0==0)//如果启动为1与等待为0与调整为0 {FLAG_T3=1;FLAG_T2=0;FLAG_T0=1;}//置暂停为1,计时为0,等待为1 if(FLAG_T4==0)//时间未到 {

if(FLAG_T3==1)

FLAG_QD=0; //启动状态置0,即不计数 if(FLAG_QD==0) {

ET0=0;//T0中断允许位关断 } } }

6、 复位模块程序如下:

if(key2==0)//按REST键了吗? {

delay_1ms(10);//防抖

while(key2==0);//判断按键是否松开

if(FLAG_T0==1&&FLAG_T2==0&&FLAG_T3==0) //如果等待为1与计时为0与暂停为0

{seg[scon]=buf[scon];}//执行:显示缓存区重新送显示单元 if(FLAG_T1==1)//如果调整为1 {

FLAG_T0=1;FLAG_T1=0;//执行:运行状态:等待置1、调整置0 TR1=0;//T1计时关断

ET1=0;//T1中断允许位关断 if(seg[scon]==19) {seg[9]=seg[scon];seg[scon]=seg[8];seg[8]=seg[9];} if(scon==1|scon==2|scon==3) {scon=0x00;}

seg[0]=buf[0];seg[1]=buf[1];//重送设定值 seg[2]=buf[2];seg[3]=buf[3]; if(bgn[3]==12)

{SEED_JS1=1;SEED_JS2=0;SEED_JS3=0;} if(bgn[3]==13)

{SEED_JS1=0;SEED_JS2=1;SEED_JS3=0;} if(bgn[3]==14)

{SEED_JS1=0;SEED_JS2=0;SEED_JS3=1;} if(bgn[7]==15) {FLAG_JS=0;} if(bgn[7]==16) {

FLAG_JS=1;

buf[4]=seg[0];buf[5]=seg[1];//取设定值 buf[6]=seg[2];buf[7]=seg[3];

seg[4]=buf[4];seg[5]=buf[5];//重送设定值 seg[6]=buf[6];seg[7]=buf[7]; }

if(mcon==0|mcon==1|mcon==2) {mcon=0xff;} }

if(FLAG_T4==1) {

if(FLAG_JS==0) {

FLAG_T2=0; //运行状态:计时置0 FLAG_T0=1; //运行状态:等待置1 FLAG_T1=0; //运行状态:调整置0 FLAG_T3=0; //运行状态:暂停置0 FLAG_T4=0; //清时间到状态 key1=1;

buf[4]=0;buf[5]=0;buf[6]=0;buf[7]=0; //对第4、5、6、7位清零 seg[4]=buf[4];seg[5]=buf[5]; seg[6]=buf[6];seg[7]=buf[7];

}

if(FLAG_JS==1) {

FLAG_T2=0; //运行状态:计时置0 FLAG_T0=1; //运行状态:等待置1 FLAG_T1=0; //运行状态:调整置0 FLAG_T3=0; //运行状态:暂停置0 FLAG_T4=0; //清时间到状态 key1=1;

buf[4]=seg[0];buf[5]=seg[1];//对第4、5、6、7位取设定值 buf[6]=seg[2];buf[7]=seg[3];

seg[4]=buf[4];seg[5]=buf[5];//对第4、5、6、7位送显示 seg[6]=buf[6];seg[7]=buf[7]; } } }

7、 功能处理模块程序如下:

if(key3==0)//按MODE键了吗? {

delay_1ms(10);//防抖

while(key3==0);//判断按键是否松开

if(FLAG_T0==1&&FLAG_T2==0&&FLAG_T3==0) //如果等待为1与计时为0与暂停为0 {FLAG_T0=0;FLAG_T1=1;}//执行:运行状态:等待置0、调整置1 if(FLAG_JS==1) {

buf[4]=0;buf[5]=0;buf[6]=0;buf[7]=0;

seg[4]=buf[4];seg[5]=buf[5];//对第4、5、6、7位重送为0显示 seg[6]=buf[6];seg[7]=buf[7]; }

if(FLAG_T1==1) {

mcon++; if(mcon>=3) {mcon=0;}

if(mcon==0)//时间设定 {

FLAG_YW=1; //移位状态置1 FLAG_JY=1; //加一状态置1 if(FLAG_YW==1) {

TR0=0; //T0计时关断 ET0=0; //T0中断允许位关断 TR1=1; //T1打开

ET1=1; //T1中断允许位打开 }

seg[0]=buf[0];seg[1]=buf[1];

seg[2]=buf[2];seg[3]=buf[3];seg[8]=0x13; } else {

TR1=0; //T1关断 ET1=0; //T1中断允许位关断 if(seg[scon]==19) {seg[9]=seg[scon];seg[scon]=seg[8];seg[8]=seg[9];} if(scon==1|scon==2|scon==3) {scon=0x00;} }

if(mcon==1)//延时范围 {

FLAG_JY=1; //加一状态置1 seg[0]=bgn[0];seg[1]=bgn[1]; seg[2]=bgn[2];seg[3]=bgn[3]; }

if(mcon==2)//计时方式 {

FLAG_JY=1; //加一状态置1 seg[0]=bgn[4];seg[1]=bgn[5]; seg[2]=bgn[6];seg[3]=bgn[7]; } } }

8、 移位处理模块程序如下:

if(key4==0) //按移位键了吗? {

delay_1ms(10);//防抖

while(key4==0);//判断按键是否松开 if(FLAG_T1==1) {

if(mcon==0) {

if(FLAG_YW==1)//移位状态为1吗? {

if(seg[scon]==19) {seg[9]=seg[scon];seg[scon]=seg[8];seg[8]=seg[9];} scon++; if(scon>=4)

{scon=0x00;} } } } }

9、 增量处理模块程序如下:

if(key5==0)//等待加1键按下 {

delay_1ms(10);//防抖

while(key5==0);/*等待按键松开*/ if(FLAG_T1==1) {

if(mcon==0) {

if(FLAG_JY==1) { if(scon==0|scon==1|scon==2|scon==3) { buf[scon]++; //计数值加加 if(buf[scon]>=10) //当加到9+1时,第1、2、3、4位清零。 {buf[scon]=0;} }

seg[scon]=buf[scon];seg[8]=0x13;//显示单元数据等于计数单元数据, seg[8]存放熄灭符0x13 } }

if(mcon==1) {

if(FLAG_JY==1)//加一状态置1了吗? {

fcon++; if(fcon>=3) {fcon=0;} if(fcon==0) {

bgn[0]=11;bgn[1]=1;bgn[2]=10;bgn[3]=12; }

if(fcon==1) {

bgn[0]=11;bgn[1]=1;bgn[2]=10;bgn[3]=13; }

if(fcon==2) {

bgn[0]=11;bgn[1]=1;bgn[2]=10;bgn[3]=14;

}

seg[0]=bgn[0];seg[1]=bgn[1]; seg[2]=bgn[2];seg[3]=bgn[3]; } }

if(mcon==2) {

if(FLAG_JY==1)//加一状态置1了吗? {

jcon++; if(jcon>=2) {jcon=0;} if(jcon==0) {

bgn[4]=11;bgn[5]=2;bgn[6]=10;bgn[7]=15; }

if(jcon==1) {

bgn[4]=11;bgn[5]=2;bgn[6]=10;bgn[7]=16; } }

seg[0]=bgn[4];seg[1]=bgn[5]; seg[2]=bgn[6];seg[3]=bgn[7]; } } }

10、 T0中断处理模块程序如下:

void time_intt0 (void) interrupt 1 //T0中断函数 {

ET0=0;TR0=0;

TH0=(65536-10000)/256;/*重装初值10ms(T0计时用)*/ TL0=(65536-10000)%256; TR0=1; con++;

if(seg[0]!=0|seg[1]!=0|seg[2]!=0|seg[3]!=0) {

if(FLAG_QD==1) {

if(SEED_JS1==1) {

if(con==1) {

timer_jishi();

} }

if(SEED_JS2==1) {

if(con==100) {

timer_jishi(); } }

if(SEED_JS3==1) {

if(con==10000) {

timer_jishi(); } } } }

ET0=1; }

11、 T1中断处理模块程序如下:

void time_intt1(void) interrupt 3//用于指示调整数字单元的亮闪 {

EA=0;TR1=0; //关中断

TH1=(65536-50000)/256;//重置初值 TL1=(65536-50000)%256; con04s++; //计数值加加 if(con04s==8) {con04s=0x00;

seg[9]=seg[scon];seg[scon]=seg[8];seg[8]=seg[9];//在时间调整状态下,每过0.4s,将对应单元的显示数据换成\"熄灭符\"数据(0x13) }//seg[9]与seg[8]交替,实现亮灭 EA=1;TR1=1;//开中断 }

12、 计时处理模块程序如下:

void timer_jishi()//计时方式函数 {

con=0x00;

if(FLAG_JS==0)//正计时 {

buf[7]++;

if(buf[7]>=10)//buf[7]

{

buf[7]=0;buf[6]++; if(buf[6]>=10)//buf[6]计数到达10时,清零.buf[5]加加 {

buf[6]=0;buf[5]++; if(buf[5]>=10)//buf[5]计数到达10时,清零.buf[4]加加 {

buf[5]=0;buf[4]++; if(buf[4]>=10)//buf[4]计数到达10时,清零.buf[4] { buf[4]=0; } } } }

if(buf[4]==buf[0]&&buf[5]==buf[1]&&buf[6]==buf[2]&&buf[7]==buf[3]) {key1=0; //继电器控制,P3.3输出低电平 FLAG_T4=1; //置时间到状态为1 } }

else//倒计时 {

buf[7]--;

if(buf[7]==255) //buf[7]计数到达0时,buf[7]置9.buf[6]减一 {

buf[7]=9;buf[6]--; if(buf[6]==255) //buf[6]计数到达0时,buf[6]置9.buf[5]减一 {buf[6]=9;buf[5]--; if(buf[5]==255) //buf[5]计数到达0时,buf[5]置9.buf[4]减一 {buf[5]=9;buf[4]--; if(buf[4]==255)//buf[4]计数到达0时判断buf[4]buf[5]buf[6]buf[7]为0 {buf[4]=0; } } } }

if(buf[7]==0&&buf[6]==0&&buf[5]==0&&buf[4]==0)//如果位5、6、7、8为0,则计时到停止 {key1=0; //继电器控制,P3.3输出低电平 FLAG_T4=1; //置时间到状态为1 } }

seg[4]=buf[4];seg[5]=buf[5]; seg[6]=buf[6];seg[7]=buf[7]; }

3.7 软件模拟调试

将3.6节中的程序在Keil软件环境中建立工程,编译通过;将第2单元的硬件电路在Proteus软件环境中建立虚拟电路;通过Keil软件、Proteus软件进行软硬件协同模拟仿真调试,发现错误,分析错误,修改错误,直到软件模拟调试通过。 3.8 软件在路调试

1. 采用在路仿真器进行仿真调试,具有单步、可多断点、跟踪记录调试功能,其特点具有实时性、

直观排错能力强,但仿真器价格较高。

2. 采用程序在路下载运行调试,不具有单步、断点、跟踪记录调试功能,要在程序中加入附加的

信息进行调试,其特点是成本低、系统简单可行。

目前大多采用第2种方式;只有复杂的系统才采用第1种方式。 第4单元 编写设计说明书

4.1 编写目录大纲 4.2 编写正文

4.3 修改说明书正文 4.4 说明书校阅定稿

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- pqdy.cn 版权所有 赣ICP备2024042791号-6

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务