基于51單片機金屬探測器系統(tǒng)設(shè)計與制作_第1頁
基于51單片機金屬探測器系統(tǒng)設(shè)計與制作_第2頁
基于51單片機金屬探測器系統(tǒng)設(shè)計與制作_第3頁
基于51單片機金屬探測器系統(tǒng)設(shè)計與制作_第4頁
基于51單片機金屬探測器系統(tǒng)設(shè)計與制作_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

目錄

1設(shè)計簡介...................................................................................................................1

2系統(tǒng)硬件電路設(shè)計.......................................................................................................1

2.1STC89C52單片機系統(tǒng)設(shè)計.............................................................................1

2.1.1STC89C52的概述...................................................................................1

2.1.2主要特性...................................................................................................2

2.1.3STC89C52的引腳說明...........................................................................3

2.1.4定時器/計數(shù)器......................................................................................4

2.2電路的設(shè)計及原理..........................................................................................7

2.2.1最小系統(tǒng)原理圖....................................................................................7

2.2.2三點式振蕩器與波形轉(zhuǎn)換.......................................................................9

2.3原理圖繪制軟件的介紹................................................................................10

2.4系統(tǒng)硬件測試................................................................................................10

3系統(tǒng)軟件部分設(shè)計....................................................................................................11

3.1頻率獲得..........................................................................................................11

3.2鍵盤接收...........................................................................................................12

4設(shè)計小結(jié)....................................................................................................................14

5附錄.............................................................................................................................15

附錄一原理圖............................................................................................................15

附錄二實物圖............................................................................................................16

附錄三元器件清單....................................................................................................17

附錄四PCB板圖.........................................................................................................18

附錄五源程序代碼....................................................................................................19

I

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

基于51單片機金屬探測器系統(tǒng)設(shè)計與制作

1設(shè)計簡介

金屬探測器是專門用來探測金屬的儀器,廣泛應(yīng)用于工業(yè)生產(chǎn)、安檢、娛

樂等領(lǐng)域。采用新的原理,設(shè)計一個基于單片機的手持金屬探測器,利用其檢

測人們隨身攜帶的金屬物品,如小刀、鋼筆,甚至可以檢測到香煙盒的鋁薄。

可隨身攜帶,使用方便。

本文設(shè)計的金屬探測是根據(jù)電磁感應(yīng)原理制成的,將一金屬置于變化的磁

場當中時,根據(jù)電磁感應(yīng)原理就會在金屬內(nèi)部產(chǎn)生渦流,渦流產(chǎn)生的磁場反過

來又影響原磁場,這種變化可以轉(zhuǎn)換為頻率和幅值的變化,供相關(guān)電路進行檢

測。

由電容三點式振蕩電路產(chǎn)生正弦波,對其放大和整形后,送入單片機,由

單片機探測它頻率的變化。當遇見金屬時由于電磁感應(yīng)原理原先建立起來的振

蕩將受到影響,頻率將發(fā)生變化,單片機探測到這種變化后進行報警。

本文的金屬探測器設(shè)計了接口,可以和外圍的系統(tǒng)進行通訊,實現(xiàn)了與

AT89S52管理的液晶顯示及鍵盤組成的外圍數(shù)據(jù)處理與顯示模塊的通信。對前

端探測到的數(shù)據(jù)進行再處理和分析,并將結(jié)果顯示在液晶屏幕上,并可以通過

鍵盤對前端的探測精度進行設(shè)置。

2系統(tǒng)硬件電路設(shè)計

系統(tǒng)主要有STC89C52單片機最小系統(tǒng)和LCD1602液晶顯示、LM393電壓

比較器,LC三端振蕩器等組成。

2.1STC89C52單片機系統(tǒng)設(shè)計

2.1.1STC89C52的概述

本設(shè)計是STC89C52單片機為控制核心,QJ004為MP3信號輸出,基于

QJ004串行MP3芯片綜合實現(xiàn)所有功能。系統(tǒng)框圖如下圖:

1

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

按鍵輸入

液晶顯示

控制器

金屬探測器

警報

單片機是STC公司最新推出的一種新型51內(nèi)核的單片機。片內(nèi)含有Flash

程序存儲器、SRAM、UART、SPI、PWM等模塊。封裝圖如下圖:

2.1.2主要特性

1.增強型8051單片機,6時鐘/機器周期和12時鐘/機器周期可以任意

