0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

EPSON MCU和μC/OS-II实现短信息电话机的通信系统设计

电子设计 来源:东南大学 作者:何璐坪,谢吉毕 2020-09-30 10:01 次阅读

将μC/OS-II实时嵌入式操作系统移植到EPSON八位单片机上来开发短信息电话机。此电话机除普通电话的通用功能外,还增加了短消息收/发功能、信息浏览与查阅功能、信息点播与信息订阅功能等。

1 背 景

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中建立一个起始任务

基于EPSON八位单片机和μC/OS-II实现短信息电话机的通信系统设计

然后,用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,%26;amp;err)来获得信箱。获得信箱后,根据Msg_Int_Hook[0]中的值,就知道是摘机还是挂机,然后调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务。Msg_Any_UI [0]=任务号1,Msg_Any_UI =0x00为摘机,Msg_Any_UI =0x01为挂机。

在挂机的时候,如果先前是在响铃的时候摘机的,那么UI任务把它当做已接来电处理;如果不是在响铃的时候摘机的,那么在挂机的时候把它当做已拨电话处理。

(2)振铃任务

当铃声来到时,就产生中断。在这个中断中,调用OSSemPost(Sem_Int_Ring)来唤醒振铃任务。

响铃任务调用OSSemPend(Sem_Int_Ring,0,%26;amp;err)来获得信号量。获得信号量后,就把下传的号码接收下来;根据号码就可以知道是短信息,还是普通电话。

① 当是短信息时,就调用OSSemPost(Sem_Any _SMTask)来唤醒短消息任务;

② 如果是电话,就响铃,同时调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务。这时Msg_Any_UI[0]=任务号2,从Msg_Any_UI开始存的是来电时间和电话号码,然后调用OSSemPend(Sem_Int_Ring,RING_RECV_TIMEOUT,%26;amp;err),来延时响铃一段时间。

如果在这段时间内没有接电话,那么必然会超时,于是就清除铃声中断,同时调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务,这时Msg_Any_UI[0]=任务号2,Msg_Any_UI=0xff表示铃声结束。UI任务把它当作未接来电处理。

如果在这段时间内接电话,就必然唤醒摘/挂机任务。如果从响铃到对摘/挂机任务处理完毕所需要的总时间还没有到RING_RECV_TIMEOUT,那么,当时间到了,UI任务也会收到铃声结束的消息;但此时,UI任务不对它做任何处理。

响铃任务如何区别是正常的电话还是信息中心的来电信息呢?其实很简单。信息中心也是一个终端,是由一个特定的号码来确定的。就像用不同的电话号码来区别不同的用户一样。这样响铃任务就可以根据电话线上下传的号码,来确定是哪种情况了。

(3)键盘任务

有按键按下时,产生一中断,在中断服务子程序中调用OSSemPost(Sem_Int_Keyboard)来唤醒键盘任务,同时清除中断标志。键盘任务调用OSSemPend(Sem_Int_Keyboard,0,%26;amp;err)来获得信号量。获得信号量后,键盘任务将调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)唤醒UI任务。

Msg_Any_UI[0]为任务号3, Msg_Any_UI为键值。

(4)短消息任务

该任务调用OSSemPend(Sem_Any_SMTask,0,%26;amp;err)获得信号量。当获得信号量后,通过标志位判别是准备上传数据还是下传数据。

① 下传数据时,将下传的数据放在recv_buf[]中,然后调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)唤醒UI任务。Msg_Any_UI [0]=任务号4,从Msg_Any_UI 开始存的是从recv_buf[]中筛选过的数据。这是在连上后从信息中心下载信息的情况,其中Msg_Any_UI 存的是信息的种类号,种类号都是大于0x80H小于0xFFH的;没有连上信息中心或者是连上之后完成任务。这时recv_buf存的就是0xff;如果刚刚连上,就在recv_buf存0x01。

② 如果用户需要发送短消息任务,先将信息存在Msg_send_buf[]中,然后UI任务调用OSSemPost(Sem_Any_SMTask),将该任务激活。该任务提取存在Msg_send_buf[]中的信息后,包装后保存在send_buf[],然后将其发出去。

(5)用户界面任务

UI任务一直在等待消息。当它被激活时,根据存在Msg_Any_UI[255]中的不同数据进行不同的处理。详述见“3.用户界面任务详述”。

(6)时钟任务

单片机每10ms产生一个中断,在这个中断服务子程序中,对clock_count减1。当减为0时,就调用OSSemPost(Sem_Int_ClockTask)唤醒时钟任务;同时,clock_count重新回到100。这样每1s,就会调用一次OSSemPost(Sem_Int_ClockTask)。时钟任务调用OSSemPend(Sem_Int_ClockTask,0,%26;amp;err)获得信号量。当获得信号量时,就更新时间。如果在23:59:59的时候更新时间,那就要同时更新日期和星期。如果此时UI任务处于待机状态,时钟任务就调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务。Msg_Any_UI[0]为任务号0x06。时钟任务只是负责更新时间,显示时间是由UI任务在待机的时候来完成的。

3 用户界面任务详述

在所有这些任务中,用户界面任务做的工作相对比较烦琐。首先,根据放在Msg_Any_UI[255]中的第一个字节,判断是什么任务激活了本任务。

① 如果是摘/挂机任务激活的,再判断第二个字节的值,根据值的不同知道是挂机还是摘机。如果是挂机,就在液晶上显示待机画面。如果是摘机,就在液晶上显示打电话图标和有关的字样,并等待键盘任务送来的数字键,将其显示出来。(只有主动向外打电话才显示数字键,在接电话按数字键转接时不显示数字键。)

