數字溫度計-單片機課設(真實的匯編程序和proteus仿真)_第1頁
數字溫度計-單片機課設(真實的匯編程序和proteus仿真)_第2頁
數字溫度計-單片機課設(真實的匯編程序和proteus仿真)_第3頁
數字溫度計-單片機課設(真實的匯編程序和proteus仿真)_第4頁
數字溫度計-單片機課設(真實的匯編程序和proteus仿真)_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ISOfi

BeijingJiaotongUniversity

微機原理課程設計報告

溫度計

姓名:WW

學號:

班級:電氣1005

學院:電氣工程學院

合作者:WY

上課教師:楊少兵

指導老師:

時間:2013年3月20日

微機原理課程設計成績評定表

姓名

學號10291150

課程設計題目:

溫度計

課程設計答辯或提問記錄:

成績評定依據:

課程設計預習報告及方案設計情況(30%):

課程設計考勤情況(15%):

課程設計調試情況(30%):

課程設計總結報告與答辯情況(25%):

最終評定成績(以優、良、中、及格、不及格評定)

指導教師簽字:

2013年3月20日

微機原理課程設計任務書

學生姓名:指導教師:王健強

一、課程設計題目

數字溫度計

選用溫度傳感器AD590實現溫度采集、攝氏溫度顯示,溫度精度達到0.1度,測量范圍零下

10度到零上100度。

二、課程設計要求

根據具體設計課題的技術指標和給定條件,獨立進行方案論證和電路設計,要求概念清楚、方案合理、方法正確、步驟完整;

查閱有關參考資料和手冊,并能正確選擇有關元器件和參數,對設計方案進行仿真;

完成預習報告,報告中要有設計方案,設計電路圖,還要有仿真結果;

進實驗室進行編程和電路調試,邊調試邊修正方案;

撰寫課程設計報告一一最終的電路圖、調試過程中遇到的問題和解決問題的方法。

三、進度安排

1.時間安排

序號

內容

學時安排(天)

1

方案論證和系統設計

1

2

完成電路仿真,寫預習報告

1

3

電路調試

2

4

寫設計總結報告與答辯

1

合計

5

設計調試地點:電氣樓406

2?執行要求

課程設計共多個選題,每組不得超過2人,要求學生在教師的指導下,獨力完成所設計的詳細電路(包括計算和器件選型)。嚴禁抄襲,嚴禁兩篇設計報告雷同。

摘要

隨著時代的進步和發展,單片機技術已經普及到我們生活、工作、科研、各個領域,已經成為一種比較成熟的技術。本文主要介紹了一個基于STC89C52單片機的測溫系統,詳細描述了利用溫度傳感器AD590開發測溫系統的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統流程進行了詳盡分析,對各部分的電路也一一進行了介紹,該系統可以方便的實現實現溫度采集和顯示。

它使用起來相當方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優點,適合于我們日常生活和工、農業生產中的溫度測量,也可以當作溫度處理模塊嵌入其它系統中,作為其他主系統的輔助擴展°AD590、ADC0832與STC89C52結合實現最簡溫度檢測系統,該系統結構簡單,抗干擾能力強,適合于惡劣環境下進行現場溫度測量,有廣泛的應用前景。

關鍵詞:

單片機;溫度檢測;溫度傳感器;數字顯示;模數轉換

Abstract

Withtheprogressanddevelopmentofthetimes,theMicrocontrollertechnologyhasspreadtothewaywelive,work,researchinvariousfields,hasbecomearelativelymaturetechnology,thispaperdescribesaTemperatureMeasurementSystemBasedonSTC89C52detaileddescriptionoftheuseoftemperaturesensorAD590temperaturemeasurementsystemdevelopmentprocess,focusingonthehardwareconnectionofthesensorundertheSCM,softwareprogramming,aswellasthemodulesystemprocessescarriedoutadetailedanalysisofthevariouspartsofthecircuitareintroducedonebyone,thesystemiseasytoachieveacquisitionanddisplayoftemperature.