選擇,指令代碼完全兼容傳統(tǒng)8051.

2.工作電壓:5.5V~3.3V(5V單片機)/3.8V~2.0V(3V單片機)

3.工作頻率范圍:0~40MHz,相當于普通8051的0~80MHz,實際工作

頻率可達48MHz

2

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

4.用戶應(yīng)用程序空間為8K字節(jié)5.片上集成512字節(jié)RAM

6.通用I/O口(32個),復位后為:P1/P2/P3/P4是準雙向口/弱上拉,

P0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口

用時,需加上拉電阻。

ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用

仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完

成一片

具有EEPROM功能

具有看門狗功能

10.共3個16位定時器/計數(shù)器。即定時器T0、T1、T2

11.外部中斷4路,下降沿中斷或低電平觸發(fā)電路,PowerDown模式可

由外部中斷低電平觸發(fā)中斷方式喚醒

12.通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART

13.工作溫度范圍:-40~+85℃(工業(yè)級)/0~75℃(商業(yè)級)

2.1.3STC89C52的引腳說明

VCC(40引腳):電源電壓

VSS(20引腳):接地

P0端口(P0.0~P0.7,39~32引腳):P0口是一個漏極開路的8位雙向

I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負載,對端口P0寫入“1”

時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供

低8位地址和8位數(shù)據(jù)的復用總線。此時,P0口內(nèi)部上拉電阻有效。在

FlashROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字

節(jié)。驗證時要求外接上拉電阻。

P1端口(P1.0~P1.7,1~8引腳):P1口是一個帶內(nèi)部上拉電阻的8位雙

向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4個TTL輸入。

對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入

口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸

出一個電流。

P2端口(P2.0~P2.7,21~28引腳):P2口是一個帶內(nèi)部上拉電阻的8位

雙向I/O端口。P2的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4個TTL輸

入。對端口寫入1時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸

入口。P2作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的

3

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

引腳會輸出一個電流

P3口引腳復用功能引腳號復用功能

P3.0RXD(串行輸入口)

P3.1TXD(串行輸出口)

P3.2(外部中斷0)

P3.3(外部中斷1)

P3.4T0(定時器0的外部輸入)

P3.5T1(定時器1的外部輸入)

P3.6(外部數(shù)據(jù)存儲器寫選通)

P3.7(外部數(shù)據(jù)存儲器讀選通)

RST(9引腳):復位輸入。當輸入連續(xù)兩個機器周期以上高電平時為有

效,用來完成單片機單片機的復位初始化操作??撮T狗計時完成后,RST引腳

輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可

以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。

