《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于IIC總線的銀行排隊系統(tǒng)接口實現(xiàn)
基于IIC總線的銀行排隊系統(tǒng)接口實現(xiàn)
來源:微型機(jī)與應(yīng)用2012年第4期
靳 越1,2, 張 珂2,3, 許明麗4
(1. 張家口職業(yè)技術(shù)學(xué) 院電氣工程系, 河北 張家口075000;2. 華北電力大學(xué) 電氣與電子工
摘要: 介紹了IIC總線芯片基本性能及時序、總線結(jié)構(gòu),設(shè)計了銀行排隊系統(tǒng),介紹帶IIC總線的芯片PCF8563,通過軟件的方法,實現(xiàn)IIC總線在MCS-51系統(tǒng)中的使用,有效利用了現(xiàn)有資源,實現(xiàn)排隊功能,提高銀行工作效率,減少顧客等待時間。系統(tǒng)通過keil c進(jìn)行仿真實現(xiàn)銀行排隊預(yù)期功能。
Abstract:
Key words :

摘   要: 介紹了IIC總線芯片基本性能及時序、總線結(jié)構(gòu),設(shè)計了銀行排隊系統(tǒng),介紹帶IIC總線的芯片PCF8563,通過軟件的方法,實現(xiàn)IIC總線在MCS-51系統(tǒng)中的使用,有效利用了現(xiàn)有資源,實現(xiàn)排隊功能,提高銀行工作效率,減少顧客等待時間。系統(tǒng)通過keil c進(jìn)行仿真實現(xiàn)銀行排隊預(yù)期功能。
關(guān)鍵詞: IIC總線;排隊系統(tǒng);單片機(jī);嵌入式系統(tǒng)

    本文以銀行現(xiàn)有排隊系統(tǒng)為實例,提出了IIC總線的單片機(jī)排隊系統(tǒng)接口設(shè)計,通過對系統(tǒng)的仿真模擬試驗,不僅簡化設(shè)計電路,減小電路板面積,節(jié)省常規(guī)設(shè)計中的元器件,減少使用各項費用,而且系統(tǒng)能耗、消噪、可靠性等性能得到提高,在MCS-51系列單片機(jī)不帶IIC總線接口組成的數(shù)據(jù)測控和智能儀表儀器中,可以通過IIC總線增加系統(tǒng)的接口器件種類,降低系統(tǒng)成本,提高應(yīng)用系統(tǒng)性能[1-3]。
1 IIC總線
    IIC總線(Inter Integrate Circuit Bus)是一種雙向二線制總線,由串行時鐘線(SCL)與串行數(shù)據(jù)線(SDA)構(gòu)成,通過兩根線連接不同的具有IIC總線的器件,在不同的器件間傳送數(shù)據(jù),數(shù)據(jù)傳輸速率在高速模式最高可達(dá)3.4 Mb/s,既簡化了電路設(shè)計又提高了硬件使用效率,使IIC總線在嵌入式系統(tǒng)串行傳輸設(shè)計中得到廣泛應(yīng)用,目前主要用于中央控制中心、音頻集成電路及視頻等數(shù)字控制系統(tǒng)。
1.1 IIC總線時序
    (1)啟動及停止
     總線不忙時,時鐘線和數(shù)據(jù)線保持為高電平。啟動條件(S)是時鐘線在高電平而數(shù)據(jù)線為下降沿時,停止條件(P)是時鐘線處于高電平而數(shù)據(jù)線為上升沿時,IIC總線啟動停止條件如圖1所示。

    (2) 數(shù)據(jù)傳送
   一個數(shù)據(jù)位的傳送需要一個時鐘脈沖,每1 B后加1個標(biāo)志位,由傳送器產(chǎn)生的標(biāo)志位為高電平時,主設(shè)備會產(chǎn)生1個附加的標(biāo)志位時鐘脈沖。數(shù)據(jù)線SDA上信息只有時鐘脈沖為高電平時應(yīng)該保持?jǐn)?shù)據(jù)穩(wěn)定,否則數(shù)據(jù)線SDA上的數(shù)據(jù)會變?yōu)榭刂菩盘?,如圖2所示。

    (3) IIC 總線協(xié)議
     IIC總線進(jìn)行數(shù)據(jù)傳遞前,應(yīng)先標(biāo)明接收的設(shè)備地址。當(dāng)IIC總線啟動后,一起傳送這個地址與第1個被傳送字節(jié)。
    本系統(tǒng)中PCF8563 芯片作為一個從傳送器或從接收器,SCL信號線只是輸入線,SDA數(shù)據(jù)線為1條雙向的信號線。

 


