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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3251|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)ds18b20多點(diǎn)監(jiān)控+溫度報警+上下限溫度設(shè)定及存儲 仿真程序等資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
//功能:1.可輪流檢測6個區(qū)域的溫度,實(shí)現(xiàn)5秒鐘自動切換功能,和手動切換
//                        2.可顯示時間及調(diào)節(jié)時間
//                        3.溫度高于上限或低于上限報警
//                        4.可調(diào)整溫度上限及下限,并且?guī)У綦姳Wo(hù)
//      5.可對-20攝氏度——60攝氏度溫度測量,溫度過高或者過低顯示error

所謂多點(diǎn)溫度巡檢儀主要針對環(huán)境和設(shè)備內(nèi)溫度的集中檢測和管理,可以無人值守24小時不間斷檢測溫度,可實(shí)現(xiàn)高低溫報警和自動切換顯示區(qū)域。克服了管理人員手動測量和手工計(jì)算溫度的誤差,又提高了檢測速度和精度,省了大量的人力和物力。

自行設(shè)計(jì)并制作多點(diǎn)溫度巡檢儀 (以下簡稱巡檢儀 )。巡檢儀可以對6個以上的監(jiān)測點(diǎn)的溫度進(jìn)行輪流檢測,檢測周期不能超過0.3分鐘。檢測溫度范圍-200C--600C,檢測的誤差不能超過0.3%。

二、要求
巡檢儀可以對6個以上的監(jiān)測點(diǎn)的溫度進(jìn)行輪流檢測,檢測周期不能超過0.3分鐘。檢測溫度范圍-200C--600C,檢測的誤差不能超過0.3%。

1. 基本要求
第(1)項(xiàng) 分別輪流檢測6個點(diǎn)的溫度,并顯示出來;
第(2)項(xiàng) 每5秒鐘自動切換一個溫度點(diǎn),同時顯示日期和時間;
第(3)項(xiàng) 要求能通過按鍵切換當(dāng)前顯示的溫度點(diǎn);

2. 發(fā)揮部分
(1)溫度高于上限則報警,溫度低于下限則報警 ;計(jì)分5
(2)可以設(shè)置上限溫度的報警值和下限溫度的報警值,計(jì)分10;。
(3)系統(tǒng)關(guān)閉電源,報警的設(shè)定值不會丟失 ,  計(jì)分15 。

三、說明
1. 顯示部分可以用液晶,也可以用數(shù)碼管顯示

2. 可用鍵盤設(shè)置目標(biāo)報警點(diǎn)和時間日期調(diào)整