ALE/(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時,

鎖存低8位地址的輸出脈沖。在Flash編程時,此引腳()也用作編程輸入脈

沖。在一般情況下,ALE以晶振六分之一的固定頻率輸出脈沖,可用來作為外

部定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE

脈沖將會跳過。如果需要,通過將地址位8EH的SFR的第0位置“1”,ALE操

作將無效。這一位置“1”,ALE僅在執(zhí)行MOVX或MOV指令時有效。否則,

ALE將被微弱拉高。這個ALE使能標志位(地址位8EH的SFR的第0位)的設(shè)

置對微控制器處于外部執(zhí)行模式下無效。

VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H到

FFFFH的外部程序存儲器讀取指令,必須接GND。注意加密方式1時,將內(nèi)部

鎖定位RESET。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接VCC。在Flash編程期間,也接

收12伏VPP電壓。

XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。

XTAL2(18引腳):振蕩器反相放大器的輸入端。

2.1.4定時器/計數(shù)器

89單片機至少有兩個16位內(nèi)部定時器/計數(shù)器(T/CTimer/Counter)。分別

是定時器/計數(shù)器0(T/C0)和定時器/計數(shù)器1(T/C1),另外一個是定時器/

計數(shù)器2(T/C2)。它們既可以編程為定時器使用,也可以編程為計數(shù)器使用。

4

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

T/C是加1計數(shù)的,不支持減1計數(shù)。當T/C工作在定時器時,對振蕩

源12分頻的脈沖計數(shù),即每個機器周期計數(shù)值加1,計數(shù)頻率=當前單片機工

作頻率/12。當單片機工作在12MHz時,計數(shù)頻率=1MHz,單片機每1us計數(shù)

值加1。當T/C工作在計數(shù)器時,計數(shù)脈沖來自外部脈沖輸入引腳

T0(P3.4)T1(P3.5)。當T0或T1引腳上負跳變時計數(shù)值加1。識別引腳上的負跳

變需要2個機器周期,即24個振蕩周期。所以T0或者T1輸入的可計數(shù)外部

脈沖的最高頻率為當前單片機工作頻率/24。當單片機工作在12MHz時,最高

計數(shù)頻率500KHz,高于該頻率將計數(shù)出錯。

TMOD在內(nèi)存RAM中位于特殊功能寄存器區(qū)的89H處,其高4位用于設(shè)置

定時器/計數(shù)器T1的工作方式,低4位用于設(shè)置定時器/計數(shù)器T0的工作方

式。由于T0和T1的用法很相似,所以,在此只結(jié)合TMOD的低4位講解定時

器/計數(shù)器T0的用法。

D7D6D5D4D3D2D1D0

GATEC/TM1M0GATEC/TM1M0

T1控制字T0控制字

當GATE=0時,定時器/計數(shù)器開始工作或停止工作不受GATE位的控制,

而只受TCON寄存器中的TR0位控制,TR0=0時定時器/計數(shù)器T0停止工作,

而當TR0=1時定時器/計數(shù)器T0開始工作。

當GATE=1時,定時器/計數(shù)器T0工作的起停除了受TCON寄存器中的TR0

位控制外,還受單片機外部引腳P3.2的控制,只有該引腳為高電平且TR0=1這

兩個條件同時滿足時,定時器/計數(shù)器才開始工作,一般這種用法通常用來測量

P3.2引腳上正脈沖的寬度。對于控制T1方式字段中的GATE位和T0中的用法

完全一樣,只是當GATE位為1時受單片機外部引腳P3.3和TCON中TR1的控

制。

C/T位決定T0工作在定時方式還是計數(shù)方式。當C/T=0時,T0工作在

定時方式,此時由TH0和TL0組成的16位計數(shù)容器,這個容器會對晶振產(chǎn)

生的脈沖再12分頻后的脈沖進行計數(shù),如果單片機外部接的是12M晶振,

則TH0和TL0組成的16位計數(shù)容器中的數(shù)據(jù)就會每隔1微妙自動加1;

當C/T=1時,T0工作在計數(shù)方式,由TH0和TL0組成的16位計數(shù)容

器會對從單片機外部引腳P3.4輸入單片機的脈沖進行計數(shù),每輸入一個脈

沖,則TH0和TL0組成的16位計數(shù)容器中的數(shù)據(jù)會自動加1。如果TMOD

高4位中的C/T=0,表示T1工作在定時方式,而當C/T=1表示T1工作在

5

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

計數(shù)方式,計的是來自單片機外部引腳傳入單片機的脈沖數(shù)。

M1和M0兩位都可以設(shè)置成0或1,因此這兩位有4種組合,這4種組合

決定了T0的計數(shù)容器TH0和TL0共同構(gòu)成的16位計數(shù)容器中所計的脈沖數(shù)的

變化規(guī)律。具體見下表:

M1M0工作模式TH0和TL0構(gòu)成的16位計數(shù)容器的計數(shù)方式的描述

00模式0此時TH0和TL0構(gòu)成16位計數(shù)容器,最大計數(shù)范圍0~65535共65536個數(shù)

01模式1此時TH0和TL0構(gòu)成16位計數(shù)容器,最大計數(shù)范圍0~65535共65536個數(shù)

TH0和TL0成為兩個8位計數(shù)器,TH0中的數(shù)據(jù)固定為開始設(shè)定的值不變,TL0

10模式2中數(shù)據(jù)按晶振12分頻后速度自動加1至溢出,TH0中數(shù)據(jù)自動拷貝給TL0,在

此基礎(chǔ)上自加,TL0如此循環(huán)自加

只有T0可用于本模式,T1不可以,此時T0的TH0和TL0成為兩個獨立的8

11模式3位計數(shù)器,且TH0只能用于定時方式;TL0可以工作與定時方式也可以工作與

計數(shù)方式

定時器/計數(shù)器控制寄存器TCON如下表所示,其中高4位和定時器/計數(shù)

器T0及T1有關(guān)。TCON是一個八位寄存器,用于控制定時器的啟動/停止及標

志定時器溢出中斷申請,既可以進行字節(jié)尋址也可以進行位尋址。

TCONTF1TR1TF0TR0IE1IT1IE0IT0

位地址8FH8EH8DH8CH8BH8AH89H88H

TF1—T1溢出標志為。當定時器/計數(shù)器發(fā)生溢出時,該位由硬件置1,表示

計數(shù)容器已經(jīng)計滿溢出,所謂溢出就是計數(shù)容器中的數(shù)從最大變成0的現(xiàn)象。

向CPU申請中斷進入終端服務(wù)程序,TF1又由硬件清零0,也可以軟件清零0。

TF0—T0溢出標志。其功能操作與TF1相同。

TR1—T1運行控制位,可通過軟件置1或0來啟動關(guān)閉定時器1。

TR0—T0運行控制位,其功能操作與TR0相同1。

中斷允許寄存器IE

D7D6D5D4D3D2D1D0

EAET2ESET1EX1ET0EX0

當ET0=1(SETBET0)時,單片機的CPU能夠在定時器/計數(shù)器T0的計數(shù)容

器發(fā)生溢出時中斷主程序而去執(zhí)行相應(yīng)的中斷服務(wù)子程序;當ET0=0(CLRET0)

6

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

時,單片機的CPU不能夠在定時器/計數(shù)器T0的計數(shù)容器發(fā)生溢出時中斷主

程序而去執(zhí)行相應(yīng)的中斷服務(wù)子程序。

當ET1=1(SETBET1)時,單片機的CPU能夠在定時器/計數(shù)器T1的計數(shù)容

器發(fā)生溢出時中斷主程序而去執(zhí)行相應(yīng)的中斷服務(wù)子程序;當ET1=0(CLRET1)

時,即使定時器/計數(shù)器T1的計數(shù)容器發(fā)生了溢出,單片機也不能中斷主程序

而去執(zhí)行相應(yīng)的中斷服務(wù)子程序。

EA為總中斷允許控制位,將EA位設(shè)置成0關(guān)中斷。

2.2電路的設(shè)計及原理

2.2.1最小系統(tǒng)原理圖

單片機最小系統(tǒng)由電源接口,開關(guān),時鐘電路,下載接口,復位電路和

STC89c52單片機組成。

復位電路:當在89C51單片機的RST引腳引入高電平并保持2個機器周期

時,單片機內(nèi)部就執(zhí)行復位操作(若該引腳持續(xù)保持高電平,單片機就處于循

環(huán)復位狀態(tài))

復位電路通常采用上電自動復位和按鈕復位兩種方式。

最簡單的上電自動復位電路中上電自動復位是通過外部復位電路的電容充

放電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位。

除了上電復位外,有時還需要按鍵手動復位。本設(shè)計就是用的按鍵手動復

位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST(9)

端與電源Vcc接通而實現(xiàn)的。按鍵手動復位電路見下圖。時鐘頻率用12MHZ

時C取10uF,R取10kΩ。

7

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

時鐘電路:STC89C52RC單片機的時鐘信號通常有兩種方式產(chǎn)生:一是內(nèi)部

時鐘方式,二是外部時鐘方式。內(nèi)部時鐘方式如圖3所示。在89S51單片機內(nèi)

部有一振蕩電路,只要在單片機的XTAL1(18)和XTAL2(19)引腳外接石英

晶體(簡稱晶振),就構(gòu)成了自激振蕩器并在單片機內(nèi)部產(chǎn)生時鐘脈沖信號。

圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為

30pF。晶振CYS的振蕩頻率范圍在1.2~12MHz間選擇,典型值為12MHz和

6MHz。

下載接口:STC89C52系列單片機具有在系統(tǒng)可編程(ISP)特性,IS

P的好處是:省去購買通用編程器,單片機在用戶系統(tǒng)上即可下載/燒錄用戶

程序,而無須將單片機從已生產(chǎn)好的產(chǎn)品上拆下,再用通用編程器將程序代碼

燒錄進單片機內(nèi)部。有些程序尚未定型的產(chǎn)品可以一邊生產(chǎn),一邊完善,加快

了產(chǎn)品進入市場的速度,減小了新產(chǎn)品由于軟件缺陷帶來的風險。由于可以在

用戶的目標系統(tǒng)上將程序直接下載進單片機看運行結(jié)果對錯,故無須仿真器。

單片機出廠時就已完全加密。需要單片機內(nèi)部的電放光后上電復位(冷起動)

才運行系統(tǒng)ISP程序,如從P3.0/RxD檢測到合法的下載命令流就下

載用戶程序,如檢測不到就系統(tǒng)復位到用戶程序區(qū)。具體如下圖所示:

8

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

2.2.2三點式振蕩器與波形轉(zhuǎn)換

圖C4,C7和L2組成的三點式LC振蕩器,根據(jù)振蕩器的組成原則及反饋網(wǎng)

絡(luò),輸出信號IN做為LM393的反相輸入信號,LM393的第二管腳作為參考電

壓輸入端,有電壓比較器的原理,輸出可以供數(shù)字電路處理的方波。

處理結(jié)果示意圖如下:

振蕩波形

0

整形波形

0

9

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

2.3原理圖繪制軟件的介紹

AltiumDesigner是Altium公司于2004年推出的電路設(shè)計軟件版本,該軟件

能實現(xiàn)從概念設(shè)計,頂層設(shè)計直到輸出生產(chǎn)數(shù)據(jù)以及這之間的所有分析驗證和

設(shè)計數(shù)據(jù)的管理。當前比較流行的Protel98、Protel99SE和ProtelDXP,就是

它的前期版本。

AltiumDesigner2004已不是單純的PCB(印制電路板)設(shè)計工具,而是由多個

模塊組成的系統(tǒng)工具,分別是SCH(原理圖)設(shè)計、SCH(原理圖)仿真、PCB(印制

電路板)設(shè)計、AutoRouter(自動布線器)和FPGA設(shè)計及嵌入式軟件開發(fā)等,覆

蓋了以PCB為核心的整個物理設(shè)計。該軟件將項目管理方式、原理圖和PCB圖

的雙向同步技術(shù)、多通道設(shè)計、拓樸自動布線以及電路仿真等技術(shù)結(jié)合在一

起,為電路設(shè)計提供了強大的支持。

與較早的版本Protel99相比,AltiumDesigner2004不僅在外觀上顯得更加

豪華、人性化,而且極大地強化了電路設(shè)計的同步化,同時整合了VHDL和

FPGA設(shè)計系統(tǒng),其功能大大加強了。

2.4系統(tǒng)硬件測試

系統(tǒng)硬件電路的測試主要是檢測電路是否出現(xiàn)漏焊、短路、斷路、虛焊、

一些具有方向的元件是否方向弄錯、電路設(shè)計錯誤等情況。

對于漏焊、元件方向弄錯的檢測方法是將實物電路板對照著PCB圖的線

路,檢查每一個元件和導線在實物上是否有出現(xiàn)。如果發(fā)現(xiàn)沒有或者對不上的

情況下需及時的重新對照確定漏焊時及時的補焊。

對于短路、斷路、虛焊這些情況采用數(shù)字萬用表。將數(shù)字萬用表打到二極

管檔位,然后通過紅表筆和黑表筆碰一起,萬用表會發(fā)出鳴叫警示。根據(jù)這個

原理就可以用來檢測短路、斷路、虛焊。在需要檢測的元件或?qū)Ь€的兩端用兩