itisveryconvenienttouse,withhighprecision,widerange,highsensitivity,smallsize,lowpowerconsumption,suitableinourdailylifeandwork,thetemperaturemeasurementinagriculturalproduction,canalsobeusedasatemperaturetheprocessingmoduleisembeddedintheothersystems,astheauxiliaryexpansionofotherprimarysystem.AD590,ADC0832andSTC89C52mostsimpletemperaturedetectionsystem,thesystemissimple,stronganti-jammingcapability,suitableforharshenvironmentsspottemperaturemeasurement,thereisawiderangeofapplicationprospects.

Keywords:

Microcontroller;temperaturedetection;temperaturesensor;digitaldisplay;analog-to-digitalconversion

目錄

TOC\o"1-5"\h\z

1緒論7

研究的目的及意義

1.2主要研究方向和要求

2方案設計9

基本元器件管腳圖與功能表

設計思路和原理

方案設計和選擇

3基于Proteus仿真設計17

3.1仿真電路設計

3.2仿真總結

仿真結果與分析

4匯編編程與元件的安裝及調試19

匯編語言簡介

溫度計實驗程序

實物顯示效果

5基于Protel99se設計PCB印制電路26

ProtelPCB圖繪制

6課程設計總結27

課程設計過程中遇到的問題及解決途徑

課程設計體會與心得

7參考文獻28

8附錄29

附錄1:元器件清單

附錄2:wave6000簡介

第一章緒論

研究目的及意義

隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現代人工作、科研、生活提供更好的更方便的設施就需要從單片機技術入手,一切向著數字化控制,智能化控制方向發展。現代社會對各種信息參數的準確度和精確度的要求都有了幾何級的增長,而如何準確而又迅速的獲得這些參數就需要受制于現代信息基礎的發展水平。在三大信息信息采集(即傳感器技術)、信息傳輸(通信技術)和信息處理(計算機技術)中,傳感器屬于信息技術的前沿尖端產品,尤其是溫度傳感器技術,在我國各領域已經引用的非常廣泛,可以說是滲透到社會的每一個領域,人民的生活與環境的溫度息息相關,在工業生產過程中需要實時測量溫度,在農業生產中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。

測量溫度的關鍵是溫度傳感器,溫度傳感器的發展經歷了三個發展階段:①傳統的分立式溫度傳感器②模擬集成溫度傳感器③智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數字溫度傳感器)是在20世紀90年代中期問世的,它是微電子技術、計算機技術和自動測試技術(ATE)的結晶,特點是能輸出溫度數據及相關的溫度控制量,適配各種微控制器(MCU)。社會的發展使人們對傳感器的要求也越來越高,現在的溫度傳感器正在基于單片機的基礎上從模擬式向數字式從集成化向智能化、網絡化的方向飛速發展,并朝著高精度、多功能、總線標準化、高可靠性及安全性、開發虛擬傳感器和網絡傳感器、研制單片測溫系統等高科技的方向迅速發展。

本文將介紹智能集成溫度傳感器AD590的結構特征及控制方法,并對以此傳感器,STC89C52單片機為控制器構成的數字溫度測量裝置的工作原理及程序設計作了詳細的介紹。與傳統的溫度計相比,其具有讀數方便,測溫范圍廣,測溫準確,輸出溫度采用數字顯示,主要用于對測溫要求比較準確的場所,或科研實驗室使用。該設計控制器使用STC公司的STC89C52單片機,測溫傳感器使用AD公司AD590,用數碼管來實現溫度顯示.

主要研究方向和要求

方向:溫度采集和轉換技術研究+數字電路技術研究+模擬放大顯示技術研究要求:1.用AD590與電阻組成的溫度采集電路產生變化的電壓信號;2.ADC0832和運算放大器組成模數轉換電路產生0-255數字信號;3.最后經過單片機算法處理輸出攝氏溫度顯示,溫度精度達到0.1度,測量范圍零下10度到零上100度;

