標(biāo)題: 單片機(jī)數(shù)字體溫計(jì)的實(shí)物制作與課設(shè)總結(jié)報(bào)告下載 [打印本頁]

作者: izhineng    時(shí)間: 2018-1-13 02:10
標(biāo)題: 單片機(jī)數(shù)字體溫計(jì)的實(shí)物制作與課設(shè)總結(jié)報(bào)告下載

系統(tǒng)調(diào)試及結(jié)果

六、總結(jié)

通過本次課設(shè),了解了好多知識(shí),首先,對(duì)于思路上來說,首先要確定方案,這次課設(shè)從起初選擇DS18B20不能夠精確地測(cè)量人體體溫,聽從老師的建議后,改用熱敏電阻,經(jīng)過查資料后,選擇了幾種方案,一個(gè)是利用橋式電路測(cè)輸出電壓,還有就是用串聯(lián)分壓進(jìn)行測(cè)量。因?yàn)闃蚴诫娐窙]有很好的測(cè)量出,所以本系統(tǒng)使用串聯(lián)分壓式。其次,做課設(shè)要靠自己的努力去完成,不能靠其他人,或者走捷徑。本人就是通過查找資料自己確定一個(gè)方向,通過同學(xué)的指導(dǎo),完成了軟件部分的編程。最后,經(jīng)過自己的努力以及別人的幫助,我成功地做出了數(shù)字體溫計(jì)的實(shí)物,并用它測(cè)出了人體指尖的溫度,誤差也在允許的范圍之內(nèi)。

總之,這次的單片機(jī)課程的設(shè)計(jì),在一次一次地查找資料過程中讓我再一次了解單片機(jī)的工作原理,增加了自己的知識(shí)面,對(duì)今后的學(xué)習(xí)生活有很大的幫助。

附錄一:

電路圖

附錄二

實(shí)物圖

引言
隨著以知識(shí)經(jīng)濟(jì)為特征的信息化時(shí)代的到來人們對(duì)儀器儀表的認(rèn)識(shí)更加深入,溫度作為一個(gè)重要的物理量,是工業(yè)生產(chǎn)過程中最普遍,最重要的工藝參數(shù)之一。隨著工業(yè)的不斷發(fā)展,對(duì)溫度的測(cè)量的要求也越來越高,而且測(cè)量的范圍也越來越廣,對(duì)溫度的檢測(cè)技術(shù)的要求也越來越高,因此,溫度測(cè)量及其測(cè)量技術(shù)的研究也是一個(gè)很重要的課題。

目錄
方案的選擇1
1.1方案一1
1.2方案二1
硬件電路簡介2
2.1AT89C51簡介2
ADC0809簡介5
2.3 LCD1602簡介8
軟件設(shè)計(jì)11
3.1 主程序流程圖11
3.2 部分程序11
四、硬件電路圖12
    4.1 溫度檢測(cè)原理12
    4.2 A/D轉(zhuǎn)換部分硬件電路圖13
    4.3 顯示部分硬件電路圖14
五、系統(tǒng)調(diào)試及結(jié)果14
六、總結(jié)15
附錄一16
附錄二17
附錄三17

一、方案的選擇
1.1方案一
本方案主要是在溫度檢測(cè)部分利用了一款新型的溫度檢測(cè)芯片DS18B20,這個(gè)芯片大大簡化了溫度檢測(cè)模塊的設(shè)計(jì),它無需A/D轉(zhuǎn)換,可直接將測(cè)得的溫度值以二進(jìn)制形式輸出。該方案的原理框圖如圖1.1和所示:

圖1.1 方案(一)系統(tǒng)結(jié)構(gòu)框圖
DS18B20是美國達(dá)拉斯半導(dǎo)體公司生產(chǎn)的新型溫度檢測(cè)器件,它是單片結(jié)構(gòu),無需外加A/D即可輸出數(shù)字量,通訊采用單線制,同時(shí)該通訊線還可兼作電源線,即具有寄生電源模式。它具有體積小、精度易保證、無需標(biāo)定等特點(diǎn),特別適合與單片機(jī)合用構(gòu)成智能溫度檢測(cè)及控制系統(tǒng)。

1.2 方案二
溫度檢測(cè)部分采用傳統(tǒng)的熱敏電阻,熱敏電阻的阻值隨環(huán)境溫度變化而變化,經(jīng)A/D轉(zhuǎn)換器ADC0809將其轉(zhuǎn)換為單片機(jī)可識(shí)別得二進(jìn)制數(shù)字量,單片機(jī)主要控制LCD顯示器顯示正確的溫度值,LCD顯示器實(shí)現(xiàn)顯示功能。原理框圖如圖1.2所示
  