根表筆檢測,如果導通蜂鳴器會鳴叫,如果斷開蜂鳴器不叫。這樣根據(jù)我們所

需要檢測的情況,在結(jié)合檢測的現(xiàn)象就可以測出線路是否有問題。

在調(diào)試上主要遇到了以下幾個問題:

(1)按鍵無法正常的工作,按下后沒有反應(yīng)。

解決方法:通過對矩陣鍵盤的電路圖分析,和實際使用的微動開關(guān)進行分

析,得知使用到的微動開關(guān)四個引腳,其中有兩對引腳內(nèi)部是連接的,也就相

當于只有兩只有用的引腳,另外兩個和這兩個是連接在一起。然后觀察在實際

10

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

焊接的時候沒有分按鍵的引腳,出現(xiàn)焊接都是亂的,最后通過重新焊接矩陣鍵

盤后單片機可以正常的獲取按鍵信息。

3系統(tǒng)軟件部分設(shè)計

硬件電路要完成的任務(wù)是,產(chǎn)生振蕩,并將波形變換為能夠被單片機處理

的方波,接下來進行頻率測定、報警、通訊等都要用程序?qū)崿F(xiàn)最后燒入單片機。

以下是各功能模塊的軟件設(shè)計。

軟件模塊是整個系統(tǒng)的靈魂,軟件部分設(shè)計的好壞直接影響到系統(tǒng)的精度、

