|
摘要: 介紹一種利用單片機AT89C52接收并顯示電話主叫號碼的來電顯示器。該顯示器在被叫掛機狀態(tài)下接收以頻移鍵控(FSK)方式傳送的主叫識別信息,可顯示主叫電話號碼、呼叫日期、時間等信息,并可存儲多達120條的主叫號碼信息。用戶使用上、下翻轉鍵及刪除鍵可方便地查閱或刪除來電信息。 關鍵詞: 來電顯示 單片機 AT89C52 FSK MC145447 引言 主叫識別信息傳送CID(Calling Identity Delivery)是向被用戶電話提供的一種服務業(yè)務。其方法是發(fā)端交換機將主叫號碼等信息傳送給終端交換機,終端交換機再將信息傳送給被叫用戶終端,如圖1所示。
主叫號碼信息常采用頻移鍵控(FSK)方式,在被叫掛機(On_Hook)或摘機通信狀態(tài)下傳送。掛機狀態(tài)下傳送方法是終端交換機將主叫信息在第一次振鈴和第二次振鈴期間傳給被叫用戶。對此已有相應的協(xié)議標準,例如:Bell 202、CCITT V.23 1200波特率FSK數據傳輸標準。主叫信息傳送的數據格式有2種:單數據消息格式(Single Data Message Format)和復合數據消息格式(Multple Data Message Format)。本文介紹的主叫號碼顯示器采用前者。掛機狀態(tài)下接收的單消息幀格式如圖2所示。 圖2中:①信道占用信號由1組300個連續(xù)的“0”和“1”交替的位組成,其第一個比特“0”最后一個比特為“1”。②標志信號由80個標志位組成。③標志位由0~10個邏輯“1”組成。④對于消息類型、消息長度、消息字、校驗字這些數據字,每個數據字之前加1位“0”作為起始位,數據字之后加1位“1”作為結束位(即每個字占10個比特)。數據傳送時信道占用信號首先發(fā)送,每個數據字中低位在前發(fā)送。 1 硬件設計實現(xiàn) 主叫號碼顯示器選用的是Amotrola公司的MC145447芯片作為主叫識別信息解調器件, 單片機選用AT89C52。整個電路的原理框圖如圖3所示。 CM145447滿足Bell 202、CCITT V.23 1200波特率FSK數據傳輸標準,其內部含有鈴流檢測電路,鈴流檢測輸出信號(低電平脈沖)接到MCU復位引腳“RST”上。MC145447把邏輯“1”=1200±12Hz、邏輯“0”=2200±22Hz、傳輸速率為1200bps的FSK信號解調成串行異步二進制數據并輸入至MCU的串行接收口。外部EEPROM用于存儲多達120條的主叫識別信息。液晶顯示模塊LCD用來顯示主叫號碼、日期、時間等信息。按鍵有3個:“DEL”、上“UP”、下“DOWN”分別用于刪除、 查閱主叫信息。 MCU工作在掉電、空閑、正常運行3種狀態(tài)。平時MCU工作在掉電“power down”狀態(tài),功耗很低。第1次鈴流信號到來時,MC145447中的鈴流檢測電路對MCU輸出1個低電平復位脈沖,該復位脈沖MCU從掉電狀態(tài)進入正常工作狀態(tài)。第1次振鈴和第2次振鈴期間,MC145447解調出的二進制數據送入MCU的串行接收口。MCU接收和存儲主叫信息數據并在液晶顯示模塊(LCD)上顯示,然后MCU進入空閑狀態(tài)。MCU進入空閑狀態(tài)1min后,若無按鍵按下則進入掉電狀態(tài),此時,LCD上將顯示新呼叫(即用戶沒有查閱過的呼叫)的總個數。 2 軟件設計實現(xiàn) 主叫號碼顯示器軟件使用匯編語言編寫,配合硬件完成主叫信息接收、查閱及刪除功能。匯編語言程序主要由主程序、串行中斷處理程序、定時器中斷處理程序組成。 上電時,MCU進入主程序中運行對串口寄存器設置接收波特率等參數,液晶顯示模塊LCD初始化并顯示新呼叫總個數,以0.2s的定時長度設置定時器參數,對有關程序變量初始化,然后進入掉電狀態(tài)。主程序框圖如圖4所示。 圖5是串行口中斷接收處理程序。串行口中斷到來時,MCU將收的串行數據暫存在內部RAM中。若收到的信息有誤碼,則在LCD上顯示“ERROR”; 若交換機發(fā)來的信息格式為“日期+時間+P+..”,則在LCD上顯示“PRIVATE”,表示主叫用戶要求本次呼叫不向被叫用戶傳送其號碼;若交換機發(fā)來的信息格式為“日期+時間+O+..”,LCD上將顯示“OUT OF AREA”,表示主叫用戶的本次呼叫超出來電顯示服務范圍。 若接收的主叫信息正常,則按接收的先后順序依次存儲于EEPROM中。當主叫識別信息有重復時,最新呼叫將覆蓋前次呼叫;當存儲空間全部存滿后,按“先進先出”的原則自動刪除最先存儲的主叫信息。
圖6是定時器中斷處理程序,實現(xiàn)來電顯示器按鍵處理功能,定時長度為0.2s。定時器斷到來時,首先檢查是否有按鍵按下。當有按鍵按下時,MCU由掉電狀態(tài)恢復到空閑狀態(tài)。若在1.5s內按2次“DEL”鍵,則從EEPROM中刪除LCD當前顯示的信息;若連續(xù)按“DEL”鍵超過6s,則刪除EEPROM中所有存儲信息。按“UP”鍵則把一次接收的主叫信息從EEPROM中調出并顯示。按“DOWN”鍵則把下一次接收的主叫信息從EEPROM中調出并顯示。
結束語 來電顯示功能目前已獲得普遍使用。本文介紹的來電顯示器在進行軟、硬設計時充分利用MCU的3種工作狀態(tài),盡可能地降低了功耗;配以EEPROM作為存儲器件,使得該產品與同類產品相比使用期限有較大的增加(采用電池供電時)。 |