4.器件:功率集成電路+分立元件;

5.仿真設計,程序編寫與硬件調試。

第二章系統方案設計

2?1基本元器件管腳圖與功能表

溫度傳感器AD590

<1>AD590是美國模擬器件公司生產的單片集成兩端感溫電流傳感器,是一種已經IC化的溫度感測器,它會將溫度轉換為電流。其規格如下:

a、度每增加1°C,它會增加l^A輸出電流

b、可測量范圍-55C至150C

c、供電電壓范圍+4V至+30V,可以承受44V正向電壓和20V反向電壓,

因而器件即使反接也不會被損壞;

<2>AD590管腳圖及元件符號

<3>AD590工作原理

AD590相當于一個溫度控制的恒流源,輸出電流大小只與溫度有關,且與溫度成正比。只需一個精密電阻,就可以將電流(溫度)信號轉化為電壓信號,總的靈敏度系數通過該電阻設定。AD590的溫度系數是1UA/K,即溫度每增加1K,它會增加5A輸出電流。其輸出電流是以絕對溫度零度-273C為基準,每增加1C,它會增加1口A輸出電流,因此0C到100C時AD590輸出電流為273口A到373口

A。

<4>電流-電壓轉換電路

電壓-電流

轉換電路

圖中,AD590輸出端輸出電流,經過10K的電阻,轉換為電壓值。OPO7為一射極跟隨器,A=1,用于提高輸入阻抗。兩個二極管用于隔離干擾。電流■電壓轉換公式如下:

AD590的靈敏度:1卩A/K

經過10K電阻后:1卩A/K?1Ok0二10mV/K具體溫度-電壓值對應如下表

攝氏溫度/°c

AD590電流/口A

經10KQ電壓/V

0

273.2

2.732

10

283.2

2.832

20

293.2

2.932

30

303.2

3.032

40

313.2

3.132

50

323.2

3.232

60

333.2

3.332

100

373.2

3.732

(2)模擬轉數字ADC0832

ADC0832為8位分辨率A/D轉換芯片,其最高分辨可達256級,可以適應一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉換時間僅為32?S,據有雙數據輸出可作為數據校驗,以減少數據誤差,轉換速度快且穩定性能強。

通過DI數據輸入端,可以輕易的實現通道功能的選擇。

CS片選使能,低電平芯片使能,CH0模擬輸入通道0,CH1模擬輸入通道1,GND芯片參考0電位(地)DI數據信號輸入,選擇通道控制,DO數據信號輸出,轉換數據輸出,CLK芯片時鐘輸入,Vcc/REF電源輸入及參考電壓輸入。

ADC0E322-ChannelMUXDual-In-LinePackage(M)

引腳功能說明:

CS_片選使能,低電平芯片使能。

CH0模擬輸入通道0,或作為IN+/-使用。

CHQ—Is/I—CLK

匚H1—liel—DO

GND—1+&l—DI

CH1模擬輸入通道1,或作為IN+/-使用。

GND芯片參考0電位(地)。

10

comintemairyconnentedidgnd.VrepIntemaltymxinEctecflto甲gTUp訕BW

DI數據信號輸入,選擇通道控制。

DO數據信號輸出,轉換數據輸出。

CLK芯片時鐘輸入。

Vcc/REF電源輸入及參考電壓輸入(復用)

輸入格式

配置位

選擇通道號

CH0

CH1

CH0

CH1

差分

L

L

+

L

H

+

單端

H

L

+

H

H

+

當ADC0832未工作時其CS輸入端應為高電平,此時芯片禁用,CLK和DO/DI的電平可任意。當要進行A/D轉換時,須先將CS使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數據信號。在第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入2位數據用于選擇通道功能,當此2位數據為“1”、