可用性、方便性和智能性金屬探測器中的程序分為兩個部分,前端軟件模塊和

外圍數(shù)據(jù)處理與顯示模塊,前端軟件完成的是一些比較基礎(chǔ)的工作,如振蕩頻

率的檢測,比較,報警等,而外圍數(shù)據(jù)處理與顯示模塊是進行數(shù)據(jù)的再處理對

其進行處理顯示。結(jié)合起來實現(xiàn)了一個更加方便、智能的數(shù)字金屬探測器。

3.1頻率獲得

獲得頻率是通過定時器T0和計數(shù)器T1兩個協(xié)同工作而完成的。程序中所使用

的頻率是新探測的頻率,都是1s內(nèi)所獲得的脈沖數(shù)。這對此次設(shè)計的手持式金屬

探測器已經(jīng)足夠了,要想提高精度,一是延長獲得脈沖的時間,二是減小△

PRISE(它是頻率波動的范圍,如果超出此范圍則報警)。

精度設(shè)置是通過按鍵改變傳給比較值,比較值設(shè)置的比較大則對微小的頻

率變化系統(tǒng)不會發(fā)出警報。

11

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

開始

定時器T1計數(shù)

計算振蕩頻率

顯示振蕩頻率

否判斷振蕩頻率大于設(shè)置頻率