圖1.2  方案二系統(tǒng)結(jié)構(gòu)圖
方案(二)與方案(一)相比,它最大的特點(diǎn)就是它能檢測(cè)的溫度范圍很大,熱敏電阻的性能決定了整個(gè)設(shè)計(jì)的所能檢測(cè)的溫度范圍。方案(一)的溫度檢測(cè)范圍已經(jīng)由系統(tǒng)中的DS18B20的特性所決定,它能檢測(cè)的溫度范圍為-55℃到120℃,且誤差在0.5℃,其溫度檢測(cè)范圍很寬,已能足夠滿足一般測(cè)量需要,從整體上來看方案(二)比方案(一)更具有實(shí)際的鍛煉意義,因?yàn)槲覀兎桨福ㄒ唬┦抢矛F(xiàn)有的智能溫度傳感芯片DS18B20,他無需A/D轉(zhuǎn)換,直接輸出數(shù)字量,所以本設(shè)計(jì)中所使用的溫度測(cè)量電路是方案(二)的電路。


2.2 ADC0809介紹

    ADC0809是8位逐次逼近式ADC轉(zhuǎn)換器,它能分時(shí)地對(duì)8路模擬量信號(hào)進(jìn)行AD轉(zhuǎn)換,結(jié)果為8位二進(jìn)制數(shù)據(jù)。

ADC0809的主要功能如下:

   ADC0809的引腳功能:

      引腳圖如圖2.2

  (1)8路模擬電壓輸入線(共8根):IN7~I(xiàn)N0:用于輸入被轉(zhuǎn)換的模擬電壓。

   (2)地址輸入和控制線(共4根):C、B、A:3根地址線,與ALE配合使用可控制8路模擬開關(guān)工作,達(dá)到選擇模擬量輸入通道的作用。

    ALE:地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),C、B、A這三條地址線上的地址信號(hào)得以鎖存。

   (3)數(shù)字量輸出及控制線(共11根):START:“啟動(dòng)脈沖”輸入線,該線上的正脈沖由CPU送來,寬度應(yīng)大于100ns,上升沿清零SAR,下降沿啟動(dòng)ADC工作。

    EOC:轉(zhuǎn)換結(jié)束輸出線,該線上的高電平表示AD轉(zhuǎn)換已經(jīng)結(jié)束,數(shù)字量已鎖入“三態(tài)輸出鎖存器”。

    D7~D0:數(shù)字量輸出線,共8根。D7為最高位。

    OE:“輸出允許”線,高電平時(shí)能使用D7~D0引腳上輸出轉(zhuǎn)換后的數(shù)字量。

    (4)電源線及其他(5根):CLOCK:時(shí)鐘輸入線,用于為ADC0809提供逐次比較所需640kHz時(shí)鐘脈沖序列。

    Vcc:+5V正電源電壓輸入線。

GND:地線。

圖2.2  ADC0809引腳圖

ADC0809真值表如表1:

ALE

CBA

接通信號(hào)

1

000

IN0

1

001

IN1

1

010

IN2

1

011

IN3

1

100

IN4

1

101

IN5

1

110

IN6

1

111

IN7

0

×××

均不通

表1 ADC0809真值表

2.3 LCD1602簡介

LCD1602是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,每行顯示16個(gè)字符,一共可顯示兩行。它的溫度范圍很窄,通常為0~+55℃,存儲(chǔ)范圍為-22~+60℃。引腳圖如圖2.3

             圖2.3 LCD1602引腳圖

     顯示容量:16×2個(gè)字符。

     工作電壓:4.5~5.5V。

     模塊最佳工作電壓:5.0V。

     字符尺寸:2.95㎜×4.35㎜(W×H)。

(2)引腳功能

1腳:Vss,電源地。

2腳:Vᴅᴅ,電源正極。

3腳:Vᴇᴇ,液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí),對(duì)比度最弱,接地時(shí)對(duì)比度最高。對(duì)比度過高會(huì)會(huì)產(chǎn)生“鬼影”,使用時(shí),可通過一個(gè)10kΩ的電位器調(diào)整度。

4腳:RS,數(shù)據(jù)/命令選擇端,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí),選擇指令寄存器。

5腳:R/,讀寫信號(hào)線。高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。4、5腳合作完成的功能如表2:

表2   4、5引腳合作功能表

RS(4)

R/(5)

功能

0

0

