嚴榮國,張永乾,鐘鳳琦,劉宜汐,吳偉峰,王新宇
(上海理工大學醫療器械與食品學院,上海 200093)
流式細胞術(flow cytometer,FCM)是《醫用檢驗儀器》課程中的一項重要技術,它以流動中的細胞或顆粒為測量對象,能夠在短時間內提供具有統計意義的大量單細胞、顆粒或集聚體的測量數據[1-5]。現代流式細胞術綜合了流體力學、激光、電子物理、光電測量、計算機、熒光化學及單克隆抗體等技術,是多學科多領域技術進步的結晶,在醫學檢驗領域廣泛應用[6-9]。
微機原理主要以8086CPU為對象,詳細介紹了8086內部結構、尋址方式、指令系統和匯編語言的程序設計,同時介紹了幾種典型的可編程接口芯片,包括可編程并行接口芯片8255A、可編程計數器/定時器8253/8254、可編程中斷控制器芯片8259、可編程的通用同步/異步接收發送器8251A,以及數模轉換芯片DAC0832、ADC0809等[10-11]。
Proteus軟件是英國Lab Center Electronics公司開發的電路設計與分析、電路實物仿真以及印制電路板設計軟件,它可以仿真、分析各種模擬電路、集成電路和單片機及外圍器件[12-18]。其處理器模型支持8051系列、PIC、AVR、8086和MSP430等。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器[19-22]。
本研究以Proteus8.4版本為平臺,聯合運用多個芯片,包括8086、AT89C51、8255A、8253A、8259、8251A、DAC0832,實現對血細胞計數原理進行模擬和仿真[23-24]。8086程序用Proteus自帶的匯編編譯器編寫,AT89C51的程序用Keil軟件編寫。本研究綜合練習了定時、中斷、串行通信、數模轉換、LCD液晶顯示、多處理器協同工作等技術。
流式細胞儀的工作原理見圖1。將待測細胞染色后制成單細胞懸液,然后用一定壓力將該單細胞懸液壓入流動室,由磷酸緩沖液制成的鞘液在高壓下從鞘液管噴出,鞘液包裹著單細胞懸液作高速流動,組成一個圓形的流束,待測細胞在鞘液的包裹下依次、單個通過激光照射的檢測區域,產生前向散射光(forward scatter,FSC)、側向散射光(sidescatter,SSC)和熒光(fluorescent light,FL)。其中,前向散射光被光電二極管接收,反應細胞體積的大小和數量信息。經光電轉換之后,不同體積的細胞所產生的脈沖寬度不同,脈沖寬度和細胞體積大小成正比[25-27]。

圖1 流式細胞儀工作原理
整個系統包括三大模塊:脈沖發生器(模擬發生各種大小血細胞)、8086CPU脈沖識別模塊和AT89C51顯示模塊,見圖2。

圖2 仿真系統設計框架
整個系統的工作流程為脈沖發生器產生各種寬度不同的脈沖,脈沖的寬度與細胞直徑大小成比例,即血小板(PLT)所對應的脈沖最窄,紅細胞(RBC)其次,白細胞(WBC)所對應的脈沖最寬;8086CPU識別脈沖類型并通過串行通信發送相應的信息給AT89C51,AT89C51根據收到的信息點亮點對應的LED指示燈,并累加對應的細胞個數,將細胞計數值和計算得到的細胞直徑實時顯示在LCD2004液晶上。
血細胞模擬脈沖發生器(見圖3),采用一片AT89C51控制DAC0832以產生寬度不同的脈沖信號,分別代表血小板、紅細胞和白細胞。