警報

結(jié)束

3.2鍵盤接收

鍵盤是輸入設(shè)備,用它來實現(xiàn)人機交互,讓機器更好的按人的要求去工作。

這里引入鍵盤的目的是,進行金屬探測精度的設(shè)置。由于鍵盤普遍存在抖動現(xiàn)

象,如果抖動現(xiàn)象處理不好,會發(fā)生意想不到的結(jié)果。為了防止抖動,在程序

設(shè)計中采用了,一次鍵位判斷,兩次鍵位檢測的方法,每一步驟間隔5ms,每次

鍵位確定需要15ms,在檢測與接受過程中每一步驟出現(xiàn)錯誤都將從新開始驗證,

因此保證了對用戶輸入的無誤接受。鍵盤接受模塊的程序流程圖如圖所示。

12

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

開始

Key1==0否

Key==0

計時sec

計時

否sec

Shu=Shu+1Sec==3

Sec==3Shu=Shu+1

Shu=Shu+10

Shu=Shu+10

否Key1==1

Key2==1否

Sec=0Sec=0

結(jié)束

3.3系統(tǒng)軟件測試

測試所需的工具:KEIL軟件、系統(tǒng)硬件、PL2303下載器等。

系統(tǒng)的軟件方面通過KEIL軟件進行編寫,將編寫好的程序生成.HEX文件后

通過PL2303下載器下載到單片機中。通過觀察整個系統(tǒng)運行的狀態(tài),然后進行

反復的修改調(diào)試程序,最終得到一個完善的程序。

在系統(tǒng)軟件調(diào)試上主要遇到以下問題。

(1)數(shù)碼管顯示出現(xiàn)閃爍現(xiàn)象

解決方法:在程序上一開始對每一位的顯示之間延時過短造成了顯示頻率

過快人眼還沒反應(yīng)過來就更換顯示了,所以造成看到的顯示會在閃爍,后修改

了延時函數(shù)顯示正常。

(2)按鍵無法正常的工作,按下后沒有反應(yīng)。

解決方法:通過對矩陣鍵盤的電路圖分析,和實際使用的微動開關(guān)進行分

析,得知使用到的微動開關(guān)四個引腳,其中有兩對引腳內(nèi)部是連接的,也就相

當于只有兩只有用的引腳,另外兩個和這兩個是連接在一起。然后觀察在實際

焊接的時候沒有分按鍵的引腳,出現(xiàn)焊接都是亂的,最后通過重新焊接矩陣鍵

13

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

盤后單片機可以正常的獲取按鍵信息。

4設(shè)計小結(jié)

經(jīng)過制作設(shè)計的這段時間的努力終于將本設(shè)計方案要求基本實現(xiàn)。由于時

間、水平和經(jīng)驗有限,設(shè)計的作品還存在著一些的不足之處。

