用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

使用uC/OS-II操作系统的短信息电话机

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:52:47
【本文由PB创新网为您整理】
摘要:将μC/OS-II实时嵌入式操作系统移植到EPSON八位单片机上来开发短信息电话机。此电话机除普通电话的通用功能外,还增加了短消息收/发功能、信息浏览与查阅功能、信息点播与信息订阅功能等。

    关键词:短信息电话机 实时操作系统 μC/OS-II

1 背 景

  后PC时代的到来,使人们开始越来越多地接触到一个新的概念——嵌入式产品。手机、PDA(如商务通)等均属于手持式嵌入式产品,VCD机、机顶盒等也属于嵌入式产品,而车载GPS系统、数控机床、网络冰箱等同样都属于嵌入式产品。信息电器具有信息服务功能,如网络浏览、视频点播、文字处理、电子邮件、个人数字助理等。后PC时代,家用电器将向数字化和网络化发展,计算机都将嵌入到电视机、冰箱、微波炉、电话等中,并通过家庭控制中心与Internet连接,转变为智能网络家电;还可以实现远程医疗、远程教育等。据估计未来十年间,信息家电(网络冰箱、机顶盒、家庭网关、数字机顶盒等)总量可达到1~1.5亿台,总市场需求将达到900~1500亿元。

  Short Messages Phone(短信息电话机)是一种操作简便、成本低廉的固定电话信息终端产品。它集成了网络和智能电话的优点,是一种基于信息网络的,具有交互功能的信息终端产品,可以通过固定电话网络与信息中心进行数据双向传送。

2 系统功能及其实现方案

2.1 功能特点

  短信息电话机除了实现普通电话机的通用功能外,还增加了短消息收/发、信息浏览与查阅、信息点播、信息订阅、电话簿、来电号码显示与存储、通话记录、来电转移、呼叫等待、呼叫限制、对屏幕的灰度进行设置、对回执进行设置以及时钟和日历功能、闹钟功能、特色铃声功能、记事本功能等。

  短信息电话机还可以和信息中心在线交互,查看信息中心提供的信息(例如天气预报、电视预告、电影预告、股价查询、话费查询、区号邮编查询、新闻栏目、彩票信息等等),还可以订阅一些自己喜欢的信息。在线浏览的信息取决于信息中心提供的信息。

  短信息电话机就像是一个固定的手机。手机的功能几乎它都具备。

2.2 硬件方案

  (1)MCU的选择

  MCU是整个方案的核心,由它来处理CPE(客户端设备)与IIS(集成信息系统),控制整个电话机的各个功能部件。由于人机界面对速度的要求不是很高,数据通信速度也相对较低,一般的8位MCU就能够满足方案的要求。我们选择EPSON 的EOC88系列的E0C88104芯片。

  (2)数据信号的解/编码

  ① FSK信号的解码。FSK(频移键控)的解码选用台湾华邦公司的W91030。它是用同步串口与MCU连接的,不仅能提供FSK的解码,而且还能提供CAS信号的检测(CAS信号是IIS与CPE连接时下传的一个很重要的握手信号)和振铃检测,是一款很实用的芯片,但它的成本较高。如果用分离器件,也能做到FSK解码,但这样做没有经过验证,风险较大。

  ② DTMF信号的解码。选用的是9170,这一款芯片是很通用的。

  ③ DTMF信号的编码。选用的是台湾华邦公司的W91082,同样是以同步串口与MCU相连接。

  ④ FSK的编码。FSK信号的编码不是必需的,考虑到FSK传送的效率要比DTMF高20~28倍,当然最好选用FSK上传方式。由于相应的FSK的编码器件价位很高,本方案采用了低成本的软件方式作为后备模块。

    (3)语音电路

  目前选用的是Philips公司的TEA1098。该器件集成了普通话音放大、消侧音及免提功能,实用方便,但价位有点高。考虑到我们初次接触电话电路,而且这部分也不是关键技术,为了缩短研发周期,选择这款芯片是比较合适的。

    2.3 软件方案

  本系统选用μC/OS-II操作系统,将其移植到所选的MCU上。在main中建立一个起始任务

StartTask。

int main (void){

OSInit();

OSTaskCreate((void*)StartTask,(void*)0X00,(OS_STK ) &StartTaskStk[START_TASK_STK_SIZE-1],0);

OSStart();

return 0;

}

起始任务中,首先建立一系列的信号量和邮箱:

Sem_Int_Ring = OSSemCreate(0) ;唤醒振铃任务

Sem_Any_SMTask = OSSemCreate(0) ;唤醒短消息任务

Sem_Int_Keyboard = OSSemCreate(0) ;唤醒键盘任务

Sem_Int_ClockTask = OSSemCreate(0) ;唤醒时钟中断

Mbox_Any_UI= OSMboxCreate((void *)0);唤醒UI任务

Mbox_Int_Hook= OSMboxCreate((void *)0);唤醒摘挂机任

;务

然后,用OSTaskCreate()函数建立6个任务。任务名分别为:HandsetTask(摘/挂机任务)、RingTask(响铃任务)、KeyTask(键盘任务)、SmTask(短消息任务)、UITask(用户界面(UI)任务)、ClockTask(时钟任务)。最后,在起始任务中将它本身删除掉。

  (1)摘/挂机任务

  当拿起听筒或放下听筒时,就产生中断。在中断中,调用OSMboxPost(Mbox_Int_Hook,Msg_Int_Hook)来唤醒摘/挂机任务,同时清除中断标志。Msg_Int_Hook[0]=0x00为摘机,Msg_Int_Hook[0]=0x01为挂机。

  摘/挂机任务不断调用OSMboxPend(Mbox _Int_Hook,0,&err)来获得信箱。获得信箱后,根据Msg_Int_Hook[0]中的值,就知道是摘机还是挂机,然后调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务。Msg_Any_UI

[1] [2] [3]  下一页

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:15,953.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号