排序算法比较程序课程设计及基于电源调制技术的数据、语言综合智能呼叫系统_第1页
排序算法比较程序课程设计及基于电源调制技术的数据、语言综合智能呼叫系统_第2页
排序算法比较程序课程设计及基于电源调制技术的数据、语言综合智能呼叫系统_第3页
排序算法比较程序课程设计及基于电源调制技术的数据、语言综合智能呼叫系统_第4页
排序算法比较程序课程设计及基于电源调制技术的数据、语言综合智能呼叫系统_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《操作系统》课程设计报告课程设计报告题目:排序算法比较程序班级:学号:作者姓名:指导教师:目录1. 设计题目与要求 -2-1.1实验目的 -2-1.2设计要求 -2-1.3初始条件 -2-2. 总体设计思想及过程及相关知识 -2-2.1总体设计思想及过程 -2-2.2开发环境与工具 -3-3. 程序各模块流程图 -4-3.1主程序模块 -4-3.2冒泡排序模块 -5-3.3选择排序模块 -6-4.源程序代码 -6-6.课程总结 -14-7.参考文献 -14-设计题目与要求1.1实验目的通过用不同的算法实现排序问题,使我们深入了解和掌握同一问题可用不同算法解决,从而明白一个算法的质量优劣将影响到算法乃至整个程序的效率。1.2设计要求开发一款排序算法,由用户输入长度可变的内容:要求容错检查:存在字母则做字符排序,输入均为数字则按值排序提供两种以上的排序方法供用户选择排序并显示最终结果及执行时间1.3初始条件(1)操作系统:windows(2)程序设计语言:C、C++(两种语言的结合,是为了简化代码的编写)总体设计思想及过程及相关知识2.1总体设计思想及过程冒泡排序:1.基本思想:

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。

2.排序过程:

依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。选择排序:1.基本思想:

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。2.排序过程:第一趟排序在所有待排序的n个记录中选出关键字最小的记录,将它与数据表中的第一个记录交换位置,使关键字最小的记录处于数据表的最前端;第二趟在剩下的n-1个记录中再选出关键字最小的记录,将其与数据表中的第二个记录交换位置,使关键字次小的记录处于数据表的第二个位置;重复这样的操作,依次选出数据表中关键字第三小、第四小…的元素,将它们分别换到数据表的第三、第四…个位置上。排序共进行n-1趟,最终可实现数据表的升序排列。2.2开发环境与工具系统平台:windows环境实现语言:C\C++开发工具:VC++6.0程序各模块流程图3.1主程序模块3.2冒泡排序模块3.3选择排序模块4.源程序代码实验要求:开发一款排序算法,由用户输入长度可变的内容:要求容错检查:存在字母则做字符排序,输入均为数字则按值排序提供两种以上的排序方法供用户选择排序并显示最终结果及执行时间#include<iostream>#include<stdlib.h>#include<time.h>#defineMax100usingnamespacestd;typedefstruct//定义一个结构体,保存key{intkey;}Datatype;//结构体的别名typedefstruct//定义一个结构体,保存length。character{Datatyper[Max+1];intlength;intcharacter;}Sqlist,*Psqlist;//结构体的别名(主要好处是:每次声明结构体时只要用Sqlist,*Psqlist去声明就可以了,节省代码)typedefstruct//定义一个结构体{chard[Max+1];intlength;}List,*Plist;//同样是结构体的别名PsqlistBubblesort(Psqlists)//第1种方法(冒泡排序,输入顺序表){inti,j,temp;for(i=0;i<s->length;i++)//排序趟数的循环{for(j=0;j<s->length-i-1;j++)//每趟排序中每个字符的循环 { if(s->r[j].key>s->r[j+1].key)//前后两个字符的判断 { temp=s->r[j].key;//赋值运算 s->r[j].key=s->r[j+1].key;//将小的排在前面,大的排在后面 s->r[j+1].key=temp;//两个字符的位置变换 } }}returns;}PsqlistSelectsort(Psqlists)//第2种方法(选择排序,输入顺序表){inti,j,k,min;//min为每次查找到的最小的数for(i=0;i<s->length;i++)//每趟排序中每个字符的循环{ min=s->r[i].key;//找出最小的那个元素 k=i;for(j=i+1;j<s->length;j++) { if(s->r[j].key<min)//元素的判断 { min=s->r[j].key; k=j; } } s->r[k].key=s->r[i].key; s->r[i].key=min;}returns;}PlistCreat_Plist()//顺序表的创建{Plists;/*建立字符顺序表*/charch;inti=0;/*i为第几个字符*/s=(Plist)malloc(sizeof(List));cout<<"请输入一串数据:"<<endl;while((ch=getchar())!='\n')//输入数据{s->d[i]=ch; i++; s->length=i;}s->d[i]='\0';returns;}PsqlistJudge(Plists)//加载判断函数,判断是否为全数字,入口参数:字符串顺序表{inti,j=0;/*i为循环数,j为判断数*/Psqlistt;/*建立数字顺序表*/t=(Psqlist)malloc(sizeof(Sqlist));for(i=0;i<s->length;i++){if(s->d[i]<='0'||s->d[i]>='9') j=1;/*若为全数字,j=1,否则j=0*/}if(j==0)/*全为数字,将数字存入数字顺序表中*/{for(i=0;i<s->length;i++) t->r[i].key=s->d[i]-'0'; t->character=0;}else/*有字符,将字符的ascll码存入字符顺序表中*/{for(i=0;i<s->length;i++) t->r[i].key=s->d[i]; t->character=1;} t->length=s->length; returnt;}intmain()//主函数{Plists;Psqlistt;inti,chose;doublecost_time;clock_tstart,end;start=clock();//开始时间计数s=Creat_Plist();t=Judge(s);cout<<"请选择:1.输入1,冒泡排序2.输入2,选择排序"<<endl;//两种不同的排序方法cin>>chose;if(chose==1)//选择第1种方法 Bubblesort(t);elseif(chose==2)//选择第2种方法 Selectsort(t);else//容错检查,输入的数字若不是1或2,则表示输入错误{cout<<"输入错误,按任意键退出。。。"<<endl; return0;}cout<<"排序后的结果为:";if(t->character==0){for(i=0;i<t->length;i++) printf("%d,",t->r[i].key);}else{for(i=0;i<t->length;i++) printf("%c,",t->r[i].key);}cout<<endl;end=clock();//结束时间计数cost_time=((double)(end-start)/CLOCKS_PER_SEC);//中间耗时printf("所用时间为:%fs,\n",cost_time);return1;}5.测试及结果

