嚴(yán)榮國,張永乾,鐘鳳琦,劉宜汐,吳偉峰,王新宇
(上海理工大學(xué)醫(yī)療器械與食品學(xué)院,上海 200093)
流式細(xì)胞術(shù)(flow cytometer,F(xiàn)CM)是《醫(yī)用檢驗(yàn)儀器》課程中的一項(xiàng)重要技術(shù),它以流動中的細(xì)胞或顆粒為測量對象,能夠在短時間內(nèi)提供具有統(tǒng)計意義的大量單細(xì)胞、顆?;蚣垠w的測量數(shù)據(jù)[1-5]。現(xiàn)代流式細(xì)胞術(shù)綜合了流體力學(xué)、激光、電子物理、光電測量、計算機(jī)、熒光化學(xué)及單克隆抗體等技術(shù),是多學(xué)科多領(lǐng)域技術(shù)進(jìn)步的結(jié)晶,在醫(yī)學(xué)檢驗(yàn)領(lǐng)域廣泛應(yīng)用[6-9]。
微機(jī)原理主要以8086CPU為對象,詳細(xì)介紹了8086內(nèi)部結(jié)構(gòu)、尋址方式、指令系統(tǒng)和匯編語言的程序設(shè)計,同時介紹了幾種典型的可編程接口芯片,包括可編程并行接口芯片8255A、可編程計數(shù)器/定時器8253/8254、可編程中斷控制器芯片8259、可編程的通用同步/異步接收發(fā)送器8251A,以及數(shù)模轉(zhuǎn)換芯片DAC0832、ADC0809等[10-11]。
Proteus軟件是英國Lab Center Electronics公司開發(fā)的電路設(shè)計與分析、電路實(shí)物仿真以及印制電路板設(shè)計軟件,它可以仿真、分析各種模擬電路、集成電路和單片機(jī)及外圍器件[12-18]。其處理器模型支持8051系列、PIC、AVR、8086和MSP430等。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器[19-22]。
本研究以Proteus8.4版本為平臺,聯(lián)合運(yùn)用多個芯片,包括8086、AT89C51、8255A、8253A、8259、8251A、DAC0832,實(shí)現(xiàn)對血細(xì)胞計數(shù)原理進(jìn)行模擬和仿真[23-24]。8086程序用Proteus自帶的匯編編譯器編寫,AT89C51的程序用Keil軟件編寫。本研究綜合練習(xí)了定時、中斷、串行通信、數(shù)模轉(zhuǎn)換、LCD液晶顯示、多處理器協(xié)同工作等技術(shù)。
流式細(xì)胞儀的工作原理見圖1。將待測細(xì)胞染色后制成單細(xì)胞懸液,然后用一定壓力將該單細(xì)胞懸液壓入流動室,由磷酸緩沖液制成的鞘液在高壓下從鞘液管噴出,鞘液包裹著單細(xì)胞懸液作高速流動,組成一個圓形的流束,待測細(xì)胞在鞘液的包裹下依次、單個通過激光照射的檢測區(qū)域,產(chǎn)生前向散射光(forward scatter,F(xiàn)SC)、側(cè)向散射光(sidescatter,SSC)和熒光(fluorescent light,F(xiàn)L)。其中,前向散射光被光電二極管接收,反應(yīng)細(xì)胞體積的大小和數(shù)量信息。經(jīng)光電轉(zhuǎn)換之后,不同體積的細(xì)胞所產(chǎn)生的脈沖寬度不同,脈沖寬度和細(xì)胞體積大小成正比[25-27]。
圖1 流式細(xì)胞儀工作原理
整個系統(tǒng)包括三大模塊:脈沖發(fā)生器(模擬發(fā)生各種大小血細(xì)胞)、8086CPU脈沖識別模塊和AT89C51顯示模塊,見圖2。
圖2 仿真系統(tǒng)設(shè)計框架
整個系統(tǒng)的工作流程為脈沖發(fā)生器產(chǎn)生各種寬度不同的脈沖,脈沖的寬度與細(xì)胞直徑大小成比例,即血小板(PLT)所對應(yīng)的脈沖最窄,紅細(xì)胞(RBC)其次,白細(xì)胞(WBC)所對應(yīng)的脈沖最寬;8086CPU識別脈沖類型并通過串行通信發(fā)送相應(yīng)的信息給AT89C51,AT89C51根據(jù)收到的信息點(diǎn)亮點(diǎn)對應(yīng)的LED指示燈,并累加對應(yīng)的細(xì)胞個數(shù),將細(xì)胞計數(shù)值和計算得到的細(xì)胞直徑實(shí)時顯示在LCD2004液晶上。
血細(xì)胞模擬脈沖發(fā)生器(見圖3),采用一片AT89C51控制DAC0832以產(chǎn)生寬度不同的脈沖信號,分別代表血小板、紅細(xì)胞和白細(xì)胞。
圖3 脈沖發(fā)生器
AT89C51的P1端口數(shù)字信號,通過DAC0832轉(zhuǎn)換為脈沖形式的低電平和高電平,通過軟件編程延時使高電平持續(xù)時間不同,來實(shí)現(xiàn)脈沖寬度的不同。DAC0832是一個8位D/A轉(zhuǎn)換器,有三種工作方式,圖3中為直通方式,數(shù)據(jù)一旦到數(shù)據(jù)端口就直接開始轉(zhuǎn)換,通過內(nèi)部梯形電阻網(wǎng)絡(luò)輸出一組差動電流IOUT1和IOUT2(即圖3中U9 DAC0832的第11和12號引腳)。通常需要外接一個I/V轉(zhuǎn)換電路,將輸出電流轉(zhuǎn)換成電壓,轉(zhuǎn)換后的電壓是一個負(fù)電壓,再接一個電壓比較器,即可將負(fù)電壓轉(zhuǎn)換成正電壓。
8086CPU脈沖識別模塊見圖4,包括8086、8255A、8253A、8259、8251A、以及地址鎖存器74LS373、地址譯碼器74LS138和虛擬端口COM2。8253A和8259配合定時產(chǎn)生中斷,8086響應(yīng)中斷去讀取8255A PC0引腳,即對脈沖發(fā)生器產(chǎn)生的脈沖進(jìn)行采集和識別,當(dāng)識別到一個完整的脈沖信號后,將識別的結(jié)果通過8251A發(fā)送給AT89C51。
圖4 8086CPU脈沖識別電路原理圖
地址鎖存器74LS373與8086的地址鎖存信號ALE配合,實(shí)現(xiàn)地址信息和數(shù)據(jù)信息的分時復(fù)用。8255A、8253A、8259、8251A的數(shù)據(jù)端口接8086數(shù)據(jù)總線的低八位,所以,通過74LS138譯碼產(chǎn)生的每塊芯片的每個端口地址需確保是偶地址,才能保證8086和其他接口芯片的正常數(shù)據(jù)傳輸。
8086向AT89C51傳送信息時,需要每次讀取8251A的狀態(tài)字,查詢發(fā)送器是否準(zhǔn)備好,若準(zhǔn)備好,則將需要發(fā)送的數(shù)據(jù)送入發(fā)送數(shù)據(jù)緩沖器,否則循環(huán)讀取狀態(tài)等待。血小板脈沖發(fā)送01H,紅細(xì)胞脈沖發(fā)送02H,白細(xì)胞脈沖發(fā)送03H。
AT89C51顯示模塊見圖5,包括AT89C51、虛擬端口COM1、三個LED和LCD2004液晶。AT89C51本身集成了串口通信模塊,無需外接串口通信接口芯片。LED顯示識別的細(xì)胞類型、LCD2004液晶顯示三種血細(xì)胞的計數(shù)值、總和以及細(xì)胞直徑大小。
圖5 AT89C51顯示模塊
AT89C51的TXD和RXD引腳和虛擬端口COM1的TXD和RXD進(jìn)行對接。
AT89C51串口波特率的設(shè)定跟定時器的計數(shù)初值有關(guān),計算公式為:
fosc是晶振頻率,X是定時器的初值。如果設(shè)置了PCON寄存器中的SMOD位為1時,就可以把波特率提升2倍。設(shè)置SMOD=0,即波特率不翻倍,若要得到波特率等于9 600 bps,一般取fosc=11.0592 MHz,這樣就可以得到整數(shù)定時器的計數(shù)值0xFD。
AT89C51初始化程序如下:
SCON=0x50; //設(shè)置為工作方式為方式一,10位UART,可變波特率
TMOD=0x20; //設(shè)置定時器1工作方式為方式二
PCON=0x00; //設(shè)置波特率不翻倍
TH1=0xFD; //設(shè)置波特率為9 600 bps
TL1=0xFD;
TR1=1; //啟動定時器1
AT89C51每次收到數(shù)據(jù)時RI(接收中斷標(biāo)志位)被硬件置1,需要用軟件復(fù)位。接收到的數(shù)據(jù)存放在SBUF寄存器中,當(dāng)SBUF=01H時P0口輸出01H,血小板個數(shù)加1;當(dāng)SBUF=02H時P0口輸出02H,紅細(xì)胞個數(shù)加1;當(dāng)SBUF=03H時P0口輸出04H,白細(xì)胞個數(shù)加1。
LCD2004液晶與常見的LCD1602液晶操作方式和指令完全相同,只是比LCD1602液晶多兩行顯示。LCD2004液晶每行首地址分別為00H、40H、14H、54H,此外需要在此基礎(chǔ)上加80H,才能得到正確的地址。
圖6為血細(xì)胞計數(shù)的模擬輸出。
圖6 血細(xì)胞計數(shù)的模擬輸出
LCD2004液晶四行分別顯示血小板個數(shù)和直徑、紅細(xì)胞個數(shù)和直徑、白細(xì)胞個數(shù)和直徑(單位:μm)及血細(xì)胞總數(shù)。三個LED D1、D2、D3代表血小板、紅細(xì)胞和白細(xì)胞,當(dāng)8086識別到一個模擬脈沖,對應(yīng)的LED燈閃爍一次。
本研究整合了微機(jī)原理和流式細(xì)胞術(shù)相關(guān)知識,設(shè)計了基于Proteus的血細(xì)胞計數(shù)電路原理圖,設(shè)計方案還可以進(jìn)一步優(yōu)化,但已實(shí)現(xiàn)了微機(jī)原理中涉及的多個接口芯片的綜合運(yùn)用。在設(shè)計過程中通過不斷解決問題,可以掌握很多細(xì)節(jié)處理的技巧,強(qiáng)化對課程知識點(diǎn)的理解和匯編語言編程能力。本研究可提高學(xué)生運(yùn)用微機(jī)原理知識解決實(shí)際問題的能力,并加深對流式細(xì)胞計數(shù)原理的理解。