1.2 芯片PCF8563概述
 PCF8563是經(jīng)典低功耗實時時鐘/日歷芯片[4],具有IIC總線接口技術(shù),總線最大傳輸速度可達(dá)400 kb/s,每次寫讀數(shù)據(jù)后,內(nèi)部包含的字地址寄存器就會自動遞增,具有功耗低、精度高等特點。PCF8563 具有定時器功能、多種報警功能、中斷輸出功能及時鐘輸出功能,可以完成多種定時服務(wù),還可為單片機(jī)系統(tǒng)實現(xiàn)看門狗技術(shù),其內(nèi)部的振蕩電路、時鐘電路、低電壓1.0 V檢測電路及IIC兩線制總線通訊方式,同時解決了2000年問題,不但使外圍電路及其簡潔,而且也增加了芯片的可靠,可廣泛應(yīng)用于水表、電表、移動電話、便攜儀器、傳真機(jī)、電池電源等產(chǎn)品領(lǐng)域中。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)需求分析

    銀行服務(wù)大廳設(shè)有8個業(yè)務(wù)服務(wù)窗口,服務(wù)窗口屬性分為五類服務(wù)業(yè)務(wù)進(jìn)行描述,可以進(jìn)行個人理財業(yè)務(wù)、對公業(yè)務(wù)、VIP銀行卡業(yè)務(wù)、個人存取款儲蓄和代收手機(jī)費、水電費等混合業(yè)務(wù)。
    排隊系統(tǒng)性能要求:服務(wù)大廳入口處擺放排隊機(jī),供儲戶按時間順序索取排隊編號,打印編號;服務(wù)窗口內(nèi)人員可以通過按鈕實現(xiàn)叫號;叫號后在屏幕上顯示編號并通過揚聲器連續(xù)兩次播放編號信息;工作人員通過后臺可以進(jìn)行排隊系統(tǒng)的相關(guān)(功能、模式、菜單等)設(shè)置。
2.2 系統(tǒng)硬件設(shè)計
    單片機(jī)排隊系統(tǒng)由銀行柜臺操作模塊、存儲器模塊、柜臺叫號模塊、液晶顯示模塊、儲戶操作模塊組成,系統(tǒng)結(jié)構(gòu)如圖3所示。系統(tǒng)中IIC電路用于參數(shù)存儲器(E2PROM)和實時精確時鐘等接口的應(yīng)用[2]。

 實時精確時鐘使用較低功耗的CMOS實時日歷/時鐘芯片,通過分頻器(用于提供源時鐘給實時時鐘RTC)、定時器、可編程時鐘輸出、掉電檢測器、報警器和IIC總線接口,來具體設(shè)置系統(tǒng)必需的精準(zhǔn)時鐘信號。所有的數(shù)據(jù)和地址通過IIC總線接口串行傳輸,每次寫讀數(shù)據(jù)后,字地址寄存器就會自動遞增[5]。
    參數(shù)存儲器(E2PROM)[6]使用較低功耗的CMOS串行IIC電路,通過片內(nèi)存儲空間,記錄柜臺操作和儲戶排隊等信息。其操作控制完全遵循IIC協(xié)議。
3 系統(tǒng)總線軟件模擬的實現(xiàn)方法
    排隊系統(tǒng)原理圖如圖4所示,由P3.4、P3.3模擬串行總線的SDA端及SCL輸出端,構(gòu)成模擬的IIC串行總線系統(tǒng)??偩€功能的實現(xiàn)除了簡單硬件連接,大部分功能通過軟件模擬來實現(xiàn),下面給出部分總線常用子程序,這些子程序通用性較好,基本適用于大部分IIC總線接口的芯片[2-3]。