6.课程总结做了这次程序设计,我们觉得利用C++进行编程并不像想像中的那么高深,尤其像我们现在所做的,只是一些最基本的程序。经过一个学期的学习,对C++有了一个初步的认识,但没有进行实际应用。这次程序设计,就相当于对一个学期的所学做一个总结,再进行一次综合运用,更是学到了很多新的东西,比如在做的程序中,对各种头文件都更加熟悉了,无意中也提升了自己的C++设计水平;又比如在程序设计过程中碰到了很多问题,通过上网查资料等各种手段,我们的解决实际问题的能力也得到了提高。然而我们知道,我们现在所掌握的知识,整个程序设计领域,甚至只在C++的设计领域中,都还只是皮毛阶段,以后想要这方面发展提高,就必须做出更大的努力。这次的程序设计,使我们对编程产生了浓厚的兴趣,并让我们对编程有了一个更全面的认识,如果我们以后能在编程领域深入发展,这一次也算是我们迈出的重要一步吧。7.参考文献[1]郑莉,董渊编著.C++程序设计基础教程.北京:清华大学出版社,2010。[2]王育坚编著.VisualC++面向对象编程教程(第2版).清华大学出版社.2010。[3]StanleyB.Lippman,BarbaraE.Moo著.C++Primer中文版.人民邮电出版社2006基于电源调制技术的数据、语言综合智能呼叫系统目录摘要 IIIABSTRACT IV1前言 -1-1.1智能呼叫系统研究意义 -1-1.2医用呼叫系统的国内外研究现状 -1-1.3智能呼叫系统概述 -2-2系统设计应用工具介绍 -4-2.1Protel99SE -4-2.1.1概述 -4-2.1.2操作环境 -4-2.1.3电路设计 -5-电路原理图的设计 -5-电路原理图的网络表文件生成 -8-印制电路板(PCB)图的设计 -8-2.2KeilC51应用软件介绍 -9-2.2.1KeilC51开发系统概述 -9-2.2.2KeilC51 -9-3系统总体设计 -12-3.1系统方案 -12-3.1.1二线制技术 -13-3.1.2电力载波技术 -13-3.2系统功能分析 -14-4系统的硬件设计 -16-4.1系统功能的实现 -16-4.1.1主机部分 -16-4.1.2分机部分 -17-4.1.3模拟板部分 -17-4.1.4挂机部分 -18-4.2主机控制板的硬件电路设计 -20-4.2.1系统使用核心芯片介绍 -22-CPU模块 -22-语音芯片YX24170 -28-双音多频(DTMF)解码器CM8870 -29-DS1302实时时钟芯片 -30-4.2.2主机板功能模块电路分析 -34-.CPU模块电路 -34-语音模块电路 -36-DTMF接收器模块电路 -38-BC7280/81芯片控制电路 -39-主机键盘控制电路 -41-电源电路 -42-5系统软件设计与调试 -43-5.1整体软件设计描述 -43-5.2部分软件分析 -44-6系统总体调试 -49-6.1系统模拟图 -49-6.2系统各部分简介 -49-6.3总体使用流程 -50-7结束语 -52-谢辞 -53-参考文献 -54-附录 -56-

摘要信息时代的医院管理已经从传统的人管模式向智能化、电子化、信息化、网络化的高科技管理模式的方向迅猛发展。“医疗呼叫系统”可实现对医院病房的智能化管理,可实现呼叫、监听、广播、求救报警、信息贮存、显示等功能,为医院和患者都带来方便。基于二线制的数据、语音智能综合呼叫系统,是根据医院系统化整体护理的要求设计开发的,由传统病房呼叫对讲系统、与医院信息管理系统相联的整体护理软件及电话通信系统组成,是医院系统化整体护理的理想设备。本系统是基于二线制的数据、语音智能综合呼叫系统,即通过调制将数据、语音共同加载在两条电源线上,设备的供电完全从这两条电源线上取出,仅以一对普通的双绞线实现多达近百点的电源、数据、语音对话的同步传输功能,经济、便捷地实现了数据传输、语音呼叫等工作,大大节约呼救和操作时间,并且具有结构简单,节约和降低成本,工作方式灵活可靠等特点。总之,该呼叫系统是在传统的病房呼叫对讲系统基础上发展起来的新一代科技产品,功能更强大,性能更优越,较之现有的其它呼叫系统和传统的四线制具有安装方便、简单、实用等特点,适合各级各类医院使用。尤其对已建成且需增设呼叫系统的医院来说,应用二线制的电力线的智能呼叫系统应是首选。关键词:电源调制;调制解调;二线制;单片机

