freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的電子脈搏血壓計的設(shè)計doc(編輯修改稿)

2025-08-14 01:22 本頁面
 

【文章內(nèi)容簡介】 要使用兩個中斷,T0的溢出中斷用于50ms的定時,外部中斷1用來對INT1引腳上的脈沖進行計數(shù),由于程序的主要任務是對脈沖進行計數(shù),從而計算出頻率,因此外部中斷1的中斷優(yōu)先級應為最高。,用frqc表示脈沖數(shù)目,并且frqc應小于frq,其數(shù)據(jù)類型為無符號的整型,主程序初始化時應該將frqc置0。,第一個任務是重新給TL0和TH0賦初值,為下一次的定時中斷做準備,第二個任務是中斷次數(shù)加1,中斷次數(shù)用numone表示,由于程序設(shè)計的1m定時需要記錄20次中斷數(shù)目所以其數(shù)據(jù)類型應該設(shè)為無符號的字符型,同樣在初始化程序時置numone為0。第三個任務是當?shù)竭_1s鐘的定時后將所記錄脈沖數(shù)目frqc送入frc中,以便于程序的其他部分進行處理和顯示使用,并將numone和frqc置0,以便于下一秒鐘的定時計數(shù)用[13]。經(jīng)過實際的編程調(diào)試后發(fā)現(xiàn)了問題,頻率顯示不穩(wěn)定、計數(shù)不精確并且需要測量的時間長。針對上述問題,修改了中斷次數(shù)從而減少測量脈搏的時間,但效果仍然不理想,經(jīng)過多次調(diào)試后放棄了此方案,總結(jié)原因測量時間相對較長,脈搏信號屬于低頻信號,程序的設(shè)計對于低頻信號的計數(shù)誤差較大。由于脈搏信號屬于低頻信號,此次的設(shè)計思路是通過測量信號的周期來計算頻率。采用定時器精確定時得到一個相對較小的基準時間,然后計算在外部信號連續(xù)兩次相同跳變之間的基準時間個數(shù),由此可以得出信號的周期,即基準時間的個數(shù)乘以基準時間。然后再通過求周期的倒數(shù)便可以得到每分鐘的脈搏數(shù)目。,即機器周期為一微秒,為了得到比較準確的較小基準時間,可以利用定時器的工作方式2,即自動裝入8位初值,用計數(shù)方式進行定時,這樣可以增加所得結(jié)果的精確度。,可以利用T0工作在方式2,精確定時200微秒。,因此可以利用外部中斷0感測并記錄外部信號的兩次下降沿,單片機在兩次下降沿中間的計時總時間即為信號的周期。,由于需要精確定時,應設(shè)置定時器T0的中斷優(yōu)先級最高。在測量脈沖的周期時采用定時器T0定時200微秒,測量連續(xù)信號跳變中定時中斷的次數(shù)??梢缘玫剿斎氲拿}搏信號周期為定時時間乘以信號連續(xù)跳變兩次之間的中斷次數(shù),然后通過程序設(shè)計取得每分鐘的脈搏數(shù) [13]。這種方法計算過程思路為用60秒除以所測得的脈搏信號的周期,即每分鐘脈搏跳動的次數(shù)并將脈搏數(shù)通過數(shù)碼顯示程序送到LED數(shù)碼管上顯示。不僅可以精確實現(xiàn)脈搏的計數(shù),而且測量時間短,極大的節(jié)約了測量時間。相應的程序代碼及功能如下所示: 脈搏計數(shù)代碼設(shè)計根據(jù)以上分析后確定的方案,來編寫相應的程序代碼,首先需要將定時器T0和外部中斷0初始化,設(shè)置定時計數(shù)器T0選擇工作方式2進行計數(shù),并進行初值的裝載,之后依次設(shè)置外部中斷0為高優(yōu)先級中斷、外部中斷0為跳沿觸發(fā)方式、允許T0溢出中斷、允許外部中斷0中斷、啟動定時計數(shù)T0工作、開放所有的中斷請求。設(shè)置完成后即完成了對定時器T0和外部中斷0初始化,程序代碼如下所示:void ding shi (){TMOD | = 0x02。 //工作方式T0選擇方式2計數(shù) TH0 = T0H。 //裝載初值 TL0 = T0L。 PX0 = 1。 // 外部中斷0為高優(yōu)先級中斷 IT0 = 1。 // 外部中斷0為跳沿觸發(fā)方式 ET0 = 1。 // 允許T0溢出中斷 EX0 = 1。 // 允許外部中斷0中斷 TR0 = 1。 // 啟動定時計數(shù)器T0工作 EA = 1。 // 所有的中斷請求被開放 }因為外部中斷0為高優(yōu)先級中斷,當外部信號觸發(fā)外部中斷0時便啟動了定時計數(shù)T0服務子程序器,T0開始計數(shù),溢出時中斷次數(shù)加一,當外部信號的下一次觸發(fā)沿到來時,停止中斷次數(shù)加一,并且轉(zhuǎn)到外部中斷0中斷服務子程序,計算每分鐘的脈搏數(shù),并將脈搏數(shù)存入相應的單元,溢出中斷次數(shù)置0。 LED數(shù)碼管顯示模塊設(shè)計 顯示模塊的選取顯示脈搏數(shù)模塊有兩個方案:LCD液晶模塊顯示和LED數(shù)碼管顯示。方案1:LCD液晶模塊顯示,屏幕能顯示的基本原理就是在兩塊平行板之間填充液晶材料,通過電壓來改變液晶材料內(nèi)部分子的排在列狀況,以達到遮光和透光的目的來顯示深淺不一,錯落有致的圖形,而且只要在兩塊平板間再加上三元色的濾光層,就可實現(xiàn)顯示彩色圖形。優(yōu)點是體積小、功耗低、壽命長、顯示穩(wěn)定字跡清晰美觀,可以很清楚的直接觀察當前脈搏數(shù)目;缺點是價格相對較高,編程相對較為復雜。方案2:LED數(shù)碼管顯示,由于發(fā)光二極管基本上屬于電流敏感器件,其正向壓降的分散性很大, 并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度,就需要使其具有恒定的工作電流,且不能受溫度及其它因素的影響。優(yōu)點是價格便宜,編程簡單,缺點是LED數(shù)碼管顯示數(shù)字存在閃爍情況,觀察脈搏顯示數(shù)目效果不太理想,但可以實現(xiàn)顯示功能。綜合考慮兩種方案,LED數(shù)碼管編程顯示操作簡單,并可以有效降低成本,而且可以實現(xiàn)脈搏數(shù)目顯示功能,所以本設(shè)計顯示模塊采用LED七段數(shù)碼管顯示。要想讓數(shù)碼管能夠正常工作,數(shù)碼管的各段碼就需要用相應的驅(qū)動電路來驅(qū)動,從而顯示出測量的脈搏數(shù)目,根據(jù)不同的數(shù)碼管驅(qū)動方式,可以分為靜態(tài)顯示和動態(tài)顯示兩類 [13]。靜態(tài)驅(qū)動顯示又稱為直流驅(qū)動顯示。推薦使用1015mA電流,靜態(tài)驅(qū)動是指每個LED數(shù)碼管的每一個段碼都由單片機的一個I/O端口進行驅(qū)動,或者使用如BCD碼二進制轉(zhuǎn)十進制譯碼器譯碼進行驅(qū)動。若是共陰極數(shù)碼管其公共端直接接地,共陽極則接電源,各段選線分別與I/O端口相連。要顯示字符直接在I/O線上發(fā)送相應的字碼段。靜態(tài)驅(qū)動顯示的優(yōu)點是結(jié)構(gòu)與編程簡單,顯示亮度高,缺點是占用I/O端口多,如本設(shè)計需要使用3個數(shù)碼管顯示,若采用靜態(tài)顯示則需要24個I/O端口,ADC0809芯片與單片機的接口就不夠用了。在實際應用中必須增加譯碼驅(qū)動器來進行驅(qū)動,這就增加了硬件電路的復雜性。由于本設(shè)計需要的數(shù)碼管數(shù)目較多,I/O接口不夠用,所以采用動態(tài)顯示方式。數(shù)碼管動態(tài)顯示是單片機中應用最為廣泛的一種顯示方式之一,就是將所有的數(shù)碼管的段選線并聯(lián)在一起,用一個I/O接口控制,公共端不是直接接地或電源,而是通過相應的I/O接口線控制。另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的段碼,這樣就會使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在動態(tài)掃描時,平均電流為4~5mA,峰峰電流為50~60mA。在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,雖然實際上各位數(shù)碼管并不是同時點亮的,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。通過以上分析很明顯可以得知,本設(shè)計采用數(shù)碼管動態(tài)顯示方式,不僅降低了設(shè)計成本還節(jié)約了I/O,為ADC0809模塊連接單片機創(chuàng)造了條件。 LED數(shù)碼管與單片機的接口電路LED數(shù)碼管與單片機的接口電路如圖41所示:圖41 LED數(shù)碼管與單片機的接口電路由上圖可以看出單片機的P1口八個端口分別與LED數(shù)碼管的八段段碼顯示控制端相連接,構(gòu)成了片選控制端,~,當程序控制單片機發(fā)送相應的字符時,數(shù)碼管便會相應的點亮,從而實現(xiàn)每分鐘脈搏數(shù)目的顯示,這就是顯示模塊的設(shè)計。 LED數(shù)碼管驅(qū)動程序的設(shè)計本設(shè)計采用的LED數(shù)碼管為四位的共陰極LED八段數(shù)碼管,因此在程序設(shè)計中首先聲明共陰極的LED段碼表以及LED位顯示控制程序,并且要聲明顯示單元數(shù)據(jù)緩沖區(qū),此設(shè)計是選擇的LED動態(tài)掃描顯示方式,數(shù)碼管采用循環(huán)方式點亮,每位數(shù)碼管點亮時間要滿足的點亮時間為1~2ms才能滿足人的視覺暫留現(xiàn)象,這樣才能清楚的觀察所顯示的數(shù)據(jù)。由以上分析可以看出掃面顯示函數(shù)和延時函數(shù)是LED數(shù)碼管驅(qū)動程序所必需的部分。相關(guān)部分程序代碼如下所示:uchar code dis_7[11]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f,0x6f, 0x00 } 。 //分別對應共陰極LED段碼表0、3 、滅。uchar code scan_con[3]={ 0xf7, 0xef, 0xdf}。 //LED位選顯示控制,分別對應三個LED數(shù)碼管,選通時相應的LED數(shù)碼管點亮。uchar data display [ 3 ] = { 0x00, 0x00, 0x00 } 。 //顯示單元數(shù)據(jù)緩沖區(qū),共3個數(shù)據(jù)緩沖區(qū)。以上是程序初始化時定義的全局變量。下面是聲明的延時子函數(shù),聲明了整型形參t,當t大于0時每一個機器周期t的值都會依次減一,直到t小于等于0時程序繼續(xù)往下執(zhí)行,它的優(yōu)點在于延時時間可以根據(jù)實際的需要來調(diào)節(jié),方便快捷易懂。void delay_us(uint t) //延時子函數(shù){For ( 。 t0 。 t ) 。}LED數(shù)碼管采用動態(tài)掃描方式顯示,相應的就需要動態(tài)掃描函數(shù)來控制,首先定義一個局部變量,通過局部變量的變化來控制LED數(shù)碼管的位選控制端和段碼顯示控制,當這些設(shè)定好后,要想使亮著的數(shù)碼管持續(xù)時間能夠滿足人的視覺暫留效果,便需要調(diào)用延時子函數(shù)使其延時時間滿足需求。具體程序如下所示:Scan () //LED數(shù)碼管掃描子函數(shù){ uchar k。 //定義局部變量k for ( k=0。 k3。 k++ ) //通過k控制哪個數(shù)碼管顯示 { Discan = scan_con [ k ]。 //位選控制位送P3口 DiSdata = dis_7 [ display [ k ] ] 。 //字碼段數(shù)據(jù)位送P1口 delay_us ( 150 )。 // }} AD轉(zhuǎn)換模塊的設(shè)計雖然ADC0809芯片是可以用來進行8路信號同時輸入循環(huán)檢測的,但本設(shè)計只采用單獨通道進行信號轉(zhuǎn)換,因為這個芯片應用普遍價格實惠,所以選用此芯片。代碼設(shè)計中采用定時傳送方式,把ADDA、ADDB、ADDC三個地址輸入線都接地,即選用IN0通道輸入模擬信號,經(jīng)ADC0809轉(zhuǎn)換完成后將數(shù)字信號采用定時傳送方式傳入單片機進行數(shù)據(jù)處理。因為對于一種方式的A/D轉(zhuǎn)換其來說,轉(zhuǎn)換時間是已知的和固定的。例如ADC0809在時鐘頻率為500kHz時轉(zhuǎn)換時間為128μs,相當于12MHz的MCS51單片機共128個機器周期??蓳?jù)此設(shè)計一個延時子程序,A/D轉(zhuǎn)換啟動后即調(diào)用此子程序,當延遲時間到達時,轉(zhuǎn)換可以確定已經(jīng)完成了,接著就可進行數(shù)據(jù)傳送。程序代碼設(shè)計中首先令START為1,延時一段時間后將主次逼近寄存器復位,然后再令START為0,啟動AD轉(zhuǎn)換并延時,隨后EOC輸出信號變低,指示轉(zhuǎn)換正在進行。直到AD轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示AD轉(zhuǎn)換工作結(jié)束,并將轉(zhuǎn)換結(jié)果存入鎖存器,接著設(shè)置OE為1,打開輸出三態(tài)門,并將轉(zhuǎn)化的數(shù)字量輸出到數(shù)據(jù)總線上傳到P0口,P0口數(shù)據(jù)再送入單片機的數(shù)據(jù)緩存單元等待處理,之后設(shè)置OE為0,關(guān)閉輸出三態(tài)門。具體AD轉(zhuǎn)換子程序代碼如下所示:void ad () { unsigned int i , j 。 //聲明局部變量i,j START = 1 。 //使其逐次逼近寄存器復位 For ( i=0 。 i 5 。 i++ ) 。 //延時等待復位完成 START = 0 。 //啟動AD轉(zhuǎn)換,并使EOC信號為低電平 For ( i = 0 。 i 1000 。 i++ ) //進行AD轉(zhuǎn)換 { 。 } //延時等待 OE = 1 。 OE = 1 。 OE = 1 。 //讀取數(shù)據(jù) ad_data = P0 。 //將P0口收到的數(shù)據(jù)存放起來 OE = 0 。 } 通過上述AD轉(zhuǎn)換子程序,輸入到單片機的模擬信號將會被轉(zhuǎn)變成相應的數(shù)字信號,讓后就可以通過串口發(fā)送程序?qū)?shù)字信號發(fā)送到上位機上進行實時顯示。 串口發(fā)送程序設(shè)計串行口由串行口控制寄存器SCON和特殊功能寄存器PCON來控制。串行口控制寄存器SCON控制著串行口四種工作方式的選擇、多機通信控制位、串行接受允許位、發(fā)送的第九位數(shù)據(jù)、接收的第九位數(shù)據(jù)、發(fā)送與接收的中斷標志位,特殊功能寄存器PCON的D7位SMOD為波特率選擇位。在使用串行口之前首先要對其進行初始化編程即設(shè)定串口的工作方式、啟動發(fā)送或接受數(shù)據(jù)、波特率。首先通過定時/計數(shù)器的方式控制寄存器TMOD選擇定時器1,工作方式選擇方式2,8位自動重裝。串行工作方式通過串行口控制寄存器SCON選擇工作方式1,為8位異步通信方式,波特率的選擇控制由特殊功能寄存器PCON和定時/計數(shù)器1來共同控制,選擇數(shù)據(jù)傳輸?shù)牟ㄌ芈蕿?600bit/s。之后啟動定時/計數(shù)器1。具體的串行口初始化子程序如下所示:void init_serial ( void ) { TMOD | = 0x20 。 //定時器1, 方式 2, 8位自動重裝
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1