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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2941|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区 | 日本一区二区三区免费观看 | 久久aⅴ乱码一区二区三区 91综合网 | 久久久国产精品入口麻豆 | 视频三区 | 性欧美xxxx | 精品九九九 | 国产成人精品一区二区三区在线观看 | 91视频在线看 | 99久久精品免费看国产小宝寻花 | 超碰av在线 | 日本精品一区二区三区视频 | 91视视频在线观看入口直接观看 | 成人高清网站 | 国产精品久久久久久久白浊 | 亚洲啊v在线 | 97在线超碰 | 人人鲁人人莫人人爱精品 | 日韩一区二区视频 | 免费毛片网站在线观看 | 欧美一区二区三区的 | 亚洲97 | 91免费版在线观看 | 九九热精品视频 | 久久福利电影 | 欧美一级α片 | 在线观看国产精品一区二区 | 日本免费小视频 | 色综久久| 99精品视频在线观看 | 中文字幕爱爱视频 | 欧美国产日韩在线观看成人 | 国产精品一级 | 欧美h| 成人欧美一区二区三区在线播放 | 亚洲精品国产电影 | 欧美色综合一区二区三区 | 91xxx在线观看 | 亚洲 中文 欧美 日韩 在线观看 | 国产高清在线精品一区二区三区 | 亚洲免费观看视频网站 |