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

上传人:feng****heng 文档编号:210812177 上传时间:2023-05-18 格式:DOCX 页数:14 大小:339.26KB
返回 下载 相关 举报
实验三-用户摘、挂机识别初级编程_第1页
第1页 / 共14页
实验三-用户摘、挂机识别初级编程_第2页
第2页 / 共14页
实验三-用户摘、挂机识别初级编程_第3页
第3页 / 共14页
点击查看更多>>
资源描述
实验报告项目名称: 用户摘、挂机识别初级编程教学班级:学生姓名 :同组成员:指导教师:实验地点:实验日期 :实验三 用户摘、挂机识别初级编程一、实验的目的及要求:实验目的:1. 深入了解实验系统提供的模拟用户接口电路硬件环境;2. 通过本次实验,掌握模拟用户线接口电路芯片88622的控制使用方法;3. 熟练掌握使用Borland C集成开发环境IDE编写和调试程序的方法;4. 能综合运用所学知识,独立编写和调试用户摘、挂机识别程序,提高使用C语言编写“存 储程序控制设备”软件的能力,感受成功的快乐。预习要求:1. 实验之前,请仔细阅读教材程控交换原理与软硬件设计中关于MY88622芯片软硬件 设计的相关内容,掌握模拟用户线接口电路芯片的组成与工作原理;结合210图 MY88622典型应用电路,进行电路原理说明。2. 预习MY88622芯片软件控制和软件设计知识,在预习报告的实验原理一栏中对MY88622 的用户摘、挂机识别软件编程控制原理及群处理方法进行说明;3. 按照下面的实验内容,独自编写“用户摘、挂机识别”程序,在预习报告中画出实验中 预使用的程序流程图,写出事先编写的程序和预期结果。210MY88622典型应用电路二、实验环境:程控交换教学与实验系统实验平台程控交换教学与实验系统编程平台直流稳压电源(SPIDI80型用户除外)外接模拟电话机三、实验原理:1、模拟用户电路功能 在数字程控交换机中,模拟用户电路是用得最多的部件。用户电路的芯片种类繁多,从功能 上可分为用户线接口电路SLIC, PCM编解码与滤波电路CODEC,以及把二者合二为一的带C 功能的用户线接口电路(SLIC + CODEC),模拟用户电路一般要具有下述功能: 对每个用户馈电( Battery feed) 、过压保护( Over Voltage Protection) 、振铃( Ringing) 、 监视(Supervision)、编译码(Codec)、2/4线转换(Hy brid)及测试等7项功能,通 称BORSCHT功能,如图211所示。具体含义是:(1) 馈电(Battery feed)向用户话机送直流电流。通常要求馈电电压为-48V或-24V,环路电流不小于18mA。(2) 过压保护(Over Voltage Protection)防止过压过流冲击和损坏电路、设备。(3) 振铃控制(Ringing)向用户话机馈送铃流。通常为25HZ90Vrms正弦波。(3)监视(Supervision) 监视用户线状态、检测用户话机摘机、挂机等信号送控制模块和交换网络。图211 模拟用户线电路功能框图(4) 编译码(Codec)完成模拟话音与数字编码之间的转换。通常采用PCM编解码器CODEC来完成,编码速率 为 64kb/s。(5) 2/4 线转换(Hy brid)完成2/4线转换功能。实现模拟二线双向信号与PCM发送、接收数字四线单向信号之间 的连接。(6) 测试(Test)对用户电路进行测试。一般模拟用户电路的BORSCHT七项功能中,C功能由PCM编解码与滤波电路CODEC实现, 其余六项功能由用户线接口电路SLIC及其外部电路实现MY88622芯片是用户线接口电路 SLIC芯片。2、摘、挂机检测功能及软件设计原理 挂机检测模块的功能是监视用户线路的状态,看看有无变化,以便在发现有变化时, 进行一些必要的处理,把有关数据送入摘机队列或挂机队列,转交其他程序处理。用户摘机或挂机,反映到用户线上是用户回路状态的改变,即回路由断开变为闭合 或由闭合变为断开。上述状态改变可以在用户电路的监视点上反映出来。因为用户回路状态只有两个,故正好可以用一位二进制数的两个逻辑值表示,用户接口 电路MY88622摘挂机检测点为SHK。摘机时SHK为高电平,挂机为低高电平,因此“0”表 示断开,“1”表示闭合。无论是摘机还是挂机,处理机应及时发现,但也无必要连续进行监视,只要定期地进行 周期性监视就可以了。为此每隔一定时间(一般为200ms)从用户电路的监视点读取一次用 户回路状态,通过对读数进行运算来识别用户的摘机和挂机。仅仅读取反映用户回路当前状态的信息,并不能判断用户是否摘机,因为当前的摘机可 能是刚刚摘机,也可能是早已摘机,正在通话中。因此还必须根据上次扫描时读取的状态来 判别,只有当前次读取的用户回路为断开状态,而本次读取的用户回路是闭合状态,即由“断 开”变为“闭合”时,才判断为摘机。为此必须要有两个存储区:一个用来存储本次的扫描 结果SCN,另一个则用来存放前一次的扫描结果LM。如果用JudgeWord来识别用户是否摘机呼出,处理机执行“与”运算:JudgeWord =SCN A LM如运算结果是1,表示用户摘机呼出,因为只有当SCN为1, LM也为1时,结果才是1。SCN =1说明这次读取的用户线状态为闭合,LM =1说明上次读取用户线状态为断开。 而在其他情况下,结果均为0 。判断摘机呼出的原理可用图212 表示。摘机挂机基A A A AIIIlliSCN000111LM DDCl011SCN A LM000100图212 摘机识别原理挂机识别也可照此办理,但是程序算法要做某些修改,对于已摘机的用户,也可采取 定期读取状态的方法。判断挂机的条件应当是上一次为闭合状态,而本次为断开状态,即当 JudgeWord二SCN A LM =1 表明为挂机。因为每个用户的状态只占用一位,故对用户摘挂机识别可采用群处理的方法, 即每次对一组用户进行检测,每组多少个用户,由计算机的字长确定,例如8位处理机每组 8个用户,识别原理见图213 。从图213中可以看出scn a LM = o o 1 1 o o o 1表示第1号用户、第5号用户和第6号用户摘机。SCN ALM表示第3号用户和第7号用户挂机。DtDeDiD4DmDiDoSCN00110101LM01000100SCN11001010LM10111011SCNA LM00110001SCNA LM01000000挂机摘机摘机插机图213 群处理识别用户摘挂机四、实验内容及步骤:实验内容及要求:“用户摘、挂机识别”初级编程为必做项。独自编写的程序在完成输入与调试工作后运行该程序可实现当用户对话机做摘/挂机操作时,屏幕上将显示摘/挂机电话的号码。用户摘、挂机识别初级编程提示:用户摘、挂机检测硬件电路连接示意图如图214。图214 用户摘、挂机检测硬件电路连接示意图SHK用户组的地址为0x260(不同型号设备的地址略有差异,可进入教学实验系统查阅)。执行自编用户摘、挂机识别初级程序后,程序每隔200ms对用户组扫描一次。该程序应具备以下功能:运行程序后,当用户对话机做摘、挂机操作时,屏幕上能正确显示出摘、挂机电话的号 码。摘机算法: SCN A LM =XXXXXXXX由于上面的算法采用了群处理,所以要用“寻1”操作找出摘机用户号码。“寻1”操作可采用移位实现或采用教材P143程序实例中的数组Subs_Bit比较的方 法。挂机算法: SCN A LM =XXXXXXXX挂机的算法同样也采用了群处理,也要用“寻1”操作找出挂机用户号码。此外,每隔200ms对用户组扫描一次,在编程中可考虑用delay()函数实现。 摘挂机检测流程图 在数字程控交换机中,通常采用群处理方式识别用户摘挂机,流程图见图215。实验步骤:实验中的“用户摘、挂机识别”程序输入与调试请在程控交换教学与实验系统编程平台上 独立完成。通过实验提高亲自动手编程的能力,提高对用户线接口电路的分析和控制能力,学 会解决在实验及程序调试过程中遇到的各种实际问题。具体步骤如下:步骤 1、源程序输入(1)接通电源,开机启动系统,双击图标,选择进入编程平台口令窗口,如图2-5;点击“取消”,进入编程平台入口窗口,选择摘挂机检测实验编程如图2-16;(2)进入摘挂机检测实验编程窗口如图2-17,阅读编程要求与编程指导,深刻了解编程要求所提出的具体内容与硬件电路,认真学习编程指导所提出的方法与使用的函数。(3)点击“编程实验”按钮,弹出Borland C集成开发环境IDE窗口如图2-18。图2-16 选择摘挂机检测实验编程退出下一币程诵土if城加JI3CL弋出舸丄-M c島=吉=一程牙弭klr- F虽二7 J*4101彈二H -U 呷11緒寺国艮-纯叭于予敢凹.I岸苛 wir h 萨 窘 m话Ji珂t Fr 也h ki ti r 爲h 卫GHZ屯轉血EKT&ro ei赴,的 希.w 畑nm*sTCffiTH NZMI必M鵰b唾阮幵欣曲15 * :EH 迹注沆姑TM1曲 亞T SnLLiaETrt 疋才丈.p ni&ahrs-w 曲此Mi -i-自 paeff” 曲 用户 ic-jrj-.r 5115 耳坤汗荷刨Six用产粧WHK摘陋銀帕廿脚段口RuIF斗!呂工离mW: irmi图2-17 摘挂机检测实验编程窗口區囲囱m生区Search Hun , CanpilE 匚OgtiizcEI!丄?HOrWiC.CF3l-E:-f图 2-18 在窗口 C 环境下输入自己编写的摘挂机检测程序I_吃山 I 匚waiE 日已m Ti】e in 日 nEw 比it nidM进入程控交换教学与实验系统的编程平台,在C环境下输入独自编写的“用户摘、挂机 识别”源程序。源程序文件命名为“班号学号”,存入D盘名为“实验”的文件夹中本班文 件夹内,以备教师检查。(4)在File菜单项下,点击New,弹出编程窗口,在窗口 C环境下输入自己编写的“用户 摘、挂机识别”源程序。源程序文件命名为:班号学号”,存入D盘名为“实验”的文件夹 中本班文件夹内。步骤 2、程序调试。(1)在Compile菜单项下,点击Compile进行编辑,消除语法上的错误。(2)在Run菜单项下,点击Run运行程序,消除连接上的错误。 调试过程中做好调试记录,将实验过程中遇到的问题、修改的语句、解决方法及结果记录下 来。程序调试通过者,经教师检查通过后,方可上交实验报告。步骤 3、实验结束。在File菜单下选择Quit,回到原窗口,按“退出”按钮退出。注意事项:本实验在编程平台上完成。要求铃流源处于关闭状态。实验之前,检查铃流源是 否处于关闭状态,未关好的关好铃流源。源程序文件命名为:班号学号”,存入D盘名为“实验”的文件夹中本班文件夹内,以备教师检查。五、程序清单:#include#include#include #define FIRST_BOARD_HOOK_ADDRESS 0x260#define OFFHOOK_QUEUE_SIZE 16#define ONHOOK_QUEUE_SIZE 16#define SUM_BOARD_3int i;unsigned char UM_offhook;unsigned char Lm1;unsigned char Subs_Bit8;unsigned char OffHook_QueueOFFHOOK_QUEUE_SIZE;unsigned char OffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag; unsinged char OnHook_QueueONHOOK_QUEUE_SIZE;unsigned char OnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag; unsigned char UM_OffHook_1,UM_OnHook_1;void ScanFirstBoard(void);main() OffHook_Queue0=0;OffHook_Spos=0;OffHook_Rpos=0;OffHook_Queue_Flag=0;OnHook_Queue0=0;OnHook_Spos=0;OnHook_Rpos=0;OnHook_Queue_Flag=0;Lm0=0;Subs_Bit0=0x01;Subs_Bit1=0x02;Subs_Bit2=0x04;Subs_Bit3=0x08;Subs_Bit4=0x10;Subs_Bit5=0x20;Subs_Bit6=0x40;Subs_Bit7=0x80;UM_OffHook_1=0;UM_OnHook_1=0;Outportb(0x369,0);clrscr();printf(“Please offhook,check offhooksubscriber number.n”); printf(“Then onhook,checkonhooksubscriber number.n”);for(;)If(kbhir()Break;Delay(20);ScanFirstBoard();Return0;Void ScanFirstBoard()unsigned char Scn;unsigned char NewScan_OffHook;unsigned char NewScan_OnHook;unsigned char OldLm;unsigned char CurrentBoardNum;unsigned int JudgeWord;int i;CurrentBoardNum=0x01;Scn=inportb(FIRSR_BOARD_HOOK-ADDRESS)&0xff;JudgeWord=UM_OffHook_1 & Scn;i=7;while(JudgeWord!=0)While(JudgeWord&Subs_Biri)!=Subs_Biti)i-;if(OffHook_Spos+1)=OffHook_Rpos)|(OffHook_Spos=OFFHOOK_QUEUE_SIZE)&(OffH ook_Spos=0)Printf(“OffHook_Queue is Full. Not Insert. n”);ElseOffHook_QueueOffHook_Spos=i;printf(“OffHook_Queue: BoardNum:%d,OffHook_Sub:%dn”,CurrentBoardNum,i+1);JudgeWord=JudgeWord&(Subs_Biti);i-;printf(“OffHook_Queue : %xn”,OffHook_QueueOffHook_Spos); NewScan_OffHook=Scn;OldLm=Lm0;UM_OffHook_1=NewScan_OffHook&(OldLm);NewScan_OnHook=Scn;JudgeWord=UM_OnHook_ 1 &(NewScan_OnHook);i=7;while(JudgeWord ! =0)While(JudgeWord&Subs_Biti)!=Subs_Bitii-;if(OnHook_Spos+1)=OnHook_Rpos)|(OnHook_Spos=ONHOOK_QUEUE_SIZE)&(OnHook_R pos=0)Printf(“OnHook_Queue is Full . Not Insert. n”);elseOnHook_QueueOnHook_Spos=i;printf(“OnHook_Queue: %d,OnHook_Sub:%d n”,JudgeWord=JudgeWord&(Subs_Biti);i-;NewScan_OnHook=Scn;OldLm=Lm0;UM_OnHook_1=(NesScan_OnHook)&OldLm;Lm0=Scn;六、实验结果及结果讨论:1、讨论题:在实验报告实验讨论一栏中结合上机实验,针对教材P144程序列表讨论以下问 题(1) 赋值语句Subs_Bit0二0x01至Subs_Bit7 = 0x80八行语句的目的,是准备实现群处理的什么功能该功能通过其后的哪些语句实现的(2) JgudgeWord = UM_0ffHook_1 & Scn;语句的功能该语句是否必须有为什么 写出你验证的过程和结果。答案:(1)因为每个用户的状态只占用一位,故对用户摘挂机识别可采用群处理的方法,即每次对一组用户进行检测,每组多少个用户,由计算机的字长确定。(2)JgudgeWord = UM_OffHook_1 & Sen功能:对摘机进行检测 该语句必须有,因为只有检测出上一次是摘机还是挂机才能确定本次摘机是否 成功。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!