AnIntelligentCallingSystemBasedonPowerLineCarrierTechnology——TheDesignofHostControlBoardHardwareABSTRACTThehospitalmanagementofinformationagehasalreadybeguntochangfromthetraditionalmodeofpersonstowardthedirectionoftheintelligence,electronical,information,network,andithasbeendevelopedrapidly."Themedicaltreatmentcallingsystem"cancarryouthospitalintelligencemanagementandthefunctionofcalling,wiretaping,broadcast,alarm,theinformationstore,displayetc.Allofthesebringconveniencetothepatients.Theintelligentcallingsystembasedonpowerlinecarriertechnologyisdesignedbasedonrequestofwholemanagementsystem,itisconstitutedbytraditionalwalkie-talkiesystemandhospitalinformationmanagingsystem,soitisanidealequipmentsofhospitalsystematic.Thissystemistheintelligentcallingsystembasedonpowerlinecarriertechnology,itaddsthedataandvoicetogetherontwolinesthroughmodulation.thepowerofthecomponentsisretrievedfromthetowlines.Thissystemonlyusetwolinestorealizethefunctionofpowerthathave100dots,data,voicecommunication.Itconversatelyrealizethefunctionofdeliveringdata,voicecallingetc.iteconomizethetimeofcallingandoperation,andthestructureofthissystemisbrief,economyandlowcost,itsworkingwayisvividandcredibility.Generally,thiscallingsystemisanewgenerationscienceandtechnologyproductingbasedontraditionalsickroomwalkie-talkiesystem,hastheconvenient,simpleandpracticalcharacteristics.comparewithtraditionalpowerlinecarriertechnology.itissuitabletoeverykindofhospitals.Particularly,thehospitalwhichhasalreadybuiltupandneedstoincreasetoestablishtonewcallingsystem.Theintelligentcallingsystembasedonpowerlinecarriertechnologyisthebestchoose.KeyWords:powermodulation;modulationanddemoduliton;powerline;microcontroller[1,2]1前言1.1智能呼叫系统研究意义随着科技水平和医疗水平的进步,信息化时代的飞速发展,医院的服务理念也随之发生了相应的改变,树立了以人为本,全心为患者服务的意识。为了方便患者,提高服务质量,医用呼叫系统已经成为了国内外各类医院中广泛使用的一种电子设备。医用呼叫系统发展到现在,已经不再是简单的医生与患者之间沟通的工具,在实际应用当中既要兼顾到医院的整体设计,又要具有良好的实用性、装饰性。该呼叫系统已经成为医院不可缺少的监护设备,是各医院现代化的标志,它对于病人和医疗人员之间的信息沟通起到了至关重要的作用,能够有效地保证病人及时得到医护人员的看护和医治。它能从根本上解决传统医生与患者之间所存在的一些服务纠纷等问题,可以美化医院的工作环境,避免无谓的争执。既可以帮助病人快速的呼叫医护人员,也可减轻医护人员巡视病房的辛劳,减轻医护人员值班的心理压力,在无呼叫时放心的做好其他医护工作,专心的处理各个病房的问题,从而提高了医护效率。因此,医用呼叫系统具有广泛的社会意义与重大的实用价值[3]。1.2医用呼叫系统的国内外研究现状目前,国外的医用呼叫系统已经相当普及,而且渐渐成为一个巨大的产业。一项经济调查报告表明:全球智能呼叫系统服务市场总产值将在未来五年时间里增长一倍以上。更为重要的是,智能呼叫系统在国外已经成为实实在在的一个产业,不仅有智能呼叫系统的各种硬件设备提供商、软件开发商、系统集成商,还有众多的外包服务商、信息咨询服务商、专门的智能呼叫系统管理培训学院、大量的呼叫系统展会和数不清的呼叫系统杂志、网站等,从而使呼叫系统形成了一个庞大的、在整个社会服务体系中占有相当大比例的产业。从智能呼叫系统在国外市场经济中的发展状况可以看出,智能呼叫系统在国外已经为人所熟知,并且无处不在,与人们的生活息息相关。在中国,随着市场经济体制的逐步健全和WTO的加入,近几年来智能呼叫系统产业逐步发展起来。智能呼叫系统的应用在中国也越来越广泛了。但是,总体来说,我国智能呼叫系统的技术发展相对于世界发达国家还是有很大差距的,尤其是在电力线载波通信技术方面。电力线载波通信是利用输电线路作为信号的传输媒介,人们利用电力线可以传输电话、电报、远动、数据和远方保护信号等。但是电力线载波通信具有两个最基本的技术问题:一是噪音干扰强;二是信号在电力线上传输过程中会有衰减。在基于电力载波技术的智能呼叫系统中首先要解决的噪音干扰问题。由于电力线载波通信具有许多优点,现在国际上许多学者、团体、公司都投入到这个领域,推动电力线载波通信技术的发展。我国目前也在大力发展电力线载波通信技术。目前,中国市场上采用二线制传输的产品并不是很多而且也不是很完善,所以本次毕业设计的作品具有广阔的市场前景,拥有良好的发展空间[4]。1.3智能呼叫系统概述本次设计的系统是构建的是一个基于电源调制技术的数据、语言综合智能呼叫系统,使用电力载波技术实现呼叫信息、通信音频在电源线上的传输。本次设计的智能呼叫系统把传统的四线制改进成二线制,即通过调制将数据、语音共同加载在两条电源线上,设备的供电完全从两条电源线上取得,仅以一对普通的双绞线实现多达近百点的电源、数据、语音对话的同步传输功能。基于二线制的数据、语音智能综合呼叫系统采用二芯线布线,即所有的呼叫分机均通过两芯线无极性连接起来,布线非常简单方便,具有对讲、呼叫、广播、群呼、响铃、显示排队、优先级设定、存储记录等多种功能,非常适合医院使用。本次设计实现的智能呼叫系统由若干个呼叫源(一般每张病床为一个)、模拟控制模块、电力载波电路和监护系统组成。当呼叫源有呼叫信号时,在监控系统上有相应的声、光呼叫信号指示,并能显示出呼叫编号。若采用并行总线扩展方式,上百个呼叫源与主机之间的布线太复杂,故本系统利用单片机的串行通讯功能,使得主机到各个从机之间的信号通过电力线载波模拟控制模块,经过24V直流电源线传输(主机与分机连接的电源线为13V),实现主机和分机之间的双向数据传送。系统采用主从结构,监控系统(主机)放在医生值班室内(可以通过接口电路与计算机相联,构成监护中心),当病床有呼叫请求时进行声光报警,并在显示器上显示病床的位置。呼叫源(分机)放在病房内,病人有呼叫请求时,按下请求按钮,向值班室呼叫,并点亮呼叫指示灯。主机和分机之间通过二线制电力线连接在一起。本次毕业设计的作品是在传统的病房呼叫对讲系统的基础上发展起来的新一代科技产品,增加了设置护理级别的功能,可以设置重症病房、普通病房、特殊病房等。此系统还有一个强大的定位功能,即只要病人呼救,医生那里就会显示是几楼几床呼叫,并且走廊显示屏会同步显示,使医生能更快的确定病人的位置。此外,“二次呼叫”以及“语音提示”也是该系统的两个显著的特点。总体来说,本次设计的智能呼叫系统功能更强大,性能更优越。更重要的是,利用二线制设计的系统不仅可以很好的进行数据传输,及传递各种信息、语音等信号,而且不占用太多空间资源,亦无需铺设专用通讯线路,省工、省钱、维护简单,可以在医院等地方大量安装使用和普及[5]。