② 如果是振铃任务激活的,就将Msg_Any_UI[255]中接下来的来电号码、时间和来电图标显示在液晶上。

③ 如果是键盘任务激活的,就根据3号任务放在Msg_Any_UI[255]中的键值和当前的工作模式做不同的处理。

如果是在摘机模式下,就只是响应数字键和#*键,并每按一个键就通过5号任务号码发出去。

如果是在挂机模式下,那么,就可以响应数字键和有关操作菜单的键(包括进入各个子菜单的快捷键、上下键、左右键、返回上级菜单键、快速返回待机画面的键、确定键、删除键、拼音输入法/字母输入法/数字输入法/短语输入法切换键)。各个菜单是不同的状态,通过键值和原来的状态可以知道现在该进入什么状态。然后根据新得到的状态,进行相应的液晶刷新和完成相应的功能。比如添加、删除、查找电话簿;添加、删除、查找通话记录;编辑短消息并发送出去,删除草稿箱里的短消息;写记事本,设置闹钟、时间、日期,设置信箱的密码,设置信息中心的号码等。

如果是在与信息中心的连接模式下,那么就可以响应上下键,确定键(进入下级菜单),返回上一级菜单,通过选择返回这个选项来实现。

④如果是短消息任务激活的,就根据Msg_ Any_UI[255]中的命令码,来确定该信息的模块种类是信息下载管理模块、信息上传管理模块、信息询问管理模块,或者是屏幕信息输出管理模块,然后,再根据Msg_Any_UI[255]中接下来的信息做相应的处理。

⑤ 如果是时钟任务激活的,UI任务就刷新界面上的时间、日期和星期这些信息。

4 调试环境与调试成果

此程序用EPSON公司的S1C88 C-Compiler编译器编译,用EPSON公司的ICE88UR 的E0C88系列在线仿真器进行仿真。在仿真器下仿真完毕后,再脱机运行。试验结果令人满意,达到了预期的效果。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620878
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343673
  • 嵌入式
    +关注

    关注

    4983

    文章

    18288

    浏览量

    288527
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121896
  • μC
    μC
    +关注

    关注

    0

    文章

    10

    浏览量

    62692
收藏 人收藏

    评论

    相关推荐

    实用以太网电话机

    的以太网电话机。整机框图见图1,其中粗线框里的电路功能全部由Altera公司的Cyclone系列FPGA 芯片EP1C6Q240来实现
    发表于 11-13 22:22

    μC/OS-II的特点

    ,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断
    发表于 07-15 14:51

    使用μCOS-Ⅱ操作系统短信电话机

    使用μCOS-Ⅱ操作系统短信电话机
    发表于 04-22 13:05

    【图书分享】嵌入式实时操作系统μC/OS-II经典实例

    《嵌入式实时操作系统μC/OS-II经典实例:基于STM32处理器》作  者:刘波文 等编著 内容简介 本书紧紧围绕μC/OS-II
    发表于 03-13 10:26

    uC/OS-II简介

    OS_TASK_SW()函数来进行任务切换。μC/OS-II的组成部分μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与
    发表于 10-08 09:11

    uC/OS-II简介

    OS_TASK_SW()函数来进行任务切换。μC/OS-II的组成部分μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与
    发表于 10-20 09:35

    uC/OS-II简介

    OS_TASK_SW()函数来进行任务切换。μC/OS-II的组成部分μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与
    发表于 10-27 09:29

    如何实现μC/OS-II的移植?

    μC/OS-II是一种代码公开、可裁剪的嵌入式实时多任务操作系统。该内核通过实现抢占式任务调度算法和多任务间通信等功能,使之具有执行效率高、
    发表于 11-01 07:01

    μC/OS-II是什么?μC/OS-II有哪些应用?

    μC/OS-II的原理是什么?如何去改进μC/OS-II的调度算法?μC/OS-II有哪些应用?
    发表于 04-26 07:17

    如何实现μC/OS-II系统的移植?

    如何实现μC/OS-II系统的移植?
    发表于 04-28 06:01

    怎么实现基于CDMA短信息的无线通信系统的设计?

    怎么实现基于CDMA短信息的无线通信系统的设计?
    发表于 05-31 06:21

    μC/OS-II在PC机上移植的设计与实现

    本文介绍了μC/OS-II移植到PC机上的过程,使μC/OS-II应用系统程序在PC机上脱离DOS或Windows环境运行。着重介绍了Bootloader引导程序和EXE程序启动代码的设计与
    发表于 09-02 08:51 14次下载

    基于ADSI协议的固定电话短信息系统

     研究了固定电话短信息业务服务器系统,采用计算机与CTI技术相结合的方法,按照标准的ADSI协议,实现中英文短信息的发送功能。 &
    发表于 05-10 13:18 1207次阅读
    基于ADSI协议的固定<b class='flag-5'>电话</b><b class='flag-5'>短信息系统</b>

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

    将μC/OS-II实时嵌入式操作系统移植到EPSON八位单片机上来开发短信息电话机。此电话机除普
    发表于 06-16 11:20 438次阅读

    基于80C31的短信息终端电话开发

      现在,短信息服务日益普及。各个电话机厂家竞相设计和开发短信息终端电话。为配合我所开发的短信息终端专用集成芯片,我们设计开发出了可发送和接
    发表于 11-08 10:33 1413次阅读
    基于80C31的<b class='flag-5'>短信息</b>终端<b class='flag-5'>电话</b>开发