“0”時,只對CH0進行單通道轉換。當2位數據為“1”、“1”時,只對CH1進行單通道轉換。到第3個脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數據輸出DO進行轉換數據的讀取。從第4個脈沖下沉開始由DO端輸出轉換數據最高位DATA7,隨后每一個脈沖下沉DO端輸出下一位數據。直到第11個脈沖時發出最低位數據DATA0,一個字節的數據輸出完成。也正是從此位開始輸出下一個相反字節的數據,即從第11個字節的下沉輸出DATA0。隨后輸出8位數據,到第19個脈沖時數據輸出完成,也標志著一次A/D轉換的結束。最后將CS置高電平禁用芯片,直接將轉換后的數據進行處理就可以了。

本次實驗中我們使用CH1通道輸入模擬信號,因此實驗中控制ADC0832的時序圖如下:

選擇CH0M道CI.K與1〕1吋序圖

第二牛時

第五卜時

CLK

箒二牛時

鐘W討血鐘匚右

|}|

單片機STC89C52

STC89C52管腳圖:

P1,0C

Pl.1匚

FL2C

P1,3C

Pi.4C

MOSI/PL5C

HISO/Pl,SC

SCK/P1.7C

RSTE

RXD/P3.0C

TXD/P3.1C

IET0/P3.2t

IHT1/P3.3C

T0/T3.4C

Tl/P3+5C

?/P3.6C

M/P3+7C

XTAL2C

XTAL1C

PDIP&HD匚

VCC:供電電壓。

GND:接地。

1

5

2

39

3

38

37

5

36

10

35

34

33

32

31

11

30

12

29

13

28

14

27

15

26

16

25

17

24

1::!

23

19

22

20

21

JVcc

Ft).O/ADO

3P0+1ZAD1

PO,2/AP2

PO.3/AD3

3P0.4/AD4

3PO,5/AD5

3P0.6/AB6

3阻7/AD7

EAZVPP

ALE/FRO&

3PESH

3P2.7/A15

3P2.6ZA14

F2.5/A13

P2.4/A12

bP2.3ZA11hP2.2/A10

P2.1/A9

3P2+0/A8

PO口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口管腳是8個帶內部上拉電阻的雙向1/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。

P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能

P3.0RXD(串行輸入口)

P3.1TXD(串行輸出口)

P3.2/INT0(外部中斷0)

P3.3/INT1(外部中斷1)

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

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

P3.6/WR(外部數據存儲器寫選通)

P3.7/RD(外部數據存儲器讀選通)

P3口同時為閃爍編程和編程校驗接收一些控制信號。

RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。

PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。

EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不

管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。

XTAL2:來自反向振蕩器的輸出。

(4)八雙向總線發送器\接收器(3態)74HC245

74HC245總線驅動器,典型的TTL型三態緩沖門電路,其作用為,信號功率放大。74HC245管腳圖:74HC245引腳定義:

第1腳DIR,為輸入輸出端口轉換用,DIR=“1”高電平時信號由“A”端輸入“B”端輸出,DIR二“0”低電平時信號由“B”端輸入“A”端輸出。

第2~9腳“A”信號輸入輸出

:_-■kwLLJ「ATlA空Z

鼻fflseu£□m

LD

r-Z旳|:寸jLTi回?|也||5殳

r>■"燈LEEp?GLQEr"l

=<<<<4

3z

端,A1二B1、、、、、A8=B8,A1與B1是一組,如果DIR二“1”OE二“0”則A1輸入

B1輸出,其它類同。如果DIR二“0”0E二“0”則B1輸入A1輸出,其它類同。第11~18腳“B”信號輸入輸出端,功能與“A”端一樣。

第19腳OE,使能端,若該腳為“1”A/B端的信號將不導通,只有為“0”時A/B端才被啟用,該腳也就是起到開關的作用。

第10腳GND,電源地;第20腳VCC,電源正極。實驗過程中我們使用的為從“A”到“B”傳輸數據。