對于這次設(shè)計來說既是一次機遇,又是一次挑戰(zhàn)。在這次的設(shè)計過程中,

本人學到了很多東西,通過自己的實踐,增強了動手能力。通過實際工程的設(shè)

計也使我了解到書本知識和實際應(yīng)用的差別。在實際應(yīng)用中遇到很多的問題,

這都需要我對問題進行具體的分析,并一步一步地去解決它。

14

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

5附錄

附錄一原理圖

15

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄二實物圖

16

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄三元器件清單

17

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄四PCB板圖

18

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

附錄五源程序代碼

#include<reg52.h>//頭文件

#include"eeprom52.h"http://調(diào)用EEPROM處理程序

#defineucharunsignedchar//宏定義

#defineuintunsignedint

#defineLCD1602_datP0//LCD1602數(shù)據(jù)傳輸IO口

sbitLCD1602_rs=P2^5;//LCD1602控制IO口//I/O定義

sbitLCD1602_rw=P2^6;//I/O定義

sbitLCD1602_e=P2^7;

sbitkey_1=P1^3;//按鍵控制IO口

sbitkey_2=P1^4;

sbitbeep=P1^5;//蜂鳴器控制IO口

sbitled=P1^0;//指示燈控制IO口

unsignedlongshu1,shu=1500;//檢測頻率變量,頻率限制變量

ucharms,sec;//50ms計數(shù)變量,秒計數(shù)變量

uintcs;//中斷溢出計數(shù)變量

bitOK,beep1;//標志位

/********************************************************************

*名稱:delay()

*功能:小延時。

*輸入:無

*輸出:無

***********************************************************************/

voiddelay(uintT)//延時程序

{

while(T--);

}

/********************************************************************

*名稱:LCD1602_write(ucharorder,dat)

*功能:1602寫如數(shù)據(jù)函數(shù)

*輸入:輸入的命令值

*輸出:無

***********************************************************************/

19

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

voidLCD1602_write(ucharorder,dat)//1602一個字節(jié)處理

{

LCD1602_e=0;

LCD1602_rs=order;

LCD1602_dat=dat;

LCD1602_rw=0;

LCD1602_e=1;

delay(10);

LCD1602_e=0;

}

/********************************************************************

*名稱:LCD1602_writebye(uchar*prointer)

*功能:1602寫入數(shù)據(jù)函數(shù)指針式

*輸入:輸入的命令值

*輸出:無

***********************************************************************/

voidLCD1602_writebyte(uchar*prointer)//1602字符串處理

{

while(*prointer!='\0')

{

LCD1602_write(1,*prointer);

prointer++;

}

}

/********************************************************************

*名稱:LCD1602_cls()

*功能:初始化1602液晶

*輸入:無

*輸出:無

***********************************************************************/

voidLCD1602_cls()//1602初始化

{

LCD1602_write(0,0x01);//1602清屏指令

delay(1500);

LCD1602_write(0,0x38);//功能設(shè)置8位、5*7點陣

delay(1500);

LCD1602_write(0,0x0c);//設(shè)置光標不顯示開關(guān)、不顯示光標、字符不閃爍

LCD1602_write(0,0x06);

LCD1602_write(0,0xd0);

delay(1500);

}

voidshow()

20

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

{

LCD1602_write(0,0x80);//0發(fā)送命令

LCD1602_writebyte("NowFreq:");//顯示檢測頻率

LCD1602_write(1,0x30+shu1/100000%10);//1發(fā)送數(shù)據(jù)

LCD1602_write(1,0x30+shu1/10000%10);//因為液晶只能顯示字符,所以我們在這里

加一個0x30把數(shù)字強制轉(zhuǎn)換成字符,0x30是字符0

LCD1602_write(1,0x30+shu1/1000%10);

LCD1602_writebyte(".");

LCD1602_write(1,0x30+shu1/100%10);

LCD1602_writebyte("KHz");

LCD1602_write(0,0xc0);

LCD1602_writebyte("SetFreq:");//顯示限制頻率

LCD1602_write(1,0x30+shu/1000%10);

LCD1602_write(1,0x30+shu/100%10);

LCD1602_write(1,0x30+shu/10%10);

LCD1602_writebyte(".");

LCD1602_write(1,0x30+shu%10);

LCD1602_writebyte("KHz");

}

