基于C语言的电话计费系统软件设计.docVIP

基于C语言的电话计费系统软件设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于C语言的电话计费系统软件设计.doc

基于C语言的电话计费系统软件设计   摘 要:本文主要实现基于C语言的电话计费系统的软件设计,较好的实现了信息的快速控制与处理,以及信息的显示等功能。   关键词:C语言;计费系统;程序   中图分类号:TP311.5 文献标识码:A 文章编号:1674-7712 (2013) 16-0000-01   一、电话计费系统问题的提出   众所周知,目前,拥有电话机的用户数不胜数,计费的根据都是来自电信局交换机给出的清单,而清单的方式是准确的,但绝大多数的电话机用户不能及时方便地看到费用清单,而各类卡式电话机可以实时显示计费,但不能进入家庭,前些年常见的LED公用电话计费器因不能适应电话费率的变化而显得不太适用。因此我们希望能有一台像家庭内的电表、水表、气表一样的电话计费表。   二、电话计费器的软件设计   电话计费器系统有需要实现以下功能:日期和时间的显示;电话接听计时;去电计时计费及显示;挂机时的查询、累计及设置功能。可在主程序中用循环语句,使计费器工作于以上四种功能状态,循环体中用if条件语句来判断是哪个状态的条件发生,则调用该功能状态的执行函数。软件系统的流程图如图1所示。   主程序开始时进行一些初始化,如清除显示器RAM、FIFORAM,设置键盘、显示方式、时钟分频、定时器/计数器初始化等。然后打开中断后便可进入循环体。下面对各程序模块分别加以介绍。   (一)显示设计   可以采用数组diss作为显示缓冲区,存放将要显示的数据。table数组作为段码存放区。通过对专用接口芯片8279的写显示命令,储存显示数据,再从table段码表中取出要显示数据的相应段码送到数据口显示。也可以设计一个显示子函数每次显示时,只需给diss数组重新赋值,便于改变要显示的内容。   (二)计时设计   在来电接听以及拨号去电接通时,均需要计费器有计时显示功能。设计中可以采用复合定时的方法,得到1s的定时中断。可使定时器0工作在定时器方式1,定时50ms,定时时间到后P1.0反相。定时器1则工作在计数器方式2,对T1引脚端输入的脉冲计数,当计数满10次的时候,定时1s时间。当有挂机信号时,INT0端为低电平时,发生外部中断,此时两定时计数器都停止计数。显示数据时只需将计时变量SIN的值赋给diss数组,调用显示函数,并且每一秒diss数组中的内容变化一次,则显示器每秒就刷新一次。   voidtime_control()/*来电计时*/   {ucharidatadiss[16]={10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,};   ucharmin_1,min_0,sn_1,sn_0;sn=0;   P1_0=1;//保证第一次反相后便开始计数   TR0=1;TR1=1;//启动两个定时计数器   for(;;){if(flag){flag=0;break;}   else{if(~flag)   {min_1=sn/60/10;min_0=sn/60%10;   sn_1=sn%60/10;sn_0=sn%60%10;   diss[5]=min_1;diss[6]=min_0;   diss[7]=11;diss[8]=sn_1;   diss[9]=sn_0;disp(diss);   flag=0;}}}}   (三)计费处理   计费处理程序是本文设计的重点。设计中我们只单一地考虑市话和国内长途。依据电信局对固定电话的计费标准:市话前三分钟0.2元,以后的每分钟0.1元;国内长途则以6秒为一个计费单位,0.07元/6秒,但是其存在一个优惠的时段,在0:00―7:00之间可以享受超过6折的优惠,0.04元/6秒,来进行该部分的编程。设置一个长途标志位,通过判断此标志来分别进入市话或长途的相应处理程序中。下面是市话计费的程序,其它计费程序也基本相似。   if(l_flag==0)   {if(sn=3*60)money=price0_0;//3分钟之内   else//超过3分钟   {time=(sn-3*60)/60;   time0=(sn-3*60)%60;   if(time0!=0)time++;   money=price0_0+time*price0_1;}}   (四)功能键处理   当电话处于挂机状态下,可以通过按键进行查询,累计,设置等功能操作。由if条件语句判断是什么键值,当键值为0x0c时,进入查询的操作,将存储话单信息的结构数组中的数据赋给diss数组,再调用显示函数显示储存的话单信息;当键值为0x0d时,将话费的累计值赋予给diss数组,再调用显示函数显示。当键值为

文档评论(0)

lmother_lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档