⑸數碼管

LED數碼管中各段發光二極管的伏安特性和普通二極管類似,只是正向壓降較大,正向電阻也較大。在一定范圍內,其正向電流與發光亮度成正比。由于常規的數碼管起輝電流只有1?2mA,最大極限電流也只有10?

30mA,所以它的輸入端在5V電源或高于TTL高電平(3.5V)的電路信號相接時,一定要串加限流電阻,以免損壞器件。

設計思路和原理

1.基本設計思路

本實驗要求溫度計的范圍-10°C?100°C,并且顯示一位小數,所以我們需要四個LED,前兩個顯示溫度的整數部分,第三個顯示小數部分,最后一個顯示符號。根據給出的元件,我們用AD590做溫度傳感器,可以把絕對溫度轉換成電壓電流信號。

把得到的電壓電流信號輸入ADC0832以后得到數字信號,即為要采樣接收的數據,根據要求,所測溫度為-10C?100C,則溫度每變化一攝氏度輸出電壓變化10mv,又根據0度時輸出電壓為2.73V得出電壓的變化范圍是2.63V-3.73V。0度采集到的數據為:

2.73*255/5=139

100度采集到的數據為:

3.73*255/5=190

那么實際的溫度計算公式為:(采集到的數據-139)*5*100/255。

溫度為正時:高八位放在B中,除以10得到的商為十位數,余數為各位;低八位放在A中,除以10,商為第一位小數。

溫度為負值:高八位的數小于10放在個位數字,十位數顯示符號,得到的低八位放在A中,,除以10,商為第一位小數。

由此就得到了所要顯示的溫度。

第一個LED的字形地址偏移量放在20H,將20H送入P0.5;第二個LED的字形地址偏移量放在21H,將21H送入P0.4;第三個LED的字形地址偏移量放在22H,將22H送入P0.3;第四個LED的字形地址偏移量放在23H,將23H送入P0.2。

電路板連接如下圖:

AD590

10kQ電阻

ADC0832

8051單片機—

4個數碼顯示管

由此得到的整體框架圖為:

I>初始化I〉

AD采樣=>

八位數據

溫度顯示

數值轉化

2.3方案設計和選擇

溫度采集處理模塊

RP2

RESPACK-S

李01

10A05

ZKD2

1DAK

VCC

A

^44&

(2)數據算法處理輸出模塊

第三章基于Proteus仿真設計

3.1仿真電路設計

U3

13

17

16

15

J4

it

Z5

V

PR.i:iLiFm^¥¥J3.HEX

-1EKT>

J1

ezbxuP27iR1£

O10

3

PDII'AID

HPlDS

3Dataz沖

FECCEFGDF

XTA12

BTESjSI

pa^Aizpn^Aii

PDMJU*FO^XIf網於眄FD.KAIT

PZ.IM

P2ZX1D

PZ3W1

PZ.4^.12

PZfiW.13

?3£|'1>:0ph?pa^liTEl

P33TjiTT

P3.IHT]P3J^ri

phti'Wt

■3

□a

■j

|3

■3

in

IT

13

15

Til

FF

RB8F/CK-3

VDC

Wi£:tt=32

uTEE3

AEi'TE

h畑5^IDCD

3

Z~

1

pEm

亠C4

U.fJl

?m

ZKD1口心L=TS7=-

SD2

U2

QFT1耶

□EG

開H

3.2仿真總結

用Proteus仿真模擬電路的效果總體來說是非常不錯的,但也存在一些軟件的不足之處,比如說沒有AD590這個器件,需要用一個滑動變阻器來代替。相比之前自己做的仿真,我覺得本次實驗讓我最大的收獲就是學會了編寫輸入芯片程序可以在仿真上大概查到程序的一些顯示錯誤。不用自己每天占著學院的電腦苦苦嘗試。本次實驗仿真的制作還是很順利的,調試的過程最令人痛苦。

