


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
使用uCOS-II操作系統的短信息電話機
摘要:將μC/OS-II實時嵌入式操作系統移植到EPSON八位單片機上來開發短信息電話機。此電話機除普通電話的通用功能外,還增加了短消息收/發功能、信息瀏覽與查閱功能、信息點播與信息訂閱功能等。關鍵詞:短信息電話機實時操作系統μC/OS-II1背景后PC時代的到來,使人們開始越來越多地接觸到一個新的概念——嵌入式產品。手機、PDA(如商務通)等均屬于手持式嵌入式產品,VCD機、機頂盒等也屬于嵌入式產品,而車載GPS系統、數控機床、網絡冰箱等同樣都屬于嵌入式產品。信息電器具有信息服務功能,如網絡瀏覽、視頻點播、文字處理、電子郵件、個人數字助理等。后PC時代,家用電器將向數字化和網絡化發展,計算機都將嵌入到電視機、冰箱、微波爐、電話等中,并通過家庭控制中心與Internet連接,轉變為智能網絡家電;還可以實現遠程醫療、遠程教育等。據估計未來十年間,信息家電(網絡冰箱、機頂盒、家庭網關、數字機頂盒等)總量可達到1~1.5億臺,總市場需求將達到900~1500億元。ShortMessagesPhone(短信息電話機)是一種操作簡便、成本低廉的固定電話信息終端產品。它集成了網絡和智能電話的優點,是一種基于信息網絡的,具有交互功能的信息終端產品,可以通過固定電話網絡與信息中心進行數據雙向傳送。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。intmain(void){OSInit();OSTaskCreate((void*)StartTask,(void*)0X00,(OS_STK)&StartTaskStk[START_TASK_STK_SIZE-1],0);OSStart();return0;}起始任務中,首先建立一系列的信號量和郵箱: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[0]=任務號1,Msg_Any_UI[1]=0x00為摘機,Msg_Any_UI[1]=0x01為掛機。在掛機的時候,如果先前是在響鈴的時候摘機的,那么UI任務把它當做已接來電處理;如果不是在響鈴的時候摘機的,那么在掛機的時候把它當做已撥電話處理。(2)振鈴任務當鈴聲來到時,就產生中斷。在這個中斷中,調用OSSemPost(Sem_Int_Ring)來喚醒振鈴任務。響鈴任務調用OSSemPend(Sem_Int_Ring,0,&err)來獲得信號量。獲得信號量后,就把下傳的號碼接收下來;根據號碼就可以知道是短信息,還是普通電話。①當是短信息時,就調用OSSemPost(Sem_Any_SMTask)來喚醒短消息任務;②如果是電話,就響鈴,同時調用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)來喚醒UI任務。這時Msg_Any_UI[0]=任務號2,從Msg_Any_UI[1]開始存的是來電時間和電話號碼,然后調用OSSemPend(Sem_Int_Ring,RING_RECV_TIMEOUT,&err),來延時響鈴一段時間。如果在這段時間內沒有接電話,那么必然會超時,于是就清除鈴聲中斷,同時調用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)來喚醒UI任務,這時Msg_Any_UI[0]=任務號2,Msg_Any_UI[1]=0xff表示鈴聲結束。UI任務把它當作未接來電處理。如果在這段時間內接電話,就必然喚醒摘/掛機任務。如果從響鈴到對摘/掛機任務處理完畢所需要的總時間還沒有到RING_RECV_TIMEOUT,那么,當時間到了,UI任務也會收到鈴聲結束的消息;但此時,UI任務不對它做任何處理。
響鈴任務如何區別是正常的電話還是信息中心的來電信息呢?其實很簡單。信息中心也是一個終端,是由一個特定的號碼來確定的。就像用不同的電話號碼來區別不同的用戶一樣。這樣響鈴任務就可以根據電話線上下傳的號碼,來確定是哪種情況了。(3)鍵盤任務有按鍵按下時,產生一中斷,在中斷服務子程序中調用OSSemPost(Sem_Int_Keyboard)來喚醒鍵盤任務,同時清除中斷標志。鍵盤任務調用OSSemPend(Sem_Int_Keyboard,0,&err)來獲得信號量。獲得信號量后,鍵盤任務將調用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)喚醒UI任務。Msg_Any_UI[0]為任務號3,Msg_Any_UI[1]為鍵值。(4)短消息任務該任務調用OSSemPend(Sem_Any_SMTask,0,&err)獲得信號量。當獲得信號量后,通過標志位判別是準備上傳數據還是下傳數據。①下傳數據時,將下傳的數據放在recv_buf[]中,然后調用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)喚醒UI任務。Msg_Any_UI[0]=任務號4,從Msg_Any_UI[1]開始存的是從recv_buf[]中篩選過的數據。這是在連上后從信息中心下載信息的情況,其中Msg_Any_UI[1]存的是信息的種類號,種類號都是大于0x80H小于0xFFH的;沒有連上信息中心或者是連上之后完成任務。這時recv_buf[1]存的就是0xff;如果剛剛連上,就在recv_buf[1]存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,&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號任務號碼發出去。如果是在掛機模式下,那么,就可以響應數字鍵和有關操作菜單的鍵(包括進入各個子菜單的快捷鍵、上下鍵、左右鍵、返回上級菜單鍵、快速返回待機畫面的鍵、確定鍵、刪除鍵、拼音輸入法/字母輸入法/數字輸入法/短語輸入法切換鍵)。各個菜單是不同的狀態,通過鍵值和原來的狀態可以知道現在該進入什么狀態。然后根據新得到的狀態,進行相應的液晶刷新和完成相應的功能。比如添加、刪除、查找電話簿;添加、刪除、查找通話記錄;編輯短消息并發送出去,刪除草稿箱里的短消息;寫記事本,設置鬧鐘、時間、日期,設置信箱的密碼,設置信息中心的號碼等。如果是在與信息中心的連接模式下,那么就可以響應上下鍵,確定鍵(進入下級菜單),返回上一級菜單,通過選擇返回這個選項來實現。④如果是短消息任務激
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫院護理工作計劃實施方案
- 電子商務部門年中總結
- 小古文原創課件
- 木工坊課程分享會
- 《顧客抱怨處理》課程
- 江蘇省無錫市洛社高級中學2024-2025學年高考物理試題模擬題及解析(全國卷I:)含解析
- 石家莊信息工程職業學院《形體與舞蹈》2023-2024學年第一學期期末試卷
- 潮安縣2025年數學四年級第二學期期末綜合測試模擬試題含解析
- 場地調查技術規范
- 赤峰學院《生物統計學模型》2023-2024學年第二學期期末試卷
- 醫療救助補助資金管理辦法
- 水電站110kV變電站接地電阻計算書
- 2025屆江蘇南京市鹽城市高三第二次模擬考試歷史試卷含解析
- 江蘇省靖江外國語學校2023-2024學年中考數學最后沖刺模擬試卷含解析
- 鼠疫的防治專題知識講座課件
- GB/T 44013-2024應急避難場所分級及分類
- 影像進修匯報
- 公路工程施工監理規范
- 2024年唐山市2024屆高三二模英語試卷(含答案)
- 口腔科治療臺水路消毒
- 壓力容器安全風險管控清單(日管控、周排查、月調度)
評論
0/150
提交評論