3.  測試要求與說明

  • 溫度顯示
  • 當(dāng)前時間顯示
  • 溫度顯示的手動切換
  • 報警設(shè)置測試
  • 報警輸出測試`


2. 方案選擇:

根據(jù)設(shè)計(jì)任務(wù)要求,并且根據(jù)我們自己的需要而附加的功能,該電路的總體框圖可分為幾個基本的模塊,框圖如圖所示:

2.1時鐘模塊
2.2 報警裝置:

2.3 溫度傳感器:


2.4 LCD1602顯示裝置:
2.5 LED指示燈:
2.6 按鍵模塊:
3. 程序框圖:

單片機(jī)主程序框圖、速度感應(yīng)程序框圖和鐵片感應(yīng)程序框圖分別如圖所示。

4.系統(tǒng)的具體設(shè)計(jì)與實(shí)現(xiàn):4.1時鐘模塊:
精準(zhǔn)顯示年,月,日,時,分,秒,自帶備用電源,能掉電自動走時,功耗低,避免了每一次上電手動校時。
4.2 報警裝置:

當(dāng)溫度超過設(shè)定上限/下限,警報系統(tǒng)就會發(fā)出報警信號,讓人們知道哪個區(qū)域溫度高于或低于設(shè)置的溫度上限/下限


4.3 溫度傳感器:

六個溫度傳感器采用的是18B20,可以并聯(lián),并且六個溫度傳感器只占用一個I/O口,既節(jié)省成本,也節(jié)省不必要的能耗

4.4 LCD1602顯示裝置:
采用LCD1602顯示裝置,功耗低,顯示清晰
4.5 LED指示燈:
調(diào)整日期和時間的提示,D1亮調(diào)D2亮調(diào)時D3亮調(diào)日D4調(diào)月D5亮調(diào)年
4.6 按鍵模塊:
七個按鍵調(diào)時間和報警溫度,既省節(jié)省成本也 方便操作

5.最小系統(tǒng)圖:

    該系統(tǒng)主要用到的是單片機(jī),所以主要的部分是最小系統(tǒng)圖,該最小系統(tǒng)圖如所示:



//作者: 王
//單位:單片機(jī)協(xié)會
//版本號:1.0
#include <REG52.H>
#include "lcd_1602.h"
#include "ds18b20.h"
#include "DS1302.h"

#define uchar unsigned char
#define uint unsigned int
        unsigned char code table[]="0123456789+-.";
unsigned char code table1[]="eroABCDEF";//error
unsigned char table3[16]="00:00:00a 00000";
unsigned char table4[16]="11-11-111+11100";


//sbit SCLK = P1^1; // DS1302時鐘信號7腳
//sbit DIO= P1^2; // DS1302數(shù)據(jù)信號6腳
//sbit CE = P1^0; // DS1302片選5腳

sbit LED1=P1^3;
sbit LED2=P1^4;
sbit LED3=P1^5;
sbit LED4=P1^6;
sbit LED5=P1^7;

//sbit RW_LCD=P2^1;
//sbit RS_LCD=P2^0;
//sbit E_LCD=P2^2;

sbit TM_BUT1=P2^3;
sbit TM_BUT2=P2^4;
sbit TM_BUT3=P2^5;

sbit bee=P2^6;

//sbit DS18B20_DQ=P3^0;
sbit TEMP_BUT1=P3^2;

sbit TEMP_BUT2=P3^3;
sbit TEMP_BUT3=P3^4;
sbit TEMP_BUT4=P3^5;
sbit TEMP_BUT5=P3^6;

void xianshi_ds18b20_lcd1602()//溫度顯示
{
        uint ee;
        DS18B20_init();
        R_temp_DS18B20();
        ee=R_temp_DS18B20();
        table3[8]=table1[DS18b20_cs+3];


        ee=ee*6.25;
        if(fu_flag==1)
        {
                        if(ee>2000)
                {
                        table3[10]=table1[0];
                        table3[11]=table1[1];
                        table3[12]=table1[1];
                        table3[13]=table1[2];
                        table3[14]=table1[1];
                        table3[15]=1;
                }
                else
                {

                        table3[10]=table[11];
                        table3[11]=table[ee/1000];
                        table3[12]=table[ee/100%10];
                        table3[13]=table[12];
                        table3[14]=table[ee/10%10];
                        table3[15]=3;
                }

        }
        
                if(fu_flag==0)
        {
                        if(ee>6000)
                {

                        table3[10]=table1[0];
                        table3[11]=table1[1];
                        table3[12]=table1[1];
                        table3[13]=table1[2];
                        table3[14]=table1[1];
                        table3[15]=2;
                }
               
                else
                {
                        table3[10]=table[10];
                        table3[11]=table[ee/1000];
                        table3[12]=table[ee/100%10];
                        table3[13]=table[12];
                        table3[14]=table[ee/10%10];
                        table3[15]=3;
                }
        }
}

void t0_init()//初始化定時器t0
{
        TMOD=0X01;
  TH0 = 0x3C;
        TL0 = 0x0B0;
        EA=1;
        ET0=1;
        TR0=1;
}
void ds18b20_qiehuan()//按鍵切換區(qū)域溫度
{
        if(TEMP_BUT1==0)
        {
                delay_ms(20);
                if(TEMP_BUT1==0)
                {
                        DS18b20_cs++;
                }
                while(TEMP_BUT1!=1);
        }
        
}

void xianshi_DS1302_lcd1602()//用1602顯示時間
{
        freshtime();

        table3[0]=table[hour_1];
        table3[1]=table[hour_0];
        table3[3]=table[minute_1];
        table3[4]=table[miunte_0];
        table3[6]=table[second_1];
        table3[7]=table[second_0];        
        
        table4[0]=table[year_1];
        table4[1]=table[year_0];
        table4[3]=table[month_1];
        table4[4]=table[month_0];
        table4[6]=table[date_1];
        table4[7]=table[date_0];
        table4[8]=2;
        table4[12]=1;
}

void BUT_ds1302()//ds1302按鍵調(diào)時間
{
        uchar temp,mun;
        freshtime();
        if(TM_BUT1==0)
        {
                delay_ms(10);
                if(TM_BUT1==0)
                {
                        temp++;
                }
                while(TM_BUT1!=1);
        }
        switch(temp)
        {
                case 1:        LED1=0;LED2=1;LED3=1;LED4=1;LED5=1;
                                                if(TM_BUT2==0){delay_ms(10);if(TM_BUT2==0){
                                                                mun=tab[0];mun++;
                                                if((mun&0x0f)>9)mun+=6;
                                                if(mun>0x59){mun=0;}Write1302 (WRITE_MINUTE,mun);while(TM_BUT2!=1);
                                                }}
                                                if(TM_BUT3==0){delay_ms(10);if(TM_BUT3==0){
                                                                mun=tab[0];mun--;
                                                if((mun&0x0f)>9)mun-=6;
                                                if(mun>0x59){mun=0x59;}Write1302 (WRITE_MINUTE,mun);while(TM_BUT3!=1);
                                                }}break;
                                                
                        case 2:        LED1=1;LED2=0;LED3=1;LED4=1;LED5=1;
                                                        if(TM_BUT2==0){delay_ms(10);if(TM_BUT2==0){
                                                                mun=tab[1];mun++;
                                                if((mun&0x0f)>9)mun+=6;
                                                if(mun>0x23){mun=0;}Write1302 (WRITE_HOUR,mun);while(TM_BUT2!=1);
                                                }}
                                                if(TM_BUT3==0){delay_ms(10);if(TM_BUT3==0){
                                                                mun=tab[1];mun--;
                                                if((mun&0x0f)>9)mun-=6;
                                                if(mun>0x23){mun=0x23;}Write1302 (WRITE_HOUR,mun);while(TM_BUT3!=1);
                                                }}break;
                                                
                        case 3:        LED1=1;LED2=1;LED3=0;LED4=1;LED5=1;
                                                        if(TM_BUT2==0){delay_ms(10);if(TM_BUT2==0){
                                                                mun=tab[2];mun++;
                                                if((mun&0x0f)>9)mun+=6;
                                                if(mun>0x31){mun=1;}Write1302 (WRITE_DATE,mun);while(TM_BUT2!=1);
                                                }}
                                                if(TM_BUT3==0){delay_ms(10);if(TM_BUT3==0){
                                                                mun=tab[2];mun--;
                                                if((mun&0x0f)>9)mun-=6;
                                                if(mun<0x01){mun=0x31;}Write1302 (WRITE_DATE,mun);while(TM_BUT3!=1);
                                                }}break;
                                                
                        case 4:        LED1=1;LED2=1;LED3=1;LED4=0;LED5=1;
                                                        if(TM_BUT2==0){delay_ms(10);if(TM_BUT2==0){
                                                                mun=tab[3];mun++;
                                                if((mun&0x0f)>9)mun+=6;
                                                if(mun>0x12){mun=1;}Write1302 (WRITE_MONTH,mun);while(TM_BUT2!=1);
                                                }}
                                                if(TM_BUT3==0){delay_ms(10);if(TM_BUT3==0){
                                                                mun=tab[3];mun--;
                                                if((mun&0x0f)>9)mun-=6;
                                                if(mun<0x01){mun=0x12;}Write1302 (WRITE_MONTH,mun);while(TM_BUT3!=1);
                                                }}break;
                                                
                        case 5:        LED1=1;LED2=1;LED3=1;LED4=1;LED5=0;
                                                        if(TM_BUT2==0){delay_ms(10);if(TM_BUT2==0){
                                                                mun=tab[4];mun++;
                                                if((mun&0x0f)>9)mun+=6;
                                                if(mun>0x99){mun=0;}Write1302 (WRITE_YEAR,mun);while(TM_BUT2!=1);
                                                }}
                                                if(TM_BUT3==0){delay_ms(10);if(TM_BUT3==0){
                                                                mun=tab[4];mun--;
                                                if((mun&0x0f)>9)mun-=6;
                                                if(mun>0x99){mun=0x99;}Write1302 (WRITE_YEAR,mun);while(TM_BUT3!=1);
                                                }}break;
                        case 6: temp=0;LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;break;
        }
}

void ds18b20_baojing()//溫度上下限報警
{
        if(DS18b20_dat[2]>DS18b20_dat[0]|DS18b20_dat[2]<DS18b20_dat[1])
        {
                bee=0;               
        }
        else        bee=1;
}
void ds18b20_display_hl()//顯示上下限報警溫度
{

        table4[10]=table[DS18b20_dat[0]/10];
        table4[11]=table[DS18b20_dat[0]%10];
        if((DS18b20_dat[1]&0x80)==0x80)
        {
                table4[13]=table[11];
                table4[14]=table[(~DS18b20_dat[1]+1)/10];
                table4[15]=table[(~DS18b20_dat[1]+1)%10];

        }
        else
        {
                table4[13]=table[10];
                table4[14]=table[DS18b20_dat[1]/10];
                table4[15]=table[DS18b20_dat[1]%10];
        }
}
void ds18b20_but_hl()//設(shè)置報警上下限
{
        char temp;
        if(TEMP_BUT2==0)
                {
                        delay_ms(10);
                        if(TEMP_BUT2==0)
                                {
                                        temp=DS18b20_dat[0];
                                        temp++;
                                        if(temp>0x3c)temp=0;
                                        DS18b20_dat[0]=temp;
                                }
                                while(TEMP_BUT2!=1);
                        }
                        if(TEMP_BUT3==0){delay_ms(10);if(TEMP_BUT3==0){
                        temp=DS18b20_dat[0];temp--;if((temp&0x80)==0x80)temp=60;DS18b20_dat[0]=temp;}
                        while(TEMP_BUT3!=1);}
                        
                        if(TEMP_BUT4==0)
                {
                        delay_ms(10);
                        if(TEMP_BUT4==0)
                                {
                                        temp=DS18b20_dat[1];
                                        temp++;
                                        DS18b20_dat[1]=temp;
                                }
                                while(TEMP_BUT4!=1);
                        }
               
                        if(TEMP_BUT5==0){delay_ms(10);if(TEMP_BUT5==0){
                        temp=DS18b20_dat[1];temp--;if(temp<-20)temp=0;DS18b20_dat[1]=temp;}
                        while(TEMP_BUT5!=1);}

        }
void main()
{        
        LCD_1602_init();
        DS1302_init();
        t0_init();        
        read_t();
        while(1)
        {                        
                xianshi_DS1302_lcd1602();
                ds18b20_display_hl();
                xianshi_ds18b20_lcd1602();
                printf(table3,1,1);
                printf(table4,1,2);
                store_t();
        }
}


void t1zd()interrupt 1
{
                uchar i;
    TH0 = 0x3C;
    TL0 = 0x0B0;
                i++;
                BUT_ds1302();        
                ds18b20_qiehuan();
                ds18b20_baojing();
                ds18b20_but_hl();
                if(i==90)
                {
                        DS18b20_cs++;
                        i=0;
                }
                if(DS18b20_cs>=6)
                {
                        DS18b20_cs=0;
                }        
        
}

全部資料51hei下載地址:
電子大賽測試1題.7z (383.63 KB, 下載次數(shù): 90)


評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:951007 發(fā)表于 2021-7-9 10:59 | 只看該作者
感謝老師分享,學(xué)到了很多東西,程序很完美
回復(fù)

使用道具 舉報

板凳
ID:950289 發(fā)表于 2021-7-9 14:25 | 只看該作者
這個版本太高啦,打不開
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本五月婷婷 | 二区三区视频 | 国产美女特级嫩嫩嫩bbb片 | 天堂精品 | 国产一级电影在线观看 | 精品一二区 | 久久精品国产久精国产 | 91精品国产综合久久久密闭 | 日韩中文字幕在线 | 国产精品久久久久久久久久免费看 | 在线看成人av | 男女羞羞网站 | 日本成人毛片 | 国产一区二区在线免费播放 | 在线看av的网址 | 日韩欧美中文字幕在线观看 | 国产你懂的在线观看 | 91精品国产综合久久香蕉922 | 欧美乱操 | 久久国产视频播放 | 99免费在线| 亚洲精精品 | 福利精品 | 97操操 | 日韩欧美一区二区三区免费观看 | 免费影视在线观看 | 久久伊人精品 | 高清视频一区二区三区 | 日韩精品一区二区三区四区 | 午夜成人免费视频 | 日韩成人在线视频 | 国产精品夜色一区二区三区 | 午夜精品在线 | www视频在线观看 | 在线免费观看欧美 | 成人欧美一区二区三区1314 | www.日韩免费 | 亚洲一区久久 | 精品成人 | 91色在线| 雨宫琴音一区二区在线 |