2系统设计应用工具介绍在本次智能呼叫系统的硬件软件设计中,为了保证了系统设计的精确度,同时也能节省部分工作量,我们大量使用了辅助设计工具。主要的辅助设计工具包括:1.Protel99SE电路辅助设计工具,用于系统电路原理图设计;2.KeilC51基于51系列兼容单片机的C语言软件开发系统,用于系统中的51系列单片机编程以实现其功能。2.1Protel99SE2.1.1概述Protel99SE是Protel公司开发的功能强大的电路辅助设计工具,开创了桌面EDA的新纪元,在EDA(计算机辅助设计)行业应用广泛。Protel99SE在电路原理图绘制、PCB板布局布线等方面功能更加完备,而且它为用户提供了功能强大、使用方便的电路仿真器,可以对当前所画的电路原理图进行即时仿真,因此在系统电路的整个设计周期中都可以对其进行仿真,查看和分析其性能指标,以便及时发现设计中存在的问题并加以改正,从而更好地完成系统电路设计。Protel99SE提供了高级数/模元器件混合仿真功能,可精确地仿真由各种元器件构成的系统电路。进行电路仿真时,用户无需编写电路网表文件,系统可根据所画电路自动生成网表并进行仿真。与一般电路仿真软件相比,Protel99SE的使用更加灵活方便。总结Protel99SE的特点是:(1)设计分析工具功能强大;(2)设计软件中包含信号源种类丰富;(3)充分的仿真模型库可实现多种仿真需求;(4)操作界面十分友好。2.1.2操作环境其用户界面如图2.1所示:图2.1Protel99SE用户界面2.1.3电路设计要把我们的电路设计最终变为可用于生产的电路板设计文件,大致可分为三大步:(1)电路原理图设计;(2)根据电路原理图生成网络表并仿真;(3)设计印刷电路板(PCB)图。电路原理图的设计电路原理图设计的流程图,如图2.2所示:图2.2电路原理图设计流程电路原理图设计的基本步骤是:(1)运行Protel99SE,进入数据库管理环境,操作至如图2.3所示界面。(2)选择快捷菜单中的SchematicDocument图标并点击“OK”,即进入界面。(3)双击数据库文件夹中的“Sheet1.Sch”文件即可进入电路原理图编辑窗口(在进入编辑窗口前,可先对该文件重命名。选中文件“Sheet1.Sch”后,用鼠标左键再单击其文件名,该文件的名称栏即变为可编辑状态,我们可以为文件重命名)。(4)单击鼠标右键,在弹出的快捷菜单中选择“DocumentOptions”命令,出现SheetOptions对话框,点击StandardStyles下拉表,即可选择图纸大小。设置好合适的图纸大小后就可以进行电路原理图的编辑操作了。(5)在设计管理器BrowseSch中的Libraries窗口,点击“Add/Remove”指令框,可以挂接或卸载元器件库。(“MiscellanousDevices.lib”元器件库是一个通用型的元器件库,许多常用元器件都可在这个库中找到。)挂接上元器件库(如“MiscellanousDevices.lib”元器件库),选中它后即在Libraries窗口下的Filter窗口中出现该库中的所有元器件名称。选中需要的元器件,在Libraries窗口的空白显示区会显示该元器件的外形以便确认是否选择正确。然后点击“Place”指令框,将鼠标移入右面的空白图纸区,在合适位置单击鼠标左键,即可将元件放置在图纸上。(6)在点击“Place”指令框后,放置元件前,可根据需要对元件的方向作变换,按空格键可逆时针旋转元件,每次90°,按“X”键可使元件左右对调,按“Y”键可使元件上下对调。设置好方向,还可对元件参数进行修改。同样在点击“Place”指令框后,放置元件前,点击“Tab”键即可打开元件属性对话框Part,在此对话框中可更改元件属性。对话框“Attributes”选项卡中的内容较为常用,它包括以下内容:①LibRef在元件库中定义的元件名称,不会显示在绘图页中;②Footprint封装形式。应输入该元件在PCB库里的名称;③Designator流水序号;④PartType显示在绘图页中的元件名称,默认值与LibRef选项中的名称一致;⑤SheetPath成为绘图页元件时,定义下层绘图页的路径;⑥Part定义子元件序号;⑦Selection切换选取状态;⑧HiddenPins是否显示元件的隐藏引脚;⑨HiddenFields是否显示“PartFields1-8”、“PartFields9-16”⑩FieldName是否显示元件数据栏名称。(7)在Libraries窗口下的Filter窗口中,还有一个“Edit”指令框,其功能是在元件库编辑中对元器件进行定义。在Filter窗口选中一个元器件后,点击“Edit”指令框,进入元件库编辑窗口。在此环境下,可对元器件的基本参数进行修改,如管脚名称的更改,管脚编号的设定等(当管脚信号是反向输入时,需标出其反向标志。在弹出菜单的Name栏里输入管脚名称时,在每一个字母后加一个“\”即可)。编辑完元器件信息后,再点击该界面中的设计管理器BrowseSch的Mask窗口的“Place”指令框,即转入原理图编辑环境,可将已编辑好的元器件放置在电路原理图中。(8)将所有元器件合理放置在图纸上后,利用“WiringTools”工具栏里的“接地”和“电源”按钮为电路配置接地和电源。同样的,在“WiringTools”工具栏里选择合适的导线类型,将各元器件用导线连接起来。再利用“网络标号”等工具按钮最后对电路原理图进行设计后,该电路原理图的设计工作就完成了。在原理图设计中有许多技巧,例如用鼠标左键点住已放置好的元器件可进行拖拽,使元器件的位置更加合理;用鼠标左键双击元器件,则弹出该元器件的属性对话框,我们即可更改该元器件设定错误的参数。在设计电路原理图时,应用快捷键有利于工作的快速完成。如“PageUp”键的作用是以鼠标为中心放大,而“PageOn”键的作用是以鼠标为中心缩小;“Home”键的作用是将鼠标所指的位置居中;“End”键的作用是刷新(重画);又如Alt+Backspace键是撤消操作;Alt+E然后按E再按A是取消全部选择;Alt+E再按L是删除被选中元件。另外按住“Tab”键不放,再按菜单键的首个字母,即可快速打开该菜单,等等。熟练使用这些快捷键,可大大加快绘图速度。电路原理图的网络表文件生成每个电路就是一个网络,由节点、元件和连接线组成。因此可以用网络表的形式表达所绘制的电路原理图。而电路原理图的网络表正是电路板自动布线的灵魂,也是原理图设计软件Schematic与印刷电路设计软件PCB之间的接口。在经过电气规则检查,改正所有错误并再次检查无错误后,网络表可直接从电路原理图转化得来。其生成步骤如下:在编辑电路原理图环境下,执行菜单命令Design/CreateNetlist…即出现“NetlistCreation”对话框。在此对话框中有若干选项需进行设置。(1)将OutputFormat栏设置成Protel格式;(2)若生成单张原理图,不需更改NetIdentifierScope栏的内容;(3)因为是产生当前正在编辑的电路的网络表,所以将SheetstoNetlist选项设置为ActiveSheet。设置完成后,点击“OK”按钮,几秒钟后,在设计管理器中自动生成一个以.NET为扩展名的文件。此文件即为当前设计电路的网络表。打开该文件,如图2.11所示:印制电路板(PCB)图的设计在完成电路原理图的设计并对其生成正确的网络表后,就可以进行印制电路板的设计了。印制电路板的设计主要依靠印制电路板PCB模块。该模块的主要特点是:(1)32位的EDA设计系统,支持多层印制板的设计;(2)丰富而又灵活的编辑功能可支持自动布线和手动布线;(3)强大的设计自动化功能,具有超强的自动布局能力,在编辑时系统可自动指出违反设计规则的错误,实现PCB板面的优化设计;(4)在线式库编辑及完善的库管理;(5)完备的输出系统。点击PCBDocument确定后,就建立了一个印制电路板图的设计文件,初始名称为“PCB1.PCB”。双击“PCB1.PCB”(可更改名称,方式与电路原理图设计时,更改电路原理图名称相同)即打开印制电路板图设计环境。这时,执行菜单命令Design中的“LoadNets…”命令,在弹出的对话框中选择需要的以.NET为后缀名的已经生成的电路原理图网络表,点击“OK”后,系统会对网络表中的元器件进行当确认无误后,点击对话框的“Execute”指令框,则系统自动生成该电路原理图的PCB图[6,7,8,9]。2.2KeilC51应用软件介绍2.2.1KeilC51开发系统概述KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。采用C语言进行软件开发,原因是C语言与汇编语言相比,在功能上、结构性、可读性、可维护性上有明显的优势,且易学易用。KeilC51软件提供了丰富的库函数和功能强大的集成开发调试工具,并且采用全Windows界面,使其用户界面非常友好。另外KeilC51生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2.2.2KeilC51uVision3是KeilC51的集成开发环境,通常称做KeilC51的调试器。它具有对C51代码进行编辑、编译,与库以及其他目标程序进行连接,以及调试、仿真,最后生成HEX文件的功能。熟练掌握uVision3的操作并充分利用它强大的功能,将为单片机的软件开发提供强大助力。uVision3的操作步骤如下:(1)打开uVision3,进入操作界面如图2.3所示:图2.3KeilC51操作界面(2)执行菜单指令“文件”,选择“新建…”,则在灰色区域内弹出一个名称为“Text1”的文本编辑窗口,该窗口即指令代码编辑窗口(3)在指令代码编辑窗口中写入要执行的指令代码,推荐使用C语言编辑。在指令代码写入完成后,点击工具栏保存按钮,将文件保存在指定文件夹中。注意:在保存该种文件时,应将其扩展名设为.C。uVision3在支持C语言对指令代码编程的同时还支持汇编语言对指令代码的编程。在使用汇编语言编辑指令代码后,保存文件时,应将其扩展名设为.A。(4)建立一个新工程。执行菜单指令“工程”,选择“新建工程…”,即弹出一个名称为“产生新工程”的对话框。在文件名输入框中输入工程名称后点击“保存”按钮保存,习惯上工程的名称一般与保存的C51文件名一致。在点击“保存”按钮后,会弹出一个51系列CPU类型库的对话框,用来选择在这个工程中所采用的51系列CPU的型号。选择好CPU,点击确定后,一个工程就建立好了。(5)编译、调试指令代码。鼠标右击工程工作区里的“源代码组1”文件夹,选择“添加文件到组“源代码组1”命令,把刚保存的C51源代码程序加入到新建的工程中这时就可以对编写的源程序进行编译和调试了。在“工程”菜单里有3个编译命令:①“创建目标”指令的功能是编译当前文件并生成目标文件;②“重建所有目标文件”指令的功能是重新编译所有的文件并生成目标文件;③“编译当前文件”指令的功能是编译所有文件,然后连接并转换为输出文件[10,11,12]。

