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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于at89s52單片機(jī)的二氧化碳濃度測(cè)量及播報(bào)系統(tǒng)設(shè)計(jì)(編輯修改稿)

2024-07-11 01:41 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 0809 語音播報(bào) 液晶顯示 二氧化碳濃度 數(shù)據(jù)處理 設(shè)置報(bào)警時(shí)間限值 顯示設(shè)置報(bào)警限 菜單 設(shè)置時(shí)間 顯示時(shí)間設(shè)置菜單 設(shè)置菜單按鍵是否按下 播報(bào)鍵 是否按下 數(shù)模轉(zhuǎn)化 是否結(jié)束 設(shè)置菜單按鍵是否按下 設(shè)置菜單按鍵是否按下 開始 是 否 ADC0809 程序設(shè)計(jì) ADC0809 是典型的逐次比較 A/D 轉(zhuǎn)換器,通常都是以二進(jìn)制碼輸出的 ,數(shù)據(jù)的輸出符合微處理器數(shù)據(jù)總線的要求??刂?ADC0809 要按照其時(shí)序進(jìn)行。START 為啟動(dòng)轉(zhuǎn)換信號(hào),該信號(hào)的上升沿使逐次逼近寄存器復(fù)位,從它的下降沿開始進(jìn)行 A/D 轉(zhuǎn)換。 ALE 是地址鎖存信號(hào) ,在 ALE 的上升沿, A,B,C 被鎖入地址鎖存器。 OE 為允許輸出信號(hào):當(dāng) OE=1 時(shí),三態(tài)輸出鎖存器重的數(shù)據(jù)被送上數(shù)據(jù)總線。 EOC 為轉(zhuǎn)換結(jié)束信號(hào):當(dāng) A/D 轉(zhuǎn)換結(jié)束時(shí), EOC 變?yōu)楦汶娖?,并將結(jié)果送入三態(tài)輸出鎖存器。 硬件電路所有控制端口直接接普通 I/O 口,通過 I/O 置高和置低來模擬ADC0809 時(shí)序。 ADC0809 程序流程圖 圖 ADC0809 程序流程圖 開始 AlE和 START 置低 查詢 EOC 是否高電平? 結(jié)束 AlE和 START 置高 AlE和 START 置低 OE 置高 讀取端口數(shù)據(jù) ADC0809 程序代碼主要如下: AD0809_ST=0。 delay_ms(10)。 AD0809_ST=1。 delay_ms(10)。 AD0809_ST=0。 while(!AD0809_EOC)。 AD0809_OE=1。 DigitalData=GetResult()。 其中 GetResult()子程序?yàn)樽x取 ADC 數(shù)據(jù)端端口的轉(zhuǎn)化數(shù)值 。 DigitalData保存所得數(shù)據(jù)提供單片機(jī)處理。 液晶顯示程序 顯示采用 LCD1602 模塊。數(shù)據(jù)與命令都通過 D0~D7 傳入;讀寫操作時(shí)序由使能信號(hào) E 完成;對(duì)讀寫操作的識(shí)別時(shí)對(duì) R/W 信號(hào)上的電平判斷, R/W 的信號(hào)的寬度要大于 E ; RS 信號(hào)用于識(shí)別數(shù)據(jù)總線的數(shù)據(jù)是屬于指令代碼還是屬于顯示數(shù)據(jù)。 接口端的信號(hào)邏輯功能如下表: 表 接口端邏輯功能 表 狀態(tài)字輸出口 表 狀態(tài)字功能說明 上述是基本時(shí)序和狀態(tài)字的功能,其他指令的格式還有很多不一一列舉,僅介紹本系統(tǒng)中用到得顯示方法。 RS R/W E DB7~ DB0 功能 0 0 高脈沖 指令碼 寫指令 0 1 高電平 狀態(tài)字 讀狀態(tài) 1 0 高脈沖 數(shù)據(jù) 寫數(shù)據(jù) 1 1 高電平 數(shù)據(jù) 讀數(shù)據(jù) STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0 D7 D6 D5 D4 D3 D2 D1 D0 STA06 當(dāng)前數(shù)據(jù)地址指針的數(shù)值 STA7 讀寫操作使能 1:禁止 0:允許 本系統(tǒng)中無論是二氧化碳的濃度顯示還是設(shè)置 界面的菜單顯示,都是只有中間的數(shù)字是變化的。因此可以在初始化液晶顯示后,編寫一個(gè)顯示字符串的子程序。顯示內(nèi)容送字符串?dāng)?shù)組中,然后送顯示,每次只要將字符串里的數(shù)值改變即可。如圖 所示。 圖 液晶顯示流程圖 各部分主要程序如下: ㈠ 液晶初始化程序如下: void LCD_init(void) { delay(10)。 WriteCode(0x80)。//顯示數(shù)據(jù)指 針初始化; WriteCode(0x01)。// 顯示清屏; WriteCode(0x38)。// 設(shè)置 16 2顯示, 5 7點(diǎn)陣, 8位數(shù)據(jù)接口; WriteCode(0x0C)。// 開顯示,不顯示光標(biāo); WriteCode(0x06)。// 寫字符后地址指針加一; 開始 顯示內(nèi)容輸入緩沖區(qū) buffer buffer[i]送液晶顯示 i++ i=0 buffer[i]是否為終止符? 是 否 結(jié)束 } ㈡ 字符串顯示子程序: void LCD_Showstring(uchar line , uchar str[]) { uchar i , j。 i=line*0x10。 for(j=0。str[j]!=39。\039。j++) LCD_Showchar(i++,str[j])。 } void LCD_Showchar(uchar position,uchar z ) { uchar p。 if(position16) p=position+0x80。 else; p=position+0xB0。 WriteCode(p)。 WriteData(z)。 } ㈢ 字符串 處理程序: DigitalData=GetResult()。 sprintf(buffer,co2 concentration :%d ppm,DigitalData)。 利用 sprintf 將數(shù)值打印到 buffer 數(shù)據(jù)緩沖區(qū)中,其中 buffer 就是字符串緩沖區(qū),可以直接傳到字符串顯示子程序中送顯示。 不同的菜單內(nèi)容可以通過傳不同的數(shù)據(jù)緩沖區(qū)的內(nèi)容得以調(diào)用。 數(shù)據(jù)處理 傳感器輸出電壓為毫伏級(jí), AD 采集到得是輸出電壓的 10 倍電壓。轉(zhuǎn)換公式中,傳感器電壓為毫伏級(jí)時(shí)的數(shù)值, AD 轉(zhuǎn)化后的數(shù)字量為 傳感器實(shí)際值的1/100,所以先對(duì) AD 轉(zhuǎn)換后的數(shù)值 100 倍放大,再利用公式處理所得數(shù)據(jù)。 數(shù)據(jù)處理程序: DigitalData=GetResult()。 DigitalData=DigitalData*100。 DigitalData=(534DigitalData)/65。 temp1=pow(10,DigitalData)。 其中 534 對(duì)應(yīng)式( 2— 2)中的 EMF0, 65 對(duì)應(yīng)式 (2— 2)中 R , pow 為指數(shù)函數(shù)。 DigitalData 為 ADC0809 轉(zhuǎn)化得到的數(shù)字量。 語音播報(bào) 語音播報(bào)采用 ISD1720 語音芯片,可以播放 20s 的語音內(nèi)容,芯片內(nèi)部有內(nèi)部存儲(chǔ)單元,存儲(chǔ)預(yù)先輸入的語音信息。存儲(chǔ)單元可以尋址訪問,因此用戶可以自行設(shè)置語音存放的空間以及播放任意錄制空間的語音內(nèi)容。芯片存儲(chǔ)地址從第一個(gè)提示音的地址 0x0000 開始計(jì)算,但 0x0000x00F 地址平均保留給了4 個(gè)提示音。從 0x010 地址開始,才是非保留的存儲(chǔ)區(qū)域,即真正的錄音區(qū),最高地址為 0x09F。 本系統(tǒng)中對(duì)語音芯片主要通過 SPI 模式進(jìn)行控制,實(shí)現(xiàn)語音播報(bào)。 ISD1720作為從機(jī),幾乎所有的操作都可以通過這個(gè)協(xié)議來完成。兼容獨(dú)立按鍵模式,有 PLAY, REC, ERASE, FWD, RESET 和 GLOBAL_ERASE 的運(yùn)行類似于形影的獨(dú)立按鍵模式的操作。另外, SET_PLAY,SET_REC,SET_ERASE 命令允許用戶指定錄音、放音和擦除的開始和結(jié)束地址。 ISD1720SPI 串行接口操作遵照以下協(xié)議:一個(gè) SPI 處理開始于 /SS 管腳的下降沿;在一個(gè)完整的 SPI 指令傳輸周期, /SS 管腳必須保持低電平;數(shù)據(jù)在SCLK 的上升沿鎖存在芯片的 MOSI 管腳,在 SCLK 的下降沿從 MISO 管腳輸出,并且首先移出低位; SPI 指令操作碼包括命令字節(jié),數(shù)據(jù)字節(jié)和地址字節(jié),這決定于 1720 的指令類型;當(dāng)命令字及地址數(shù)據(jù)輸入到 MOSI 管腳時(shí),同時(shí)狀態(tài)寄存器和當(dāng)前行地址信息從 MISO 管腳移出;一個(gè) SPI 處理再 /SS 變高后啟動(dòng);再完成一個(gè) SPI 命令的操作后,會(huì)啟動(dòng)一個(gè)中斷信息,并且保持為低,直到芯片收到 CLR_INT 命令或者芯片復(fù)位。 圖 語音芯片時(shí)序圖 在 SPI 命令輸入到 ISD1720 前, SPI 端口的狀態(tài)應(yīng)該保持如下狀態(tài):/SS=HIGH; CLK=HIGH; OSI=LOW。 ISD1700 芯片內(nèi)部寄存器可以返回 1700 芯片的內(nèi)部狀態(tài),其中 SR0 為 2 個(gè)字節(jié), SR1 為一個(gè)字節(jié)。 SR0 第一個(gè)字節(jié)的 0為與 SR1 的 0位用來判斷上條命令是否正確執(zhí)行及執(zhí)行完畢。 具體的功能實(shí)現(xiàn)播報(bào)數(shù)據(jù)中要實(shí)現(xiàn)對(duì)數(shù)字的動(dòng)態(tài)播報(bào)。例如:當(dāng)數(shù)據(jù)為1234 是,要播報(bào)的內(nèi)容為“二氧化碳濃度為一千二百三十四 PPM( PPM 二氧化碳單位)” 。這就需要在軟件上處理。數(shù)字播報(bào)流程圖如圖 。 錄音空間為 0x09F0x010=0x08F,即 8 16+15=143, 143+1=144 段 空間,每段空間 20247。 144= 秒, 0~ 9,萬,千,百,十各用 秒,各占 247。=4 段空間 錯(cuò)誤 !未找到引用源。 。在 0x010~ 0x013 存放讀音“ 0” ,以此類推“ 9”存放在 0x034~ 0x034,“萬”存放在 0x038~ 0x03B,“十”存放在0x044~ 0x047。- 通過以下判斷順序可以正確報(bào)數(shù)值:先判斷數(shù)字位數(shù),然后從最高位播起,每播一位追加單位播報(bào);數(shù)字播報(bào)可以用每一位數(shù)字本身做偏移量,尋址播放;單位在最初判斷數(shù)字位后,設(shè)定起始單位地址,然后逐一增加。 開 始 數(shù)字壓入 buffer 確定數(shù)字位數(shù) d i=0 播放 buffer [i] Buffer[i] 為終止符? 播放單位 i++ d-- 結(jié)束 圖 數(shù)字播報(bào)流程圖 4 調(diào)試過程 整個(gè)調(diào)試過程包括硬件調(diào)試、軟件調(diào)試和系統(tǒng)測(cè)試三部分。每個(gè)模塊在功能上相互聯(lián)系又各自獨(dú)立,所以在每個(gè)部分調(diào)試的過程中也要分模塊進(jìn)行。這樣做的好處是,可以將出現(xiàn)的問題進(jìn)行具有針對(duì)性的處理,避免出現(xiàn)問題時(shí)找不到真正原因。調(diào)試過程是對(duì)原理進(jìn)一步理解和對(duì)原理中的不足改進(jìn)的重要步驟。 硬件調(diào)試 硬件正常是整個(gè)系統(tǒng)正常運(yùn)轉(zhuǎn)的基礎(chǔ),所以硬件調(diào)試就格外重要。硬件調(diào)試主要是對(duì)制版的電 氣特性進(jìn)行檢測(cè),逐個(gè)排查電路布線問題,使器件在能正常工作。前期的電路特性檢查必須十分耐心,硬件電路的細(xì)小問題都可能對(duì)軟件的工作是否正常產(chǎn)生影響。 硬件的調(diào)試主要經(jīng)行了以下測(cè)試: 第一,對(duì)于電路布線中容易短路和斷路的地方進(jìn)行檢測(cè)。因?yàn)樵谟≈瓢遄拥倪^程中難免出現(xiàn)細(xì)微問題,比如布線比較近的地方就可能出現(xiàn)短路,然后在焊接好以后,對(duì)容易焊接短路的地方進(jìn)行檢測(cè)。這部分檢測(cè)較為容易用萬用表測(cè)量短路檔來檢測(cè)即可。 第二,在焊好板子后先不安裝芯片上電。檢測(cè)芯片底座供電電壓是否正常。如果不正常,由于已經(jīng)排除掉焊接短路、斷路的問 題,可以重點(diǎn)懷疑電路原理的問題。 第三,安裝芯片分模塊檢測(cè)電路是否正常,這時(shí)先檢測(cè)單片機(jī)是否正常工作,然后通過單片機(jī)向各模塊發(fā)送一些簡(jiǎn)單命令測(cè)試模塊是否能正常工作。 單片機(jī)硬件電路檢測(cè) 單片機(jī)最小系統(tǒng)檢測(cè)主要是檢測(cè)單片機(jī)是否能正常啟動(dòng)。 方法為用示波器檢測(cè)單片機(jī) 30 腳,即 ALE 管腳是否有方波輸出,且方波的頻率因?yàn)榫д竦?1/6,即 2M(晶振使用的是 12M 的)。檢測(cè)到 2M 方波,說明單片機(jī)能正常啟動(dòng)。 液晶模塊調(diào)試 液晶模塊檢測(cè)主要是檢測(cè)能否正常顯示字符。 利用前面提到的送字符串顯示測(cè)試。當(dāng)然首先要保證液晶初始化程序和子程序都是正確的,在此前提下查看液晶的硬件電路連接。注意要保證對(duì)比度適合。 開始測(cè)試 沒有看到字符,就是因?yàn)閷?duì)比度調(diào)節(jié)不合適。 ADC0809 和語音電路調(diào)試 檢測(cè) ADC0809 首先要檢測(cè) ADC0809 的時(shí)鐘是否正確。本系統(tǒng)采用 500Hz,可以用示波器加以檢測(cè)。 語音芯片保留了按鍵部分用來測(cè)試芯片是否正常工作和芯片電源供電是否正常。工作正常后,可以通過控制端口模擬 SPI 時(shí)序,用示 波器觀測(cè)各控制端是否有正常信號(hào)輸出。 在檢測(cè)語音芯片控制端的時(shí)候發(fā)現(xiàn)信號(hào)有異常,不能對(duì)芯片進(jìn)行控制,最后發(fā)現(xiàn) P2 口的上拉排阻裝反了。 放大電路檢測(cè) 放大電路主要是對(duì)傳感器信號(hào)的放大。檢測(cè)放大電路主要是檢測(cè)放大電路能不能調(diào)零。將差分輸入端同時(shí)接地,然后調(diào)整調(diào)零電阻,看是否能調(diào)零。放大電路放大倍數(shù)產(chǎn)生的誤差也
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1