林 剛,田二虎
(成都信息工程學院,四川 成都 610225)
PIC16F84A單片機是Microchip公司生產的PIC系列單片機中的一款中檔產品。此型號單片機硬件資源豐富,指令系統簡單,體積小,價格便宜,市場供應量充足。特別是它所具有的E2PROM,可以在程序運行時隨時讀寫數據,并且掉電后不丟失,保存時間長達40年之久,所以非常適合在需要收集并長期保存記錄數據的應用中使用[1-2]。
本設計利用PIC16F84A單片機設計電視機智能跟蹤系統。要求軟、硬件結合,可自動記錄并顯示電視(或電腦顯示器)工作時間、通電時間以及使用次數,以方便科研人員獲知電視使用壽命和工作情況,從而進一步對電視產品進行分析評價、改善技術、指導生產[3]。它可以作為電視機產品的擴展功能方便地添加到電視機中,具有極大的使用價值和商業價值。其設計思路和程序流程也能方便地應用在諸如此類智能跟蹤系統的其他電子產品當中,方便地存儲記錄各類其他電子數據。
在試驗開發階段,主要任務是初步驗證系統的可行性,通過硬件電路設計和程序代碼的編寫實現系統設計的基本功能,可以用簡單的電平信號模擬電視機內部電路的采集信號,不必考慮占用體積和電視機內部安裝位置的因素,將顯示部分做到一起。系統結構由單片機MCU、信號采集模塊、按鍵輸入模塊、輸出顯示模塊和電源時鐘電路模塊5部分組成。系統設計框圖如圖1所示。

圖1 試驗開發方案結構框圖
在實際的電視機整機配套生產時,可省去按鍵輸入模塊和輸出顯示模塊,只需對所要記錄的數據進行跟蹤保存即可。生產廠家只需自己保留少量的讀取和顯示裝置,在其需要讀取記錄的數據時,只需通過售后回訪服務等多種渠道,將消費者使用的電視機中的此系統芯片取出,進行讀取顯示,不影響電視機的正常工作。這樣既最大程度地縮小了該產品的體積,又可以利用空出來的管腳采集更多的參數,極大地提高了它的應用價值。而且,由于顯示模塊和按鍵模塊的減少,可以節約生產成本,減輕購買者的負擔,極大地提高了經濟效益。其方案結構框圖如圖2所示。

圖2 實際生產方案結構框圖
筆者只對試驗開發方案做了具體的設計和實施,稍微改進其電路原理、編程思路和程序代碼,便可以直接應用到實際生產方案中去,對實際生產有著重要的指導作用。
本設計首先利用PIC16F84單片機內部定時器TMR0溢出中斷制作一個定時時鐘,程序初始化后便開始記時,并將E2PROM中數據讀入相應的RAM寄存器中,按周期1 min對隨機數據存儲器RAM的通電時間計時區數據進行累加,得到通電時間(文中用LTIME表示);通過對電視機顯示信號采集點電平高低變化的查詢,來記錄顯示工作次數(SHOW_NUM),同時用程序控制RAM的電視工作時間存儲區域數據的累加,得到電視工作時間(STIME)。上述3個數據均需要累計存入E2PROM存儲器。雖然E2PROM存儲器可重復擦寫100萬次,但是相對于電視機長達10年左右的使用壽命,其存儲次數仍然不足,所以本系統每隔5 min對需要保存的數據進行一次寫E2PROM操作。系統隨電視機電源的關閉而斷電,當再次通電時,系統將自動讀出上次最后保存的數據,并在此數據的基礎上繼續累加記錄數據。
要求開機直接顯示電視通電時間,然后通過按動顯示切換鍵(S_SHIFT),依次把通電時間、電視工作時間、開關次數3種數據分別讀取并顯示出來。主要指示器件利用4位LED數碼管。
通電時間記錄信號為系統電源部分,由于該系統電源為電視機內部5 V直流電源,當電視機打開電源開關后,該系統便自動上電工作,進行通電時間的記錄。
工作時間記錄信號取自圖3的J1處,它是顯像電路的電信號統過限流、穩壓、反相后得到的電平信號。當打開顯示開關,電視機工作時,該信號為持續低電平;關閉顯示開關后,該信號為持續高電平,由此來判斷電視機工作時間記錄的起止點。
工作次數記錄信號也是取自圖3中J1處。每當J1處信號由高變低1次,工作次數增加1次。
PIC16F84是Microchip公司的產品,它采用精簡指令集系統,只有35條匯編指令,簡單易學,方便高效,故本系統采用匯編語言編程。
主程序是將整個程序設計的思想和實現方法簡潔而又完整地體現出來,如圖4??梢钥闯鱿到y上電復位后,首先對各特殊功能寄存器進行初始化工作,再將保存在E2PROM中的數據讀入相應的隨機數據存儲器RAM中,以便數據的快速處理;通過對定時器TMR0的設置,利用定時器溢出中斷進行正確定時,并根據計時標記,對通電時間LTIME內數據按1 min的間隔遞增,實現計時;然后通過查詢按鍵狀態或是顯示信號的有無對電視機顯示次數和工作時間數據進行處理或是顯示切換功能;通過查詢在定時器TMR0溢出中斷程序的標志設置,每隔5 min,把RAM中的數據存入相應的E2PROM中;在查詢無效或是子程序調用完成的情況下,程序運行顯示子程序,最后再跳回到按鍵查詢位置,實現程序的循環運行。

圖3 基于PIC16F84的電視機智能跟蹤系統

圖4 主程序流程圖
與讀E2PROM數據同理,程序每隔5 min,對電視機通電時間LTIME、工作時間STIME、工作次數SHOW_NUM對應的12 byte的寄存器空間寫入當前數據,實現數據的保存。這里同樣采用間接尋址方式,將首地址20H賦給間接地址寄存器FSR,每保存一位數據,就將FSR中所存地址加1,循環12次就可完成所有數據的讀取工作。將地址和數據賦給相應的寄存器后,向E2PROM寫一位數據,在PIC單片機中必須使用固定的編寫格式,流程如圖5所示。

圖5 寫1次E2PROM子程序流程圖
關閉中斷是為了防止在寫E2PROM時發生中斷,導致數據不能正確保存,其關閉中斷的時間極短,只有幾個指令周期,因而對定時器的定時影響可以忽略;而向寄存器EECON2一次寫入55H和0AAH,是為了避免向E2PROM誤寫入,確保E2PROM存儲器的使用都是編程者有意為之,延長E2PROM存儲器的使用壽命。

圖6 切換子程序流程圖
此模塊硬件電路采用模塊化的設計方法,可根據實際需要擴展系統的控制功能,目前該模塊測試性能良好,用于實際生產應用時還需考慮電磁屏蔽的功能,有待進一步應用于市場開發。
[1]羅翼,張宏偉.PIC單片機應用系統開發典型實例[M].北京:中國電力出版社,2005.
[2]李學海.PIC單片機原理[M].北京:北京航空航天大學出版社,2004.
[3]黎旺星.基于模型診斷技術在數字電視機中的應用[J].電視技術,2003(11):63-65.
[4]周杰,張銀勝,劉金鑄.PIC單片機原理與系統設計[M].北京:氣象出版社,2008.