3系统总体设计3.1系统方案本次设计的呼叫系统由若干个呼叫源(一般每张病床为一个,称为前端分机)、起数模转换作用的模拟控制板、走廊或大厅里的挂机和监护室里的主机控制系统组成。当呼叫源有呼叫信号时,主机控制系统的喇叭和显示板上有相应的声、光呼叫信号指示,并能在显示器上显示出呼叫编号。该系统采用主从结构,监控系统(主机)放在医生值班室内(可以通过接口电路与计算机相联,构成监护中心),当病床有呼叫请求时进行声光报警,并在显示器上显示病床的位置。呼叫源(分机)放在病房内,病人有呼叫请求时,按下求救按钮,向值班室呼叫,并点亮呼叫指示灯。主机和分机之间通过电源线连接在一起,控制信号在传输过程中要经过数字信号和模拟信号的转换,这是在模拟控制板上完成的。主机和分机通讯时,主机依次向各分机发送地址信息,各分机接收主机发来的地址信息,如果和自己的地址相同,则向主机发送自己的报警信息,无报警信息时,向主机发送一个空号;如和自己的地址不相同,则不做任何反应。该智能呼叫系统由四大部分组成,即主机控制板、模拟板、挂机和分机。主机是本系统最重要的部分,相当于“人的大脑”,起到控制整个系统的作用。分机在系统中有固定的地址,主要是分布在各个病房的病床上。挂机一般设置在医院的走廊里,便于医院里的医生或护士看到呼叫病床的信息。模拟控制板是主机、分机、挂机之间信息传输的桥梁,起到数字信号和模拟信号相互转换的作用。该智能呼叫系统的功能框图,如图3.1所示:

图3.1系统功能框图3.1.1二线制技术有线传输即将前端设备的信号通过导线传送给控制器。根据控制器与前端设备之间采用的是并行传输还是串行传输方式来选用不同的线制。所谓线制就是指前端设备和控制器之间的传输线的条数。一般可分为多线制、总线制和混合式三种方式。所谓二线制,就是指整个设备与外界之间只有两根导线相关联,电源和信号线共用这两根导线,设备的供电完全从控制信号中取出。采用二线制技术,其优点是布线十分简单,便于安装操作。但是,采用二线制传输方式,就要求系统设备在低于4mA的情况下仍能正常工作,这就需要考虑如何降低系统的功耗。利用电源调制技术将电源、数据、语音信号共同加载在两条电源线上,设备的供电和各种信号的传输完全不冲突。这样仅以一对普通的双绞线就可实现数据传输和语音对话的同步传输功能,大幅提高了低压供电线的利用率,同时其布线也非常简单方便。因此,二线制技术对于本系统非常合适[13]。3.1.2电力载波技术电力载波技术是一门新兴的通信技术,利用这项技术可以将数据信号和语音信号共同加载到供电线上,通过构成网络的设备供电线路进行设备间的数据和语音通信,大幅提高了供电线路的利用率。现在这项技术在民用220V交流低压供电线上使用的很频繁,但其实现技术很复杂,设计成本对于我们本次系统设计显得偏高,因而不采用这种技术。在我们这次系统设计中,系统分机采用的是直流供电,电压一般在12V左右。我们在系统的低压供电线上采用电力载波技术,是将数据信号和语音信号调幅后加载到供电线上进行信号传输,实现系统主机与分机间的通信。采用这套技术就大大降低了系统设计成本,系统的工作方式也十分灵活,另外还避免了交流供电线上最主要的信号干扰问题,对于我们的系统设计是非常合适的[14,15]。3.2系统功能分析该综合智能呼叫系统由四大部分组成,即主机、模拟板、挂机和分机。采用单片机总体控制,利用调频技术、调幅技术和电力载波技术,通过两条电源线实现了主机、分机和挂机之间的数据通信以及主机和分机间的语音通信。本次设计的系统框架图,如图3.2所示:图3.2系统框架图(1)主机主要功能:当有分机呼叫时,控制部分解析出分机地址,数码管显示分机地址以及呼叫顺序,指示灯部分以彩灯形式显示分机位置,控制部分把分机位置送给挂机显示,同时主机响振铃音乐。主机数码管在没有分机呼叫时用来显示日期和时间,当有分机呼叫时一部分(前两位)用来显示呼叫的顺序,另一部分(后两位)用来显示分机的位置。指示灯要显示护理级别,护理级别共分三级,分别用绿色,橙色,红色来显示。每次重新上电以后要保持以前的护理级别。护理级别可以通过主机上的键盘来设置。当显示呼叫来的分机位置的时候,要用绿色,橙色,红色轮换的醒目显示。当有多个呼叫未接听时,所有的位置都要轮换显示,可以通过主机应答或者通过按床牌指示灯下的按钮来取消。按键是用来设置系统的工作状态的,可以改变的内容有:设置护理级别、设置振铃声的大小、设置时间和日期等。语音报号功能是当有病人呼叫时,主机可设语音报号,语音报号的最大特点是医务人员在专注处理其他事务时,能耳听八方,及时得到呼叫病人的信息,作出快速反应。“语音报号”:如第二十二床病人呼叫时,主机话机会发出“叮咚!二十二床病人呼叫。”(2)模拟板主要功能:模拟板和主机实现的功能密不可分,它能把模拟信号转换成数字信号,实现模数转换,模拟板是上行信号和下行信号的中转站,同时它还能实现语音信号的调制解调。(3)挂机主要功能:挂机(即楼道数码显示板)被安装在医院的大厅走廊里,无人呼叫时正常显示日期时间(与主机时间一致),当有病床和紧急呼救时显示画面自动切换到呼救信息,如显示呼叫病人的床位号或房间号。远离护士站的走廊数码显示屏可设置呼叫报警声响,走廊数码显示屏设置了报警声响后,报警声在晚上与午休的时间段内能自动关闭(但不关闭所显示的床位号与房间号),以免影响病人休息。(4)分机主要功能:分机是分布在各个病房里的呼叫机。按下按钮时,分机自动呼叫主机,通过CPU发送报文向上传输自己的地址。同时分机指示灯变亮,若主机不忙时,喇叭上就会传来振铃音。若有人接听,则可通过麦克来通话。

