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

正文內(nèi)容

基于單片機(jī)的電子脈搏血壓計(jì)的設(shè)計(jì)doc(已改無(wú)錯(cuò)字)

2022-08-15 01:22:18 本頁(yè)面
  

【正文】 SCON | = 0x40 。 //串行工作方式1, 8位異步通信方式 PCON | = 0x00 。 //SMOD=1,表示數(shù)據(jù)傳輸率加倍 TH1 = 0xfd 。 TL1 = 0xfd 。 //數(shù)據(jù)傳輸率:9600 fosc= TR1 = 1 。 //啟動(dòng)定時(shí)器1 }當(dāng)串行口初始化完成后,便可以把從ADC0809芯片中送到單片機(jī)的數(shù)字信號(hào)通過(guò)串口向上位機(jī)發(fā)送了,這就在軟件上需要串行口發(fā)送子程序,串行口的發(fā)送子程序如下所示:void send_char ( unsigned char x ){ SBUF = x 。 //將x送入數(shù)據(jù)緩存區(qū) while ( TI == 0 ) 。 //啟動(dòng)發(fā)送過(guò)程 TI = 0 。 } //由軟件將TI置0上述串行口發(fā)送子程序中,TI為發(fā)送中斷標(biāo)志位,在TI=0時(shí),當(dāng)CPU執(zhí)行一條向SBUF寫(xiě)數(shù)據(jù)的指令時(shí),就啟動(dòng)發(fā)送過(guò)程。經(jīng)過(guò)一個(gè)機(jī)器周期,寫(xiě)入發(fā)送數(shù)據(jù)寄存器的數(shù)據(jù)由TXD的引腳輸出,發(fā)送時(shí)鐘由定時(shí)/計(jì)數(shù)器T1送來(lái)的溢出信號(hào)經(jīng)過(guò)16分頻后得到。在發(fā)送時(shí)鐘的作用下,先通過(guò)TXD端送出一個(gè)低電平的起始位,然后是低位在前高位在后的8位數(shù)據(jù),之后是一個(gè)高電平停止位。此程序設(shè)計(jì)工作在串行工作方式1,在停止位開(kāi)始發(fā)送時(shí)由硬件置位的同時(shí)TI置位,標(biāo)志著上一個(gè)數(shù)據(jù)發(fā)送完畢,這時(shí)CPU可以通過(guò)串行口發(fā)送下一個(gè)數(shù)據(jù)了,在CPU響應(yīng)中斷后,TI不能自動(dòng)清零,必須由軟件置0。 上位機(jī)程序及界面設(shè)計(jì)當(dāng)信號(hào)從單片機(jī)通過(guò)串口經(jīng)MAX232電平轉(zhuǎn)換后送入PC機(jī)進(jìn)行信號(hào)處理時(shí),這就需要上位機(jī)接收程序及界面的設(shè)計(jì),考慮到VB語(yǔ)言可視化編程、事件驅(qū)動(dòng)的編程機(jī)制的優(yōu)點(diǎn),本設(shè)計(jì)采用VB語(yǔ)言進(jìn)行上位機(jī)程序及界面的設(shè)計(jì)。經(jīng)常使用的串行通信方式有兩種,一種是 RS232 串行通信,另一種是 RS485 串行通信。 每臺(tái)計(jì)算機(jī)上都配有數(shù)個(gè)USB 接口和兩個(gè)RS232 串行通信端口,通常有 COM1 與 COM2 兩個(gè)端口。最為簡(jiǎn)單的與計(jì)算機(jī)連接的通信接口就是 RS232 串行通信端口。 上位機(jī)程序的設(shè)計(jì)如果需要通過(guò)VB設(shè)計(jì)平臺(tái)與RS232相結(jié)合,則必須會(huì)用到MSComm通信控件。對(duì)MSComm通信控件的屬性和事件進(jìn)行相應(yīng)的編程操作設(shè)置則可以很好的實(shí)現(xiàn)單片機(jī)的串行口與上位機(jī)的通信。由于是串口通信,首先需要使用的便是對(duì)串口MSComm控件屬性和事件的設(shè)置。由于MSComm通信控件不是VB的內(nèi)置控件,所以不在工具箱欄中,要想把它添加到工具箱當(dāng)中首先在菜單欄中打開(kāi)工程菜單,選擇部件,單擊后會(huì)出現(xiàn)一個(gè)部件框,再在控件下找到Microsoft Comm Control ,選中后點(diǎn)擊確定按鈕,這樣就會(huì)把MSComm控件添加到工具箱當(dāng)中。由于 MSComm 控件屬性很多,在這里僅介紹與實(shí)現(xiàn)串口通信密切相關(guān)的重要屬性。Commport:設(shè)置通信所占用的串口號(hào)。由于我用的是筆記本電腦,沒(méi)有串口,所以用USB轉(zhuǎn)串口線來(lái)連接單片機(jī)和PC機(jī),如設(shè)成1表示對(duì)COM1 進(jìn)行操作。筆記本串口為COMCOM5,所以編寫(xiě)程序選擇串口號(hào),之后對(duì)相應(yīng)的串口進(jìn)行操作。Setting:對(duì)串口通信的相關(guān)參數(shù)進(jìn)行設(shè)置,包括串口通信的比特率、奇偶校驗(yàn)、數(shù)據(jù)位長(zhǎng)度、停止位等進(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),值為T(mén)rue時(shí)打開(kāi)串口,值為False 時(shí)關(guān)閉串口。設(shè)計(jì)為按鈕控制,點(diǎn)擊打開(kāi)串口時(shí)開(kāi)始接收數(shù)據(jù),當(dāng)點(diǎn)擊結(jié)束時(shí),停止數(shù)據(jù)接收。InBufferCount:設(shè)置輸入寄存器所存儲(chǔ)的字符數(shù),當(dāng)將其值設(shè)為0時(shí),則輸入寄存器將被清空。OutBufferCount:設(shè)置輸出寄存器所存儲(chǔ)的字符數(shù),當(dāng)將其值設(shè)為0 時(shí),則輸出寄存器將被清空。InputMode:設(shè)置從輸入寄存器中讀取數(shù)據(jù)的形式,若值為0則表示以文本形式讀取,值為1則表示以二進(jìn)制形式讀取。由于單片機(jī)所發(fā)送過(guò)來(lái)的數(shù)據(jù)是八位二進(jìn)制的數(shù)據(jù),所以將其值設(shè)置為1。CommEvent屬性:返回最近的通信事件或錯(cuò)誤 通過(guò)對(duì)它具體屬性值的查詢,就可以獲得通信事件和通信錯(cuò)誤的完整信息,當(dāng)其值是EvReceive 時(shí)表示接收到數(shù)據(jù)。RThreshold:在MSComm 控件中,設(shè)置CommEvent屬性為EvReceive并產(chǎn)生OnComm事件之前要接受的字符數(shù)。控件MSComm的OnComm事件:當(dāng)CommEvent屬性值變化時(shí)將發(fā)生OnComm 事件,指示發(fā)生一個(gè)通信事件或錯(cuò)誤。當(dāng)設(shè)置Rtheshold屬性值為0時(shí),將使得捕獲EvReceive事件無(wú)效[5]。根據(jù)以上控件的屬性和事件來(lái)編寫(xiě)相應(yīng)的程序,詳見(jiàn)附錄。 上位機(jī)界面的設(shè)計(jì)由于筆記本電腦的通行端口與臺(tái)式機(jī)不一樣,所以設(shè)置了五個(gè)通信端口,首先選擇正確的通信端口,之后選擇打開(kāi)通信端口按鍵。此時(shí)串口被打開(kāi),之后選擇顯示波形按鍵在黑色區(qū)域便會(huì)繪制實(shí)時(shí)的脈搏波形,右上角的文本框是查看串口所發(fā)送過(guò)來(lái)的數(shù)據(jù)是多少。當(dāng)波形顯示到滿屏后會(huì)自動(dòng)重新從開(kāi)始繪制波形。上位機(jī)界面的設(shè)計(jì)如圖42所示:圖42 上位機(jī)界面 擴(kuò)展血壓計(jì)功能根據(jù)傳感器所輸出的波形,用振蕩示波法可以測(cè)量人體的血壓,其原理是根據(jù)氣袖在減壓過(guò)程中,其壓力振蕩波的振幅變化包絡(luò)線來(lái)判定血壓的。目前比較一致的看法是當(dāng)氣袖壓力振蕩波的振幅最大的時(shí)候,氣袖的壓力是動(dòng)脈的平均壓。動(dòng)脈的收縮壓對(duì)應(yīng)于振幅包絡(luò)線的第一個(gè)拐點(diǎn),舒張壓對(duì)應(yīng)于包絡(luò)線的第二個(gè)拐點(diǎn)。收縮壓判斷的確定:通常采用最大的振幅法,即在放氣過(guò)程中脈搏波振幅度包絡(luò)線的上升段,就認(rèn)為此時(shí)對(duì)應(yīng)的氣袖壓力為收縮壓。舒張壓判斷的確定:也是用最大的振幅法來(lái)判定,不過(guò)是在脈搏波振幅包絡(luò)線的下降段,就認(rèn)為此時(shí)對(duì)應(yīng)的氣袖壓力為舒張壓。其方法是首先找出最大振幅值,往后找幅度比值為平均壓0. 8的瞬態(tài)位置對(duì)應(yīng)氣袖壓力為舒張壓,將計(jì)算出的收縮壓和舒張壓結(jié)果輸出至上位機(jī)界面顯示。5 軟硬件調(diào)試在將近半個(gè)學(xué)期的畢業(yè)設(shè)計(jì)過(guò)程中,從一開(kāi)始的軟件仿真設(shè)計(jì)到中期的硬件焊接再到最后的聯(lián)機(jī)調(diào)試,大大小小的遇到了不少問(wèn)題,首先是軟件仿真設(shè)計(jì)的時(shí)候遇到的問(wèn)題:,而我對(duì)這個(gè)軟件只在兩年前的校內(nèi)實(shí)習(xí)時(shí)接觸過(guò)一點(diǎn),對(duì)這個(gè)軟件相當(dāng)不熟悉,于是從圖書(shū)館借了一些相關(guān)的資料,花了兩三天對(duì)這個(gè)軟件進(jìn)行熟悉與了解,并在網(wǎng)上搜索了一些相關(guān)的電路圖進(jìn)行仿制,以便于更加熟悉操作,經(jīng)過(guò)幾天的努力,終于對(duì)這個(gè)仿真軟件有了更深的了解和更熟練的繪圖操作。,由于不知道對(duì)應(yīng)的英文名字,不知道該如何查找,于是每畫(huà)一個(gè)元器件就上網(wǎng)查一下對(duì)應(yīng)的查找關(guān)鍵字,很是費(fèi)時(shí)間,于是在網(wǎng)上找了一份查找元器件所對(duì)應(yīng)的英文資料,分類(lèi)很詳細(xì),打印了一份,之后再找元器件時(shí)速度就快多了。,突然發(fā)現(xiàn)仿真區(qū)域的地方不夠用了,沒(méi)有了下一個(gè)硬件所需要的空間,于是我就想把所用的器件縮小,結(jié)果經(jīng)過(guò)多方面不同的試驗(yàn)均沒(méi)有成功(后來(lái)才知道器件不可以縮小,繪圖區(qū)可以放大),我又想將繪圖的仿真區(qū)域擴(kuò)大,之后查資料沒(méi)有查出來(lái),一個(gè)偶然的機(jī)會(huì)我點(diǎn)到菜單中的System下面子菜單中有個(gè)Set sheet size,眼前一亮,之后點(diǎn)開(kāi)了便可選擇工作區(qū)域的大小。于是工作區(qū)域大小的問(wèn)題被一個(gè)偶然的機(jī)會(huì)解決了。,為了試驗(yàn)一下仿真圖是否能夠成功運(yùn)行,于是從網(wǎng)上下載了一個(gè)現(xiàn)實(shí)小程序,但不知如何將程序加載到仿真軟件當(dāng)中。于是查看有關(guān)的資料后知道了方法:方法是打開(kāi)已畫(huà)好的proteus電路圖,單擊單片機(jī),在Program File里加載已經(jīng)編譯好的HEX文件。如果是匯編的程序,在proteus里可以直接調(diào)試。如果是C程序,可以用keil軟件和proteus聯(lián)合調(diào)試。我用的是C語(yǔ)言編程,于是選擇了用keil軟件和proteus聯(lián)合調(diào)試。在調(diào)試的時(shí)候問(wèn)題又出來(lái)了,什么是HEX文件,HEX文件在哪里?經(jīng)過(guò)在網(wǎng)上的搜索知道了,HEX文件是仿真軟件下載相關(guān)的程序所需要的一種文件,在keil中點(diǎn)擊“Option for tagret ...”之后選擇“output”頁(yè) 之后勾選“Create HEX File”之后重編譯 如果程序無(wú)誤,在Project的當(dāng)前目錄即會(huì)產(chǎn)生HEX文件。,發(fā)現(xiàn)數(shù)碼管沒(méi)有出現(xiàn)預(yù)期的結(jié)果,于是我首先對(duì)程序進(jìn)行了仔細(xì)的檢查,沒(méi)有發(fā)現(xiàn)問(wèn)題的所在,之后又進(jìn)行了仿真圖各個(gè)元器件引腳的連接是否有問(wèn)題,結(jié)果還是沒(méi)有發(fā)現(xiàn)問(wèn)題的所在,正在百思不得其解的時(shí)候,同學(xué)提醒了一句,你數(shù)碼管選用的是共陰極的還是共陽(yáng)極的,這時(shí)我才發(fā)現(xiàn)仿真軟件里數(shù)碼管表面相同但型號(hào)不同,本來(lái)應(yīng)該用共陰極的數(shù)碼管結(jié)果誤選擇了共陽(yáng)極的數(shù)碼管。通過(guò)這件事情使我明白了不要被表象所誤導(dǎo),要通過(guò)表象看事物的本質(zhì),首先要弄清楚自己需要的是什么器件,所選擇的型號(hào)所代表的是什么類(lèi)型的器件,這樣才能保證在工作中避免出現(xiàn)不必要的錯(cuò)誤,提高工作的效率。,所輸入的頻率為1Hz,理論上數(shù)碼管應(yīng)顯示60,但數(shù)碼管上顯示的卻是65,我以為是定時(shí)計(jì)數(shù)的時(shí)候把定時(shí)器設(shè)定的時(shí)間算錯(cuò)了,結(jié)果導(dǎo)致顯示的不是實(shí)際的脈搏數(shù),但是經(jīng)過(guò)計(jì)算后發(fā)現(xiàn)所裝載的計(jì)數(shù)值并沒(méi)有出現(xiàn)錯(cuò)誤,然后又想到軟件仿真時(shí)晶振的選擇是不是與計(jì)算時(shí)所用晶振的頻率相一致,結(jié)果發(fā)現(xiàn),計(jì)算時(shí)用的晶振是12MHz,修改后得到了正確的數(shù)據(jù)顯示。經(jīng)過(guò)這一個(gè)問(wèn)題是我注意到,在做硬件的時(shí)候必須注意晶振的選擇要與軟件設(shè)計(jì)的相一致,這樣才能保證數(shù)據(jù)的準(zhǔn)確性,才能更好的觀察到準(zhǔn)確的每分鐘脈搏數(shù)目。,我選擇的ADC0809芯片,但下載好程序后不能進(jìn)行仿真,出來(lái)的英文顯示說(shuō)沒(méi)有目標(biāo)芯片,于是我上網(wǎng)查找這個(gè)問(wèn)題發(fā)現(xiàn):ADC0809芯片不能進(jìn)行軟件仿真,需要用其他的模數(shù)轉(zhuǎn)換芯片來(lái)代替,于是我選擇用ADC0808芯片來(lái)代替進(jìn)行仿真,ADC0808芯片和ADC0809芯片功能和引腳完全一致,在硬件連接時(shí)依然采用ADC0809芯片。,我將這兩個(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ù)雜的查詢比較方式來(lái)計(jì)數(shù)的程序,這樣就省去了外部中斷0中斷,可結(jié)果依然存在沖突。在進(jìn)行了兩天的仔細(xì)研究與查看資料后,沒(méi)有任何進(jìn)展,當(dāng)時(shí)很是心煩意亂的,當(dāng)時(shí)正好趕上同學(xué)去南湖看風(fēng)景,于是和同學(xué)一塊兒出去玩了一天,晚上回來(lái)后打開(kāi)電腦一看程序,恍然發(fā)現(xiàn)計(jì)數(shù)模塊后面有一個(gè)while循環(huán),之后才是模數(shù)轉(zhuǎn)換模塊,怪不得程序不往下執(zhí)行,原來(lái)是進(jìn)入死循環(huán)了。去掉后程序可以順利的往下執(zhí)行。經(jīng)過(guò)這次調(diào)試我發(fā)現(xiàn)大風(fēng)大浪的能過(guò)去但是真的有時(shí)候就被一顆小草絆倒了,遇到問(wèn)題時(shí)候不能光從大的方面考慮,同時(shí)也要注意細(xì)節(jié),因?yàn)?,?xì)節(jié),決定著成敗。其次是硬件焊接所遇到的問(wèn)題:,若在硬件焊接時(shí),線路的連接必然會(huì)很繁瑣,于是改成了用四位一體的LED數(shù)碼管,直接用杜邦線將數(shù)碼管與單片機(jī)相連接。這樣就節(jié)約了焊接的時(shí)間,使線路連接更清晰合理,便于改動(dòng)試驗(yàn)調(diào)試。,所以采用單排針引線法將芯片的各個(gè)數(shù)碼管與單排針相連,這樣便于調(diào)試和更改,另外使PCB板的背面更加整潔。由于硬件的連接直接按照軟件仿真時(shí)來(lái)連接的,所以在硬件焊接的過(guò)程中遇到的問(wèn)題不多。但在將程序下載到硬件上進(jìn)行調(diào)試時(shí),猛然發(fā)現(xiàn),仿真和實(shí)物、想象和現(xiàn)實(shí)之間的差距真是太大了。下面便是調(diào)試過(guò)程中遇到的幾個(gè)問(wèn)題:,由于不知道哪一個(gè)引腳對(duì)應(yīng)著哪一個(gè)數(shù)碼管管段,于是在百度上搜索了一張引腳圖片,按照上面的引腳連接好后輸入正弦波,顯示的是亂碼,于是調(diào)成方波繼續(xù)試驗(yàn),依然是亂碼,程序仿真以及單片機(jī)對(duì)應(yīng)的引腳都沒(méi)有錯(cuò)誤,半天沒(méi)調(diào)試出來(lái),一著急把連接數(shù)碼管的杜邦線全拔了下來(lái),再想連接的時(shí)候忘了引腳是如何對(duì)應(yīng)的,于是又重新查找了引腳圖,發(fā)現(xiàn)上一次連接的引腳接反了,重新連接后試驗(yàn),還是亂碼,不過(guò)有數(shù)字顯示,于是我便進(jìn)行逐一的對(duì)照試驗(yàn),將各個(gè)管腳對(duì)應(yīng)的段碼和位選自己測(cè)定了一下,發(fā)現(xiàn)百度上所給出的引腳圖不正確。重新連接后能正常顯示。這個(gè)問(wèn)題使我知道,不要盲目的相信所看到的書(shū)本上或其它地方的知識(shí),要親自去試驗(yàn)論證所看到知識(shí)的準(zhǔn)確性。,于是我用正弦波替代方波輸入單片機(jī)時(shí),數(shù)碼管上出現(xiàn)的又是亂碼,仿真中單片機(jī)可以識(shí)別并對(duì)正弦波進(jìn)行計(jì)數(shù),但實(shí)際中單片機(jī)不識(shí)別正弦波。于是我想到了用軟件檢測(cè)法來(lái)對(duì)正弦波識(shí)別,但軟件編程調(diào)試需要的工作量大,于是想用放大器將信號(hào)瞬間放大到方波,之后進(jìn)行計(jì)數(shù),但后來(lái)發(fā)現(xiàn)放大器會(huì)放大脈搏的余波導(dǎo)致對(duì)計(jì)數(shù)準(zhǔn)確性的影響,最后選擇了用NE555芯片構(gòu)建一個(gè)施密特觸發(fā)器,將正弦波轉(zhuǎn)變?yōu)榉讲?,并有效抑制了脈搏波余波的影響。,效果依然不理想,于是我把外圍的濾波電容去掉后,實(shí)現(xiàn)了正弦波變?yōu)榉讲?,單片機(jī)能對(duì)其進(jìn)行準(zhǔn)確的計(jì)數(shù)。,上位機(jī)接收不到數(shù)字信號(hào)。于是就分析導(dǎo)致這個(gè)結(jié)果可能的兩個(gè)原因,一個(gè)是ADC0809沒(méi)有正常工作,另一個(gè)原因是上位機(jī)接收程序有誤,從而導(dǎo)致接收不到單片機(jī)所發(fā)送過(guò)來(lái)的信號(hào)。首先我用串口調(diào)試小助手代替上位機(jī)接收信號(hào),發(fā)現(xiàn)有信號(hào)送入,這次可以斷定是上位機(jī)程序有問(wèn)題,經(jīng)過(guò)仔細(xì)檢查后發(fā)現(xiàn)上位機(jī)設(shè)置的是接收字符型數(shù)據(jù),而單片機(jī)所發(fā)送的是八位二進(jìn)制數(shù)據(jù),更改后便可以成功接收數(shù)據(jù)。雖然畢業(yè)設(shè)計(jì)過(guò)程中遇到了許多問(wèn)題,但每遇到一個(gè)問(wèn)題就要認(rèn)真對(duì)待,解決了問(wèn)題就是一個(gè)進(jìn)步,是一個(gè)對(duì)知識(shí)積累的過(guò)程。因此,我們要敢于面對(duì)問(wèn)題,認(rèn)真分析問(wèn)題后,全力把問(wèn)題解決掉。
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1