久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3427|回復: 2
打印 上一主題 下一主題
收起左側

單片機數字體溫計的實物制作與課設總結報告下載

[復制鏈接]
跳轉到指定樓層
樓主
ID:267736 發表于 2018-1-13 02:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

系統調試及結果

六、總結

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

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

附錄一:

電路圖

附錄二

實物圖

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

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

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

圖1.1 方案(一)系統結構框圖
DS18B20是美國達拉斯半導體公司生產的新型溫度檢測器件,它是單片結構,無需外加A/D即可輸出數字量,通訊采用單線制,同時該通訊線還可兼作電源線,即具有寄生電源模式。它具有體積小、精度易保證、無需標定等特點,特別適合與單片機合用構成智能溫度檢測及控制系統。

1.2 方案二
溫度檢測部分采用傳統的熱敏電阻,熱敏電阻的阻值隨環境溫度變化而變化,經A/D轉換器ADC0809將其轉換為單片機可識別得二進制數字量,單片機主要控制LCD顯示器顯示正確的溫度值,LCD顯示器實現顯示功能。原理框圖如圖1.2所示
  
圖1.2  方案二系統結構圖
方案(二)與方案(一)相比,它最大的特點就是它能檢測的溫度范圍很大,熱敏電阻的性能決定了整個設計的所能檢測的溫度范圍。方案(一)的溫度檢測范圍已經由系統中的DS18B20的特性所決定,它能檢測的溫度范圍為-55℃到120℃,且誤差在0.5℃,其溫度檢測范圍很寬,已能足夠滿足一般測量需要,從整體上來看方案(二)比方案(一)更具有實際的鍛煉意義,因為我們方案(一)是利用現有的智能溫度傳感芯片DS18B20,他無需A/D轉換,直接輸出數字量,所以本設計中所使用的溫度測量電路是方案(二)的電路。


2.2 ADC0809介紹

    ADC0809是8位逐次逼近式ADC轉換器,它能分時地對8路模擬量信號進行AD轉換,結果為8位二進制數據。

ADC0809的主要功能如下:

  • 分辨率為8位
  • 總的不可調誤差在±1/2LSB和1LSB范圍內
  • 典型轉換時間為100μs
  • 具有鎖存控制的8路多路開關
  • 具有三態緩沖輸出控制
  • 單一+5V供電,此時輸入范圍為0~+5V
  • 輸出與TTL兼容
  • 工作溫度范圍-40~85℃

   ADC0809的引腳功能:

      引腳圖如圖2.2

  (1)8路模擬電壓輸入線(共8根):IN7~IN0:用于輸入被轉換的模擬電壓。

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

    ALE:地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,C、B、A這三條地址線上的地址信號得以鎖存。

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

    EOC:轉換結束輸出線,該線上的高電平表示AD轉換已經結束,數字量已鎖入“三態輸出鎖存器”。

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

    OE:“輸出允許”線,高電平時能使用D7~D0引腳上輸出轉換后的數字量。

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

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

GND:地線。

圖2.2  ADC0809引腳圖

ADC0809真值表如表1:

ALE

CBA

接通信號

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是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊,每行顯示16個字符,一共可顯示兩行。它的溫度范圍很窄,通常為0~+55℃,存儲范圍為-22~+60℃。引腳圖如圖2.3

             圖2.3 LCD1602引腳圖

  • 主要技術參數

     顯示容量:16×2個字符。

     工作電壓:4.5~5.5V。

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

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

(2)引腳功能

1腳:Vss,電源地。

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

3腳:Vᴇᴇ,液晶顯示器對比度調整端,接正電源時,對比度最弱,接地時對比度最高。對比度過高會會產生“鬼影”,使用時,可通過一個10kΩ的電位器調整度。

4腳:RS,數據/命令選擇端,高電平時選擇數據寄存器,低電平時,選擇指令寄存器。

5腳:R/,讀寫信號線。高電平時進行讀操作,低電平時進行寫操作。4、5腳合作完成的功能如表2:

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

RS(4)

R/(5)

功能

0

0

可寫入指令或顯示地址

0

1

讀忙信號或讀取地址計時器的內容

1

0

寫入數據

1

1

讀取DDRAM或GGRAM中的內容

       6腳:E,使能端。當E端為下降沿(高電平變成低電平)時,液晶模塊寫指令或寫數據;當E為高電平時,為讀狀態或讀數據。4~6腳共同合作實現的功能如表3:

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

RS(4)

R/(5)

E

功能

0

0