圖3 脈沖發生器
AT89C51的P1端口數字信號,通過DAC0832轉換為脈沖形式的低電平和高電平,通過軟件編程延時使高電平持續時間不同,來實現脈沖寬度的不同。DAC0832是一個8位D/A轉換器,有三種工作方式,圖3中為直通方式,數據一旦到數據端口就直接開始轉換,通過內部梯形電阻網絡輸出一組差動電流IOUT1和IOUT2(即圖3中U9 DAC0832的第11和12號引腳)。通常需要外接一個I/V轉換電路,將輸出電流轉換成電壓,轉換后的電壓是一個負電壓,再接一個電壓比較器,即可將負電壓轉換成正電壓。
8086CPU脈沖識別模塊見圖4,包括8086、8255A、8253A、8259、8251A、以及地址鎖存器74LS373、地址譯碼器74LS138和虛擬端口COM2。8253A和8259配合定時產生中斷,8086響應中斷去讀取8255A PC0引腳,即對脈沖發生器產生的脈沖進行采集和識別,當識別到一個完整的脈沖信號后,將識別的結果通過8251A發送給AT89C51。

圖4 8086CPU脈沖識別電路原理圖
地址鎖存器74LS373與8086的地址鎖存信號ALE配合,實現地址信息和數據信息的分時復用。8255A、8253A、8259、8251A的數據端口接8086數據總線的低八位,所以,通過74LS138譯碼產生的每塊芯片的每個端口地址需確保是偶地址,才能保證8086和其他接口芯片的正常數據傳輸。

8086向AT89C51傳送信息時,需要每次讀取8251A的狀態字,查詢發送器是否準備好,若準備好,則將需要發送的數據送入發送數據緩沖器,否則循環讀取狀態等待。血小板脈沖發送01H,紅細胞脈沖發送02H,白細胞脈沖發送03H。
AT89C51顯示模塊見圖5,包括AT89C51、虛擬端口COM1、三個LED和LCD2004液晶。AT89C51本身集成了串口通信模塊,無需外接串口通信接口芯片。LED顯示識別的細胞類型、LCD2004液晶顯示三種血細胞的計數值、總和以及細胞直徑大小。

圖5 AT89C51顯示模塊
AT89C51的TXD和RXD引腳和虛擬端口COM1的TXD和RXD進行對接。
AT89C51串口波特率的設定跟定時器的計數初值有關,計算公式為:

fosc是晶振頻率,X是定時器的初值。如果設置了PCON寄存器中的SMOD位為1時,就可以把波特率提升2倍。設置SMOD=0,即波特率不翻倍,若要得到波特率等于9 600 bps,一般取fosc=11.0592 MHz,這樣就可以得到整數定時器的計數值0xFD。
AT89C51初始化程序如下:
SCON=0x50; //設置為工作方式為方式一,10位UART,可變波特率
TMOD=0x20; //設置定時器1工作方式為方式二
PCON=0x00; //設置波特率不翻倍
TH1=0xFD; //設置波特率為9 600 bps
TL1=0xFD;
TR1=1; //啟動定時器1
AT89C51每次收到數據時RI(接收中斷標志位)被硬件置1,需要用軟件復位。接收到的數據存放在SBUF寄存器中,當SBUF=01H時P0口輸出01H,血小板個數加1;當SBUF=02H時P0口輸出02H,紅細胞個數加1;當SBUF=03H時P0口輸出04H,白細胞個數加1。
LCD2004液晶與常見的LCD1602液晶操作方式和指令完全相同,只是比LCD1602液晶多兩行顯示。LCD2004液晶每行首地址分別為00H、40H、14H、54H,此外需要在此基礎上加80H,才能得到正確的地址。
圖6為血細胞計數的模擬輸出。

圖6 血細胞計數的模擬輸出
LCD2004液晶四行分別顯示血小板個數和直徑、紅細胞個數和直徑、白細胞個數和直徑(單位:μm)及血細胞總數。三個LED D1、D2、D3代表血小板、紅細胞和白細胞,當8086識別到一個模擬脈沖,對應的LED燈閃爍一次。
本研究整合了微機原理和流式細胞術相關知識,設計了基于Proteus的血細胞計數電路原理圖,設計方案還可以進一步優化,但已實現了微機原理中涉及的多個接口芯片的綜合運用。在設計過程中通過不斷解決問題,可以掌握很多細節處理的技巧,強化對課程知識點的理解和匯編語言編程能力。本研究可提高學生運用微機原理知識解決實際問題的能力,并加深對流式細胞計數原理的理解。