3.3仿真結果與分析

(1)零下溫度顯示

制作人:丄偉10291150電氣1005^.于.翔10291151

D1

U5

KTS'1

」±說一丄晉

j.nrai

man

RVUH

-W4J-J-EA

F3J1W

EJig

E屮A

K.g

EJW>'

F3.'ILaJ

F33LF.*1

F2H

EQMill

F3.*W,

(2)零上溫度顯示

II

c

2

礙mu.

T

V

1

2

ZK

'c

T

D-1tM■T&fn

fiX:i::

i

王偉10291150

三穎W291151

制作人;

iSTTAil

mi?Ann

PD.YJU1

XTA12

pn¥MTi

陽.MJdh

PELW.5

HST

anWyr?

rzw

fsbt恵l£

PZ^¥*JC

PZifui

日.

FEjfiffU?

P7/MUC

HOKXi

M2

F-j.frT

F-l/L

FldTT

F-IJE

MJ

FJ3TPfo.胡n

P37rw

>■

FPj:ii?l.4.b.iX>4l€K

F1

■IE

■I『

ctIG

X

b^kd'1

_

■J?

on

第四章匯編編程與元件的安裝及調試

4.1匯編語言介紹

本次設計軟件采用匯編語言進行編程。匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言,作為一門語言,對應于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級語言的特征,比如結構化、抽象等。在這樣的環境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經類同于高級語言。現在的匯編環境已經如此高級,即使全部用匯編語言來編寫windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。

匯編語言直接同計算機的底層軟件甚至硬件進行交互,它具有如下一些優點:

能夠直接訪問與硬件相關的存儲器或I/O端口;

能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制;

能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬件設備共享引起的死鎖;

能夠根據特定的應用對代碼做最佳的優化,提高運行速度;

能夠最大限度地發揮硬件的功能。

同時還應該認識到,匯編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進制的機器指令碼,因此不可避免地存在一些缺點:

編寫的代碼非常難懂,不好維護;

很容易產生bug,難于調試;

只能針對特定的體系結構和處理器進行優化。

4.2溫度計實驗程序:

AD0832DIBITP3.0;偽指令

AD0832DOBITP3.1

AD0832CSBITP3.3

LED1

EQU20H

;第一個LED的字形地址偏移量放在20H

LED2

EQU21H

;第二個LED的字形地址偏移量放在21H

LED3

EQU22H

;第三個LED的字形地址偏移量放在22H

LED4

EQU23H

;第四個LED的字形地址偏移量放在23H

AD0832CLKBITP3.2

ORG0000H

LJMPMAIN

ORG0030H

MAIN:MOVSP,#6FH

MOVR4,#5

H:LCALLADC0832

LCALLDELAY

LCALLBCD

LP:LCALLDISPLAY

DJNZR4,LP

SJMPH

ADC0832:

SETBAD0832DI

CLRAD0832CLK

NOP

NOP

CLRAD0832CS

NOP

NOP

SETBAD0832CLK

NOP

NOP

;顯示五次程序

;調用AD轉換程序

;調用數值轉換程序

;調用顯示程序

;初始化通道選擇,起始信號,DI高電平

;時鐘低電平

;一個是12個機器周期

;拉低/CS端

;拉高CLK端

AD1:

CLRAD0832CLK

SETBAD0832DI

NOP

NOP

SETBAD0832CLK

NOP

NOP

CLRAD0832CLK

CLRAD0832DI

NOP

NOP

SETBAD0832CLK

NOP

NOP

CLRAD0832CLK

SETBAD0832DI

NOP

NOP

MOVR5,#8

;拉低CLK端,形成下降沿

;拉高CLK端

;拉低CLK端,形成下降沿2

;1-0選擇1通道

;拉高CLK端

;拉低CLK端,形成下降沿3

;準備送下后8個時鐘脈沖

MOVC,AD0832DO

MOVACC.0,C

RLA

