欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的溫度計程序,原理圖PCB圖

[復制鏈接]
跳轉到指定樓層
樓主
/***************讀取DS18B20溫度,通共陰數碼管顯示**************/                                                                                                                                                        
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

code uchar seven_seg[] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0x77,0x7C,0x39,0x5E,0x79,0x71};
uint timer;
uint temp;
sbit DQ = P1^0;
sbit LED = P0^1;
sbit KEY = P0^2;
sbit BIT1 = P0^7;
sbit BIT2 = P0^6;
sbit BIT3 = P0^5;
sbit BIT4 = P0^4;

void delay(uint x)
{
        while(x--);  
}
void Init_DS18B20(void)
{
        unsigned char x=0;
        DQ = 1;         //DQ復位
        delay(8);       //稍做延時
        DQ = 0;                //單片機將DQ拉低
        delay(80);           //精確延時 大于 480us
        DQ = 1;              //拉高總線
        delay(14);
        x=DQ;                  //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
        delay(20);
}
/******************************從18B20中讀一個字節****************************/
uchar Read_OneChar(void)
{
        uchar i = 0;
        uchar dat = 0;
        for (i=8;i>0;i--)
        {
                  DQ = 0;          // 給脈沖信號
                  dat >>= 1;
                  DQ = 1;          // 給脈沖信號
                  if(DQ)
                  dat |= 0x80;
                  delay(8);
        }
        return(dat);
}
/******************************向18B20中寫一個字節****************************/
void Write_OneChar(uchar dat)
{
        uchar i=0;
        for (i=8; i>0; i--)
        {
                DQ = 0;
                DQ = dat&0x01;
                delay(10);
                DQ = 1;
                dat >>= 1;
        }
        delay(8);
}
/***********************************讀取溫度**********************************/
uint Read_Temperature(void)
{
        float zs,xs;                        //zs=整數,xs=小數
        uchar temp_L,temp_H;        //溫度低8位,和高8位
        uint t;                                        //返回值
        EA=0;                                        //關中斷,以免意外
        Init_DS18B20();
        Write_OneChar(0xcc);         // 跳過讀序號列號的操作
        Write_OneChar(0xbe);         // 讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
        temp_L = Read_OneChar();           //讀取溫度值低位
        temp_H = Read_OneChar();           //讀取溫度值高位
        Init_DS18B20();

        Write_OneChar(0xcc);         //跳過讀序號列號的操作
        Write_OneChar(0x44);         //啟動溫度轉換
        
        xs = 0x0f & temp_L;                        //低四位的后四位得到小數部分
        xs = xs/10;
        zs = ((temp_L&0xf0)>> 4)|((temp_H&0x0f)<< 4);//低位右移4位,高位左移4位,得到整數部分
        t=(zs+xs)*10;                        //整數+小數等于數據,但又小數點,所以數據X10倍,變成整數
        EA=1;                                    //開中斷
        return(t);
}
/********延時函數************/
void delay_time(uint time)
{uint a,b;
for(a=0;a<time;a++)
for(b=0;b<2;b++);
}

/********初始化中斷函數************/
void timer0_init(void)         //初始化
{
        TMOD = 0x01;
        TH0 = 0xec;
        TL0 = 0x78;
        TR0 = 1;
        EA  = 1;
        ET0 = 1;
}        
/************************************************************************/
void timer0_isr(void) interrupt 1                  //中斷
{

        TH0 = (65535-1000)/256;
        TL0 = (65535-1000)%256;
        timer++;
}
/**********顯示函數************/
void display_num(uint num)
{
BIT1=1;

P2=seven_seg[num/100%10];
BIT2=0;
delay_time(10);
BIT2=1;  

P2=seven_seg[num/10%10]+0X01;
BIT3=0;
delay_time(10);
BIT3=1;

P2=seven_seg[num%10];
BIT4=0;
delay_time(10);
BIT4=1;
}

/***********主函數*************/
void main(void)
{
        KEY=1;
        timer0_init();
        while(1)
{
        
        if(KEY==0){temp=0;LED=0;}
        display_num(temp);        //  temp2
        
        if(timer>1000)
        {timer=0;temp=Read_Temperature();}
        LED=1;

}
}



QQ截圖20190521201141.png (24.84 KB, 下載次數: 31)

PCB圖

PCB圖

18B20共陰數碼管顯示.doc

280 KB, 下載次數: 9, 下載積分: 黑幣 -5

論文

水溫控制系統.docx

419.16 KB, 下載次數: 5, 下載積分: 黑幣 -5

報告

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

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表