实验三-用户摘、挂机识别初级编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验报告项目名称:用户摘、挂机识别初级编程教学班级:学生姓名:同组成员:指导教师:实验地点:实验日期:实验三用户摘、挂机识别初级编程一、实验的目的及要求:实验目的:1.深入了解实验系统提供的模拟用户接口电路硬件环境;2.通过本次实验,掌握模拟用户线接口电路芯片88622的控制使用方法;3.熟练掌握使用BorlandC集成开发环境IDE编写和调试程序的方法;4.能综合运用所学知识,独立编写和调试用户摘、挂机识别程序,提高使用C语言编写“存储程序控制设备”软件的能力,感受成功的快乐。预习要求:1.实验之前,请仔细阅读教材《程控交换原理与软硬件设计》中关于MY88622芯片软硬件设计的相关内容,掌握模拟用户线接口电路芯片的组成与工作原理;结合2—10图MY88622典型应用电路,进行电路原理说明。2.预习MY88622芯片软件控制和软件设计知识,在预习报告的实验原理一栏中对MY88622的用户摘、挂机识别软件编程控制原理及群处理方法进行说明;3.按照下面的实验内容,独自编写“用户摘、挂机识别”程序,在预习报告中画出实验中预使用的程序流程图,写出事先编写的程序和预期结果。图2—10MY88622典型应用电路二、实验环境:程控交换教学与实验系统实验平台程控交换教学与实验系统编程平台直流稳压电源(SPIDI80型用户除外)外接模拟电话机三、实验原理:1、模拟用户电路功能在数字程控交换机中,模拟用户电路是用得最多的部件。用户电路的芯片种类繁多,从功能上可分为用户线接口电路SLIC,PCM编解码与滤波电路CODEC,以及把二者合二为一的带C功能的用户线接口电路(SLIC+CODEC),模拟用户电路一般要具有下述功能:对每个用户馈电(Batteryfeed)、过压保护(OverVoltageProtection)、振铃(Ringing)、监视(Supervision)、编译码(Codec)、2/4线转换(Hybrid)及测试等7项功能,通称BORSCHT功能,如图2—11所示。具体含义是:(1)馈电(Batteryfeed)向用户话机送直流电流。通常要求馈电电压为-48V或-24V,环路电流不小于18mA。(2)过压保护(OverVoltageProtection)防止过压过流冲击和损坏电路、设备。(3)振铃控制(Ringing)向用户话机馈送铃流。通常为25HZ90Vrms正弦波。(3)监视(Supervision)监视用户线状态、检测用户话机摘机、挂机等信号送控制模块和交换网络。图2—11模拟用户线电路功能框图(4)编译码(Codec)完成模拟话音与数字编码之间的转换。通常采用PCM编解码器CODEC来完成,编码速率为64kb/s。(5)2/4线转换(Hybrid)完成2/4线转换功能。实现模拟二线双向信号与PCM发送、接收数字四线单向信号之间的连接。(6)测试(Test)对用户电路进行测试。一般模拟用户电路的BORSCHT七项功能中,C功能由PCM编解码与滤波电路CODEC实现,其余六项功能由用户线接口电路SLIC及其外部电路实现。MY88622芯片是用户线接口电路SLIC芯片。2、摘、挂机检测功能及软件设计原理挂机检测模块的功能是监视用户线路的状态,看看有无变化,以便在发现有变化时,进行一些必要的处理,把有关数据送入摘机队列或挂机队列,转交其他程序处理。用户摘机或挂机,反映到用户线上是用户回路状态的改变,即回路由断开变为闭合或由闭合变为断开。上述状态改变可以在用户电路的监视点上反映出来。因为用户回路状态只有两个,故正好可以用一位二进制数的两个逻辑值表示,用户接口电路MY88622摘挂机检测点为SHK。摘机时SHK为高电平,挂机为低高电平,因此“0”表示断开,“1”表示闭合。无论是摘机还是挂机,处理机应及时发现,但也无必要连续进行监视,只要定期地进行周期性监视就可以了。为此每隔一定时间(一般为200ms)从用户电路的监视点读取一次用户回路状态,通过对读数进行运算来识别用户的摘机和挂机。仅仅读取反映用户回路当前状态的信息,并不能判断用户是否摘机,因为当前的摘机可能是刚刚摘机,也可能是早已摘机,正在通话中。因此还必须根据上次扫描时读取的状态来判别,只有当前次读取的用户回路为断开状态,而本次读取的用户回路是闭合状态,即由“断开”变为“闭合”时,才判断为摘机。为此必须要有两个存储区:一个用来存储本次的扫描结果SCN,另一个则用来存放前一次的扫描结果LM。如果用JudgeWord来识别用户是否摘机呼出,处理机执行“与”运算:JudgeWord=SCN∧LM如运算结果是1,表示用户摘机呼出,因为只有当SCN为1,LM也为1时,结果才是1。SCN=1说明这次读取的用户线状态为闭合,LM=1说明上次读取用户线状态为断开。而在其他情况下,结果均为0。判断摘机呼出的原理可用图2—12表示。图2—12摘机识别原理挂机识别也可照此办理,但是程序算法要做某些修改,对于已摘机的用户,也可采取定期读取状态的方法。判断挂机的条件应当是上一次为闭合状态,而本次为断开状态,即当JudgeWord=SCN∧LM=1表明为挂机。因为每个用户的状态只占用一位,故对用户摘挂机识别可采用群处理的方法,即每次对一组用户进行检测,每组多少个用户,由计算机的字长确定,例如8位处理机每组8个用户,识别原理见图2—13。从图2—13中可以看出SCN∧LM=00110001表示第1号用户、第5号用户和第6号用户摘机。SCN∧LM=01000100表示第3号用户和第7号用户挂机。图2—13群处理识别用户摘挂机四、实验内容及步骤:实验内容及要求:“用户摘、挂机识别”初级编程为必做项。独自编写的程序在完成输入与调试工作后,运行该程序可实现当用户对话机做摘/挂机操作时,屏幕上将显示摘/挂机电话的号码。用户摘、挂机识别初级编程提示:用户摘、挂机检测硬件电路连接示意图如图2—14。图2—14用户摘、挂机检测硬件电路连接示意图SHK用户组的地址为0x260(不同型号设备的地址略有差异,可进入教学实验系统查阅)。执行自编用户摘、挂机识别初级程序后,程序每隔200ms对用户组扫描一次。该程序应具备以下功能:运行程序后,当用户对话机做摘、挂机操作时,屏幕上能正确显示出摘、挂机电话的号码。摘机算法:SCN∧LM=××××××××由于上面的算法采用了群处理,所以要用“寻1”操作找出摘机用户号码。“寻1”操作可采用移位实现或采用教材P143程序实例中的数组Subs_Bit[]比较的方法。挂机算法:SCN∧LM=××××××××挂机的算法同样也采用了群处理,也要用“寻1”操作找出挂机用户号码。此外,每隔200ms对用户组扫描一次,在编程中可考虑用delay()函数实现。摘挂机检测流程图在数字程控交换机中,通常采用群处理方式识别用户摘挂机,流程图见图2—15。图2—15群处理方式识别用户摘挂机流程图实验步骤:实验中的“用户摘、挂机识别”程序输入与调试请在程控交换教学与实验系统编程平台上独立完成。通过实验提高亲自动手编程的能力,提高对用户线接口电路的分析和控制能力,学会解决在实验及程序调试过程中遇到的各种实际问题。具体步骤如下:步骤1、源程序输入(1)接通电源,开机启动系统,双击“”图标,选择进入编程平台口令窗口,如图2-5;点击“取消”,进入编程平台入口窗口,选择摘挂机检测实验编程如图2-16;(2)进入摘挂机检测实验编程窗口如图2-17,阅读编程要求与编程指导,深刻了解编程要求所提出的具体内容与硬件电路,认真学习编程指导所提出的方法与使用的函数。(3)点击“编程实验”按钮,弹出BorlandC集成开发环境IDE窗口如图2-18。图2-16选择摘挂机检测实验编程图2-17摘挂机检测实验编程窗口图2-18在窗口C环境下输入自己编写的摘挂机检测程序进入程控交换教学与实验系统的编程平台,在C环境下输入独自编写的“用户摘、挂机识别”源程序。源程序文件命名为:“班号学号HOOK.C”,存入D盘名为“实验”的文件夹中本班文件夹内,以备教师检查。(4)在File菜单项下,点击New,弹出编程窗口,在窗口C环境下输入自己编写的“用户摘、挂机识别”源程序。源程序文件命名为:“班号学号HOOK.C”,存入D盘名为“实验”的文件夹中本班文件夹内。步骤2、程序调试。(1)在Compile菜单项下,点击Compile进行编辑,消除语法上的错误。(2)在Run菜单项下,点击Run运行程序,消除连接上的错误。调试过程中做好调试记录,将实验过程中遇到的问题、修改的语句、解决方法及结果记录下来。程序调试通过者,经教师检查通过后,方可上交实验报告。步骤3、实验结束。在File菜单下选择Quit,回到原窗口,按“退出”按钮退出。注意事项:本实验在编程平台上完成。要求铃流源处于关闭状态。实验之前,检查铃流源是否处于关闭状态,未关好的关好铃流源。源程序文件命名为:“班号学号HOOK.C”,存入D盘名为“实验”的文件夹中本班文件夹内,以备教师检查。五、程序清单:#includestdio.h#includeconio.h#includedos.h#defineFIRST_BOARD_HOOK_ADDRESS0x260#defineOFFHOOK_QUEUE_SIZE16#defineONHOOK_QUEUE_SIZE16#defineSUM_BOARD_3inti;unsignedcharUM_offhook;unsignedcharLm[1];unsignedcharSubs_Bit[8];unsignedcharOffHook_Queue[OFFHOOK_QUEUE_SIZE];unsignedcharOffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag;unsingedcharOnHook_Queue[ONHOOK_QUEUE_SIZE];unsignedcharOnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag;unsignedcharUM_OffHook_1,UM_OnHook_1;voidScanFirstBoard(void);main()OffHook_Queue[0]=0;OffHook_Spos=0;OffHook_Rpos=0;OffHook_Queue_Flag=0;OnHook_Queue[0]=0;OnHook_Spos=0;OnHook_Rpos=0;OnHook_Queue_Flag=0;Lm[0]=0;Subs_Bit[0]=0x01;Subs_Bit[1]=0x02;Subs_Bit[2]=0x04;Subs_Bit[3]=0x08;Subs_Bit[4]=0x10;Subs_Bit[5]=0x20;Subs_Bit[6]=0x40;Subs_Bit[7]=0x80;UM_OffHook_1=0;UM_OnHook_1=0;Outportb(0x369,0);clrscr();printf(“Pleaseoffhook,checkoffhooksubscribernumber.\n”);printf(“Thenonhook,checkonhooksubscribernumber.\n”);for(;;){If(kbhir())Break;Delay(20);ScanFirstBoard();}Return0;}VoidScanFirstBoard(){unsignedcharScn;unsignedcharNewScan_OffHook;unsignedcharNewScan_OnHook;unsignedcharOldLm;unsignedcharCurrentBoardNum;unsignedintJudgeWord;inti;CurrentBoardNum=0x01;Scn=inportb(FIRSR_BOARD_HOOK-ADDRESS)&0xff;JudgeWord=UM_OffHook_1&Scn;i=7;while(Jud

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功