SETBAD0832CLK

NOP

NOP

CLRAD0832CLK

;第四個脈沖下沉后開始接收數據

;左移一次

;形成一次時鐘脈沖

NOP

;(139-x)*5

;最高位顯示負號

;顯示個位

NOP

DJNZR5,AD1

;循環7次

MOVC,AD0832DO

MOVACC.0,C

;接收數據

SETBAD0832CS

;拉高/cs端

CLRAD0832CLK

;拉低CLK端

SETBAD0832DO

;拉高數據端,回到初始狀態

ADDA,#10

;參數調整

MOV30H,A

RET

;數據放在30H

BCD:CLRC

sUBBA,#139

;與0攝氏度作判斷

JNCABOVE0

;有借位往下執行,沒有借位跳轉ABOVEO

BELLOW0:

MOVA,#139

SUBBA,30H

MOVB,#51

MULAB

MOVB,#10

MULAB

MOVR1,A

MOVA,B

MOVB,#10

DIVAB

MOVLED1,#0AH

MOVLED2,B

MOVA,R1

MOVB,#26

DIVAB

MOVLED3,A

MOVLED4,#0BH

RET

ABOVE0:

MOVB,#05H

MULAB

MOVB,#64H

MULAB

MOVR1,A

MOVA,B

MOVB,#0AH

DIVAB

MOVLED1,A

MOVLED2,B

MOVA,R1

MOVB,#1AH

DIVAB

MOVLED3,A

MOVLED4,#0BH

RET

DISPLAY:

SETBP0.3

SETBP0.4

SETBP0.5

MOVDPTR,#TAB

MOVA,20H

MOVCA,@A+DPTR

MOVP2,A

;顯示第一位小數

;(x-139)*5

;低八位給R1

;高八位給A

;顯示十位

;顯示個位

;x/26把0-255的數轉換為0-9的數

;顯示第一位小數

;顯示子程序

;LED1

;查字形表

;P2口作字形,P0口做字位

;開

;關

;LED2:個位

;查字形表

;LED3:第一位小數

;查字形表

CLRP0.5

LCALLDELAY

SETBP0.5

MOVDPTR,#TAB

MOVA,21H

MOVCA,@A+DPTR

MOVP2,A

SETBP2.7

CLRP0.4

LCALLDELAY

SETBP0.4

MOVDPTR,#TAB

MOVA,22H

MOVCA,@A+DPTR

MOVP2,A

CLRP0.3

ACALLDELAY

SETBP0.3

MOVDPTR,#TAB

MOVA,23H;LED4:符號

MOVCA,@A+DPTR;查字形表

MOVP2,A

CLRP0.2

ACALLDELAY

SETBP0.2

RET

DELAY:MOVR7,#10;延時1ms

LP1:MOVR6,#50

LP2:DJNZR6,LP2

DJNZR7,LP1

RET

TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,63H

RET

END

■■Jk.I

ZUPAI9ZUPAI9

I'——-i-^ld

二"汕

5HHZ

R5f^+_■■■M-“

RADI-<

LJMet

15P15P

C2.

104*-

3CBD1

8\H.8.

GV

03311

iI

QQQ

VI2

-12

GND

ucc

2八Qg。i-t-USLLU6

第五章基于Protel99se設計PCB印制電路

Ku円円

5.1ProtelPCB圖繪制

丿,、\~~Mf7'

第六章課程設計總結與建議

6.1課程設計過程中遇到的問題及解決途徑

序號

遇到的問題

解決途徑

1

不清楚實物連接圖

肉眼觀察以及用萬用表測量畫出電路圖

2

不了解AD590的具體參數

通過上網杳找相關資料

3

不會編寫ADC0832啟動和數據傳送程序

上網查找資料并分析它的時序圖,最后參考相關例子改編成功

4

不會控制小數點的顯示

詢問老師得知可以直接置1得到,不用重新編寫字形表

5