下降沿

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

0

1

1

讀狀態,輸出:DB7~DB0=狀態字

1

0

下降沿

寫數據,DB7~DB0=數據,輸出無

1

1

1

讀數據,輸出:DB7~DB0=數據

    7~14腳:DB0~DB7,8位雙向數據線。

15腳:背光源正極。

16腳:背光源負極。

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

    DDRAM就是顯示數據RAM,用來寄存待顯示的字符代碼,共80個字節,這80個字節的地址為00H~27H和40H~67H,每一個地址內可以裝載一個待顯示的字符代碼。

DDRAM中80個字節地址與屏幕的對應關系如下:

地址

顯示位置

0

1

2

……

39

DDRAM地址

第0行

00H

01H

02H

……

27H

第1行

40H

41H

42H

……

67H

DDRAM字節地址與1602液晶屏幕的對應關系如下:

地址

位置

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

三、軟件設計

3.1 主程序流程圖


四、硬件電路圖

     4.1 溫度檢測原理

         

本系統溫度部分硬件電路部分采用串聯分壓式電路,由圖可知所需測得溫度為25℃至45℃,在溫度為25℃時,熱敏電阻的阻值是100k,串聯一個50k的普通電阻進行分壓,可知

由上式可知,當溫度變化時,阻值減小,輸出電壓Vo也會變化,所以A/D轉換后的值也會有所不同,利用查表法進行顯示,顯示出準確的溫度值。

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





    • A/D轉換部分硬件電路圖

4.3顯示部分硬件電路圖



單片機源程序如下:
  1. ;********************************************************************
  2. ;           基于AT89C51的數字體溫計
  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;調用液晶顯示屏初始化程序
  23.           LCALL    TISHI1;
  24.                               LCALL    TISHI2;
  25. ;*********************************************************************************
  26. ;                                  溫度部分
  27. ;*******************************************************************************
  28. BEGIN:                MOV      TMOD,#02H;
  29.           MOV      TH0,#236;              定時鐘頻位50khz
  30.                               MOV      TL0,#236;
  31.                               MOV      IE,#82H;                 開T0中斷
  32.                               SETB     TR0;                              啟動定時器
  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;啟動AD轉換
  40.                               JNB      EOC,$; 等待轉換結束
  41.                               LCALL    DELAY1S;
  42. ;*********查表法得到轉換值*********************************                                          
  43.                               MOV      HUANCUN,P1;                             
  44.                               MOV      DPTR,#TAB1
  45.                               MOV      A,HUANCUN
  46.                               MOVC     A,@A+DPTR
  47. ;*********將查表得到的值轉換成BCD碼**********************                                             
  48.                               MOV      B,#10
  49.                               DIV      AB
  50.                               MOV      SHIWEI,A
  51.                               MOV      GEWEI,B
  52. ;*********顯示整數部分的溫度值**************************                                                           
  53. XIANSHI:  MOV      A,#0C5H;
  54.           LCALL    WRC;
  55.                               NOP
  56.           MOV      R0,#32H;                                             顯示溫度的十位、個位
  57. WDA1:     MOV      A,@R0
  58.           ADD      A,#30H;                                                           轉換成ASCII碼
  59.                               LCALL    WRD;                                                           寫數據                                                         
  60.                               INC      R0;
  61.                               CJNE     R0,#34H,WDA1;                               判斷溫度是否顯示完
  62. ;*********顯示小數點***********************************************************
  63. DIAN:     MOV      A,#0C7H;              顯示小數點
  64.                               LCALL    WRC;
  65.                               MOV      A,#2EH;
  66.                               LCALL    WRD;
  67. ;*********查表得小數部分得溫度值********************************************
  68.                               MOV      DPTR,#TAB2
  69.                               MOV      A,HUANCUN
  70.                               MOVC     A,@A+DPTR
  71. ;*********將小數部分的值轉換成BCD碼**********************************************************************
  72.                               MOV      B,#10
  73.                               DIV      AB
  74.                               MOV      SHIWEI,A
  75.                               MOV      GEWEI,B
  76. ;**********顯示小數子程序********************
  77. XIANSHI1: MOV      A,#0C8H;
  78.           LCALL    WRC;
  79.                               MOV      R0,#32H;                                             顯示溫度的十位、個位
  80. WDA12:    MOV     A,@R0
  81.           ADD      A,#30H;                                                           轉換成ASCII碼
  82.                               LCALL    WRD;                                                           寫數據
  83.                               INC      R0;
  84.                               CJNE     R0,#34H,WDA12;                               判斷溫度是否顯示完
  85. ;*********顯示溫度符號*************************************************************************
  86.                               MOV    A,#0CAH;                                             顯示溫度符號,設定顯示位置
  87.                               LCALL  WRC;                                                           寫入命令
  88.                               MOV    A,#0DFH;                                             “。”的              ASCII碼
  89.                               LCALL  WRD;                                                           寫數據
  90.                               MOV    A,#43H;                                                           “C"的ASCII碼
  91.                               LCALL  WRD;                                                           寫數據            
  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;                                                           設置LCD的第一行地址
  103.            LCALL  WRC;                                                           寫入命令
  104. FILL12:     CLR    A;                                                                         輸入字符
  105.            MOVC   A,@A+DPTR;                                             由消息區取出字符
  106.                                CJNE   A,#0,LC12;                                             判斷是否為結束碼
  107.                                JMP    RET_END2                                                          ;子程序返回
  108. LC12:      LCALL  WRD;                                                           寫入數據
  109.            INC    DPTR;                                                           指針加1
  110.                                JMP    FILL1;                                                           繼續填入字符
  111. RET_END2:  RET

  112. TISHI1:    MOV    DPTR,#M_1;                                             指針指到顯示消息
  113. LINE11:    MOV    A,#80H;                                                           設置LCD的第一行地址
  114.            LCALL  WRC;                                                           寫入命令
  115. FILL1:     CLR    A;                                                                         輸入字符
  116.            MOVC   A,@A+DPTR;                                             由消息區取出字符
  117.                                CJNE   A,#0,LC11;                                             判斷是否為結束碼
  118.                                JMP    RET_END1                                                          ;子程序返回
  119. LC11:      LCALL  WRD;                                                           寫入數據
  120.            INC    DPTR;                                                           指針加1
  121.                                JMP    FILL1;                                                           繼續填入字符
  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;                                                           調用寫入命令子程序
  128.                               MOV      A,#38H;                                                           8位數據,2行,5*8點陣
  129.                               LCALL    WRC;
  130.                               MOV      A,#0CH;                                                           開顯示和光標,字符不閃爍
  131.                               LCALL    WRC;
  132.                               MOV      A,#06H;                                                           字符不動,光標自動右移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;                                             忙碌循環等待
  149.                               POP    PSW;                                                           從堆棧中取回PSW的值
  150.                               POP    DPL;                                                           從堆棧中取回DPL的值
  151.                               POP    DPH;                                                           從堆棧中取回DPH的值
  152.                               POP    ACC;                                                           從堆棧中取回ACC的值
  153.                               LCALL  DELAY;                                                           延時
  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;                                                           延時
  164.                               RET
  165. ……………………

  166. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載(word格式完整設計報告與源程序):
