張攀峰
(陜西科技大學(xué)電氣與信息工程學(xué)院, 陜西 西安 710021)
萬(wàn)年歷是實(shí)現(xiàn)時(shí)、分、秒等數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于家庭、車(chē)站、機(jī)場(chǎng)、碼頭、辦公室等公共場(chǎng)所,成為人們?nèi)粘I钪胁豢苫蛉钡谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們的生產(chǎn)、生活帶來(lái)了極大的方便,而且大大擴(kuò)展了鐘表原先的報(bào)時(shí)功能,諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開(kāi)關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電器裝置的自動(dòng)啟用等,都是以鐘表數(shù)字化為基礎(chǔ)的.因此,研究萬(wàn)年歷及擴(kuò)大其應(yīng)用有著非常現(xiàn)實(shí)的意義.為此,我們?cè)O(shè)計(jì)出了基于LPC922單片機(jī)的低功耗萬(wàn)年歷,經(jīng)驗(yàn)證完全實(shí)現(xiàn)了萬(wàn)年歷的基本功能,而且功耗僅為μΑ級(jí),滿(mǎn)足了實(shí)際需要.
眾所周知,萬(wàn)年歷是實(shí)現(xiàn)時(shí)、分、秒等數(shù)字顯示的計(jì)時(shí)裝置,數(shù)字式萬(wàn)年歷的設(shè)計(jì)主要從萬(wàn)年歷功能的實(shí)現(xiàn)和降低功耗兩個(gè)方面進(jìn)行.萬(wàn)年歷功能的實(shí)現(xiàn)通過(guò)一般的單片機(jī)就可以方便地實(shí)現(xiàn),而對(duì)于低功耗的設(shè)計(jì)則要結(jié)合整個(gè)系統(tǒng)的硬件和軟件來(lái)考慮.在硬件方面,我們選用了低功耗的單片機(jī)LPC922,結(jié)合具有I2C總線(xiàn)接口的時(shí)鐘芯片F(xiàn)M3104及LCD驅(qū)動(dòng)器PCF8576,其硬件框圖如圖1所示.軟件上系統(tǒng)實(shí)現(xiàn)間斷性工作,在大部分時(shí)間系統(tǒng)處于掉電模式之下,看門(mén)狗會(huì)產(chǎn)生定時(shí)中斷喚醒CPU.
圖1 低功耗萬(wàn)年歷系統(tǒng)框圖
圖2 I2C總線(xiàn)配置
NXP半導(dǎo)體公司(原Philips半導(dǎo)體)于20多年前發(fā)明了一種簡(jiǎn)單的雙向二線(xiàn)制串行通信總線(xiàn),這個(gè)總線(xiàn)被稱(chēng)為Inter-IC或者I2C總線(xiàn).目前I2C總線(xiàn)已經(jīng)成為嵌入式應(yīng)用的標(biāo)準(zhǔn)解決方案,被廣泛應(yīng)用于各式各樣基于微控器的專(zhuān)業(yè)、消費(fèi)與電信產(chǎn)品中,作為控制、診斷與電源管理的總線(xiàn).多個(gè)符合I2C總線(xiàn)標(biāo)準(zhǔn)的器件都可以通過(guò)同一條I2C總線(xiàn)進(jìn)行通信,而不需要額外的地址譯碼器.由于I2C是一種兩線(xiàn)式串行總線(xiàn),因此簡(jiǎn)單的操作特性是其成為業(yè)界標(biāo)準(zhǔn)的關(guān)鍵因素[1].
I2C總線(xiàn)只需要由兩根信號(hào)線(xiàn)組成,一根是串行數(shù)據(jù)線(xiàn)SDA,另一根是串行時(shí)鐘線(xiàn)SCL.在系統(tǒng)中,I2C總線(xiàn)的典型接法如圖2所示,其中Master和Slave分別代表主、從機(jī),Rp是為了保證具有I2C總線(xiàn)器件的SDA和SCL漏極開(kāi)路的上拉電阻,注意連接時(shí)Master和Slave需要共地.關(guān)于I2C總線(xiàn)的信號(hào)及時(shí)序定義、數(shù)據(jù)傳送的起始與停止、數(shù)據(jù)傳送的格式等詳見(jiàn)參考文獻(xiàn)[2、3].
LPC900系列單片機(jī)是NXP(原PHILIPS)半導(dǎo)體公司推出的基于80C51內(nèi)核的Flash單片機(jī)[4,5],它采用先進(jìn)的2-CLOCK技術(shù),執(zhí)行指令速度是傳統(tǒng)80C51的6倍,主要集成了字節(jié)方式的I2C總線(xiàn)、SPI接口、UART通信接口、實(shí)時(shí)時(shí)鐘、E2PROM、A/D轉(zhuǎn)換器等一系列有特色的功能部件,有可配置的片內(nèi)振蕩器及其頻率范圍和RC振蕩器選項(xiàng)(通過(guò)用戶(hù)可編程Flash配置位選擇),選擇RC振蕩器(出廠(chǎng)時(shí)校準(zhǔn)到±1%)時(shí)不需要外接振蕩器件,振蕩器選項(xiàng)支持的頻率范圍為20 kHz~18 MHz(最大),可選擇RC振蕩器選項(xiàng)并且其頻率可進(jìn)行很好的調(diào)節(jié).操作電壓范圍為2.4~3.6 V,I/O口可承受5 V(可上拉或驅(qū)動(dòng)到5.5 V),P89LPC922有8個(gè)I/O口(P0.3~P0.7、P1.4、P1.6、P1.7),各口驅(qū)動(dòng)電流可達(dá)20 mA,軟件開(kāi)發(fā)方便,支持ISP/ICP/IAP等多種編程方式,應(yīng)用廣泛.ICP編程方式僅需5根口線(xiàn):VDD、VSS、RESET、P0.4(PDA)、P0.5(PCL),其引腳圖如圖3所示.
圖3 P89LPC922 ICP編程相關(guān)引腳圖
電源芯片選用SP6201,SP6201是CMOS LDO器件,適用于要求高精度、操作方便的場(chǎng)合,其中D2的作用是防止輸入負(fù)向電壓(利用二極管的單向?qū)щ娦?,發(fā)光二極管D1為電源指示燈, C1,C2起到抗干擾作用,C1濾除低頻,C2濾除高頻.+5 V電源由USB接口提供,經(jīng)過(guò)電源芯片SP6201轉(zhuǎn)換為3.3 V電源,整個(gè)系統(tǒng)由3.3 V電源供電.選擇低的電源電壓3.3 V,這樣能夠充分保證單片機(jī)和外圍器件的低電壓低功耗的特性,其電路如圖4所示.
圖4 電源電路圖
系統(tǒng)設(shè)計(jì)時(shí),采用LPC922的內(nèi)部晶振,單片機(jī)內(nèi)部自動(dòng)復(fù)位,3.3 V電源供電,其電路圖如圖5所示.
圖5 單片機(jī)控制電路
圖6 實(shí)時(shí)時(shí)鐘電路
FM3104外接32.768 kHz晶振,0.1 F電容作為后備電池,I2C總線(xiàn)的器件SDA和SCL管腳都是漏極開(kāi)路(或集電極開(kāi)路)輸出的結(jié)構(gòu).因此實(shí)際使用時(shí)SDA和SCL兩根信號(hào)線(xiàn)都必須加上拉電阻Rp(Pull-up Resistor),上拉電阻一般取值3~10 kΩ,此處選用10 kΩ的上拉電阻,其電路如圖6所示.
PCF8576為帶有I2C總線(xiàn)接口的字符式LCD驅(qū)動(dòng)/控制器,它有4個(gè)背極輸出和40 個(gè)顯示段輸出,因此,最多可驅(qū)動(dòng)160個(gè)LCD顯示段.PCF8576可以級(jí)聯(lián)以適應(yīng)驅(qū)動(dòng)較大規(guī)模的LCD顯示器,通過(guò)I2C總線(xiàn)接口除了可以與具有I2C總線(xiàn)接口的MCU相連外,通過(guò)I2C總線(xiàn)的模擬,也可以通過(guò)MCU的通用I/O口與之相連.PCF8576內(nèi)部設(shè)置的顯示RAM及子地址的自動(dòng)增量和顯示方式自動(dòng)切換使其通訊控制量減少到最小,顯示電路如圖7所示.
圖7 顯示電路的設(shè)計(jì)
本設(shè)計(jì)采用Keil C51μVision2集成開(kāi)發(fā)環(huán)境,它是基于80C51內(nèi)核的微處理器軟件開(kāi)發(fā)平臺(tái),內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開(kāi)發(fā)工具,可以完成從工程建立和管理、編譯、連接、目標(biāo)代碼的生成到軟件仿真及硬件仿真等一系列完整的開(kāi)發(fā)流程.在μVision2的仿真功能中,軟件仿真模式下,無(wú)需任何單片機(jī)硬件即可完成用戶(hù)程序的仿真調(diào)試,極大地提高了用戶(hù)程序的開(kāi)發(fā)效率;硬件仿真模式下,用戶(hù)可以將程序下載到自己的單片機(jī)系統(tǒng)板上,完成實(shí)時(shí)仿真.另外,其C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面已經(jīng)達(dá)到了較高的水平,而且可以附加靈活的控制選項(xiàng),在開(kāi)發(fā)大型項(xiàng)目時(shí)非常理想.
圖8 系統(tǒng)主程序流程圖
單片機(jī)的程序設(shè)計(jì)可以使用匯編語(yǔ)言,也可以使用C51語(yǔ)言,這兩種編程語(yǔ)言各有優(yōu)勢(shì).C51語(yǔ)言編程越來(lái)越成熟,并成為了行業(yè)編程語(yǔ)言的趨勢(shì),因此本設(shè)計(jì)選用C51程序設(shè)計(jì)語(yǔ)言.系統(tǒng)的主程序包括對(duì)P89LPC922、FM3104和PCF8576的初始化、按鍵值的獲取以及顯示模式的選擇,SetFocus,DispState為狀態(tài)標(biāo)志位,通過(guò)鍵盤(pán)設(shè)置改變其狀態(tài),從而實(shí)現(xiàn)萬(wàn)年歷工作狀態(tài)的切換.CPU平時(shí)處于掉電狀態(tài),看門(mén)狗定時(shí)喚醒CPU.系統(tǒng)主程序流程圖如圖8所示[6].
本系統(tǒng)以L(fǎng)PC922單片機(jī)和I2C總線(xiàn)為核心,通過(guò)硬件和軟件編程來(lái)實(shí)現(xiàn)萬(wàn)年歷和低功耗的功能,該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)方便,經(jīng)有關(guān)部門(mén)測(cè)試,該系統(tǒng)計(jì)時(shí)準(zhǔn)確,整個(gè)系統(tǒng)的功耗做到μA級(jí)別,在實(shí)際中有很高的實(shí)用價(jià)值.
[1] I2C總線(xiàn)概要(產(chǎn)品應(yīng)用手冊(cè))[R] .廣州周立功單片機(jī)發(fā)展有限公司,2006:11.
[2] 何立民. I2C總線(xiàn)應(yīng)用系統(tǒng)設(shè)計(jì)[M] .北京:北京航空航天大學(xué)出版社,1995:78-91.
[3] 周立功.LPC900系列Flash單片機(jī)應(yīng)用技術(shù)[M] .北京:北京航空航天大學(xué)出版社,2005:33-42.
[4] 李朝青.單片機(jī)原理及接口技術(shù)[M] .北京:北京航空航天大學(xué)出版社,2005:43-72.
[5] 李 軍.51系列單片機(jī)高級(jí)實(shí)例開(kāi)發(fā)指南[M] .北京:北京航空航天大學(xué)出版社,2004:36-47.
[6] 潭浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)(第二版)[M] .北京:清華大學(xué)出版社,1999:26-59.