顯示總是抖動

在AD轉換后增加一個延時后再處理

6

顯示示數在不冋仿真器頭下發生突變成80多度

坑了一上午,各種軟硬件檢驗,結果換臺電腦好了,發現是仿真器頭壞了

7

燒錄單片機芯片里發現顯示有一位不亮

換了一塊單片機芯片解決掉,原因不明,可能是原來的芯片壞了

課程設計體會與心得單片機課設使我學到了很多,在做實驗之前,我們查找了很多相關的資料,認真的閱讀了課本,并且在網上也認真的翻閱了很多的資料,了解了各種原器件的工作原理以及控制過程,準備工作做了很多,但是在調試的過程中還是遇到了很多的問題,比如說溫度達不到要求的高度和準確度,還有溫度顯示不穩定,總是閃動等,并且在實驗中由于操作不慎導致芯片燒壞,但是經過我們請教老師和同學,以及自己不斷地調試檢查,最終把這些問題解決了,這次的單片機課程設計不僅加深了對單片機基礎知識的理解與記憶,還鍛煉了自己的動手調試能力和實際操作能力,做到了理論與實際有效的相結合。

通過這次課程設計,我對ADC0832的結構有了全面的認識,也對運用匯編語言編程的能力和整體掌握有了大幅度的提升。而此次課設對我最大的提高在于對未知知識的搜集、掌握和運用過程。

如溫度傳感器是輸出電流的,A/D轉換是用ADC0832的,他們之間需要用10kQ電阻作相應轉換。最關鍵的就在于對ADC0832的掌握。因為單片機課上主要講授了ADC0809,所以我們上網查到相關芯片的資料,得知ADC0832的數字量輸出與AD0809的并行輸出不同,是串行輸出的,所以應該將其輸出量在P3.1口輸入到單片機。而且它的選口、輸輸出都要在外部輸入的時鐘下降沿的時候讀寫,時鐘信號還需要外部給定,所以它的CLK口要與P3.2口相連。ADC0832在數據傳輸前要在Din中輸入起停位和配置位,以設定ADC0832的工作模式,這三位數據也可通過移位輸入。由于ADC0832的輸入在CH0口,輸出為單端輸出,所以配置位為10(B)。

有了總體思路后我們開始著手分塊編寫程序,編譯無誤后就到實驗室進行了實驗仿真。不管之前怎樣全面思考,實驗過程中還是會出現意想不到的問題。實驗過程中AD590輸出的電流變化范圍沒有設計的那么大,即使將1kQ電位器調到最大也不能將顯示的室溫調至準確。所以我們對程序進行了進一步修改,將輸入的數值做了一定比例的放大,并做了一些誤差調整,最終實現了室溫時顯示21-26度,用打火機烤AD590之后最大顯示數值度能超過100(即在99.99之后又從0.00開始顯示),最終做出的溫度計量程為0°C到100°C左右。

總的來說,這樣的課設總是比較有趣,富有挑戰性而又不枯燥,非常吸引人,對我個人來說試一次絕佳的鍛煉機會,既能進一步鞏固專業知識,增強專業基礎,又能提高動手能力,使自己對實驗調試的方法更加熟練。如果以后還能有機會接觸此類實驗的話,我一定會倍加珍惜的。

最后,感謝老師給了我們這個提高和鍛煉自己的機會,同時感謝老師百忙之中給我們指點和驗收,謝謝老師。

參考文獻:

胡漢才,單片機原理及其接口技術,清華大學出版社,2010

譚浩強,C程序設計,清華大學出版社,2010

郭天祥,新概念51單片機C語言教程,電子工業出版社,2009

康華光,電子技術基礎,高等教育出版社,2005

百度文庫

附錄1:元器件清單

序號

名稱

型號規格

數量

1

溫度傳感器

AD590

1個

2

驅動器

74LS245

2片

3

運算放

溫馨提示

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

評論

0/150

提交評論