4系统的硬件设计4.1系统功能的实现4.1.1主机部分主机包括控制部分,数码管显示部分,床牌显示部分。控制部分主要功能是解析分机地址和下发报文;数码显示部分主要以数字形式显示日期时间以及呼叫分机的地址;床牌显示部分用的是发光二极管,以亮灭的形式指示分机位置。主机CPU电路原理图,如图4.1所示:图4.1主机CPU电路图4.1.2分机部分每一个分机在系统中都有唯一的地址相对应。当按下分机上的按钮时,分机会自动呼叫主机,并传输自己的地址。分机电路原理图,如图4.2所示:图4.2分机电路原理图4.1.3模拟板部分模拟板在系统中起着重要的数模转换和调制解调作用,是主机和分机连接的桥梁,对语音信号和报文的上行和下行传输有重要的意义。模拟板电路原理图,如图4.3所示:图4.3模拟板电路图4.1.4挂机部分挂机在主机空闲时显示时间,而且时间显示保持同主机时间显示一致。当有分机呼叫时,挂机显示呼叫分机的位置以及呼叫顺序。挂机实现的主要功能是即时显示。挂机CPU电路原理图,如图4.4所示:图4.4挂机CPU电路图挂机的显示部分使用的是LED显示数码管。挂机显示部分电路原理图,如图4.5所示:图4.5挂机显示部分电路图挂机的显示是受挂机CPU控制和驱动的。挂机显示驱动电路原理图,如图4.6所示:图4.6显示驱动电路图4.2主机控制板的硬件电路设计主机控制板设计是本次系统设计的核心。主机控制板主要用来处理各外部设备发送来的数据,然后向外部设备发送工作指令,指挥整个系统正常工作。本次毕业设计我的重点任务是负责主机控制板的硬件电路设计。主机控制板的电路总体框架图,如图4.7所示:图4.7主机控制板的电路总体框架图分析图4.7可知:主机板上包含两个CPU芯片:AT89C55WD和P89LPC922。AT89C55WD芯片复用P2口控制芯片SN74HC244和SN74HC373,实现了诸如呼叫检测、电话检测、故障检测、关断保护、产生拨号音、产生提示音等功能。另外,AT89C55WD芯片还控制着LED数码管显示专用芯片BC7280/81,在74HC164芯片配合下控制着呼叫指示展板上与各分机对位的发光二极管的点亮和熄灭,来显示是否有分机呼叫及呼叫分机的位置。同时还控制着语音芯片YX24170,在分机发生呼叫时进行语音提示,提示主机管理人员处理分机呼叫请求。P89LPC922芯片同样可以控制LED数码管显示专用芯片BC7280/81,在74HC164芯片的配合下控制主机控制板上的数码显示区显示内容。当有分机呼叫时,数码显示区可显示呼叫分机的位置及其呼叫顺序。若没有呼叫时,就显示数字“0”,表示当前无分机呼叫。DS1302芯片能够产生时钟信号,该信号可以被P89LPC922芯片读入,然后向数码显示控制电路发送指令,在主机控制板的数码显示区显示当前的日期和时间。日期和时间可以由P89LPC两块CPU芯片通过RXD(连续输入)和TXD(连续输出)引脚彼此间通信,共同完成某些操作。CM8870芯片用于主机呼叫分机的过程中。当使用主机话机拨打要呼叫的分机号码时,其拨号音都是双音多频信号(DTMF),这些信号通过CM8870芯片的翻译生成了一个呼叫报文,这个报文中就包含了要呼叫分机的地址。系统分机的CPU收到这个报文后进行分析,地址正确的分机就会与主机接通语音通信线路,实现主机与分机间的语音通信。语音芯片YX24170主要用于语音提示呼叫。当主机收到分机的呼叫请求后,主机CPU芯片AT89C55WD将为YX24170芯片发送指令,由YX24170控制主机控制板的扬声器进行语音提示。YX24170芯片在使用前已写入多个语音代码,在CPU的控制下通过扬声器发出语音提示音。我们可通过主机控制板的键盘操作区选择不同的提示音[16,17]。4.2.1系统使用核心芯片介绍本次设计的这套系统是基于电源调制技术的智能呼叫系统。其中,主机控制板是整个呼叫系统的控制中心,是整个系统的“大脑”,由主机CPU和多种功能模块共同构成。主机控制板控制并实现了诸如接收分机呼叫、主机控制板数码显示区显示、分机呼叫指示展板显示、分机呼叫的语音提示、挂机板数码显示、主机与分机间的双向无干扰语音通信、分机呼叫优先级设定等功能。实现以上功能所使用的芯片有:CPU芯片AT89C55WD、P89LPC922,语音芯片YX24170,双音多频(DTMF)解码器芯片CM887,实时时钟芯片DS1302等。CPU模块在主机控制板部分,我们使用两块CPU芯片AT89C55WD及P89LPC922。其中,AT89C55WD芯片作为主CPU芯片使用,而P89LPC922芯片作为辅助CPU芯片协助AT89C55WD芯片共同完成工作。(1)AT89C55WD芯片图4.8AT89C55WD芯片AT89C55WD芯片是一种功耗低、运算速度快的CMOS型8位微处理器。芯片的制造使用了Atmel公司的高密度非易失性存储技术并且设计有兼容工业标准的80C51和80C52功能设置和引脚输出。片内包含20KB的可编程只读闪存(Flash),可写入/擦除1000次以上;256字节的随机存取储存器(RAM);32条可编程的I/O总线;三个16位定时/计数器;全双向可编程串行通道;8个中断源;芯片振荡器;硬件看门狗电路及时钟电路。AT89C55WD的工作电源为4.0~5.5V,具有低功率停顿(IDLE)和功率下降(DOWN)工作模式,并且具有断电标志POF。AT89C55WD芯片各引脚功能如下:·P0口——8位、开漏、双向I/O口。其第一功能是作为通用I/O口,每个引脚可驱动8个TTL负载作为输入。这时P0口应全部写入1,为高阻抗输入脚。P0口的另一个功能是在访问片外程序存储器和数据存储器时,作为数据总线/低8位地址线的复用脚。在这种模式下,P0口含有内部上拉电阻。在Flash编程时,P0口可输入代码字节;在编程校验时,P0口可输出代码字节(需要外接上拉电阻)。·P1口——8位、具有内部上拉电阻的双向I/O口。其主要功能是用作通用I/O口,每个引脚可驱动4个TTL负载。用做输入端口时,首先应将P1口全部写入1。在这种模式下,外部输入的低电平将引脚拉低,P1口通过内部上拉电阻向外输出电流。P1口在Flash编程和校验时输入低字节地址。P1.0和P1.1口有替代功能:P1.0口可作为T2定时器的外部计数输入;P1.1可作为T2的触发输入。·P2口——8位、具有内部上拉电阻的双向I/O口。P2口可用作普通I/O口,每个引脚的驱动能力为4个TTL负载。用做输入时,应首先将P2口全部写为1。若外部输入低电平,将引脚也拉低为低电平,并通过内部上拉电阻向外部输出电流。在Flash编程和校验时,P2口输入高位地址和某些控制信号。·P3口——8位、具有内部上拉电阻的双向I/O口。P3口可用作通用I/O口,每个引脚的驱动能力为4个TTL负载。作为输入口,应首先将P3口全部写为1,由内部上拉电阻将该引脚拉为高电平。当外部引脚为低电平时,通过内部上拉电阻向外输出电流。在FLASH编程和校验时,P3口也输入某些控制信号。此外,P3口引脚还具有替代功能,如表4.1所示:表4.1AT89C55WD芯片P3口代替功能引脚替代功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通)•RST——复位输入端口。当RST引脚上的输入信号在振荡器运行时维持两个机器周期以上的高电平,器件便可复位。RST引脚还可输出信号:当看门狗定时器WDT溢出时,RST引脚可输出高电平,其脉冲宽度长达98个振荡周期。•ALE/——地址锁存信号输出/负脉冲输入端口。在访问片外程序存储器和数据存储器时,ALE输出低8位地址锁存信号。而在FLASH编程时,该引脚可输入一个负脉冲PROG。在正常操作时,ALE引脚输出的脉冲频率为振荡器频率的1/6,可用于外部定时器或锁存控制信号。在访问片外数据存储器时,将丢失一个ALE脉冲。·/VPP——片外访问程序存储器允许。当EA接地时,器件只执行片外程序存储器代码(0000H~FFFFH)。如果锁定位被编程,EA在复位时将被锁存。当EA接VCC时,将执行片内程序存储器指令。在对芯片编程时,该脚引入12V的编程电压VPP。·XTAL1——片内振荡器反相放大器和片内时钟发生器的输入端。·XTAL2——片内振荡器反相放大器的输出端。(2)P89LPC922芯片图4.9P89LPC922芯片P89LPC922是一种低功耗、高效率的单片微型控制器,能够处理广泛的应用要求。许多系统级的功能被纳入到P89LPC922芯片中,减少了元件数目、电路板空间和系统功耗。P89LPC922芯片的特点是:•除了在12MHz执行的乘法与除法指令外,P89LPC922芯片中的高性能80C51CPU为所有指令提供了167-333ns的指令周期时间。在相同时钟频率下运行同样的程序,P89LPC922的运算速率是标准80C51芯片运算速率的6倍。因为在执行相同的程序时使用了较低的时钟频率,所以P89LPC922芯片在节约了能源的同时降低了干扰。•VDD的调节范围为2.4V至3.6V。I/O口引脚电位为5V(可拉高或激励到5.5V)。•芯片内置8KB的闪存,其中包括1KB的可擦写区和64字节的可擦写页空间。•芯片内置256字节的RAM数据存储器以及512字节的板载辅助RAM。•芯片上的512字节的用户数据EEPROM允许系列化装置运行,参数设置存储等功能。•芯片内置两个16位的计数/定时器。每个定时器都可被配置为在定时器溢出后拨动为端口输出,或转变成PWM输出。•实时时钟也可以用来作为系统定时器。•捕获/比较单元(CCU)提供PWM的输入捕捉和输出比较功能。•芯片内置两个具有选择输入和参考源的模拟比较器。•具有分数发生器、中断检测、帧错误检测、自动地址检测和通用中断功能的增强型UART。•400KHz字节宽的I²C通信端口。•SPI通信的端口。•八个键盘中断输入,附加两个另外的外部中断输入。•四个中断优先级。•看门狗计时器具有单独的芯片振荡器,无需外部振荡元件。看门狗设备的暂停时间有8种参数可供选择。•有源低通复位。板载上电复位只允许没有外部复位元件的操作。复位计数器和复位抑制电路过滤了虚假和不完整复位信号。利用软件实现复位功能也是可行的。•供电失败时,低电压复位(欠压检测)允许系统合理的关闭。低电压复位信号可能随机被设置为中断信号。•振荡器失效检测。看门狗定时器具有独立且完整的板载振荡器能够使它具有振荡器失效检测的功能。•芯片振荡器结构上包括脉冲和RC振荡器选项(在用户程序控制闪存配置位上选择)。RC振荡器允许没有外部振荡器的操作。振荡器支持的工作频率从20KHz到最高的12MHz。该RC振荡器是可选择和精细调节的。•可编程端口输出配置选项:准双向的、开放的、可升降的、输入有效的。•端口“输入模式匹配”检测。当引脚信号匹配或不匹配可编程模式时,端口0可能产生一个中断。•第二数据指针。•史密特触发端口的输入。•所有端口管脚的LED驱动引导(20mA)。是整个芯片的指定最高限额。•限定回传率的端口输出降低了干扰。输出信号大约有10ns的最小斜坡时期。•最少23个I/O引脚(28脚封装)。当使用芯片内振荡器和复位选项时可达到最多的26个I/O引脚。•当选定芯片振荡器和复位选项时,只有电源和接地被用于操作LPC932。•串行可编程闪存允许简单的回路生产编码。闪存的安全位禁止非法的读操作。•用于应用编程的闪存编译码。这使得正在运行程序的代码可以被更改。•空闲和两种不同的待机模式降低了功耗。从待机模式下改进的启动方式。(低中断输入时开始执行)。典型的待机电流为1μA(所有待机程序和电压比较器被禁用)。•28脚的PLCC型和TSSOP型封装。•仿真支持。P89LPC922的各引脚功能如下:·P0口:端口0是一个输出类型具有用户结构的8位I/O端口。其所有端口引脚的配置是独立的。所有引脚都具有史密特触发输入。·P1口:除了P1.2、P1.3和P1.5引脚,端口1是一个输出类型具有用户结构的8位I/O端口。端口已设定好的配置决定了端口1各引脚的输入和输出操作。P1.2、P1.3用做输出时是开漏的;P1.5是仅可输入的。所有引脚都具有史密特触发输入。其引脚替代功能如表4.2所示。表4.2P89LPC922P1口的替代功能引脚替代功能P1.0TXD(串行口输出)P1.1RXD(串行口输入)P1.2T0/SCL(外部中断0/连续时钟输入/输出)P1.3/SDA(外部中断0输入/连续数据输入/输出)P1.4(外部中断1输入)P1.5(外部重置输入)P1.6OCB(输出比较B)P1.7OCC(输出比较C)·P2口:端口2是一个输出类型具有用户结构的8位I/O端口。其所有端口引脚的配置是独立的。端口已设定好的配置决定了端口2各引脚的输入和输出操作。这个端口在20脚封装型号的产品中不存在,并且它被自动设定为具有保存输出信号的能力。所有引脚都具有史密特触发输入。其引脚替代功能如表4.3所示。·P3口:端口3是一个输出类型具有用户结构的2位I/O端口。其所有端口引脚的配置是独立的。端口已设定好的配置决定了端口3各引脚的输入和输出操作。所有引脚都具有史密特触发输入。语音芯片YX24170图4.10YX24170芯片YX24170语音芯片隶属于OTP烧录系列芯片。它是针对客户需求量少,使用周期短,使用效率快而开发的一款一次性烧录芯片。是一种功能强大的立体声音乐合成控制器芯片。它能够演奏最大为32声道的MIDI格式音乐。在YX24170芯片上共包含24个I/O端口,可在6K的采样速率下存储170秒的语音信号。YX24170芯片上为左/右音频各配备一个16位D/A转换器并设置有一个供音频输出的扬声器放大器。该芯片的特点是:·内置8位单片机核心;·内置可编程语音发生器;·内置带可编程锁相环的电压控制振荡器;·内部系统时钟速度可达45MHz(在VCC=3V时可达最大值45MHz);·操作电压:2.4~3.6V;·操作电流:35mA(无音频负载时的平均操作电流)·内置最大为4MB(512K字节)的OTP-ROM;·内置16KB(2048字节)的SRAM;·为信号放大器或滤波器配备两个EQ-OP;·配备一个扬声放大器(0.5W);·内置微型控制器接口(8位并行接口);·待机电流为2.0uA;·语音长度为170秒;·采样频率为6K;·语音输出格式为PWM。YX24170可分段存贮170秒的语音信息。在本次系统设计中,我们在YX24170芯片中分段存入“二”、“十”、“二”、“床”、“呼叫”等语音,在主机CPU芯片AT89C55WD的控制下,便可进行分机呼叫的语音提示。若二十二号分机对主机呼叫,其呼叫提示音可为“二十二床呼叫”,且循环播放,提示主机管理人员二十二号分机在呼叫。双音多频(DTMF)解码器CM8870CM8870/70C是CMD公司生产的用于双音频接收的CMOS型双音多频接收器专用芯片,主要包括输入端运算放大器、频带分割滤波器、数字解码器和输出控制单元4个部分。通过将信号过滤器和数字译码器的功能整合到一块18引脚的双列直插式封装芯片内,CM8870/70C提供了完整的DTMF接收器能力。CM8870/70C使用最新的CMOS技术设计达到低功耗(最大35mW)和精确的数据传递要求。在输入端,运算放大器部分对输入信号进行必要的增益处理,输出的信号通过基于开关电容技术的频带分割滤波器进行滤波和频带分割,提取出高频组信号和低频组信号,再将高频组信号和低频组信号进行特征提取,最后确定出组成按键的2个频率。将这2个频率值送到相应的输出口进行解码,输出相应的按键代码,这样就完成了一个按键的检测。图4.11CM8870/70C的过滤器模块使用换向电容器技术。而其译码器采用数字计数的明暗双解码法将所有16种DTMF信号转变为4位的密码。CM8870/70C芯片电路的特点是:·单5V工作电压;·性能优越,工作状态稳定;·最小外围线路设计,占用空间小;·低功耗设计,节约能源;·工作模式包含省电模式、INHIBIT模式等,工作方式灵活。目前,大多数电话均通过双音频信号进行按键信息的传送。在发送端,电话机对按键信息进行双音频编码;在接收端,通过解码获得相应的按键信息,从而实现按键信息在电话线上的传递。利用电话按键可实现简单、方便、廉价的远程控制。因此,CM8870/70C芯片有着非常广泛的使用前景。DS1302实时时钟芯片实时时钟芯片DS1302具有计算2100年之前的秒、分、时、日、星期、月、年、的能力,还有闰年自动调整功能。31*8位暂存数据存储RAM。串行I/O口方式。工作电压:2.0V到5.5V。工作电流:2.0V时小于300nA。读写时钟或RAM数据时,两种传送方式:单字节传送和多字节传送。与TTL兼容(Vcc=5V)。可选工业级温度范围:-40°C到+85°C。图4.11DS1302芯片DS1302是涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24小时或12小时时间格式。DS1302与单片机之间能采用简单的串行通信的方式进行通信,仅需要3个口线:(1)RES(复位)(2)I/O数据线(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一个字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功率小于1mW。DS1302除了继承了DS1202的基本时间函数外,DS1302还附加有主电源和备用电源,涓流充电电源Vcc1,七位数据暂存存储器。信号描述:V1Vcc1在单电源与电池供电的系统中提供低电源并提供低功率的电源备份。Vcc2Vcc2在双电源系统中提供主电源,在这种方式下Vcc1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2两者中较大者供电。(1)当Vcc2大于Vcc1+0.2V时,VCC2给DS1302供电。(2)当Vcc2小于Vcc1时,Vcc1给DS1302供电。SCLK串行输出)SCLK用来同步串行口的数据传输。内部有一个40kΩ的上拉电阻。I/O/输出)I/O端口是三线制双向数据端口。内部有一个40kΩ上拉电阻。RST)当进行读写操作的时候复位线必须设置为高电平。内部有一个40kΩ上拉电阻。X1,X2内部振荡器有一个6pF电容。DS1302也可以外接一个32.768kHz的外部晶振,在这一结构中X1接外部振荡器,X2悬空。命令字一个命令字引发一个数据转换。MSB(7)必须为高电平。低电平将不能将数据写入DS1302中。位6如果为0,则表示存取日历时钟数据,为1则表示存取RAM数据。位5至位1指示操作单元的地址。最低有效位(位0)为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始传输。图4.6命令字复位和时钟控制通过将RST输入驱动置高电平来驱动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送的过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚为高阻态。上电运行时,在Vcc>2.0V.之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。数据输入数据输入是在输入写命令字节的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的上升沿输入数据,数据从0位开始。如果有额外的SCLK周期,他们将被忽略。中断标志秒寄存器的7位被定义为时钟中断标志。当这一位置为高电平时时钟振荡器停止工作,DS1302进入电流小于100nM的低功耗模式。当这一位为低电平时,时钟开始工作,最初的电源状态没有被定义。AM-PM/12-24模式小时寄存器的7位被定义为12或24小时选择位。当位高电平时,为12小时模式。在12小时模式中,第5位为AM/PM选择位,为高电平时是PM模式。在24小时模式中,第5位为第二个12小时位(20-23小时)。写保护位控制寄存器的第7位是写保护寄存器。它的头7位如果被置为0,在读操作时总是读出0.在对时钟或RAM进行写操作之前,位7必须为0,当它为高电平时,写保护防止任何其他寄存器进行写操作。涓流充电寄存器这个寄存器是DS1302的特有寄存器。如图5的简易图表是涓流充电器的基本组成。涓流式充电选择位(TCS)控制涓流充电器的充电方式。为了防止偶然因素使DS1302工作,只有1010模式可以启动涓流充电器。其他模式都不能启动涓流充电器。涓流充电被禁止时,DS1302被供电。二极管选择位(DS)(2、3脚)选择是否有一个或两个二极管链接在Vcc2和Vcc1之间。如果DS为01,那么选择一个二极管:如果DS为10,则选择两个二极管。如果DS为11或00,那么涓流式充电被禁止,与TCS无关。RS位(0、1脚)选择连接在Vcc2和Vcc1之间的电阻.如果RS为00,涓流充电器被禁止,与TCS二极管无关,电阻的选择与使用者所选择的电池的最大电流或电容充电能力有关。最大充电电流会在后边的例子中计算出。假如一个5V的供电系统给Vcc2供电,并且一个电容链接到Vcc1。仍然假定一个涓流充电器已经被启动且有一个二极管和一个电阻R1链接在Vcc2和Vcc1之间。因此,最大充电电流I最大可以用下边的公式计算出来。I(最大)=(5.0V-diodedrop)/R1≈(5.0V-0.7V)/2kΩ≈2.2mA由于电容充电的原因,电压经过Vcc1和Vcc2后电压会相应降低。时钟/CALENDARBURSTMODE最先的8位时钟/日历寄存器可以被连续的从0地址的0位开始被读或写。当一个写时钟/日历模式被运行,写保护位被置为高电平,任何数据都不会被写入8位时钟日历寄存器(包括控制寄存器)。涓流式充电器在突发模式中不容易受影响。当有读时钟脉冲时,时间被传送到秒寄存器中。时间信息在秒寄存器中被读取。时钟继续运行。在数据更新的过程中不会重复读操作。RAM在RAM地址空间中有连续的静态31乘8字节的地址空间。4.2.2主机板功能模块电路分析.CPU模块电路以AT89C55WD单片机芯片为核心的CPU模块电路,如图4.12所示:图4.12CPU模块电路AT89C55WD芯片的P3.4/T0引脚与SN74HC373芯片的引脚相连,并且通过P2口输出信号控制着SN74HC373芯片实现关断保护等功能。此外,AT89C55WD芯片的引脚P1.7与两块SN74HC244芯片的引脚相连,同时通过SN74HC244芯片输出给P2口的输入信号实现呼叫检测等功能。另外,AT89C55WD芯片的P1.0、P1.1、P1.2、P1.3及P3.2引脚用于控制数码显示模块。P0口用于与语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论