/********************************************************************

*名稱:key()

*功能:按鍵控制程序

*輸入:無

*輸出:無

***********************************************************************/

voidkey()

{

if(OK==1)

{

if(!key_1)//判斷按鍵是否按下

{

OK=0;

if(sec==3)//執(zhí)行按鍵對應(yīng)的控制內(nèi)容

{

if(shu<3000)shu+=10;//長按處理

}else

{

if(shu<3000)shu+=1;//短按處理

}

SectorErase(0x2000);//保存數(shù)據(jù)到單片機EEPROM中

21

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

byte_write(0x2000,shu/256);

byte_write(0x2001,shu%256);

}

if(!key_2)//判斷按鍵是否按下

{

OK=0;//執(zhí)行按鍵對應(yīng)的控制內(nèi)容

if(sec==3)

{

if(shu>200)shu-=10;//長按處理

}else

{

if(shu>200)shu-=1;//短按處理

}

SectorErase(0x2000);//保存數(shù)據(jù)到單片機EEPROM中

byte_write(0x2000,shu/256);

byte_write(0x2001,shu%256);

}

}

if(key_1==1&&key_2==1)//判斷按鍵是否按下

{

sec=0;//重新計時

}

}

/********************************************************************

*名稱:proc()

*功能:報警指示燈處理函數(shù)

*輸入:無

*輸出:無

***********************************************************************/

voidproc()

{

if(shu1>=(shu*100)|shu1==0)

{

led=0;

beep1=1;

}else

{

led=1;

beep1=0;

}

}

22

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

/********************************************************************

*名稱:main()

*功能:主程序

*輸入:無

*輸出:無

***********************************************************************/

voidmain()

{

ucharH,L;

TMOD=0x51;//定時器0配置方式0定時模式;定時器1配置方式0計數(shù)

模式

TH1=0;//定時器賦初值

TL1=0;

TL0=0xB0;//設(shè)置定時初值

TH0=0x3C;//設(shè)置定時初值

TR0=1;//定時器0啟動定時

TR1=1;//定時器0啟動計數(shù)

EA=1;//打開總中斷

ET0=1;//定時器0中斷

ET1=1;//定時器1中斷

H=byte_read(0x2000);//讀取單片機EEPROM中保存的數(shù)據(jù)

L=byte_read(0x2001);

shu=H*256+L;

if(shu>3000)shu=1500;//判斷讀出的數(shù)據(jù)是否正確如果不正確//則重新賦值

LCD1602_cls();//LCD1602初始化

while(1)

{

key();//調(diào)用按鍵控制程序

show();//調(diào)用LCD1602液晶顯示程序

proc();//調(diào)用程序處理函數(shù)

}

}

voidinit_1()interrupt1

{

TL0=0xB0;//設(shè)置定時初值

TH0=0x3C;//設(shè)置定時初值

ms++;//50ms定時計數(shù)

if(ms%4==0)//按鍵處理時間控制沒200ms處理一次

{

OK=1;

}

23

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

if(ms%5==0)//蜂鳴器報警,指示燈閃爍處理

{

if(beep1==1)

{

led=0;

beep=!beep;

}else

{

led=1;

beep=1;

}

}

if(ms>19)//1s定時處理

{

shu1=(long)cs*65535+TH1*256+TL1;//計算頻率

cs=TH1=TL1=0;

ms=0;

if(!key_1||!key_2)//按鍵長按處理

{

sec++;

if(sec>3)//長按3s判斷

{

sec=3;

}

}else

{

sec=0;

}

}

}

voidinit_3()interrupt3//外部中斷檢測當前傳感器頻率

{

cs++;//中斷溢出計數(shù)

}

#ifndef_EEPROM52_H_

#define_EEPROM52_H_

#include<intrins.h>

/********STC89C52扇區(qū)分布*******

第一扇區(qū):1000H--11FF

第二扇區(qū):1200H--13FF

第三扇區(qū):1400H--15FF

24

湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計

第四扇區(qū):1600H--17FF

第五扇區(qū):1800H--19FF

第六扇區(qū):1A00H--1BFF

第七扇區(qū):1C00H--1DFF

第八扇區(qū):1E00H--1FFF

*****************/

/********STC89C52扇區(qū)分布*******

第一扇區(qū):2000H--21FF

第二扇區(qū):2200H--

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論