可寫入指令或顯示地址

0

1

讀忙信號(hào)或讀取地址計(jì)時(shí)器的內(nèi)容

1

0

寫入數(shù)據(jù)

1

1

讀取DDRAM或GGRAM中的內(nèi)容

       6腳:E,使能端。當(dāng)E端為下降沿(高電平變成低電平)時(shí),液晶模塊寫指令或?qū)憯?shù)據(jù);當(dāng)E為高電平時(shí),為讀狀態(tài)或讀數(shù)據(jù)。4~6腳共同合作實(shí)現(xiàn)的功能如表3:

表3       4~6引腳合作功能表

RS(4)

R/(5)

E

功能

0

0

下降沿

寫指令,DB7~DB0=指令碼,輸出無

0

1

1

讀狀態(tài),輸出:DB7~DB0=狀態(tài)字

1

0

下降沿

寫數(shù)據(jù),DB7~DB0=數(shù)據(jù),輸出無

1

1

1

讀數(shù)據(jù),輸出:DB7~DB0=數(shù)據(jù)

    7~14腳:DB0~DB7,8位雙向數(shù)據(jù)線。

15腳:背光源正極。

16腳:背光源負(fù)極。

   (3)RAM和ROM以及地址映射

    DDRAM就是顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼,共80個(gè)字節(jié),這80個(gè)字節(jié)的地址為00H~27H和40H~67H,每一個(gè)地址內(nèi)可以裝載一個(gè)待顯示的字符代碼。

DDRAM中80個(gè)字節(jié)地址與屏幕的對(duì)應(yīng)關(guān)系如下:

地址

顯示位置

0

1

2

……

39

DDRAM地址

第0行

00H

01H

02H

……

27H

第1行

40H

41H

42H

……

67H

DDRAM字節(jié)地址與1602液晶屏幕的對(duì)應(yīng)關(guān)系如下:

地址

位置

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

DDRAM地址

第0行

00H

01H

02H

03H

04H

05H

06H

07H

08H

09H

0AH

0BH

0CH

0DH

0EH

0FH

第1行

40H

41H

42H

43H

44H

45H

46H

47H

48H

49H

4AH

4BH

4CH

4DH

4EH

4FH

三、軟件設(shè)計(jì)

3.1 主程序流程圖


四、硬件電路圖

     4.1 溫度檢測(cè)原理

         

本系統(tǒng)溫度部分硬件電路部分采用串聯(lián)分壓式電路,由圖可知所需測(cè)得溫度為25℃至45℃,在溫度為25℃時(shí),熱敏電阻的阻值是100k,串聯(lián)一個(gè)50k的普通電阻進(jìn)行分壓,可知

由上式可知,當(dāng)溫度變化時(shí),阻值減小,輸出電壓Vo也會(huì)變化,所以A/D轉(zhuǎn)換后的值也會(huì)有所不同,利用查表法進(jìn)行顯示,顯示出準(zhǔn)確的溫度值。

可以根據(jù)熱敏電阻阻值和溫度的關(guān)系以及Vo和阻值的關(guān)系,事先制作一張Vo(V)~t(℃)的關(guān)系表,存入單片機(jī)內(nèi)部ROM中,以便通過查表的方式根據(jù)電壓值得到溫度值。

4.3顯示部分硬件電路圖