3.1 總線啟動、停止函數(shù)
void IIC_Start(void)
{
    IIC_SCL=1;
    IIC_Delay();
    IIC_SDA=1;
    IIC_Delay();
    IIC_SDA=0;
    IIC_Delay();
    IIC_SCL=0;
    IIC_Delay(); 
}
void IIC_Stop(void)
{
    IIC_SDA=0;
    IIC_Delay();
    IIC_SCL=1;
    IIC_Delay();
    IIC_SDA=1;
    IIC_Delay();
    IIC_SCL=1;
    IIC_Delay();
}
3.2  從IIC器件指定位置讀若干字節(jié)
        bit RetBit;    
    unsigned char i;
         IIC_Start();                                  /*啟動總線*/
        RetBit=IIC_Write_Byte(Device_Addr);
                                                   /*發(fā)送器件從地址*/           if(RetBit==0)
           return(0);   
          RetBit=IIC_Write_Byte(Mem_Addr);
                                       /*發(fā)送器件子地址*/          if(RetBit==0)
            return(0);
          IIC_Stop();                                   /*結(jié)束總線*/           IIC_Start();                          /*重新啟動總線*/
          RetBit=IIC_Write_Byte(Device_Addr+1);   
          if(RetBit==0)
              return(0);  
          for(i=0;i<Num-1;i++)
          {
              *DataPointer=IIC_Read_Byte();   /*接收數(shù)據(jù)*/
            IIC_Ack(0);                        /*發(fā)送應(yīng)答位*/
            DataPointer++;
            }                  
            *DataPointer=IIC_Read_Byte();   /*接收數(shù)據(jù)*/
            IIC_Ack(1);
            IIC_Stop();                            /*結(jié)束總線*/
            return(1);
3.3 向IIC發(fā)送1字節(jié)函數(shù)
      bit Ack_Flag;
      unsigned char i;
      for(i=0;i<8;i++) /*要傳送的數(shù)據(jù)長度為8位*/
      {
          IIC_SDA=(bit)((Data<<i)&0x80);    
                           /*依次判斷待發(fā)送位高低*/
               IIC_Delay();
          IIC_SCL=1;             
       /*置時鐘線為高,通知E2PROM開始接收數(shù)據(jù)位*/
                IIC_Delay();         
          IIC_SCL=0;
              IIC_Delay();
            }
          IIC_SDA=1;  
        /*8位數(shù)據(jù)發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
          IIC_Delay();   
          IIC_SCL=1;
          IIC_Delay();
          if(IIC_SDA)
            Ack_Flag=0;                /* E2PROM無應(yīng)答*/              else
             Ack_Flag=1;               /*數(shù)據(jù)成功發(fā)送*/
          IIC_SCL=0;
         IIC_Delay();
     return(Ack_Flag);           /*返回E2PROM應(yīng)答標(biāo)志*/
3.4 系統(tǒng)仿真
    經(jīng)過軟件分析后,即可利用keil c集成開發(fā)環(huán)境uVision2對用C語言編寫的程序進(jìn)行編譯、調(diào)試,通過JTAG口將編譯好的程序燒寫到單片機(jī)中,完成所需排隊功能。系統(tǒng)經(jīng)過仿真測試,得到銀行入口處擺放排隊機(jī)供儲戶索取排隊編號,打印編號;銀行柜臺內(nèi)工作人員通過按鈕可以實現(xiàn)叫號;叫號后在大屏幕顯示上顯示并通過喇叭播放叫號信息;銀行工作人員可以通過后臺進(jìn)行系統(tǒng)的相關(guān)設(shè)置?! ?br /> 參考文獻(xiàn)
[1] 靳越,周芝田. 基于單片機(jī)的銀行排隊系統(tǒng)設(shè)計與研究[J].張家口職業(yè)技術(shù)學(xué)院學(xué)報,2010(1):50-52.
[2] 閆效鶯.嵌入式Linux下鍵盤驅(qū)動的設(shè)計與實現(xiàn)[J].自動化技術(shù)與應(yīng)用,2010(03):28-31.
[3] 李亞民. 計算機(jī)組成與系統(tǒng)結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,2000.
[4] Xiong Zhihui, Research on techniques of platform-based  SoC hardware/software co-design[D].Changsha:National University of Defense Technology,2004.
[5] 陳志輝. I2C總線在MCS51系列單片機(jī)數(shù)據(jù)采集系統(tǒng)中的實現(xiàn)[J]. 微計算機(jī)信息,2005,21(1):67-68.
[6] 朱華生,葉軍.嵌入式系統(tǒng)IIC設(shè)備驅(qū)動程序設(shè)計玉實現(xiàn)[J].微計算機(jī)信息,2006,22(10-2):170-172.
[7] Philips. The I2C-BUS Specification V2.1, 2000.
[8] 邢勝春,鄭華磊.用IIC總線顯示功能模塊狀態(tài)信息的電視裝置[P].中國:CN201018580,2008.02.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。