【正文】
( 2— 3) (vi2vp)/R1=vp/R2 ( 2— 4) 當(dāng) R4/R1=R3/R2時, Vo=R4*(vi2vi1)/R1 ( 2— 5) 本電路要放大信號十倍,所以 R R3取 20k, R R2取 2k。 圖 電壓轉(zhuǎn)化電路 ⑶ 模數(shù)轉(zhuǎn)化 模數(shù)轉(zhuǎn)化采用 ADC0809將模擬信號轉(zhuǎn)化成數(shù)字信號,提供給單片機處理。多路開關(guān)可選通 8個模擬通道,允許 8路模擬量分時輸入,共用 A/D轉(zhuǎn)換器進行轉(zhuǎn)換。 控制單元電路 ⑴ 單片機最小系統(tǒng) AT89S52 單片機是一種低功耗、高性能 CMOS 8 位微控制器,具有 8K 在系統(tǒng)可編程 Flash 存儲器。 本系統(tǒng)主要 通過 IO 口來控制個部分電路以及接受信號, 32位 I/O口控制線足以滿足系統(tǒng)功能需求。 P0口接 ADC0809數(shù)據(jù)端口, P2口用來控制 ADC0809和語音芯片(語音芯片采用端口模擬 SPI控制,需要 4條 I/O口控制線, ADC0809需要 3條), P1接液晶數(shù)據(jù)端,而液晶使能端和鍵盤控制接 P3口。 ⑴ 啟動語音播報; ⑵ 進入播報定時時間設(shè)置菜單; ⑶ 修改時間; ⑷ 進入報警限值設(shè)置菜單; ⑸ 修改報警數(shù)值。按第二次,進入設(shè)置報警限值;按第三次,退出設(shè)置菜單。硬件功能的設(shè)計要根據(jù)具體功能需要,而不是全部都是標(biāo)準設(shè)置。在進入設(shè)置菜單時,可以通過 P33口按鍵切換菜單,通過 P36和 P34來上調(diào)和下調(diào)設(shè)置。 第 4腳: RS為寄存器選擇,高電平 1時選擇數(shù)據(jù)寄存器、低電平 0時選擇指令寄存器。 第 15~ 16腳:空腳或背燈電源。 本系統(tǒng)選擇了 ISD1720語音芯片,是華邦公司新推出的 ISD1700系列芯片中的一種。兩種控制方式,兩種錄音輸入方式,兩種放音輸出方式。 而語音芯片的外圍電路比較簡單,僅需一些電阻、電容,電容主要是起到 濾波的作用。 語音芯片接口電路如圖 。為了使喇叭發(fā)出的聲音柔和動聽,要在 5腳和地之間接上一個 10歐的電阻。 圖 語音放大電路 1 82 73 64 5R9L M 38 6+C 1710uR810kGNDGNDR 1210kC 20104VOC 18 uGND+5C 19 uGNDR 1310+C 22220uC 21 47 u12J3C O N 2GND 3 軟件設(shè)計 應(yīng)用系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計的,應(yīng)該可靠地實現(xiàn)系統(tǒng)的各種功能。既便于調(diào)試、鏈接,又便于移植、修正。 (5)注意在程序的有關(guān)位置處寫上功能注釋,提高程序的可讀性。 程序主流程如圖 . 是 是 是 是 是 否 否 否 否 否 圖 系統(tǒng)主程序流程圖 系統(tǒng)初始化 啟動 AD0809 語音播報 液晶顯示 二氧化碳濃度 數(shù)據(jù)處理 設(shè)置報警時間限值 顯示設(shè)置報警限 菜單 設(shè)置時間 顯示時間設(shè)置菜單 設(shè)置菜單按鍵是否按下 播報鍵 是否按下 數(shù)模轉(zhuǎn)化 是否結(jié)束 設(shè)置菜單按鍵是否按下 設(shè)置菜單按鍵是否按下 開始 是 否 ADC0809 程序設(shè)計 ADC0809 是典型的逐次比較 A/D 轉(zhuǎn)換器,通常都是以二進制碼輸出的, 數(shù)據(jù)的輸出符合微處理器數(shù)據(jù)總線的要求。 OE 為允許輸出信號:當(dāng) OE=1 時,三態(tài)輸出鎖存器重的數(shù)據(jù)被送上數(shù)據(jù)總線。 delay_ms(10)。 while(!AD0809_EOC)。 DigitalData保存所得數(shù)據(jù)提供單片機處理。 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ù)字是變化的。 圖 液晶顯示流程圖 各部分主要程序如下: ㈠ 液晶初始化程序如下: void LCD_init(void) { delay(10)。// 設(shè)置 16 2顯示, 5 7點陣, 8位數(shù)據(jù)接口; WriteCode(0x0C)。 for(j=0。 } void LCD_Showchar(uchar position,uchar z ) { uchar p。 WriteData(z)。 不同的菜單內(nèi)容可以通過傳不同的數(shù)據(jù)緩沖區(qū)的內(nèi)容得以調(diào)用。 DigitalData=DigitalData*100。 DigitalData 為 ADC0809 轉(zhuǎn)化得到的數(shù)字量。從 0x010 地址開始,才是非保留的存儲區(qū)域,即真正的錄音區(qū),最高地址為 0x09F。另外, SET_PLAY,SET_REC,SET_ERASE 命令允許用戶指定錄音、放音和擦除的開始和結(jié)束地址。 SR0 第一個字節(jié)的 0 為與 SR1 的 0 位用來判斷上條命令是否正確執(zhí)行及執(zhí)行完畢。數(shù)字播報流程圖如圖 。 。每個模塊在功能上相互聯(lián)系又各自獨立,所以在每個部分調(diào)試的過程中也要分模塊進行。硬件調(diào)試主要是對制版的電氣 特性進行檢測,逐個排查電路布線問題,使器件在能正常工作。這部分檢測較為容易用萬用表測量短路檔來檢測即可。 第三,安裝芯片分模塊檢測電路是否正常,這時先檢測單片機是否正常工作,然后通過單片機向各模塊發(fā)送一些簡單命令測試模塊是否能正常工作。 液晶模塊調(diào)試 液晶模塊檢測主要是檢測能否正常顯示字符。 開始測試 沒有看到字符,就是因為對比度調(diào)節(jié)不合適。工作正常后,可以通過控制端口模擬 SPI 時序,用示波 器觀測各控制端是否有正常信號輸出。將差分輸入端同時接地,然后調(diào)整調(diào)零電阻,看是否能調(diào)零。由于軟件運行的基礎(chǔ)是硬件,所以在調(diào)試軟件的過程中如果發(fā)現(xiàn)問題,應(yīng)該同時考慮軟件和硬件的問題。開始曾想過,整個顯示內(nèi)容分段顯示,數(shù)字單獨顯示,發(fā)現(xiàn)程序比較繁瑣。主要出現(xiàn)問題是開始播 報數(shù)字,用每位數(shù)字作偏移量尋址播報,所播數(shù)字與實際不符。調(diào)試初期,沒有加入判斷語句,導(dǎo)致分段播放混亂。 系統(tǒng)測試 在各個模塊軟件功能基本實現(xiàn)的時候,其實也就是硬件與軟件能配套實現(xiàn)的過程。 以上調(diào)試經(jīng)過以后可以,進行系統(tǒng)整體測試。只能根據(jù)傳感器芯片中所標(biāo)定來處理傳感器輸出信號。其他兩個按鍵可以對數(shù)值進行增減設(shè)置。 5 結(jié)論 本系統(tǒng)設(shè)計過程中遇到一些問題,有些已經(jīng)解決有些還有待改善。由于其本身沒有像類似凌陽單片機集成其他多種功能,在組建系統(tǒng)時只能起到中心控制器的作用,其他功能需要依靠其他芯片來組建相應(yīng)的功能電路。在實現(xiàn)啟動 AD0809 的程序調(diào)試中,在最開始的時候,通過簡單的將 ALE 端置高電平,沒能成功。 液晶 LCD1602 雖然不能顯示漢字,但已經(jīng)可以滿足系統(tǒng)要求。 本芯片使用不單純是一個放音電路,還含有其他的控制。液晶的功能實現(xiàn)先由實現(xiàn)顯示字符串內(nèi)容開始,然后實現(xiàn)顯示內(nèi)容的切換,在實現(xiàn)現(xiàn)實內(nèi)容的變動。也可以用足夠的延時來代替完畢判斷,但建議使用語句判斷較為合理。從制作工藝上來看,布線還有待提高,有 些進一步完善;從功能上看,由于室內(nèi)測量的精度要求不是是特別高,所以本系統(tǒng)對傳感器的信號處理的精度不是很高,如果要具有更廣泛的應(yīng)用,信號的處理部分要加以改善。 ISD_PU()。 delay(10)。 AD0809_ST=1。 AD0809_OE=1。 temp1=pow(10,DigitalData)。 alarm=showmenu1()。 bfnd()。 SetPLAY(0x00,0x80,0x00,0x8F)。 ET0=1。 } //****************定時中斷程序 **********888 void Timer0_Overflow() interrupt 1 using 0 { ET0=0。 } ET0=1。 SetPLAY(0x00,0x70,0x00,0x7F)。 VOLT=5*temp/255。 sum=alarm。 LCD_Showstring(1,string1) 。alarm=100+sum。alarm=sum100。 } sprintf(string1,%d ppm,alarm)。 } int showmenu2(void) { int i,a,b,c,sum。 LCD_Showstring(0,string1) 。 else if(!DOWN) i=1。sum=time。sum=time。 LCD_Showstring(1,string1) 。 } void bfsz(uint a) { uchar b,i,j。buffer[i]!=39。 bfwei(j)。 case 1:SetPLAY(0x00,0x47,0x00,0x4C)。 case 3:SetPLAY(0x00,0x51,0x00,0x56)。 if(num10000) i=0。 else。t appealed against the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any pensation awarded to you as a result of your failure to appeal. Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are plaining about happened. If your application is received after this time limit, the tribunal will not usually accept i. If you are worried about how the time limits apply to you, take advice from one of the anisations listed under Further help. Employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation. Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the anisations listed under Further help. If you are being represented by a solicitor at the tribunal, they may ask you to sign an ag