版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
-.z基于單片機(jī)的電子脈搏血壓計(jì)的設(shè)計(jì)摘要人們在日常生活或是醫(yī)學(xué)上常常是通過測量脈搏跳動的力度和頻率來檢測身體的**狀況,而普通的方法是用手按在人腕部的動脈上,根據(jù)脈搏的跳動進(jìn)展計(jì)數(shù),這樣不僅測量時(shí)間長而且精度不高,為了節(jié)省測量時(shí)間,一般不采用長時(shí)間測量,而是幾秒鐘之內(nèi)測出脈搏數(shù)。本文介紹一種基于STC89C52單片機(jī)的電子脈搏計(jì),通過測量腕部動脈的壓力,把壓力轉(zhuǎn)變?yōu)殡娦盘枺腿雴纹瑱C(jī),可以在3秒鐘之內(nèi)準(zhǔn)確測量出每分鐘脈搏數(shù),測量結(jié)果用三位LED數(shù)碼管顯示,并且脈搏波形通過串口送入PC機(jī),實(shí)時(shí)顯示脈搏波形。脈搏計(jì)是最常用的醫(yī)療檢查設(shè)備之一,實(shí)時(shí)準(zhǔn)確的脈搏測量在日常生活、患者監(jiān)控、臨床治療及體育運(yùn)動等方面都有著廣泛的應(yīng)用。脈搏測量包括瞬時(shí)脈搏測量和平均脈搏測量。瞬時(shí)脈搏可以反映心率的快慢,同時(shí)能反映心率是否勻齊;平均脈搏測量雖然只能反映心率的快慢,但記錄方便。本文設(shè)計(jì)的電子脈搏計(jì)可以把這兩個(gè)參數(shù)在測量時(shí)都記錄下來并且顯示,瞬時(shí)測量結(jié)果通過PC機(jī)實(shí)時(shí)顯示,平均脈搏測量結(jié)果通過LED七段數(shù)碼管顯示。關(guān)鍵詞:STC89C52單片機(jī)脈搏串口BasedonSCMelectronicpulseplandesignAbstractPeopleindailylifeormedicineisoftenmeasuredbythepulsefrequencyandstrengthtodetectthehealthstatusofbodybyhand,andordinarypeoplebythearteriesinthewrist,accordingtoapulsecount,thusnotonlybeatmeasuringtimelongandaccuracyisnothigh,inordertosavethemeasuringtime,generallydoesnotusethelongtimemeasurement,butafewsecondspulsecount.MeasuredThispaperintroducesaSTC89C52MCUbasedontheelectronicpulseplan,bymeasuringthepressure,thewristarterypressureintoelectricalsignals,intoasingle-chipmicroputer,canaccuratemeasurementinthreesecondsperminute,apulsewithmeasurementresultsnumberthreeLEDdigitaldisplay,andpulsetubethroughaserialportintoPCS,real-timedisplaypulsewaveform.Pulsemeterisoneofthemostmonlyusedinthemedicale*aminationdevice,real-timeaccuratemeasurementofthepulseofdailylife,patientmonitoring,clinicaltreatmentandotheraspectsofsportshaveawiderangeofapplications.Pulsemeasurementsincludetransientpulsemeasurementandtheaveragepulsemeasurement.Instantaneousheartratemayreflectthespeedofthepulse,whileheartratecanreflectwhethertheuniformhomogeneous;averageheartrate,pulsemeasurementcanonlyreflectthespeedthough,buttherecordofconvenience.Thisdesignofelec-tronicpulsemetertomeasurethesetwoparametersarerecordedanddisplayedthetime,instantaneousmeasurementsinrealtimethroughthePC,showsthattheaveragepulsemeasurementsbysevensegmentLEDdigitaldisplay.Keywords:STC89C52;microcontroller;pulse;theserialinterface目錄1引言12總體設(shè)計(jì)思路12.1方案設(shè)計(jì)與選取12.1.1總體流程圖12.1.2方案選擇12.2總體電路圖23硬件電路構(gòu)造模塊43.1單片機(jī)的選取43.1.1STC89C52引腳功能說明43.1.2振蕩電路53.1.3復(fù)位電路53.2AD轉(zhuǎn)換電路模塊63.2.1ADC0809引腳功能63.2.2ADC0809主要特性73.2.3ADC0809工作過程73.2.4ADC0809與單片機(jī)接口電路83.2.5ADC0809與PC機(jī)連接93.3傳感器的選取104軟件程序設(shè)計(jì)134.1脈搏計(jì)數(shù)模塊的設(shè)計(jì)134.1.1脈搏計(jì)數(shù)程序方案的選取134.1.2脈搏計(jì)數(shù)代碼設(shè)計(jì)144.2LED數(shù)碼管顯示模塊設(shè)計(jì)154.2.1顯示模塊的選取154.2.2LED數(shù)碼管與單片機(jī)的接口電路164.2.3LED數(shù)碼管驅(qū)動程序的設(shè)計(jì)174.3AD轉(zhuǎn)換模塊的設(shè)計(jì)184.4串口發(fā)送程序設(shè)計(jì)194.5上位機(jī)程序及界面設(shè)計(jì)204.5.1上位機(jī)程序的設(shè)計(jì)204.5.2上位機(jī)界面的設(shè)計(jì)214.6擴(kuò)展血壓計(jì)功能225軟硬件調(diào)試236結(jié)論27謝辭28參考文獻(xiàn)29附錄30-.z1引言隨著經(jīng)濟(jì)的飛速開展和人民生活水平的日益提高,有關(guān)心腦血管疾病的發(fā)病率與死亡率正在呈逐年上升趨勢,這就需要一種方便的方法來測量心腦血管的**狀況,可以實(shí)時(shí)觀測和評估人體的**狀況。從古到今中外醫(yī)學(xué)界都重視從脈搏波中提取人體的**狀況,并作為臨床診斷和治療的依據(jù)。世界上幾乎所有的民族都用過摸脈來作為診斷疾病的手段,因?yàn)槊}搏處跳動壓力比擬明顯。脈搏波所顯示出的波形、壓力強(qiáng)度、頻率和節(jié)奏等方面的綜合信息,在很大程度上可以反映出人體心腦血管系統(tǒng)中許多生理病理的**狀況。直接用手摸脈測量誤差較大,并且無法實(shí)時(shí)觀測。如果采用電子測量計(jì),有利于準(zhǔn)確測量,還可以借助PC機(jī)進(jìn)展高效、合理的判斷和分析。隨著集成電路技術(shù)的開展,電子脈搏計(jì)必然向微型化、群眾化、智能化的方向開展。脈搏計(jì)是最常用的醫(yī)療檢查設(shè)備之一,實(shí)時(shí)準(zhǔn)確的脈搏測量在日常生活、患者監(jiān)控、臨床治療及體育運(yùn)動等方面都有著廣泛的應(yīng)用。脈搏測量包括瞬時(shí)脈搏測量和平均脈搏測量。瞬時(shí)脈搏可以反映心率的快慢,同時(shí)能反映心率是否勻齊;平均脈搏測量雖然只能反映心率的快慢,但記錄方便。本設(shè)計(jì)這兩個(gè)參數(shù)在測量時(shí)都會被記錄并且顯示,瞬時(shí)測量結(jié)果通過PC機(jī)實(shí)時(shí)顯示,平均脈搏測量結(jié)果通過LED七段數(shù)碼管顯示。為了適應(yīng)人們生活中的需要,本文設(shè)計(jì)一款基于壓電傳感器的電子脈搏計(jì),實(shí)現(xiàn)瞬時(shí)脈搏測量和平均脈搏測量,并將測量結(jié)果用數(shù)字顯示。該電子脈搏計(jì)具有誤差小,體積小易于攜帶的特點(diǎn)。家中備有這樣的一款脈搏計(jì),就可以在日常生活中監(jiān)控自己和家人的心率變化,可以有效防止和控制多種疾病的發(fā)生和變化,到達(dá)日常保健的目的。測量*圍廣,測量精度高,顯示采用三位十進(jìn)制數(shù)顯示。其設(shè)計(jì)思路是用壓電傳感器把待檢測對象的脈搏跳動轉(zhuǎn)變成電信號,但是由于信號比擬微弱,需要經(jīng)過傳感器內(nèi)部放大整形濾波后才可以得到規(guī)則的脈沖波形。處理后的信號經(jīng)過單片機(jī)定時(shí)計(jì)數(shù)后通過譯碼電路就可以從數(shù)碼管直接讀出被測對象的脈搏數(shù)了。同時(shí)記錄每一次脈搏跳動的間隔和力度,實(shí)時(shí)記錄繪制曲線,分析數(shù)據(jù)。定時(shí)由基準(zhǔn)時(shí)間產(chǎn)生電路完成。STC89C52單片機(jī)構(gòu)成的控制電路在硬件的作用下控制脈搏信號放大、整形和倍頻后再通過軟件進(jìn)入定時(shí)計(jì)數(shù)器的時(shí)間。該基于單片機(jī)的電子脈搏計(jì)優(yōu)點(diǎn)是制作簡單,使用元器件少,工作穩(wěn)定可靠,顯示直觀,誤差不大于1%,本錢低廉且能節(jié)電。2總體設(shè)計(jì)思路2.1方案設(shè)計(jì)與選取總體流程圖設(shè)計(jì)的總體流程圖如圖2-1所示:信號采集信號采集放大整形單片機(jī)模數(shù)變換數(shù)碼管顯示上位機(jī)顯示圖2-1總體流程圖方案選擇方案1:1.信號采集脈搏傳感器將脈搏跳動的壓力信號轉(zhuǎn)換為與此相對應(yīng)的電信號。2.放大電路將傳感器所采集到的微弱電流電壓放大,可采用高輸入阻抗的非門進(jìn)展放大。3.低通濾波空氣中存在的高頻信號對信號采集有影響,需要進(jìn)展濾除,只讓低頻脈沖信號通過。對脈搏信號進(jìn)展采集的時(shí)候,空氣中交流工頻干擾最大,根據(jù)有源濾波的原理,在接至非門的輸入與輸出之間作為直流偏置電阻上并聯(lián)一個(gè)電容。4.整形電路可用兩個(gè)非門組成的施密特觸發(fā)器對放大后的信號進(jìn)展整形。5.計(jì)數(shù)、譯碼、顯示用來讀出脈搏數(shù),并以十進(jìn)制數(shù)的形式由數(shù)碼管顯示。方案2:1.信號采集脈搏傳感器將脈搏跳動的壓力信號轉(zhuǎn)換為與此相對應(yīng)的電信號。2.放大電路用普通運(yùn)放進(jìn)展發(fā)大,為到達(dá)高輸入阻抗的要求,采用同相比例放大。3.低通濾波在運(yùn)放的反應(yīng)電阻上并聯(lián)一個(gè)電容,到達(dá)濾波的效果。4.整形電路通過集成運(yùn)算放大電路運(yùn)放組成的單限比擬器進(jìn)展脈沖整形。方案3:1.信號采集與放大與方案1和方案2中不同的是信號的采集和放大用一個(gè)MB-4型傳感器實(shí)現(xiàn),傳感器不僅能把壓力信號轉(zhuǎn)變?yōu)殡娦盘?,而且還能通過傳感器內(nèi)部電路把信號放大輸出。2.波形整形由于單片機(jī)中斷不識別脈搏波,所以放大后的信號通過555芯片構(gòu)建的施密特觸發(fā)器,將放大后的脈搏波轉(zhuǎn)變?yōu)閱纹瑱C(jī)實(shí)現(xiàn)的方波信號。3.模數(shù)變換將信號送入模數(shù)變換后將模擬信號轉(zhuǎn)變?yōu)閿?shù)字信號送入單片機(jī),為上位機(jī)波形顯示局部做準(zhǔn)備。4.數(shù)碼管顯示用來讀出脈搏數(shù),并以十進(jìn)制數(shù)的形式由數(shù)碼管顯示。通過以上方案比照觀察可以得出,方案3中傳感器的選取簡單易行,節(jié)約了許多外圍電路的空間,縮小了整體電路的體積,更加便于攜帶,如果價(jià)格適宜的話,是最優(yōu)的方案選擇。波形整形局部,方案3中的由555定時(shí)器構(gòu)成的施密特觸發(fā)器,電路搭構(gòu)簡單易行,與前兩個(gè)方案相比減少了電路器件的繁瑣度。采用數(shù)碼管顯示,節(jié)約設(shè)計(jì)本錢,而且可以實(shí)現(xiàn)實(shí)時(shí)顯示的功能。綜合考慮,設(shè)計(jì)選擇方案3的整體設(shè)計(jì)思路進(jìn)展設(shè)計(jì)。2.2總體電路圖總體電路圖如圖2-2所示:圖2-2總體電路圖單片機(jī)的P1口八個(gè)引腳分別與LED數(shù)碼管的八段段碼顯示控制端相連接,構(gòu)成了片選控制端,單片機(jī)的P3.3~P3.5引腳分別接到LED數(shù)碼管位選控制端,當(dāng)程序控制單片機(jī)發(fā)送相應(yīng)的字符時(shí),數(shù)碼管便會相應(yīng)的點(diǎn)亮,從而實(shí)現(xiàn)每分鐘脈搏數(shù)目的顯示,這就是顯示模塊的設(shè)計(jì)。ADDA、ADDB、ADDC3位地址輸入線接地,即選用IN0通道,模擬信號通過IN0通道輸入;時(shí)鐘控制信號通過CLOCK端口輸入,時(shí)鐘頻率選擇為500kHz;A/D轉(zhuǎn)換啟動脈沖輸入端START與單片機(jī)的P2.4引腳相連;數(shù)據(jù)輸出允許信號輸入端OE與單片機(jī)的P2.5引腳相連,通過單片機(jī)的P2.4與P2.5引腳控制ADC0809芯片。當(dāng)轉(zhuǎn)換完成后數(shù)據(jù)通過ADC0809的OUT1~OUT8引腳送入單片機(jī)的P0.0~P0.7引腳進(jìn)展處理。總體電路框圖用信號發(fā)生器代替?zhèn)鞲衅髂M采集到的信號,一路送入單片機(jī),經(jīng)過單片機(jī)的處理后送LED數(shù)碼管顯示每分鐘的脈搏數(shù)。一路送到ADC0809芯片進(jìn)展模數(shù)轉(zhuǎn)換,并將轉(zhuǎn)換后的信號送入單片機(jī),信號經(jīng)過單片機(jī)的處理后送到上位機(jī)實(shí)時(shí)顯示脈搏波波形。3硬件電路構(gòu)造模塊3.1單片機(jī)的選取考慮到單片機(jī)作為整體電路設(shè)計(jì)的核心工作單元,選取STC89C52型號的單片機(jī)作為總處理器。STC89C52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器〔FPEROM-FlashProgramableandErasableReadOnlyMemory〕的低電壓,高性能CMOS8的微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。其芯片引腳圖如下列圖3-1所示:圖3-1STC89C52芯片引腳圖STC89C52主要功能:兼容MCS51指令系統(tǒng)、32個(gè)雙向I/O口、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷、2個(gè)串行中斷、2個(gè)外部中斷源、2個(gè)讀寫中斷口線、低功耗空閑和掉電模式、8K可反復(fù)擦寫FlashROM、256*8bit內(nèi)部RAM、時(shí)鐘頻率0到24MHz、可編程UART串行通道、共6個(gè)中斷源、3級加密位、軟件設(shè)置睡眠和喚醒功能。STC89C52引腳功能說明1.可編程輸入/輸出引腳:STC89C52單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個(gè)口有8根引腳,共32根。P0口:8位雙向I/O口線,名稱為P0.0~P0.7。P1口:8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7。P2口:8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7。P3口:8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7。2.控制引腳:RST/VPP:復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位、ALE/PROG:地址鎖存允許信號、PSEN:外部存儲器讀選通信號、EA/VPP:程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。3.外接晶振引腳:*TAL1:片內(nèi)振蕩電路的輸入端、*TAL2:片內(nèi)振蕩電路的輸出端。4.電源引腳:VCC:電源輸入,接+5V電源、GND:接地線[11]。振蕩電路單片機(jī)的時(shí)鐘信號由內(nèi)部振蕩電路產(chǎn)生,振蕩電路如圖3-2所示:圖3-2振蕩電路本系統(tǒng)選取的晶振頻率為12MHz,電容選擇30pF。經(jīng)計(jì)算得單片機(jī)工作機(jī)器周期為1μs。復(fù)位電路復(fù)位是單片機(jī)的初始化操作。其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開場執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位鍵重新啟動。RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,其有效時(shí)間應(yīng)持續(xù)二個(gè)機(jī)器周期以上。假設(shè)使用頻率為12MHz的晶振,則復(fù)位信號持續(xù)時(shí)間應(yīng)超過2μs才能完成復(fù)位操作[1]。復(fù)位操作有上電自動復(fù)位和按鍵手動復(fù)位兩種方式。上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的,而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實(shí)現(xiàn)的,按鍵電平復(fù)位電路如圖3-3所示:圖3-3按鍵電平復(fù)位電路上述電路圖中的電容、電阻參數(shù)適用于12MHz晶振,能保證復(fù)位信號高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期。本系統(tǒng)的復(fù)位電路采用按鍵電平復(fù)位方式,由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),此方式無需重新上電,直接按鍵復(fù)位即可,操作簡單。3.2AD轉(zhuǎn)換電路模塊AD轉(zhuǎn)換即模數(shù)轉(zhuǎn)換,就是把模擬信號轉(zhuǎn)換成數(shù)字信號,以便于計(jì)算機(jī)進(jìn)展處理。目前廣泛應(yīng)用在單片機(jī)系統(tǒng)中的主要有積分型、逐次比擬型、并行比擬型/串并行型、Σ-Δ調(diào)制型、電容陣列逐次比擬型、壓頻變換型。打算采用的具體芯片型號為逐次比擬型ADC0809、AD574A與雙積分型AD轉(zhuǎn)換器MC14433。考慮到轉(zhuǎn)換精度、速度和芯片價(jià)格,本設(shè)計(jì)采用ADC0809,ADC0809是美國國家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式AD轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個(gè)進(jìn)展AD轉(zhuǎn)換。ADC0809是目前國內(nèi)應(yīng)用最廣泛的8位通用AD芯片,ADC0809芯片有28條引腳,采用雙列直插式封裝。3.2.1ADC0809引腳功能下面說明各引腳功能:IN0~I(xiàn)N7:8路模擬量輸入端。D0~D8:8位數(shù)字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。START:A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個(gè)正脈沖使其啟動,脈沖上升沿使ADC0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換。EOC:A/D轉(zhuǎn)換完畢信號輸出端,當(dāng)A/D轉(zhuǎn)換完畢時(shí),此端輸出一個(gè)高電平,轉(zhuǎn)換期間一直為低電平。OE:數(shù)據(jù)輸出允許信號輸入端,高電平有效。當(dāng)A/D轉(zhuǎn)換完畢時(shí),此端輸入一個(gè)高電平,才能翻開輸出三態(tài)門,輸出數(shù)字量。CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。REF+、REF-:基準(zhǔn)電壓。Vcc:電源,單一+5V、GND:地[13]。3.2.2ADC0809主要特性ADC0809主要特性:8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位、具有轉(zhuǎn)換啟??刂贫?、時(shí)鐘為640kHz時(shí)轉(zhuǎn)換時(shí)間為100μs,時(shí)鐘為500kHz時(shí)130μs、單個(gè)+5V電源供電、模擬輸入電壓*圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)、工作溫度*圍為-40~+85攝氏度、低功耗,約15mW。3.2.3ADC0809工作過程首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比擬器。START上升沿將逐次逼近存放器復(fù)位。下降沿時(shí)啟動A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)展。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換完畢,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號可用作中斷申請。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門翻開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。轉(zhuǎn)換數(shù)據(jù)的傳送A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)展處理。數(shù)據(jù)傳送的關(guān)鍵問題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)展傳送。為此可采用下述三種方式確認(rèn)AD轉(zhuǎn)換是否完成[12]。1.定時(shí)傳送方式對于一種A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是的和固定的。例如ADC0809在時(shí)鐘頻率為500kHz時(shí)轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于12MHz的MCS-51單片機(jī)共128個(gè)機(jī)器周期??蓳?jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動后即調(diào)用此子程序,當(dāng)延遲時(shí)間到達(dá)時(shí),轉(zhuǎn)換可以確定已經(jīng)完成了,接著就可進(jìn)展數(shù)據(jù)傳送。2.查詢方式A/D轉(zhuǎn)換芯片可以利用說明轉(zhuǎn)換完成的狀態(tài)信號,例如ADC0809的EOC端。因此可以用查詢方式,查詢EOC的狀態(tài),即可判斷轉(zhuǎn)換是否完成,并接著進(jìn)展數(shù)據(jù)傳送。3.中斷方式用轉(zhuǎn)換完成的狀態(tài)信號〔EOC〕作為中斷請求信號,以中斷方式進(jìn)展數(shù)據(jù)傳送。本設(shè)計(jì)采用單獨(dú)通道,定時(shí)傳送方式,ADDA、ADDB、ADDC3位地址輸入線接地,即選用IN0通道輸入模擬信號,經(jīng)ADC0809轉(zhuǎn)換完成后將數(shù)字信號采用定時(shí)傳送方式傳入單片機(jī)進(jìn)展數(shù)據(jù)處理,然后單片機(jī)把數(shù)據(jù)經(jīng)過MA*232電平轉(zhuǎn)換后送入PC機(jī)串口,PC機(jī)根據(jù)所接收的數(shù)據(jù)經(jīng)過VB界面實(shí)時(shí)繪制波形。3.2.4ADC0809與單片機(jī)接口電路由于proteus仿真軟件不支持ADC0809芯片仿真,所以采用ADC0808芯片代替ADC0809,其功能特性與ADC0809芯片一樣,軟件仿真時(shí)采用ADC0808芯片,實(shí)際硬件電路中采用ADC0809芯片,無論是仿真還是實(shí)際硬件其與單片機(jī)接口電路一樣,ADC0808與單片機(jī)接口電路如圖3-4所示:圖3-4ADC0808與單片機(jī)接口電路由圖3.4接口電路可以看出:ADDA、ADDB、ADDC3位地址輸入線接地,即選用IN0通道,模擬信號通過IN0通道輸入;時(shí)鐘控制信號通過CLOCK端口輸入,時(shí)鐘頻率選擇為500kHz;A/D轉(zhuǎn)換啟動脈沖輸入端START與單片機(jī)的P2.4口相連;數(shù)據(jù)輸出允許信號輸入端OE與單片機(jī)的P2.5口相連,通過單片機(jī)的P2.4與P2.5端口控制ADC0809芯片。當(dāng)轉(zhuǎn)換完成后數(shù)據(jù)通過ADC0809的OUT1~OUT8端口送入單片機(jī)的P0.0~P0.7進(jìn)展處理。DC0809與PC機(jī)連接本設(shè)計(jì)需要單片機(jī)與PC機(jī)間實(shí)現(xiàn)實(shí)時(shí)通信,PC機(jī)內(nèi)根本上都裝有一個(gè)RS-232異步通信適配板,它的主要工作器件是可編程的UART芯片,從而可以使PC機(jī)有能力與其他具有標(biāo)準(zhǔn)RS-232串行通信接口的其他設(shè)備進(jìn)展通信。STC89C52單片機(jī)本身具有一個(gè)全雙工的串行口,但其串行口為TTL電平,需要外接一個(gè)TTL-RS-232電平轉(zhuǎn)換器這樣才能使單片機(jī)的串口與PC的RS-232串行口進(jìn)展連接,這樣便可以組成一個(gè)簡單的串行通信接口。由于PC機(jī)的RS-232邏輯電平與單片機(jī)的TTL電平不兼容,為了實(shí)現(xiàn)單片機(jī)與PC機(jī)的通信,必須進(jìn)展電平轉(zhuǎn)換,因此本設(shè)計(jì)采用由美國MA*IM公司生產(chǎn)的MA*232芯片,它是目前應(yīng)用較為普遍的串行口電平轉(zhuǎn)換器。PC機(jī)串口輸出電壓可高達(dá)12V,假設(shè)直接與單片機(jī)相連會燒壞芯片,所以要借助于MA*232芯片來進(jìn)展相應(yīng)的電平轉(zhuǎn)換。MA*232芯片用+5V電源供電,另外需要外接幾個(gè)電容便可以完成從TTL電平到RS-232電平的轉(zhuǎn)換,僅僅需要連接STC89C52單片機(jī)的R*D和T*D引腳便可以實(shí)現(xiàn)數(shù)據(jù)的傳輸[12]。MA*232芯片與單片機(jī)和串口的電路連接圖如圖3-5所示:圖3-5MA*232接口電路在實(shí)際的焊接過程中一定要認(rèn)真細(xì)心,在看好引腳序號和硬件引腳必須一致,否則當(dāng)硬件焊接好后在調(diào)試過程中會遇到許多意想不到的問題,不僅需要花很長時(shí)間去檢追終究是哪個(gè)地方出錯(cuò)了,如何修改,事倍功半,效果很不理想。在調(diào)試硬件時(shí)串口老是接收不到數(shù)據(jù),在經(jīng)過屢次修改程序與硬件電路檢查后終于發(fā)現(xiàn)是MA*232與串口的引腳錯(cuò)接到引腳8導(dǎo)致了以后許多不必要的工作量,既浪費(fèi)時(shí)間又浪費(fèi)精力,所以說認(rèn)真細(xì)心的態(tài)度是工作中所必需的。3.3傳感器的選取本設(shè)計(jì)中關(guān)鍵之處在于信號的采集,信號采集可以分為壓電式信號采集或光電式信號采集,由于光電信號采集相對誤差較大,可控制度低且本錢比擬高。于是本設(shè)計(jì)采用壓電式傳感器采取信號??紤]到的壓電式傳感器有壓電薄膜傳感器、壓電陶瓷片、HK-2000系列的脈搏傳感器、MB-4型脈搏波傳感器和SC0073微型脈搏傳感器。SC0073微型動態(tài)脈搏微壓傳感器的主要性能指標(biāo)如下:壓力*圍:≤1Kpa靈敏度:≥0.2mv/pa非線性度:≤1%F.S頻率響應(yīng):1~1000HZ標(biāo)準(zhǔn)工作電壓:3V(DC)擴(kuò)大工作電壓:1.5~6V(DC)標(biāo)準(zhǔn)負(fù)載電阻:10K擴(kuò)大電阻:5K~20K外形尺寸:SC0073-AF12.7*7.6由以上性能指標(biāo)可以看出SC0073微型動態(tài)脈搏微壓傳感器具有比擬高的靈敏度,非線性比擬好,頻率響應(yīng)*圍很廣,但如果人體脈搏每分鐘心跳少于60下,則有可能檢測不到脈搏信號,擴(kuò)大工作電壓可以與單片機(jī)的工作電壓相匹配,節(jié)省了另外獨(dú)立的工作電源。外形尺寸小巧輕便,價(jià)格在60元左右??傮w來說,除了測量脈搏*圍有一點(diǎn)兒缺乏外。其他各方面的性能都值得考慮。HK-2000A集成化脈搏傳感器性能指標(biāo)如下:電源電壓:3~12VDC壓力量程:-50~+300mmHg過載:100倍輸出高電平:大于VCC-1.5V輸出低電平:小于0.2VHK-2000A集成化脈搏傳感器采用高度集成化工藝將力敏元件PVDF壓電膜、靈敏度溫度補(bǔ)償元件、感溫元件、信號調(diào)理電路集成在傳感器內(nèi)。脈搏波動一次輸出一正脈沖。該產(chǎn)品可用于脈率檢測,主要用于運(yùn)動、健身器材中的心率測試。其靈敏度高、抗干擾性能強(qiáng)、過載能力大、一致性好,性能穩(wěn)定可靠,使用壽命長。價(jià)格在100元左右。HK-2000B集成化脈搏傳感器性能指標(biāo)如下:電源電壓:5~6VDC壓力量程:-50~+300mmHg靈敏度:2000uV/mmHg靈敏度溫度系數(shù):1×10-4/℃精度:0.5%重復(fù)性:0.5%遲滯:0.5%過載:100倍HK-2000B集成化脈搏傳感器采用高度集成化工藝將力敏元件PVDF壓電膜、靈敏度溫度補(bǔ)償元件、感溫元件、信號調(diào)理電路電路集成在傳感器內(nèi)。主要應(yīng)用于無創(chuàng)心血管測試,中醫(yī)脈象診斷。其靈敏度高、抗干擾性能強(qiáng)、過載能力大、一致性好,性能穩(wěn)定可靠,使用壽命長。價(jià)格在240元左右。HK-2000C集成化數(shù)字脈搏傳感器在HK-2000B集成化脈搏傳感器根底上增加了程控放大電路、基線調(diào)整電路、A/D轉(zhuǎn)換電路、串行通信電路,使用戶使用更方便、快捷。性能指標(biāo)同HK-2000B集成化脈搏傳感器。價(jià)格在480元左右。MB-4型脈搏波傳感器主要性能指標(biāo)如下:1.頻率響應(yīng):0.1~35Hz2.靈敏度:>2mv/Pa(對于正常脈搏波信號,輸出幅度可達(dá)3~4Vp~p)3.絕緣阻抗:>1000MΩ4.輸出阻抗:<1KΩ5.體積:Φ22×15mm6.電源電壓:5~9VDCMB-4型脈搏波傳感器靈敏度很高、抗過載能力強(qiáng)、抗干擾性能優(yōu)、具有操作簡便等特點(diǎn)。本傳感器殼體內(nèi)已配置放大器和輸出阻抗變換器,可以很方便地與其它電路相匹配。適用于心臟功能監(jiān)測儀檢測體表動脈搏動波形。實(shí)際使用時(shí)往往不必再加其它放大環(huán)節(jié),可以直接送到A/D變換器等環(huán)節(jié)進(jìn)展處理。壓電薄膜傳感器與壓電陶瓷片傳感器價(jià)格低廉,但市面上很難找到賣家,從網(wǎng)上買又有最小訂貨量的限制,HK-2000A集成化脈搏傳感器與SC0073微型動態(tài)脈搏微壓傳感器功能相近,但價(jià)格比后者高出許多。HK-2000B集成化脈搏傳感器與MB-4型脈搏波傳感器相比,價(jià)格比擬高,但功能上卻比后者差好多。HK-2000C集成化數(shù)字脈搏傳感器雖然功能很強(qiáng)大,但同樣價(jià)格也很高,從設(shè)計(jì)本錢上考慮太奢侈,不適合于設(shè)計(jì)的應(yīng)用。HK-2000系列的脈搏傳感器功能比擬全,但價(jià)格非常高,在三四百元左右,MB-4型脈搏波傳感器功能上能與HK-2000C集成化數(shù)字脈搏傳感器相媲美,價(jià)格比HK-2000B集成化脈搏傳感器又低,具有頻率響應(yīng)為0.1~35Hz,且靈敏度高,內(nèi)置放大電路,輸出模擬信號可以直接送入ADC0809芯片處理,是相當(dāng)理想的脈搏波傳感器,價(jià)格在200元左右,而SC0073微型脈搏傳感器價(jià)格在60元左右,其頻率響應(yīng)為1~1000HZ,也就是說如果人體脈搏每分鐘心跳少于60下,則有可能檢測不到脈搏信號。綜合考慮,人的心跳頻率*圍在0~240次每分鐘,而且MB-4微型脈搏傳感器性價(jià)比高,所以本設(shè)計(jì)采用MB-4型脈搏波傳感器作為采取脈搏信號的傳感器。在實(shí)際中有很高很準(zhǔn)確測量*圍很廣,只需采用MB-4型脈搏波傳感器,將采取的脈搏信號經(jīng)過分壓后直接送入ADC0809芯片即可。MB-4型脈搏波傳感器為壓電式脈搏傳感器,適用于心臟功能監(jiān)測儀檢測體表動脈搏動波形。傳感器具有靈敏度很高、抗過載能力強(qiáng)、抗干擾性能優(yōu)、操作簡便等特點(diǎn)。本傳感器殼體內(nèi)已配置放大器和輸出阻抗變換器,可以很方便地與其它電路相匹配。實(shí)際使用時(shí)往往不必再加其它放大環(huán)節(jié),可以直接送到A/D變換器等環(huán)節(jié)進(jìn)展處理。適合于腕動脈、頸動脈、下肢淺表動脈等不同部位的測量。由MB-4型脈搏波傳感器的頻率響應(yīng)可以知道測量脈搏*圍為10~2100次每分鐘,足以實(shí)現(xiàn)日常生活中的應(yīng)用,靈敏度高。由于ADC0809芯片可處理電壓為0到+5V,所以在傳感器輸出電壓處采用分壓方法以便于到達(dá)芯片處理電壓要求,轉(zhuǎn)換后的信號送入單片機(jī)后同樣便于單片機(jī)的響應(yīng)與處理。4軟件程序設(shè)計(jì)4.1脈搏計(jì)數(shù)模塊的設(shè)計(jì)脈搏計(jì)數(shù)程序方案的選取利用單片機(jī)的外部中斷對外部信號脈沖進(jìn)展計(jì)數(shù)的方法,編寫相應(yīng)的程序就可以計(jì)算出單位時(shí)間內(nèi)外部信號的脈沖數(shù),就可以得到輸入信號的頻率,即可以計(jì)算出相應(yīng)的脈搏數(shù),從而實(shí)現(xiàn)脈搏計(jì)數(shù)功能。在測量信號頻率的時(shí)候我首先采用的設(shè)計(jì)思路是:1.設(shè)frq的值為單位時(shí)間的脈沖數(shù),單位時(shí)間設(shè)置為一秒,也就是信號的頻率,設(shè)其數(shù)據(jù)類型為無符號的整型,其測量頻率*圍為0到65535Hz。2.由于所選用的晶振為12MHz,即機(jī)器周期為一微秒,利用定時(shí)器工作方式1,可以獲得最大到65.536ms的定時(shí),為了計(jì)算方便則取每隔50ms產(chǎn)生一次定時(shí)中斷。當(dāng)中斷次數(shù)到達(dá)20次時(shí)即定時(shí)到達(dá)1s。這時(shí)計(jì)算20次定時(shí)中斷時(shí)間內(nèi)外部信號的脈沖數(shù)即可得到所輸入信號的頻率。3.由以上分析可以得知,程序需要使用兩個(gè)中斷,T0的溢出中斷用于50ms的定時(shí),外部中斷1用來對INT1引腳上的脈沖進(jìn)展計(jì)數(shù),由于程序的主要任務(wù)是對脈沖進(jìn)展計(jì)數(shù),從而計(jì)算出頻率,因此外部中斷1的中斷優(yōu)先級應(yīng)為最高。4.外部中斷效勞子程序的主要任務(wù)是對外部脈沖計(jì)數(shù),用frqc表示脈沖數(shù)目,并且frqc應(yīng)小于frq,其數(shù)據(jù)類型為無符號的整型,主程序初始化時(shí)應(yīng)該將frqc置0。5.T0中斷效勞子程序的主要任務(wù)有兩個(gè),第一個(gè)任務(wù)是重新給TL0和TH0賦初值,為下一次的定時(shí)中斷做準(zhǔn)備,第二個(gè)任務(wù)是中斷次數(shù)加1,中斷次數(shù)用numone表示,由于程序設(shè)計(jì)的1m定時(shí)需要記錄20次中斷數(shù)目所以其數(shù)據(jù)類型應(yīng)該設(shè)為無符號的字符型,同樣在初始化程序時(shí)置numone為0。第三個(gè)任務(wù)是當(dāng)?shù)竭_(dá)1s鐘的定時(shí)后將所記錄脈沖數(shù)目frqc送入frc中,以便于程序的其他局部進(jìn)展處理和顯示使用,并將numone和frqc置0,以便于下一秒鐘的定時(shí)計(jì)數(shù)用[13]。經(jīng)過實(shí)際的編程調(diào)試后發(fā)現(xiàn)了問題,頻率顯示不穩(wěn)定、計(jì)數(shù)不準(zhǔn)確并且需要測量的時(shí)間長。針對上述問題,修改了中斷次數(shù)從而減少測量脈搏的時(shí)間,但效果仍然不理想,經(jīng)過屢次調(diào)試后放棄了此方案,總結(jié)原因測量時(shí)間相對較長,脈搏信號屬于低頻信號,程序的設(shè)計(jì)對于低頻信號的計(jì)數(shù)誤差較大。由于脈搏信號屬于低頻信號,此次的設(shè)計(jì)思路是通過測量信號的周期來計(jì)算頻率。采用定時(shí)器準(zhǔn)確定時(shí)得到一個(gè)相對較小的基準(zhǔn)時(shí)間,然后計(jì)算在外部信號連續(xù)兩次一樣跳變之間的基準(zhǔn)時(shí)間個(gè)數(shù),由此可以得出信號的周期,即基準(zhǔn)時(shí)間的個(gè)數(shù)乘以基準(zhǔn)時(shí)間。然后再通過求周期的倒數(shù)便可以得到每分鐘的脈搏數(shù)目。1.因?yàn)檫x用的晶振為12MHz,即機(jī)器周期為一微秒,為了得到比擬準(zhǔn)確的較小基準(zhǔn)時(shí)間,可以利用定時(shí)器的工作方式2,即自動裝入8位初值,用計(jì)數(shù)方式進(jìn)展定時(shí),可以準(zhǔn)確定時(shí)到0.2毫秒,這樣可以增加所得結(jié)果的準(zhǔn)確度。2.因?yàn)楸粰z測的信號頻率在每分鐘0到240次之間,可以利用T0工作在方式2,準(zhǔn)確定時(shí)200微秒。3.下降沿可以觸發(fā)外部中斷T0,因此可以利用外部中斷0感測并記錄外部信號的兩次下降沿,單片機(jī)在兩次下降沿中間的計(jì)時(shí)總時(shí)間即為信號的周期。4.程序中存在兩個(gè)中斷,由于需要準(zhǔn)確定時(shí),應(yīng)設(shè)置定時(shí)器T0的中斷優(yōu)先級最高。在測量脈沖的周期時(shí)采用定時(shí)器T0定時(shí)200微秒,測量連續(xù)信號跳變中定時(shí)中斷的次數(shù)??梢缘玫剿斎氲拿}搏信號周期為定時(shí)時(shí)間乘以信號連續(xù)跳變兩次之間的中斷次數(shù),然后通過程序設(shè)計(jì)取得每分鐘的脈搏數(shù)[13]。這種方法計(jì)算過程思路為用60秒除以所測得的脈搏信號的周期,即每分鐘脈搏跳動的次數(shù)并將脈搏數(shù)通過數(shù)碼顯示程序送到LED數(shù)碼管上顯示。不僅可以準(zhǔn)確實(shí)現(xiàn)脈搏的計(jì)數(shù),而且測量時(shí)間短,極大的節(jié)約了測量時(shí)間。相應(yīng)的程序代碼及功能如下所示:4.1.2脈搏計(jì)數(shù)代碼設(shè)計(jì)根據(jù)以上分析后確定的方案,來編寫相應(yīng)的程序代碼,首先需要將定時(shí)器T0和外部中斷0初始化,設(shè)置定時(shí)計(jì)數(shù)器T0選擇工作方式2進(jìn)展計(jì)數(shù),并進(jìn)展初值的裝載,之后依次設(shè)置外部中斷0為高優(yōu)先級中斷、外部中斷0為跳沿觸發(fā)方式、允許T0溢出中斷、允許外部中斷0中斷、啟動定時(shí)計(jì)數(shù)T0工作、開放所有的中斷請求。設(shè)置完成后即完成了對定時(shí)器T0和外部中斷0初始化,程序代碼如下所示:voiddingshi(){TMOD|=0*02;//工作方式T0選擇方式2計(jì)數(shù)TH0=T0H;//裝載初值TL0=T0L;P*0=1;//外部中斷0為高優(yōu)先級中斷IT0=1;//外部中斷0為跳沿觸發(fā)方式ET0=1;//允許T0溢出中斷E*0=1;//允許外部中斷0中斷TR0=1;//啟動定時(shí)計(jì)數(shù)器T0工作EA=1;//所有的中斷請求被開放}因?yàn)橥獠恐袛?為高優(yōu)先級中斷,當(dāng)外部信號觸發(fā)外部中斷0時(shí)便啟動了定時(shí)計(jì)數(shù)T0效勞子程序器,T0開場計(jì)數(shù),溢出時(shí)中斷次數(shù)加一,當(dāng)外部信號的下一次觸發(fā)沿到來時(shí),停頓中斷次數(shù)加一,并且轉(zhuǎn)到外部中斷0中斷效勞子程序,計(jì)算每分鐘的脈搏數(shù),并將脈搏數(shù)存入相應(yīng)的單元,溢出中斷次數(shù)置0。4.2LED數(shù)碼管顯示模塊設(shè)計(jì)顯示模塊的選取顯示脈搏數(shù)模塊有兩個(gè)方案:LCD液晶模塊顯示和LED數(shù)碼管顯示。方案1:LCD液晶模塊顯示,屏幕能顯示的根本原理就是在兩塊平行板之間填充液晶材料,通過電壓來改變液晶材料內(nèi)局部子的排在列狀況,以到達(dá)遮光和透光的目的來顯示深淺不一,錯(cuò)落有致的圖形,而且只要在兩塊平板間再加上三元色的濾光層,就可實(shí)現(xiàn)顯示彩色圖形。優(yōu)點(diǎn)是體積小、功耗低、壽命長、顯示穩(wěn)定字跡清晰美觀,可以很清楚的直接觀察當(dāng)前脈搏數(shù)目;缺點(diǎn)是價(jià)格相對較高,編程相對較為復(fù)雜。方案2:LED數(shù)碼管顯示,由于發(fā)光二極管根本上屬于電流敏感器件,其正向壓降的分散性很大,并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度,就需要使其具有恒定的工作電流,且不能受溫度及其它因素的影響。優(yōu)點(diǎn)是價(jià)格廉價(jià),編程簡單,缺點(diǎn)是LED數(shù)碼管顯示數(shù)字存在閃爍情況,觀察脈搏顯示數(shù)目效果不太理想,但可以實(shí)現(xiàn)顯示功能。綜合考慮兩種方案,LED數(shù)碼管編程顯示操作簡單,并可以有效降低本錢,而且可以實(shí)現(xiàn)脈搏數(shù)目顯示功能,所以本設(shè)計(jì)顯示模塊采用LED七段數(shù)碼管顯示。要想讓數(shù)碼管能夠正常工作,數(shù)碼管的各段碼就需要用相應(yīng)的驅(qū)動電路來驅(qū)動,從而顯示出測量的脈搏數(shù)目,根據(jù)不同的數(shù)碼管驅(qū)動方式,可以分為靜態(tài)顯示和動態(tài)顯示兩類[13]。靜態(tài)驅(qū)動顯示又稱為直流驅(qū)動顯示。推薦使用10-15mA電流,靜態(tài)驅(qū)動是指每個(gè)LED數(shù)碼管的每一個(gè)段碼都由單片機(jī)的一個(gè)I/O端口進(jìn)展驅(qū)動,或者使用如BCD碼二進(jìn)制轉(zhuǎn)十進(jìn)制譯碼器譯碼進(jìn)展驅(qū)動。假設(shè)是共陰極數(shù)碼管其公共端直接接地,共陽極則接電源,各段選線分別與I/O端口相連。要顯示字符直接在I/O線上發(fā)送相應(yīng)的字碼段。靜態(tài)驅(qū)動顯示的優(yōu)點(diǎn)是構(gòu)造與編程簡單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如本設(shè)計(jì)需要使用3個(gè)數(shù)碼管顯示,假設(shè)采用靜態(tài)顯示則需要24個(gè)I/O端口,ADC0809芯片與單片機(jī)的接口就不夠用了。在實(shí)際應(yīng)用中必須增加譯碼驅(qū)動器來進(jìn)展驅(qū)動,這就增加了硬件電路的復(fù)雜性。由于本設(shè)計(jì)需要的數(shù)碼管數(shù)目較多,I/O接口不夠用,所以采用動態(tài)顯示方式。數(shù)碼管動態(tài)顯示是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,就是將所有的數(shù)碼管的段選線并聯(lián)在一起,用一個(gè)I/O接口控制,公共端不是直接接地或電源,而是通過相應(yīng)的I/O接口線控制。另外為每個(gè)數(shù)碼管的公共極增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到一樣的字形碼,但終究是那個(gè)數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制翻開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的段碼,這樣就會使各個(gè)數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在動態(tài)掃描時(shí),平均電流為4~5mA,峰峰電流為50~60mA。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),雖然實(shí)際上各位數(shù)碼管并不是同時(shí)點(diǎn)亮的,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。通過以上分析很明顯可以得知,本設(shè)計(jì)采用數(shù)碼管動態(tài)顯示方式,不僅降低了設(shè)計(jì)本錢還節(jié)約了I/O,為ADC0809模塊連接單片機(jī)創(chuàng)造了條件。LED數(shù)碼管與單片機(jī)的接口電路LED數(shù)碼管與單片機(jī)的接口電路如圖4-1所示:圖4-1LED數(shù)碼管與單片機(jī)的接口電路由上圖可以看出單片機(jī)的P1口八個(gè)端口分別與LED數(shù)碼管的八段段碼顯示控制端相連接,構(gòu)成了片選控制端,單片機(jī)的P3.3~P3.5端口分別接到LED數(shù)碼管位選控制端,當(dāng)程序控制單片機(jī)發(fā)送相應(yīng)的字符時(shí),數(shù)碼管便會相應(yīng)的點(diǎn)亮,從而實(shí)現(xiàn)每分鐘脈搏數(shù)目的顯示,這就是顯示模塊的設(shè)計(jì)。4.2.3LED數(shù)碼管驅(qū)動程序的設(shè)計(jì)本設(shè)計(jì)采用的LED數(shù)碼管為四位的共陰極LED八段數(shù)碼管,因此在程序設(shè)計(jì)中首先聲明共陰極的LED段碼表以及LED位顯示控制程序,并且要聲明顯示單元數(shù)據(jù)緩沖區(qū),此設(shè)計(jì)是選擇的LED動態(tài)掃描顯示方式,數(shù)碼管采用循環(huán)方式點(diǎn)亮,每位數(shù)碼管點(diǎn)亮?xí)r間要滿足的點(diǎn)亮?xí)r間為1~2ms才能滿足人的視覺暫留現(xiàn)象,這樣才能清楚的觀察所顯示的數(shù)據(jù)。由以上分析可以看出掃面顯示函數(shù)和延時(shí)函數(shù)是LED數(shù)碼管驅(qū)動程序所必需的局部。相關(guān)局部程序代碼如下所示:ucharcodedis_7[11]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f,0*00};//分別對應(yīng)共陰極LED段碼表0、1、2、3、4、5、6、7、8、9、滅。ucharcodescan_con[3]={0*f7,0*ef,0*df};//LED位選顯示控制,分別對應(yīng)三個(gè)LED數(shù)碼管,選通時(shí)相應(yīng)的LED數(shù)碼管點(diǎn)亮。uchardatadisplay[3]={0*00,0*00,0*00};//顯示單元數(shù)據(jù)緩沖區(qū),共3個(gè)數(shù)據(jù)緩沖區(qū)。以上是程序初始化時(shí)定義的全局變量。下面是聲明的延時(shí)子函數(shù),聲明了整型形參t,當(dāng)t大于0時(shí)每一個(gè)機(jī)器周期t的值都會依次減一,直到t小于等于0時(shí)程序繼續(xù)往下執(zhí)行,它的優(yōu)點(diǎn)在于延時(shí)時(shí)間可以根據(jù)實(shí)際的需要來調(diào)節(jié),方便快捷易懂。voiddelay_us(uintt)//延時(shí)子函數(shù){For(;t>0;t--);}LED數(shù)碼管采用動態(tài)掃描方式顯示,相應(yīng)的就需要動態(tài)掃描函數(shù)來控制,首先定義一個(gè)局部變量,通過局部變量的變化來控制LED數(shù)碼管的位選控制端和段碼顯示控制,當(dāng)這些設(shè)定好后,要想使亮著的數(shù)碼管持續(xù)時(shí)間能夠滿足人的視覺暫留效果,便需要調(diào)用延時(shí)子函數(shù)使其延時(shí)時(shí)間滿足需求,本設(shè)計(jì)選用的延時(shí)時(shí)間為1.5ms。具體程序如下所示:Scan()//LED數(shù)碼管掃描子函數(shù){uchark;//定義局部變量kfor(k=0;k<3;k++)//通過k控制哪個(gè)數(shù)碼管顯示{Discan=scan_con[k];//位選控制位送P3口DiSdata=dis_7[display[k]];//字碼段數(shù)據(jù)位送P1口delay_us(150);//設(shè)定延時(shí)時(shí)間為1.5ms}}4.3AD轉(zhuǎn)換模塊的設(shè)計(jì)雖然ADC0809芯片是可以用來進(jìn)展8路信號同時(shí)輸入循環(huán)檢測的,但本設(shè)計(jì)只采用單獨(dú)通道進(jìn)展信號轉(zhuǎn)換,因?yàn)檫@個(gè)芯片應(yīng)用普遍價(jià)格實(shí)惠,所以選用此芯片。代碼設(shè)計(jì)中采用定時(shí)傳送方式,把ADDA、ADDB、ADDC三個(gè)地址輸入線都接地,即選用IN0通道輸入模擬信號,經(jīng)ADC0809轉(zhuǎn)換完成后將數(shù)字信號采用定時(shí)傳送方式傳入單片機(jī)進(jìn)展數(shù)據(jù)處理。因?yàn)閷τ谝环N方式的A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時(shí)間是的和固定的。例如ADC0809在時(shí)鐘頻率為500kHz時(shí)轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于12MHz的MCS-51單片機(jī)共128個(gè)機(jī)器周期??蓳?jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動后即調(diào)用此子程序,當(dāng)延遲時(shí)間到達(dá)時(shí),轉(zhuǎn)換可以確定已經(jīng)完成了,接著就可進(jìn)展數(shù)據(jù)傳送。程序代碼設(shè)計(jì)中首先令START為1,延時(shí)一段時(shí)間后將主次逼近存放器復(fù)位,然后再令START為0,啟動AD轉(zhuǎn)換并延時(shí),隨后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)展。直到AD轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示AD轉(zhuǎn)換工作完畢,并將轉(zhuǎn)換結(jié)果存入鎖存器,接著設(shè)置OE為1,翻開輸出三態(tài)門,并將轉(zhuǎn)化的數(shù)字量輸出到數(shù)據(jù)總線上傳到P0口,P0口數(shù)據(jù)再送入單片機(jī)的數(shù)據(jù)緩存單元等待處理,之后設(shè)置OE為0,關(guān)閉輸出三態(tài)門。具體AD轉(zhuǎn)換子程序代碼如下所示:voidad(){unsignedinti,j;//聲明局部變量i,jSTART=1;//使其逐次逼近存放器復(fù)位For(i=0;i<5;i++);//延時(shí)等待復(fù)位完成START=0; //啟動AD轉(zhuǎn)換,并使EOC信號為低電平For(i=0;i<1000;i++)//進(jìn)展AD轉(zhuǎn)換{;}//延時(shí)等待OE=1;OE=1;OE=1;//讀取數(shù)據(jù)ad_data=P0;//將P0口收到的數(shù)據(jù)存放起來OE=0;}通過上述AD轉(zhuǎn)換子程序,輸入到單片機(jī)的模擬信號將會被轉(zhuǎn)變成相應(yīng)的數(shù)字信號,讓后就可以通過串口發(fā)送程序?qū)?shù)字信號發(fā)送到上位機(jī)上進(jìn)展實(shí)時(shí)顯示。4.4串口發(fā)送程序設(shè)計(jì)串行口由串行口控制存放器SCON和特殊功能存放器PCON來控制。串行口控制存放器SCON控制著串行口四種工作方式的選擇、多機(jī)通信控制位、串行承受允許位、發(fā)送的第九位數(shù)據(jù)、接收的第九位數(shù)據(jù)、發(fā)送與接收的中斷標(biāo)志位,特殊功能存放器PCON的D7位SMOD為波特率選擇位。在使用串行口之前首先要對其進(jìn)展初始化編程即設(shè)定串口的工作方式、啟動發(fā)送或承受數(shù)據(jù)、波特率。首先通過定時(shí)/計(jì)數(shù)器的方式控制存放器TMOD選擇定時(shí)器1,工作方式選擇方式2,8位自動重裝。串行工作方式通過串行口控制存放器SCON選擇工作方式1,為8位異步通信方式,波特率的選擇控制由特殊功能存放器PCON和定時(shí)/計(jì)數(shù)器1來共同控制,選擇數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿?600bit/s。之后啟動定時(shí)/計(jì)數(shù)器1。具體的串行口初始化子程序如下所示:voidinit_serial(void){TMOD|=0*20; //定時(shí)器1,方式2,8位自動重裝SCON|=0*40;//串行工作方式1,8位異步通信方式PCON|=0*00;//SMOD=1,表示數(shù)據(jù)傳輸率加倍TH1=0*fd;TL1=0*fd;//數(shù)據(jù)傳輸率:9600fosc=11.0592MHzTR1=1;//啟動定時(shí)器1}當(dāng)串行口初始化完成后,便可以把從ADC0809芯片中送到單片機(jī)的數(shù)字信號通過串口向上位機(jī)發(fā)送了,這就在軟件上需要串行口發(fā)送子程序,串行口的發(fā)送子程序如下所示:voidsend_char(unsignedchar*){SBUF=*;//將*送入數(shù)據(jù)緩存區(qū)while(TI==0);//啟動發(fā)送過程TI=0;}//由軟件將TI置0上述串行口發(fā)送子程序中,TI為發(fā)送中斷標(biāo)志位,在TI=0時(shí),當(dāng)CPU執(zhí)行一條向SBUF寫數(shù)據(jù)的指令時(shí),就啟動發(fā)送過程。經(jīng)過一個(gè)機(jī)器周期,寫入發(fā)送數(shù)據(jù)存放器的數(shù)據(jù)由T*D的引腳輸出,發(fā)送時(shí)鐘由定時(shí)/計(jì)數(shù)器T1送來的溢出信號經(jīng)過16分頻后得到。在發(fā)送時(shí)鐘的作用下,先通過T*D端送出一個(gè)低電平的起始位,然后是低位在前高位在后的8位數(shù)據(jù),之后是一個(gè)高電平停頓位。此程序設(shè)計(jì)工作在串行工作方式1,在停頓位開場發(fā)送時(shí)由硬件置位的同時(shí)TI置位,標(biāo)志著上一個(gè)數(shù)據(jù)發(fā)送完畢,這時(shí)CPU可以通過串行口發(fā)送下一個(gè)數(shù)據(jù)了,在CPU響應(yīng)中斷后,TI不能自動清零,必須由軟件置0。4.5上位機(jī)程序及界面設(shè)計(jì)當(dāng)信號從單片機(jī)通過串口經(jīng)MA*232電平轉(zhuǎn)換后送入PC機(jī)進(jìn)展信號處理時(shí),這就需要上位機(jī)接收程序及界面的設(shè)計(jì),考慮到VB語言可視化編程、事件驅(qū)動的編程機(jī)制的優(yōu)點(diǎn),本設(shè)計(jì)采用VB語言進(jìn)展上位機(jī)程序及界面的設(shè)計(jì)。經(jīng)常使用的串行通信方式有兩種,一種是RS-232串行通信,另一種是RS-485串行通信。每臺計(jì)算機(jī)上都配有數(shù)個(gè)USB接口和兩個(gè)RS-232串行通信端口,通常有1與2兩個(gè)端口。最為簡單的與計(jì)算機(jī)連接的通信接口就是RS-232串行通信端口。上位機(jī)程序的設(shè)計(jì)如果需要通過VB設(shè)計(jì)平臺與RS-232相結(jié)合,則必須會用到MSm通信控件。對MSm通信控件的屬性和事件進(jìn)展相應(yīng)的編程操作設(shè)置則可以很好的實(shí)現(xiàn)單片機(jī)的串行口與上位機(jī)的通信。由于是串口通信,首先需要使用的便是對串口MSm控件屬性和事件的設(shè)置。由于MSm通信控件不是VB的內(nèi)置控件,所以不在工具箱欄中,要想把它添加到工具箱當(dāng)中首先在菜單欄中翻開工程菜單,選擇部件,單擊后會出現(xiàn)一個(gè)部件框,再在控件下找到MicrosoftmControl6.0,選中后點(diǎn)擊確定按鈕,這樣就會把MSm控件添加到工具箱當(dāng)中。由于MSm控件屬性很多,在這里僅介紹與實(shí)現(xiàn)串口通信密切相關(guān)的重要屬性。mport:設(shè)置通信所占用的串口號。由于我用的是筆記本電腦,沒有串口,所以用USB轉(zhuǎn)串口線來連接單片機(jī)和PC機(jī),如設(shè)成1表示對1進(jìn)展操作。筆記本串口為4、5,所以編寫程序選擇串口號,之后對相應(yīng)的串口進(jìn)展操作。Setting:對串口通信的相關(guān)參數(shù)進(jìn)展設(shè)置,包括串口通信的比特率、奇偶校驗(yàn)、數(shù)據(jù)位長度、停頓位等進(jìn)展設(shè)置,其默認(rèn)值是9600,N,8,1,表示串口比特率是9600bit/s,不作奇偶校驗(yàn),8位數(shù)據(jù)位,1個(gè)停頓位。由于單片機(jī)串行輸出所設(shè)置的比特率為9600bit/s,與上位機(jī)比特率相一致,這樣才能保證數(shù)據(jù)傳輸準(zhǔn)確率高,傳輸穩(wěn)定。Input:從輸入存放器讀取數(shù)據(jù),返回值為從串口讀取的數(shù)據(jù)內(nèi)容,同時(shí)輸入存放器將被清空。Ouput:發(fā)送數(shù)據(jù)到輸出存放器。Portopen:設(shè)置串口狀態(tài),值為True時(shí)翻開串口,值為False時(shí)關(guān)閉串口。設(shè)計(jì)為按鈕控制,點(diǎn)擊翻開串口時(shí)開場接收數(shù)據(jù),當(dāng)點(diǎn)擊完畢時(shí),停頓數(shù)據(jù)接收。InBufferCount:設(shè)置輸入存放器所存儲的字符數(shù),當(dāng)將其值設(shè)為0時(shí),則輸入存放器將被清空。OutBufferCount:設(shè)置輸出存放器所存儲的字符數(shù),當(dāng)將其值設(shè)為0時(shí),則輸出存放器將被清空。InputMode:設(shè)置從輸入存放器中讀取數(shù)據(jù)的形式,假設(shè)值為0則表示以文本形式讀取,值為1則表示以二進(jìn)制形式讀取。由于單片機(jī)所發(fā)送過來的數(shù)據(jù)是八位二進(jìn)制的數(shù)據(jù),所以將其值設(shè)置為1。mEvent屬性:返回最近的通信事件或錯(cuò)誤通過對它具體屬性值的查詢,就可以獲得通信事件和通信錯(cuò)誤的完整信息,當(dāng)其值是EvReceive時(shí)表示接收到數(shù)據(jù)。RThreshold:在MSm控件中,設(shè)置mEvent屬性為EvReceive并產(chǎn)生Onm事件之前要承受的字符數(shù)。控件MSm的Onm事件:當(dāng)mEvent屬性值變化時(shí)將發(fā)生Onm事件,指示發(fā)生一個(gè)通信事件或錯(cuò)誤。當(dāng)設(shè)置Rtheshold屬性值為0時(shí),將使得捕獲EvReceive事件無效[5]。根據(jù)以上控件的屬性和事件來編寫相應(yīng)的程序,詳見附錄。4.5.2上位機(jī)界面的設(shè)計(jì)由于筆記本電腦的通行端口與臺式機(jī)不一樣,所以設(shè)置了五個(gè)通信端口,首先選擇正確的通信端口,之后選擇翻開通信端口按鍵。此時(shí)串口被翻開,之后選擇顯示波形按鍵在黑色區(qū)域便會繪制實(shí)時(shí)的脈搏波形,右上角的文本框是查看串口所發(fā)送過來的數(shù)據(jù)是多少。當(dāng)波形顯示到滿屏后會自動重新從開場繪制波形。上位機(jī)界面的設(shè)計(jì)如圖4-2所示:圖4-2上位機(jī)界面4.6擴(kuò)展血壓計(jì)功能根據(jù)傳感器所輸出的波形,用振蕩示波法可以測量人體的血壓,其原理是根據(jù)氣袖在減壓過程中,其壓力振蕩波的振幅變化包絡(luò)線來判定血壓的。目前比擬一致的看法是當(dāng)氣袖壓力振蕩波的振幅最大的時(shí)候,氣袖的壓力是動脈的平均壓。動脈的收縮壓對應(yīng)于振幅包絡(luò)線的第一個(gè)拐點(diǎn),舒*壓對應(yīng)于包絡(luò)線的第二個(gè)拐點(diǎn)。收縮壓判斷確實(shí)定:通常采用最大的振幅法,即在放氣過程中脈搏波振幅度包絡(luò)線的上升段,當(dāng)*一個(gè)脈搏波的幅度與平均壓之比大于0.5時(shí),就認(rèn)為此時(shí)對應(yīng)的氣袖壓力為收縮壓。舒*壓判斷確實(shí)定:也是用最大的振幅法來判定,不過是在脈搏波振幅包絡(luò)線的下降段,當(dāng)*一個(gè)脈搏波的幅度與平均壓之比小于0.8時(shí),就認(rèn)為此時(shí)對應(yīng)的氣袖壓力為舒*壓。其方法是首先找出最大振幅值,在往前找幅度比值為平均壓0.5的瞬態(tài)位置對應(yīng)的氣袖壓力為收縮壓,往后找幅度比值為平均壓0.8的瞬態(tài)位置對應(yīng)氣袖壓力為舒*壓,將計(jì)算出的收縮壓和舒*壓結(jié)果輸出至上位機(jī)界面顯示。5軟硬件調(diào)試在將近半個(gè)學(xué)期的畢業(yè)設(shè)計(jì)過程中,從一開場的軟件仿真設(shè)計(jì)到中期的硬件焊接再到最后的聯(lián)機(jī)調(diào)試,大大小小的遇到了不少問題,首先是軟件仿真設(shè)計(jì)的時(shí)候遇到的問題:1.由于軟件仿真需要Proteus仿真軟件,而我對這個(gè)軟件只在兩年前的校內(nèi)實(shí)習(xí)時(shí)接觸過一點(diǎn),對這個(gè)軟件相當(dāng)不熟悉,于是從圖書館借了一些相關(guān)的資料,花了兩三天對這個(gè)軟件進(jìn)展熟悉與了解,并在網(wǎng)上搜索了一些相關(guān)的電路圖進(jìn)展仿制,以便于更加熟悉操作,經(jīng)過幾天的努力,終于對這個(gè)仿真軟件有了更深的了解和更熟練的繪圖操作。2.在繪圖中選擇電容電阻等元器件的時(shí)候,由于不知道對應(yīng)的英文名字,不知道該如何查找,于是每畫一個(gè)元器件就上網(wǎng)查一下對應(yīng)的查找關(guān)鍵字,很是費(fèi)時(shí)間,于是在網(wǎng)上找了一份查找元器件所對應(yīng)的英文資料,分類很詳細(xì),打印了一份,之后再找元器件時(shí)速度就快多了。3.在當(dāng)硬件仿真圖快要進(jìn)展完畢的時(shí)候,突然發(fā)現(xiàn)仿真區(qū)域的地方不夠用了,沒有了下一個(gè)硬件所需要的空間,于是我就想把所用的器件縮小,結(jié)果經(jīng)過多方面不同的試驗(yàn)均沒有成功〔后來才知道器件不可以縮小,繪圖區(qū)可以放大〕,我又想將繪圖的仿真區(qū)域擴(kuò)大,之后查資料沒有查出來,一個(gè)偶然的時(shí)機(jī)我點(diǎn)到菜單中的System下面子菜單中有個(gè)Setsheetsize,眼前一亮,之后點(diǎn)開了便可選擇工作區(qū)域的大小。于是工作區(qū)域大小的問題被一個(gè)偶然的時(shí)機(jī)解決了。4.在畫好仿真圖后,為了試驗(yàn)一下仿真圖是否能夠成功運(yùn)行,于是從網(wǎng)上下載了一個(gè)現(xiàn)實(shí)小程序,但不知如何將程序加載到仿真軟件當(dāng)中。于是查看有關(guān)的資料后知道了方法:方法是翻開已畫好的proteus電路圖,單擊單片機(jī),在ProgramFile里加載已經(jīng)編譯好的HE*文件。如果是匯編的程序,在proteus里可以直接調(diào)試。如果是C程序,可以用keil軟件和proteus聯(lián)合調(diào)試。我用的是C語言編程,于是選擇了用keil軟件和proteus聯(lián)合調(diào)試。在調(diào)試的時(shí)候問題又出來了,什么是HE*文件,HE*文件在哪里.經(jīng)過在網(wǎng)上的搜索知道了,HE*文件是仿真軟件下載相關(guān)的程序所需要的一種文件,在keil中點(diǎn)擊“Optionfortagret...〞之后選擇“output〞頁之后勾選“CreateHE*File〞之后重編譯如果程序無誤,在Project的當(dāng)前目錄即會產(chǎn)生HE*文件。5.程序下載成功后,發(fā)現(xiàn)數(shù)碼管沒有出現(xiàn)預(yù)期的結(jié)果,于是我首先對程序進(jìn)展了仔細(xì)的檢查,沒有發(fā)現(xiàn)問題的所在,之后又進(jìn)展了仿真圖各個(gè)元器件引腳的連接是否有問題,結(jié)果還是沒有發(fā)現(xiàn)問題的所在,正在百思不得其解的時(shí)候,同學(xué)提醒了一句,你數(shù)碼管選用的是共陰極的還是共陽極的,這時(shí)我才發(fā)現(xiàn)仿真軟件里數(shù)碼管外表一樣但型號不同,本來應(yīng)該用共陰極的數(shù)碼管結(jié)果誤選擇了共陽極的數(shù)碼管。通過這件事情使我明白了不要被表象所誤導(dǎo),要通過表象看事物的本質(zhì),首先要弄清楚自己需要的是什么器件,所選擇的型號所代表的是什么類型的器件,這樣才能保證在工作中防止出現(xiàn)不必要的錯(cuò)誤,提高工作的效率。6.在仿真時(shí)我用正弦波信號代替脈搏波信號,所輸入的頻率為1Hz,理論上數(shù)碼管應(yīng)顯示60,但數(shù)碼管上顯示的卻是65,我以為是定時(shí)計(jì)數(shù)的時(shí)候把定時(shí)器設(shè)定的時(shí)間算錯(cuò)了,結(jié)果導(dǎo)致顯示的不是實(shí)際的脈搏數(shù),但是經(jīng)過計(jì)算后發(fā)現(xiàn)所裝載的計(jì)數(shù)值并沒有出現(xiàn)錯(cuò)誤,然后又想到軟件仿真時(shí)晶振的選擇是不是與計(jì)算時(shí)所用晶振的頻率相一致,結(jié)果發(fā)現(xiàn),計(jì)算時(shí)用的晶振是12MHz,實(shí)際的軟件仿真中晶振頻率所設(shè)定的是11.0592MHz,修改后得到了正確的數(shù)據(jù)顯示。經(jīng)過這一個(gè)問題是我注意到,在做硬件的時(shí)候必須注意晶振的選擇要與軟件設(shè)計(jì)的相一致,這樣才能保證數(shù)據(jù)的準(zhǔn)確性,才能更好的觀察到準(zhǔn)確的每分鐘脈搏數(shù)目。7.在進(jìn)展模數(shù)轉(zhuǎn)換模塊的仿真時(shí),我選擇的ADC0809芯片,但下載好程序后不能進(jìn)展仿真,出來的英文顯示說沒有目標(biāo)芯片,于是我上網(wǎng)查找這個(gè)問題發(fā)現(xiàn):ADC0809芯片不能進(jìn)展軟件仿真,需要用其他的模數(shù)轉(zhuǎn)換芯片來代替,于是我選擇用ADC0808芯片來代替進(jìn)展仿真,ADC0808芯片和ADC0809芯片功能和引腳完全一致,在硬件連接時(shí)依然采用ADC0809芯片。8.在設(shè)計(jì)完成脈搏計(jì)數(shù)模塊與模數(shù)變換模塊后,我將這兩個(gè)模塊放到一個(gè)程序當(dāng)中,意外出現(xiàn)了,如果脈搏計(jì)數(shù)模塊能夠正常工作則模數(shù)轉(zhuǎn)換模塊將不進(jìn)展轉(zhuǎn)換,如果模數(shù)轉(zhuǎn)換模塊能夠正常工作則脈搏計(jì)數(shù)模塊將不進(jìn)展計(jì)數(shù)顯示。因?yàn)槲业某绦蛟O(shè)計(jì)用到了外部中斷0和兩個(gè)定時(shí)計(jì)數(shù)器中斷,我就想是不是這幾個(gè)中斷程序有沖突了,因而導(dǎo)致了不能同時(shí)運(yùn)行。于是我花費(fèi)了很大的精力把計(jì)數(shù)模塊程序改成了比擬復(fù)雜的查詢比擬方式來計(jì)數(shù)的程序,這樣就省去了外部中斷0中斷,可結(jié)果依然存在沖突。在進(jìn)展了兩天的仔細(xì)研究與查看資料后,沒有任何進(jìn)展,當(dāng)時(shí)很是心煩意亂的,當(dāng)時(shí)正好趕上同學(xué)去南湖看風(fēng)景,于是和同學(xué)一塊兒出去玩了一天,晚上回來后翻開電腦一看程序,恍然發(fā)現(xiàn)計(jì)數(shù)模塊后面有一個(gè)while循環(huán),之后才是模數(shù)轉(zhuǎn)換模塊,怪不得程序不往下執(zhí)行,原來是進(jìn)入死循環(huán)了。去掉后程序可以順利的往下執(zhí)行。經(jīng)過這次調(diào)試我發(fā)現(xiàn)大風(fēng)大浪的能過去但是真的有時(shí)候就被一顆小草絆倒了,遇到問題時(shí)候不能光從大的方面考慮,同時(shí)也要注意細(xì)節(jié),因?yàn)?,?xì)節(jié),決定著成敗。其次是硬件焊接所遇到的問題:1.由于仿真時(shí)用到的是三個(gè)獨(dú)立的LED數(shù)碼管,假設(shè)在硬件焊接時(shí),線路的連接必然會很繁瑣,于是改成了用四位一體的LED數(shù)碼管,直接用杜邦線將數(shù)碼管與單片機(jī)相連接。這樣就節(jié)約了焊接的時(shí)間,使線路連接更清晰合理,便于改動試驗(yàn)調(diào)試。2.由于不知道焊接好后硬件是否焊接正確,所以采用單排針引線法將芯片的各個(gè)數(shù)碼管與單排針相連,這樣便于調(diào)試和更改,另外使PCB板的反面更加整潔。由于硬件的連接直接按照軟件仿真時(shí)來連接的,所以在硬件焊接的過程中遇到的問題不多。但在將程序下載到硬件上進(jìn)展調(diào)試時(shí),猛然發(fā)現(xiàn),仿真和實(shí)物、想象和現(xiàn)實(shí)之間的差距真是太大了。下面便是調(diào)試過程中遇到的幾個(gè)問題:1.在進(jìn)展數(shù)碼管與單片機(jī)的連接時(shí),由于不知道哪一個(gè)引腳對應(yīng)著哪一個(gè)數(shù)碼管管段,于是在百度上搜索了一*引腳圖片,按照上面的引腳連接好后輸入正弦波,顯示的是亂碼,于是調(diào)成方波繼續(xù)試驗(yàn),依然是亂碼,程序仿真以及單片機(jī)對應(yīng)的引腳都沒有錯(cuò)誤,半天沒調(diào)試出來,一著急把連接數(shù)碼管的杜邦線全拔了下來,再想連接的時(shí)候忘了引腳是如何對應(yīng)的,于是又重新查找了引腳圖,發(fā)現(xiàn)上一次連接的引腳接反了,重新連接后試驗(yàn),還是亂碼,不過有數(shù)字顯示,于是我便進(jìn)展逐一的對照試驗(yàn),將各個(gè)管腳對應(yīng)的段碼和位選自己測定了一下,發(fā)現(xiàn)百度上所給出的引腳圖不正確。重新連接后能正常顯示。這個(gè)問題使我知道,不要盲目的相信所看到的書本上或其它地方的知識,要親自去試驗(yàn)論證所看到知識的準(zhǔn)確性。2.脈搏波類似于正弦波,于是我用正弦波替代方波輸入單片機(jī)時(shí),數(shù)碼管上出現(xiàn)的又是亂碼,仿真中單片機(jī)可以識別并對正弦波進(jìn)展計(jì)數(shù),但實(shí)際中單片機(jī)不識別正弦波。于是我想到了用軟件檢測法來對正弦波識別,但軟件編程調(diào)試需要的工作量大,于是想用放大器將信號瞬間放大到方波,之后進(jìn)展計(jì)數(shù),但后來發(fā)現(xiàn)放大器會放大脈搏的余波導(dǎo)致對計(jì)數(shù)準(zhǔn)確性的影響,最后選擇了用NE555芯片構(gòu)建一個(gè)施密特觸發(fā)器,將正弦波轉(zhuǎn)變?yōu)榉讲ǎ⒂行б种屏嗣}搏波余波的影響。3.在搭建好施密特觸發(fā)器后,效果依然不理想,于是我把外圍的濾波電容去掉后,實(shí)現(xiàn)了正弦波變?yōu)榉讲?,單片機(jī)能對其進(jìn)展準(zhǔn)確的計(jì)數(shù)。4.由AD轉(zhuǎn)換模塊轉(zhuǎn)換的數(shù)字信號通過單片機(jī)送到上位機(jī)時(shí),上位機(jī)接收不到數(shù)字信號。于是就分析導(dǎo)致這個(gè)結(jié)果可能的兩個(gè)原因,一個(gè)是ADC0809沒有正常工作,另一個(gè)原因是上位機(jī)接收程序有誤,從而導(dǎo)致接收不到單片機(jī)所發(fā)送過來的信號。首先我用串口調(diào)試小助手代替上位機(jī)接收信號,發(fā)現(xiàn)有信號送入,這次可以斷定是上位機(jī)程序有問題,經(jīng)過仔細(xì)檢查后發(fā)現(xiàn)上位機(jī)設(shè)置的是接收字符型數(shù)據(jù),而單片機(jī)所發(fā)送的是八位二進(jìn)制數(shù)據(jù),更改后便可以成功接收數(shù)據(jù)。雖然畢業(yè)設(shè)計(jì)過程中遇到了許多問題,但每遇到一個(gè)問題就要認(rèn)真對待,解決了問題就是一個(gè)進(jìn)步,是一個(gè)對知識積累的過程。因此,我們要敢于面對問題,認(rèn)真分析問題后,全力把問題解決掉。6結(jié)論電子脈搏計(jì)的設(shè)計(jì)最關(guān)鍵的一處在于脈搏波信號的采集,經(jīng)過幾個(gè)方案論證比照后選擇內(nèi)置放大電路的脈搏波傳感器,輸出的波形分兩路送入單片機(jī),一路信號經(jīng)過波形整形后送入單片機(jī),由于放大輸出后的波形不被單片機(jī)識別,所以利用NE555芯片構(gòu)建了一個(gè)施密特觸發(fā)器,將脈搏波整形為方波,便于單片機(jī)的識別。然后通過外部中斷0和定時(shí)/計(jì)數(shù)器0以及設(shè)計(jì)的軟件程序?qū)λ腿雴纹瑱C(jī)的信號進(jìn)展處理計(jì)算,并且能在三秒鐘內(nèi)測量出一分鐘的心跳數(shù)目,之后將結(jié)果送入LED數(shù)碼管上顯示。另一路信號不做任何處理,直接送到ADC0809芯片中進(jìn)展模數(shù)轉(zhuǎn)換處理,之后信號送入單片機(jī)通過軟件程序處理,再通過軟件編程將數(shù)據(jù)送入上位機(jī),通過VB編寫處理程序的可視化窗口將脈搏波的波形實(shí)時(shí)的顯示在上位機(jī)的VB界面上,顯示每一次脈搏跳動的間隔和力度,實(shí)時(shí)記錄繪制曲線,便于分析數(shù)據(jù)。因此這個(gè)脈搏計(jì)可作為病人中心監(jiān)護(hù)系統(tǒng)的一個(gè)模塊來完成心率的檢測和脈搏波形顯示,也可以用在日常生活的對**狀況的實(shí)時(shí)觀測,家中備有這樣的一款脈搏計(jì),就可以在日常生活中監(jiān)控自己和家人的心率變化,可以有效防止和控制多種疾病的發(fā)生和變化,到達(dá)日常保健的目的。本設(shè)計(jì)的電子脈搏計(jì)的優(yōu)點(diǎn)是構(gòu)造簡單,只使用了幾個(gè)必須的元器件,直接降低了本錢。工作穩(wěn)定性高,通過LED數(shù)碼管顯示,顯示直觀,誤差很小,本錢低廉且能節(jié)電。并且隨著集成電路技術(shù)的開展,電子脈搏計(jì)必然向微型化、群眾化、智能化的方向開展。電子脈搏計(jì)在將來肯定會得到更為普遍的應(yīng)用以及更加強(qiáng)大齊全的功能。進(jìn)一步為人們的身體**、醫(yī)療效勞、體育運(yùn)動、日常生活提供更好更方便的效勞。通過此次畢業(yè)設(shè)計(jì),使我學(xué)到了許多以前沒有學(xué)到的知識,使我對Proteus、KeilC、C語言、VB等應(yīng)用軟件有了更熟悉更深刻的了解和掌握,讓我通過對各種硬件以及硬件的焊接調(diào)試學(xué)到了很多有用的東西,為我畢業(yè)走向社會工作崗位打下了很好的根底,加深了對以有知識的理解和運(yùn)用??傊舜萎厴I(yè)設(shè)計(jì)對于我來說是一個(gè)很好的鍛煉時(shí)機(jī)。謝辭在這次畢業(yè)設(shè)計(jì)的過程中首先要感謝我的指導(dǎo)教師,教師對于我的畢業(yè)設(shè)計(jì)給予了悉心的指導(dǎo)與大力的支持,在我技術(shù)上遇到問題的時(shí)候百忙之中抽出時(shí)間來為我指導(dǎo),在我買硬件不方便時(shí),教師得知這個(gè)情況后拿出了自己的元器件來支持我的畢業(yè)設(shè)計(jì),在此,我向教師表示衷心的感謝!同時(shí)還要感謝教師為我畢業(yè)設(shè)計(jì)所提供的元器件以及焊接設(shè)施,還有教師所提供的實(shí)驗(yàn)器材的支持,同時(shí)還要感謝學(xué)校為我們的畢業(yè)設(shè)計(jì)所提供的實(shí)驗(yàn)室及相關(guān)的硬件設(shè)備,使我們的畢業(yè)設(shè)計(jì)能夠順利的完成。此外,還要感謝同學(xué)們的幫助,在遇到問題的時(shí)候總是和他們共同探討問題,分析問題的所在,加快了我解決問題的進(jìn)程,讓我感覺到同學(xué)之間互相無私幫助的溫暖,加深了同學(xué)們之間的感情,并且同時(shí)增長了我們的知識。在此還要感謝為我提供脈搏傳感器以及傳感器相關(guān)知識的陳教授,對于我畢業(yè)設(shè)計(jì)中關(guān)鍵的一局部給予了很大的幫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宜春市奉新縣扶貧和移民辦公室招考管理單位筆試遴選500模擬題附帶答案詳解
- 2025年宜昌宜都市城鎮(zhèn)建設(shè)投資開發(fā)限公司招聘專業(yè)技術(shù)人員【7人】管理單位筆試遴選500模擬題附帶答案詳解
- 2025年安徽黃山育才幼兒園員額制管理人員招聘9人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025年安徽蚌埠市事業(yè)單位招聘人員書(第七次)管理單位筆試遴選500模擬題附帶答案詳解
- 2025-2030年中國植物纖維行業(yè)市場分析報(bào)告
- 2024-2030年無軌堆垛機(jī)公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 2024-2030年撰寫:中國第三方檢測項(xiàng)目風(fēng)險(xiǎn)評估報(bào)告
- 2024-2030年國家甲級資質(zhì):中國地西泮片融資商業(yè)計(jì)劃書
- 2024年粵教新版九年級生物上冊月考試卷含答案421
- 2012年江蘇南京中考滿分作文《帶一本書去旅行》11
- 核反應(yīng)堆熱工分析課程設(shè)計(jì)
- 公安派出所建筑外觀形象設(shè)計(jì)規(guī)范1
- 2023年1月福建省普通高中學(xué)生學(xué)業(yè)基礎(chǔ)會考地理試題
- 2022年中等職業(yè)學(xué)校公共藝術(shù)課程教學(xué)大綱
- 精選天津高三生物知識點(diǎn)
- 2021-2022學(xué)年天津市河西區(qū)五年級上學(xué)期期末語文試卷
- JGJ107-2016鋼筋機(jī)械連接技術(shù)規(guī)程培訓(xùn)宣貫
- 國際商務(wù)單證員考證總復(fù)習(xí)
- 道路、橋梁、隧道、地鐵施工標(biāo)準(zhǔn)化手冊(專業(yè)篇)
- 住宅小區(qū)室外道路及管網(wǎng)配套工程施工方案
- 風(fēng)電分部工程驗(yàn)收簽證表地基與基礎(chǔ)008
評論
0/150
提交評論