【正文】
并以此值作為判斷有無金屬的依據(jù)。由于這一部分所用的單片機(jī)編程存儲(chǔ)空間比較小,且程序的數(shù)據(jù)來自于底層的電路信號(hào)所以選用 MCS—51匯編指令來進(jìn)行編程。 前端金屬探測(cè)模塊的調(diào)試與集成 程序的作用是對(duì)硬件電路傳過來的電信號(hào)進(jìn)行分析、處理、判斷最后發(fā)出控制信號(hào)。這里進(jìn)行程序開發(fā)所使用的工具是 keil 第二版。最后一個(gè)是,看你讀寫的時(shí)序和控制字的電平是否嚴(yán)格按照產(chǎn)品說明書上的要求。其次,如果出現(xiàn)黑屏你應(yīng)該檢查三點(diǎn)兩點(diǎn),一個(gè)是液晶顯示器的初始 化,看初始化指令字調(diào)用的順序?qū)Σ粚?duì),中間必要的延時(shí)加沒加。檢查電路后發(fā)現(xiàn),原來是將 P0_9接為 P0_10,由于 P0_10是管腳 EA/VPP它是接電源的,也就是說給液晶顯示器第 8位數(shù)據(jù)管腳的電平時(shí)刻為高,這樣在你將要顯示的字符送給液晶顯示器時(shí),這個(gè)字符很可能就不是 ASCII字符,所以無法顯示出現(xiàn)黑屏。但是在一開始調(diào)試液晶的時(shí)候,建議將偏壓調(diào)制最小,這樣無論如何它會(huì)有所顯示,當(dāng)你將液晶全都驗(yàn)證好時(shí)再將偏壓調(diào)制適中。本次 29 設(shè)計(jì)采用的是軟件的方法,將在軟件調(diào)試中進(jìn)行詳細(xì)的論述。一遇到鍵盤都會(huì)涉及到鍵盤的防抖動(dòng)問題,鍵盤的防抖動(dòng)有兩種方法:一種是硬件方法,那就是在硬件電路里加延時(shí)來去掉抖動(dòng)。最后液晶顯示器的初試化也很重要,應(yīng)按照 datasheet上面所給的初始化順序和延時(shí)時(shí)間來嚴(yán)格進(jìn)行,如有不慎,也會(huì)出現(xiàn)半邊黑屏的情況。 1602A液晶顯示器 的操作時(shí)序?yàn)椋? 讀狀態(tài):輸入: RS=L, RW=H, E=H, 輸出: D0~ D7=狀態(tài)字 寫指令:輸入: RS=L, RW=L, E=高脈沖 H, 輸出:無 讀數(shù)據(jù):輸入: RS=H, RW=H, E=H, 輸出: D0~ D7=數(shù)據(jù) 寫數(shù)據(jù):輸入: RS=H, RW=L, E=高脈沖, 輸出:無 1602A的初始化過程為: (1)延時(shí) 15ms; (2)寫指令 38H(不檢測(cè)忙信號(hào) ); (3)延時(shí) 5ms; (4)寫指令 38H(不檢測(cè)忙信號(hào) ); (5)延時(shí) 5ms; (6)寫指令 38H(不檢測(cè)忙信號(hào)以后每次讀 /寫操作之前均要檢測(cè) 忙信號(hào) ); (7)寫指令 38H顯示模式設(shè)置; (8)寫指令 08H顯示關(guān)閉; (9)寫指令 01H顯示清屏; (10)寫指令 6H顯示光標(biāo)移動(dòng)設(shè)置; (11)寫指令 0CH顯示開及光標(biāo)設(shè)置 液晶顯示器的 VDD和 VO之間接了一個(gè) 10K的電位器是用來調(diào)節(jié)對(duì)比度用的,在對(duì)液晶調(diào)試的過程中應(yīng)盡量使對(duì)比度大,也就是使 VO端的輸出端電壓低。在保證單片機(jī)系統(tǒng)正常運(yùn)行后首先調(diào)試的是液晶,這樣是為了調(diào)試鍵盤做準(zhǔn)備。掉電保護(hù)方式下, RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。另外, AT89S52可降 28 至 0Hz靜態(tài)邏輯操作,支持 2種軟件可選擇節(jié)電模式。在單芯片上,擁有靈巧的 8位 CPU和在系統(tǒng)可編程 Flash,使得 AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。使用 Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造, 與工業(yè) 80C51產(chǎn)品指令和引腳完全兼容。 外圍數(shù)據(jù)處理與顯示模塊的焊接與調(diào)試 1)所需器件 單片機(jī)系統(tǒng)與前面焊接的單片機(jī)系統(tǒng)一樣,只不過這里的 CPU用的是 AT89S52,另外還需要型號(hào)為 SMC1602A,容量為 16 2個(gè)字符的液晶顯示器,和用于輸入用戶需求的 2 3按鍵陣列。最終才發(fā)現(xiàn)上由于該管腳沒有接高電平。( AT89C2051的其他參數(shù)和指標(biāo)限于篇幅,不贅述) 4)出現(xiàn)的問題與解決方法 要讓單片機(jī)執(zhí)行程序存儲(chǔ)器內(nèi)的指令,必須使單片機(jī)的 EA/Vpp管腳置為高電平。掉電方式保存 RAM的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。同時(shí), AT89C2051可降至 0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。單片機(jī)系統(tǒng)的測(cè)試與其它電路的測(cè)試不同,需寫一段小的測(cè)試程序,編譯后燒寫到單片機(jī)的程序存儲(chǔ)器中,看其運(yùn)行情況,這 里做了一個(gè)小小的燈光閃爍程序。這里采用石英晶振,它有 6MHz、 12MHz、 ,用戶可以根據(jù)需要進(jìn)行選擇,一旦確定,單片機(jī)的主頻就確定,機(jī)器周期為主頻的 1/12。 1)所需器件 AT89C20511個(gè)、 30pf陶瓷電容兩個(gè)、 12MHz石英晶體振蕩器 1個(gè)用于振蕩電路,按鈕 1個(gè)、 10μ f鋁電解 1個(gè)、 10K電阻 1個(gè)用于復(fù)位電路, 1個(gè)蜂鳴器用于聲音報(bào)警、 2個(gè)發(fā)光二極管用于發(fā)光報(bào)警。比如在沒有碰到金屬時(shí)發(fā)出警報(bào)。轉(zhuǎn)換的結(jié)果如圖 53所示 。簡(jiǎn)單的處理就是通過一 TTL門電路, TTL門電路可以將邏輯運(yùn)算的結(jié)果轉(zhuǎn)換 為 TTL電平 (5V),這里選用的是 74LS08(與門 ),當(dāng)然史密特出發(fā)器,其它的門電路都可以完成這樣的轉(zhuǎn)換。信經(jīng)此放大電路后變換為與前面正弦波頻率相等的梯形波幅值為 ,如圖 31。這樣可以使同向與反向之間要進(jìn)行差分放大的部分保持相對(duì)不變。由于上面出現(xiàn)的電壓不穩(wěn)定問題,因此這里的放大電路只對(duì)信號(hào)的交流分量進(jìn)行無窮放大。 1)所需器件 萬用 PCB板同前面的電路共用,另加 LM358(內(nèi)置兩個(gè)放大器 )一片、 74LS08(內(nèi)置4個(gè)與門 )一片、 10μf鋁電解一個(gè)、 5K、 500K電阻各一個(gè)。 這個(gè)問題是在信號(hào)放大部分采用隔直流方法解決的。 將 C1()、 C2()的兩個(gè)諧振電容進(jìn)行調(diào)換以后,正弦波的幅值明顯增加,增為 ,頻率不變。振蕩電路的起振都沒有問題,可以產(chǎn)生幅值越為 、頻率接近 33KHz 的正弦波。在電感測(cè)量?jī)x上測(cè)量其電感值大約在 500μH 左右,用手使線圈間距邊小,線圈的電感值會(huì)相應(yīng)的增大,最后用膠帶紙將線圈纏在一起使它們之間的間距相對(duì)固定,這樣電感值保持在 500μH,誤差在 10μH 以內(nèi)。 振蕩電路的焊接與調(diào)試 1)所需器件 面包板一個(gè)、三 極管 (CS9014)一個(gè)、 10μf 耦合電容兩個(gè)、 47μf 旁路電容一個(gè)、諧振電容 和 各一個(gè)、自繞電感線圈一只、 33K、 20K、 、 2K 電阻各一個(gè)。然而這個(gè)階段也是最鍛煉人的階段,這一部分的經(jīng)歷最深刻最有意思。 首先需要準(zhǔn)備器件,一次是絕對(duì)不會(huì)準(zhǔn)備好所有的器件的,因?yàn)樵谡{(diào)試時(shí)時(shí)常會(huì)發(fā)生與預(yù)想的結(jié)果不一致的情況,或許 在這個(gè)階段還要進(jìn)行方案的局部修改。 圖 45 陣列鍵盤原理圖 24 2)單片機(jī)系 統(tǒng) 單片機(jī)使用的是有 8K容量 FLASH的 AT89S52[11],由于在這個(gè)模塊要引進(jìn)算法對(duì)數(shù)據(jù)進(jìn)行再處理,在加上液晶和鍵盤的驅(qū)動(dòng)程序,所以需要比較大的程序空間,故沒有使用內(nèi)部存儲(chǔ)器小的 AT89S51。例如給 P1的低 5位的電平信號(hào)為 11000,假如現(xiàn)在第 2個(gè)按鈕按下則此時(shí)的管腳電平信號(hào)為 01000,所以判斷為第一行。 1)鍵盤輸入 鍵盤采用的是 2 3的按鍵陣列,如圖 45所示。再根據(jù)頻率的變化激活相應(yīng)的發(fā)光二極管和峰鳴器進(jìn)行報(bào)警。由于本次金屬探測(cè)器的設(shè)計(jì),包括 前端金屬探測(cè)部分和后臺(tái)數(shù)據(jù)處理和顯示兩個(gè)部分,因此在前斷只需要一個(gè)容量不大的單片機(jī)進(jìn)行振蕩頻率的測(cè)量、報(bào)警和通信, 2K的 AT89C2051足以滿足需求。 2)蜂鳴器 在給蜂鳴器的正極和負(fù)極分別通上高電平和低電平時(shí)蜂鳴器就會(huì)發(fā)聲,因此你可以通過給蜂鳴器不同頻率的電平來使它發(fā)出不同的聲音。 圖 43 波形轉(zhuǎn)換 單片機(jī)系統(tǒng) 圖 44就是單片機(jī)處理系統(tǒng),將頻率探測(cè)、報(bào)警和通訊幾個(gè)模塊程序組合起來燒寫進(jìn)去,它就會(huì)按你事先編寫好的步驟進(jìn)行工作。 門電路選用的是 74LS08(與門 ),用史密特觸發(fā)器替換也可以,它對(duì)輸入的梯形波進(jìn)行邏輯 運(yùn)算在以 TTL電平出運(yùn)算結(jié)果,因此可以將梯形波轉(zhuǎn)換成適合于單片機(jī)進(jìn)行處理的脈沖波。 將集成運(yùn)放的輸出端和它的反向輸入端相連就構(gòu)成了電壓跟隨器,由于它的電壓增益為“ 1”所以叫電壓跟隨器,它的特點(diǎn)是輸入阻抗高輸出阻抗低,因此起到隔離的作用,對(duì)其后的工作電路如同一個(gè)恒壓源,又由于它的輸入阻抗高就相當(dāng)與對(duì)前級(jí)電路開路,這里引入電壓跟隨 器的目的也是為了使振蕩信號(hào)的產(chǎn)生和處理分開,使其互不影響。從振蕩回路傳過來的正弦波信號(hào)經(jīng)過電壓跟隨器傳送到差分放大電路針對(duì)其交流信號(hào)進(jìn)行放大,放大后產(chǎn)生的電壓信號(hào)送給 TTL門電路對(duì)其進(jìn)行整形以產(chǎn)生規(guī)則的脈沖波送入單片機(jī)。 放大電路和脈沖變換電路 放大電路和脈沖產(chǎn)生電路 合起來產(chǎn)生一定頻率的脈沖供單片機(jī)進(jìn)行處理。電容三點(diǎn)式振蕩電路的頻率為 : 21 ccccf Lf 21210 /2 1 ??? ? (31) 使用諧振回路中的電感線圈進(jìn)行金屬探測(cè),當(dāng)遇見金屬是電感 L1 的 Q 值將發(fā)生變化,由電容三點(diǎn)式振蕩電路的頻率計(jì)算公式可以看出,電感增加時(shí)諧振頻率減小,電感減小時(shí)諧振頻率增加。電路中晶體管的放大倍數(shù)比較大且 C1和 C2的比值小于 ,都有利于起振。組裝調(diào)試后振蕩電路的實(shí)際頻率為 33KHz滿足我們的要求 。偶合電容選用兩個(gè) 10μf的獨(dú)石電容,旁路電容 Cb3選用 47μf的鋁電解電容。因此諧振回路中電容 CC2和電感 L的取值分別為 、 、 500μh。這部分的電路圖如圖 41所示。這一部分的設(shè)計(jì)直接與實(shí)現(xiàn)緊密聯(lián)系,器件參數(shù)的確定,電路板的焊接與調(diào)試,以及到最后的性能分析,都要用到這一部分的設(shè)計(jì)結(jié)果,因此這一部分的設(shè)計(jì)最有實(shí)際價(jià)值。 O N / O F F 按 下 ?S E T 按 下 ?A D D 按 下 ?D E C 按 下 ?O K 按 下 ?C A N C E L 按 下 ?F _ S E T = = 1 ?F _ S E T = = 1 ?F _ S E T = = 1 ?F _ S E T = = 1 ?F _ O K = = 1 ?F _ S E T = ~ F _ S E Tn _ p l u s + +n _ p l u s 發(fā) 送 設(shè) 置 結(jié) 果n _ p l u s = 0返 回F _ S T A R T = ~ F _ S T A R T建 立 連 接F _ S E T = 0n _ p l u s = 0否否否否否否 否否否否否是是是是是是是是是是是 圖 35 鍵盤接受處理程序流程圖 19 S E T = 0F _ O K = = 1 ?延 時(shí)F _ O K = 0n _ p l u s 0 ?n _ p l u s 0 ?S E T = 1延 時(shí)F _ O K = = 1 ?F _ O K = 0設(shè) 置 成 功返 回設(shè) 置 失 敗在 A D D 口 發(fā) 送n _ p l u s 個(gè) 脈 沖在 D E C 口 發(fā) 送 n _ p l u s 個(gè) 脈 沖否是否否否是是是 圖 36 設(shè)置數(shù)據(jù)與前端單片機(jī)的通訊 圖 20 4 硬件電路設(shè)計(jì) 單元電路設(shè)計(jì)是在硬件總體設(shè)計(jì)的指導(dǎo)下完成一個(gè)個(gè)小的功能電路的設(shè)計(jì),在將各個(gè)部分組合起來實(shí)現(xiàn)一個(gè)整體的功能,因此每一個(gè)功能電路設(shè)計(jì)的好壞都將影響系統(tǒng)的整體功能。同時(shí)鍵盤處理模塊也展現(xiàn)出了系統(tǒng)提供給用戶的所有功能。鍵盤接受模塊的程序流程圖如圖 45所示。由于鍵盤普遍存在抖動(dòng)現(xiàn)象,如果抖動(dòng)現(xiàn)象處理不好,會(huì)發(fā)生意想 不到的結(jié)果。 2)鍵盤接收 鍵盤是輸入設(shè)備,用它來實(shí)現(xiàn)人機(jī)交互,讓機(jī)器更好的按人的要求去工作。 17 ( 4 0 , 4 1 H ) + P R I S E H → ( 4 4 , 4 5 H )( 4 2 , 4 3 H ) + P R I S E L → ( 4 6 , 4 7 H )( 4 4 , 4 5 H ) ( 4 2 , 4 3 H ) ?( 4 4 , 4 5 H ) ( 4 6 , 4 7 H ) ?F _ C O M P = 0返 回F _ C O M P = 1否是否是 圖 33 頻率比較程序流程圖(有起始框,不規(guī)范) S E T = = 0 ?A D D = = 0 ?D E C = = 0 ?返 回P R I S E N + 4 → P R I S E HP R I S E L + 1 → P R I S E LP R I S E N + 4 → P R I S E HP R I S E L + 1 → P R I S E LA D D = = 0 ?D E C = = 0 ?否否否否是是是是是 圖 34 精度設(shè)置程序流程圖 外圍數(shù)據(jù)處理與顯示模塊設(shè)計(jì) 1)液晶顯示 液晶顯示模塊是嚴(yán)格按照產(chǎn)品操作的時(shí)序圖 編寫的驅(qū)動(dòng)函數(shù),共分為兩大類函數(shù),指令的讀寫和數(shù)據(jù)的讀寫,只要將操作位和數(shù)據(jù)位按照時(shí)序嚴(yán)格的結(jié)合在一起就可以完成數(shù)據(jù)的顯示。 15 初 始 化基 準(zhǔn) 頻 率 測(cè) 定F _ F R = = 1 ?探 測(cè) 當(dāng) 前 頻 率F _ C O M M = = 1 ?調(diào) 用 精 度 設(shè) 置頻 率 比 較F _ C O M P = = 1F _ C O M M = = 1 ?發(fā) 送 頻 率報(bào) 警是否