http://www.zg4o1577.cn/bbs/dpj-104106-1.html


評分

參與人數 1黑幣 +10 收起 理由
tieq1952 + 10 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:253767 發表于 2018-1-13 13:36 | 只看該作者
靠自身努力完成,贊一個!
回復

使用道具 舉報

板凳
ID:350709 發表于 2018-6-25 12:57 | 只看該作者
不錯可以的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文在线一区二区 | 欧美自拍视频 | 国产乱码精品一区二三赶尸艳谈 | 成人在线播放 | av播播| 久久久久久国产精品免费免费狐狸 | 天天干视频网 | 天天玩天天干天天操 | 日韩久久精品视频 | 91se在线| 可以在线观看av的网站 | a级黄色网 | 国产91久久久久久 | 中文字幕一级毛片视频 | 国产片侵犯亲女视频播放 | 日韩精品一区二区三区免费观看 | 日韩福利在线 | 玖玖久久 | 91九色porny首页最多播放 | 欧美精品一区二区在线观看 | 成人一区二区三区 | 精品国产乱码久久久久久蜜退臀 | 视频精品一区二区三区 | 天天操夜夜拍 | 欧美成人激情视频 | 雨宫琴音一区二区在线 | 久久婷婷麻豆国产91天堂 | 亚洲一区二区三区免费 | 男女视频在线观看免费 | 欧美激情一区 | 日韩美女一区二区三区在线观看 | 岛国精品 | 免费一区二区三区 | 欧美国产精品一区二区三区 | 欧美在线一区视频 | 亚洲欧洲日本国产 | 精品一区二区视频 | 日韩中文字幕 | 911网站大全在线观看 | 九九久久国产精品 | 国产操操操 |