單片機(jī)源程序如下:
  1. ;********************************************************************
  2. ;           基于AT89C51的數(shù)字體溫計(jì)
  3. ;********************************************************************        
  4.                               SHIWEI   EQU          32H;
  5.                               GEWEI    EQU          33H;
  6.                               HUANCUN  EQU          36H;
  7.                               CLOCK    BIT          P2.4;
  8.                               ST       BIT          P3.2;            
  9.                               EOC      BIT          P3.1;
  10.                               D_A      BIT                                          P2.3;
  11.                               D_B      BIT                                          P2.2;
  12.                               D_C                 BIT          P2.1;
  13.                               E        BIT          P2.7;
  14.                               RW       BIT          P2.5;
  15.                               RS       BIT          P2.6;
  16.                               ORG      0000H;
  17.                               LJMP     START;
  18.                               ORG      000BH;
  19.                               LJMP     INT_T0;
  20.                               ORG      0100H;
  21. ;***********主程序開始******************************************************
  22. START:    LCALL    LCDINIT;調(diào)用液晶顯示屏初始化程序
  23.           LCALL    TISHI1;
  24.                               LCALL    TISHI2;
  25. ;*********************************************************************************
  26. ;                                  溫度部分
  27. ;*******************************************************************************
  28. BEGIN:                MOV      TMOD,#02H;
  29.           MOV      TH0,#236;              定時(shí)鐘頻位50khz
  30.                               MOV      TL0,#236;
  31.                               MOV      IE,#82H;                 開T0中斷
  32.                               SETB     TR0;                              啟動(dòng)定時(shí)器
  33.                               CLR      D_A;              AD0809選擇IN0通道
  34.                               CLR      D_B;
  35.                               CLR      D_C;                           
  36. WEN:                                                              
  37.                     CLR      ST;                                    
  38.           SETB     ST;                             
  39.                               CLR      ST;啟動(dòng)AD轉(zhuǎn)換
  40.                               JNB      EOC,$; 等待轉(zhuǎn)換結(jié)束
  41.                               LCALL    DELAY1S;
  42. ;*********查表法得到轉(zhuǎn)換值*********************************                                          
  43.                               MOV      HUANCUN,P1;                             
  44.                               MOV      DPTR,#TAB1
  45.                               MOV      A,HUANCUN
  46.                               MOVC     A,@A+DPTR
  47. ;*********將查表得到的值轉(zhuǎn)換成BCD碼**********************                                             
  48.                               MOV      B,#10
  49.                               DIV      AB
  50.                               MOV      SHIWEI,A
  51.                               MOV      GEWEI,B
  52. ;*********顯示整數(shù)部分的溫度值**************************                                                           
  53. XIANSHI:  MOV      A,#0C5H;
  54.           LCALL    WRC;
  55.                               NOP
  56.           MOV      R0,#32H;                                             顯示溫度的十位、個(gè)位
  57. WDA1:     MOV      A,@R0
  58.           ADD      A,#30H;                                                           轉(zhuǎn)換成ASCII碼
  59.                               LCALL    WRD;                                                           寫數(shù)據(jù)                                                         
  60.                               INC      R0;
  61.                               CJNE     R0,#34H,WDA1;                               判斷溫度是否顯示完
  62. ;*********顯示小數(shù)點(diǎn)***********************************************************
  63. DIAN:     MOV      A,#0C7H;              顯示小數(shù)點(diǎn)
  64.                               LCALL    WRC;
  65.                               MOV      A,#2EH;
  66.                               LCALL    WRD;
  67. ;*********查表得小數(shù)部分得溫度值********************************************
  68.                               MOV      DPTR,#TAB2
  69.                               MOV      A,HUANCUN
  70.                               MOVC     A,@A+DPTR
  71. ;*********將小數(shù)部分的值轉(zhuǎn)換成BCD碼**********************************************************************
  72.                               MOV      B,#10
  73.                               DIV      AB
  74.                               MOV      SHIWEI,A
  75.                               MOV      GEWEI,B
  76. ;**********顯示小數(shù)子程序********************
  77. XIANSHI1: MOV      A,#0C8H;
  78.           LCALL    WRC;
  79.                               MOV      R0,#32H;                                             顯示溫度的十位、個(gè)位
  80. WDA12:    MOV     A,@R0
  81.           ADD      A,#30H;                                                           轉(zhuǎn)換成ASCII碼
  82.                               LCALL    WRD;                                                           寫數(shù)據(jù)
  83.                               INC      R0;
  84.                               CJNE     R0,#34H,WDA12;                               判斷溫度是否顯示完
  85. ;*********顯示溫度符號(hào)*************************************************************************
  86.                               MOV    A,#0CAH;                                             顯示溫度符號(hào),設(shè)定顯示位置
  87.                               LCALL  WRC;                                                           寫入命令
  88.                               MOV    A,#0DFH;                                             “。”的              ASCII碼
  89.                               LCALL  WRD;                                                           寫數(shù)據(jù)
  90.                               MOV    A,#43H;                                                           “C"的ASCII碼
  91.                               LCALL  WRD;                                                           寫數(shù)據(jù)            
  92.                              
  93.                               LCALL    DELAY1S;
  94.                               LCALL    DELAY1S;
  95.                               LCALL    DELAY1S;
  96.                               LCALL    DELAY1S                                          
  97.                               AJMP     WEN
  98.                              
  99.                                                                                          
  100. ;*********溫度提示字符顯示**************************************************************
  101. TISHI2:    MOV    DPTR,#M_2;                                             指針指到顯示消息
  102. LINE12:    MOV    A,#0C0H;                                                           設(shè)置LCD的第一行地址
  103.            LCALL  WRC;                                                           寫入命令
  104. FILL12:     CLR    A;                                                                         輸入字符
  105.            MOVC   A,@A+DPTR;                                             由消息區(qū)取出字符
  106.                                CJNE   A,#0,LC12;                                             判斷是否為結(jié)束碼
  107.                                JMP    RET_END2                                                          ;子程序返回
  108. LC12:      LCALL  WRD;                                                           寫入數(shù)據(jù)
  109.            INC    DPTR;                                                           指針加1
  110.                                JMP    FILL1;                                                           繼續(xù)填入字符
  111. RET_END2:  RET

  112. TISHI1:    MOV    DPTR,#M_1;                                             指針指到顯示消息
  113. LINE11:    MOV    A,#80H;                                                           設(shè)置LCD的第一行地址
  114.            LCALL  WRC;                                                           寫入命令
  115. FILL1:     CLR    A;                                                                         輸入字符
  116.            MOVC   A,@A+DPTR;                                             由消息區(qū)取出字符
  117.                                CJNE   A,#0,LC11;                                             判斷是否為結(jié)束碼
  118.                                JMP    RET_END1                                                          ;子程序返回
  119. LC11:      LCALL  WRD;                                                           寫入數(shù)據(jù)
  120.            INC    DPTR;                                                           指針加1
  121.                                JMP    FILL1;                                                           繼續(xù)填入字符
  122. RET_END1:  RET
  123. M_2:       DB    "Temp:",0;
  124. M_1:       DB    "He Xing (^_^)",0;
  125. ;********液晶初始化子程序***************************
  126. LCDINIT:  MOV      A,#01H;                                                           清屏
  127.           LCALL    WRC;                                                           調(diào)用寫入命令子程序
  128.                               MOV      A,#38H;                                                           8位數(shù)據(jù),2行,5*8點(diǎn)陣
  129.                               LCALL    WRC;
  130.                               MOV      A,#0CH;                                                           開顯示和光標(biāo),字符不閃爍
  131.                               LCALL    WRC;
  132.                               MOV      A,#06H;                                                           字符不動(dòng),光標(biāo)自動(dòng)右移1格
  133.                               LCALL    WRC;
  134.                                  RET;
  135. ;********忙檢查子程序************************
  136. CBUSY:    PUSH              ACC;                                                           將A的值暫存于堆棧
  137.           PUSH   DPH;                                                           將DPH的值暫存于堆棧
  138.                               PUSH   DPL;                                                           將DPL的值暫存于堆棧
  139.                               PUSH   PSW;                                                           將PSW的值暫存于堆棧
  140. WEIT:            
  141.           CLR    RS;                                                                         RS=0,選擇指令寄存器
  142.           SETB   RW;                                                                         RW=1,選擇讀模式
  143.                               CLR    E;                                                                         E=0,禁止讀/寫LCD
  144.                               SETB   E;                                                                         E=1,允許讀/寫LCD
  145.                               NOP                             
  146.                               MOV    A,P0;                                                           讀操作
  147.                               CLR    E;                                                                         E=0,禁止讀/寫LCD
  148.                               JB     ACC.7,WEIT;                                             忙碌循環(huán)等待
  149.                               POP    PSW;                                                           從堆棧中取回PSW的值
  150.                               POP    DPL;                                                           從堆棧中取回DPL的值
  151.                               POP    DPH;                                                           從堆棧中取回DPH的值
  152.                               POP    ACC;                                                           從堆棧中取回ACC的值
  153.                               LCALL  DELAY;                                                           延時(shí)
  154.                               RET;
  155. ;********寫子程序**************************
  156. WRC:      LCALL  CBUSY;                                                           寫入命令子程序
  157.           CLR    E;                                                                         E=0,禁止讀/寫LCD
  158.                               CLR    RS;                                                                         RS=0,選擇指令寄存器
  159.                               CLR    RW;                                                                                                       RW=0,選擇寫模
  160.                               SETB   E;                                                                         E=1,允許讀/寫LCD
  161.                               MOV    P0,A;                                                           寫操作
  162.                               CLR    E;                                                                         E=0,禁止讀/寫LCD
  163.                               LCALL  DELAY;                                                           延時(shí)
  164.                               RET
  165. ……………………

  166. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載(word格式完整設(shè)計(jì)報(bào)告與源程序):
http://www.torrancerestoration.com/bbs/dpj-104106-1.html



作者: tieq1952    時(shí)間: 2018-1-13 13:36
靠自身努力完成,贊一個(gè)!
作者: 駱曉靜    時(shí)間: 2018-6-25 12:57
不錯(cuò)可以的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1