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

正文內(nèi)容

酒精濃度檢測(cè)儀設(shè)計(jì)-本科畢業(yè)論文(編輯修改稿)

2025-07-24 22:15 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 接口設(shè)計(jì)上。   芯片參數(shù):   工作電壓:+5V,即VCC=+5V。   模擬輸入電壓范圍:0~+5V,即0≤Vin≤+5V。   分辨率:8位,即分辨率為1/2=1/256,轉(zhuǎn)換值介于0~255之間。   轉(zhuǎn)換時(shí)間:100us(fCK=640KHz時(shí))。   轉(zhuǎn)換誤差:177。1LSB。   參考電壓:,即Vref=。 本設(shè)計(jì)中ADC0804外圍硬件連接圖7 ADC0804外圍電路連接20號(hào)引腳角和10號(hào)引腳分別接VCC和GND,為芯片提供工作電壓。在精確測(cè)量時(shí),8號(hào)引腳模擬地和10號(hào)引腳數(shù)字地應(yīng)該分開接,為芯片提供基準(zhǔn)電壓,此處把它們接在一起,同時(shí)接地。1號(hào)引腳,,芯片被選中處于工作狀態(tài)。引腳二為外部讀數(shù)據(jù)允許位,,,芯片處于外部許狀態(tài),轉(zhuǎn)換后的數(shù)據(jù)被送入DB0到DB7引腳,DB0到DB7引腳為數(shù)據(jù)輸出端口,它與單片機(jī)P3口依次相連,此時(shí)單片機(jī)可以從P3口取走。引腳三為外部寫數(shù)據(jù)允許位,,芯片處于外部寫允許狀態(tài),此時(shí)芯片從6號(hào)和7號(hào)引腳獲取電壓差值,當(dāng)此引腳再次拉高時(shí),芯片便開始AD轉(zhuǎn)換。6號(hào)引腳Vin(+)接傳感器模塊的模擬信號(hào)輸出端口,其間接入的10K電阻并不影響輸入電壓,但可以起到限流作用,防止瞬間高電流將芯片燒壞。7號(hào)引腳Vin()接地,轉(zhuǎn)換的原始模擬電壓就是6號(hào)引腳和7號(hào)引腳的電壓差值。5號(hào)引腳在轉(zhuǎn)換時(shí)輸出高電平信號(hào),結(jié)束時(shí)輸出低脈沖。它如果與單片機(jī)的外部中斷端口()相連,在轉(zhuǎn)換結(jié)束后給單片機(jī)一個(gè)中斷,讓單片機(jī)讀走數(shù)據(jù)??紤]到ADC0804的轉(zhuǎn)換時(shí)間還是非常快的,本設(shè)計(jì)中此引腳懸空,沒有和單片機(jī)外部中斷入口相連。在程序中可以用軟件延時(shí)的方式等待它轉(zhuǎn)換完畢,或者用定時(shí)器中斷方式每隔一定時(shí)間采樣,讓芯片有充分轉(zhuǎn)換時(shí)間。在本設(shè)計(jì)中采用了第一種做法模擬信號(hào)輸出端口,具體方法在下一小節(jié)中介紹。19號(hào)引腳跨接一個(gè)10K電阻與4號(hào)引腳相連,4號(hào)引腳在與56PF的電容相接,電容另一端接地。這樣電阻和電容便于芯片內(nèi)部電路形成了RC震蕩電路,它產(chǎn)生周期信號(hào),為芯片提供時(shí)序,芯片正是在此時(shí)序的控制下有條不紊的工作。9號(hào)引腳應(yīng)接入二分之一的VCC為電路提供參考基準(zhǔn)電壓,具體做法是,將兩個(gè)10K電阻串聯(lián)接在VCC和GND上分壓,接號(hào)引腳并接在他們中間,獲取參考電壓。 本設(shè)計(jì)中AD轉(zhuǎn)換軟件實(shí)現(xiàn)圖8 ADC0804控制時(shí)序圖 參考上圖,CS端在初始化函數(shù)void init(){……}中便將他拉低使芯片一直處于工作狀態(tài),在主函數(shù)中先判斷是否處于檢測(cè)狀態(tài),若是檢測(cè)狀態(tài),不斷調(diào)用檢測(cè)命令和顯示命令,使單片機(jī)可以實(shí)時(shí)檢測(cè)。當(dāng)測(cè)試值超標(biāo),則使報(bào)警電路報(bào)警,顯示模塊和報(bào)警電路的軟硬件設(shè)計(jì)將在后面詳細(xì)介紹。下面具體講述轉(zhuǎn)換過程,上電后由于RD和WR都和I/O相連,即輸出默認(rèn)電平,無需初始化。在轉(zhuǎn)換時(shí)先將WR拉低,調(diào)用帶形參子函數(shù)void delay(){……},用delay(1);語句延時(shí)約一毫秒,讓ADC0804有足夠時(shí)間讀走7號(hào)引腳上的電壓差值。RD拉高后,芯片開始轉(zhuǎn)換,此時(shí)程序用delay(5);語句軟件延時(shí)約五毫秒,讓芯片轉(zhuǎn)換完成。再讓RD端拉低,同樣軟件延時(shí)一毫秒,讓單片機(jī)讀走數(shù)據(jù)。下面介紹轉(zhuǎn)換原則,ACD0804有八位數(shù)據(jù)輸出口,即轉(zhuǎn)換精度為256,它將最高值(此處為1000ppm),分為255份,當(dāng)?shù)玫揭粋€(gè)轉(zhuǎn)換數(shù)據(jù)時(shí),用最大值除以255,再乘以該數(shù)據(jù)值便是最終轉(zhuǎn)換值。AD轉(zhuǎn)換子函數(shù)分析:void ad(){ wr=0。 //將WR拉低,讓芯片開始讀7號(hào)引腳電壓值 delay(1)。 //延時(shí)約一毫秒,讓芯片忙完 wr=1。 //將WR拉高,上升沿到來時(shí),AD轉(zhuǎn)換開始 delay(5)。 //軟件延時(shí)約五毫秒,等待AD轉(zhuǎn)換完成 P3=0xff。 //將P3口全部拉高,等待測(cè)試數(shù)據(jù) delay(1)。 //延時(shí)一會(huì),避免紊亂 rd=0。 //將RD拉低,芯片送出數(shù)據(jù) delay(1)。 //延時(shí)約一毫秒,讓P3口 temp=P3。 //將數(shù)據(jù)存入temp rd=1。 //將RD拉高} 4 顯示模塊軟硬件設(shè)計(jì) LCD1602簡(jiǎn)介LCD1602每行可以輸出16個(gè)字符,可以顯示兩行,故稱1602,它不帶中文字庫,故只能顯示數(shù)字、字母和普通字符。在本設(shè)計(jì)中不檢測(cè)液晶的忙與閑,用前面對(duì)待ADC0804的方法,用軟件延時(shí)來等待液晶的忙操作時(shí)間。 ,單獨(dú)使用一個(gè)口,另外還要接上10K上拉電阻來提高P0口帶負(fù)載能力。當(dāng)處于讀狀態(tài)時(shí),RS處于低脈沖,R/W為高脈沖,E為高脈沖 ,D0~D7=狀態(tài)字當(dāng)處于讀數(shù)據(jù)時(shí),RS為高脈沖,R/W為高脈沖,E為高脈沖,D0~D7=數(shù)據(jù)。當(dāng)處于寫指令時(shí),RS為低脈沖,R/W為低脈沖,D0~D7=指令碼,E=高脈沖。當(dāng)處于寫數(shù)據(jù)時(shí),RS為高脈沖,R/W為低脈沖,E為高脈沖,D0~D7=數(shù)據(jù)。 本設(shè)計(jì)中LCD1602的硬件連接介紹圖9 LCD1602硬件連接圖1號(hào)引腳VSS接地2號(hào)引腳VDD接電源正,為液晶提供合適電壓。15號(hào)和16號(hào)引腳也分別接電源正和地,點(diǎn)亮液晶背光燈,15號(hào)叫也可以串接一個(gè)5歐姆電阻,適當(dāng)減小背光亮度,本設(shè)計(jì)中并未接。3號(hào)角接到10K可調(diào)電阻M103的可調(diào)端,M103另外兩端接電源正和地。用于調(diào)整液晶對(duì)比度。RS、R/W、E分別與I/、。數(shù)據(jù)口與P0口連接,外接10歐姆上拉電阻。 本設(shè)計(jì)中LCD1602的軟件設(shè)計(jì) 本設(shè)計(jì)的液晶寫命令子函數(shù)和寫數(shù)據(jù)子函數(shù)程序分析 圖10 LCD1602寫操作時(shí)序注意前提,在初始化函數(shù)void init(){……}中,已將R/W拉低(對(duì)應(yīng)lcden=0;語句),即只對(duì)液晶進(jìn)行寫操作,不讀液晶狀態(tài)。之前有位定義sbit lcdrs=P2^5。sbit lcdrw=P2^6。sbit lcden=P2^7。寫命令函數(shù)各語句分析:void write_(uchar ){ lcdrs=0。 //將RS拉低,說明對(duì)指令操作, 上電時(shí)是默認(rèn)高電平 P0=。 //對(duì)P0賦值,該值是對(duì)應(yīng)命令碼 ,為形參 delay(5)。 //延時(shí)約五毫秒 lcden=1。 //E拉高,讓液晶讀P0口,寫入對(duì)應(yīng)命令碼 delay(5)。 //延時(shí)約五毫秒,讓液晶忙完再對(duì)其操作,防止數(shù)據(jù)丟失 lcden=0。 //將E拉低}寫數(shù)據(jù)函數(shù)各語句分析:void write_(uchar da){ lcdrs=1。 //將RS拉低高,說明對(duì)數(shù)據(jù)操作 P0=da。 //對(duì)P0賦值,該值是要寫入的數(shù)據(jù) ,da為形參 delay(5)。 //延時(shí)約五毫秒 lcden=1。 //E拉高,讓液晶讀P0口,寫入數(shù)據(jù) delay(5)。 //延時(shí)約五毫秒,讓液晶忙完再對(duì)其操作,防止數(shù)據(jù)丟失 lcden=0。 //將E拉低}結(jié)合圖10,將對(duì)以上分析更加清楚。值得注意的是,在寫數(shù)據(jù)的操作中,寫入的都是字符ASCII碼,例如想寫1,讓液晶在某處顯1,可寫write_data(’1’);或者write_data(0x30+1); 本設(shè)計(jì)中用到的液晶指令介紹 分析本設(shè)計(jì)程序,你會(huì)看到這些寫指令命令:write_(0x38)。 write_(0x0c)。 write_(0x06)。 write_(1)。 write_(0x80+……)。 下面對(duì)它們中的指令碼做介紹:0x38:液晶初始化指令,讓液晶按每行顯示16個(gè)字符,顯示兩行,并且每個(gè)字符顯示處的點(diǎn)陣為5X7;0x0C:不顯示光標(biāo),光標(biāo)不閃爍;0x06:在寫入一個(gè)數(shù)據(jù)后地址自動(dòng)加一,顯示不移動(dòng);1即0x01:清屏指令,即將液晶內(nèi)部存儲(chǔ)數(shù)據(jù)清楚,地址指針指向零;0x80+……:設(shè)置寫入數(shù)據(jù)的地址,所加的就是對(duì)應(yīng)地址。 本設(shè)計(jì)中的字符串顯示和數(shù)據(jù)實(shí)時(shí)更新的實(shí)現(xiàn)方法 寫字符串子程序:void write_str(uchar *p){ while(*p) write_data(*p++)。}這里靈巧的應(yīng)用了數(shù)組指針,比傳統(tǒng)的for嵌套循環(huán)寫入方便很多。用while(*p)……自動(dòng)檢測(cè)是否寫完,當(dāng)寫完后指針變?yōu)榱?,跳出循環(huán)。如想寫入AC value:,只需先定義數(shù)組uchar code str[]=AC value:。,再寫語句write_str(str)。寫完后指針變?yōu)榱?,自?dòng)結(jié)束。數(shù)據(jù)實(shí)時(shí)更新的實(shí)現(xiàn)方法,檢測(cè)時(shí)不斷調(diào)用顯示子函數(shù),display()。顯示函數(shù)如下:void display(){ uint value。 //定義局部變量value uchar a,b,c。 //定義局部變量a、b、c value=*temp。 //獲得value值,它是以ppm為單位 a=value/100。 //a為value的百位 b=value%100/10。 //b為value的十位 c=value%10。 //c為value的個(gè)位 write_(0x80+0x40+4)。 //將數(shù)據(jù)寫在第二行,第五個(gè)字符處 write_data(0x30+a)。 //在第二行,第五個(gè)字符處寫入value百位 write_(0x80+0x40+5)。 //將數(shù)據(jù)寫在第二行,第六個(gè)字符處 write_data(0x30+b)。 //在第二行,第六個(gè)字符處寫入value十位 write_(0x80+0x40+6)。 //將數(shù)據(jù)寫在第二行,第七個(gè)字符處 write_data(0x30+c)。 //在第二行,第七個(gè)字符處寫入value個(gè)位}在循環(huán)語句中不斷調(diào)用AD轉(zhuǎn)換程序, ad()。,又不斷調(diào)用顯示函數(shù),數(shù)據(jù)就能實(shí)時(shí)檢測(cè)更新。在待機(jī)時(shí),循環(huán)程序中不斷執(zhí)行語句: write_(0x80+6)。 //將數(shù)據(jù)寫在第一行,第七個(gè)字符處
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1