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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
uid:67624 日志

ds18b20數碼管顯示溫度

已有 936 次閱讀2014-10-19 11:00 |個人分類:單片機程序

#include<reg51.h>
 #include<intrins.h> 
#define uchar unsigned char
 #define uint unsigned int 
sbit w1=P2^4; 
sbit w2=P2^5;
 sbit w3=P2^6; 
sbit w4=P2^7;
 sbit DQ=P3^7; 
uint temp; 
float f_temp;                           //溫度值 variable of temperature 
bit flag; 
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f      
                                   ,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef }; 
 void delay(uint z)
 {
  uint x,y; 
 for(x=z;x>0;x--) 
  for(y=110;y>0;y--);
 } 
void Init_Ds18b20(void)     //DS18B20初始化send reset and initialization command
 {
  uint i;  
 DQ = 0;                    //單片機拉低總線 
 i=70;  while(i>0)i--;  
DQ = 1;                    //釋放總線,即拉高了總線  i=4;  while(i>0)i--; } 
bit Read_One_bit()       //讀取一個字節的數據read a byte date 
                            //讀數據時,數據以字節的最低有效位先從總線移出 
{
  uint i; 
 bit dat;  
 DQ=0;i++;  
 DQ=1;i++;i++; 
 dat=DQ; 
 i=3;while(i>0)i--;  
return (dat); 
uchar Read_One_Byte(void) 
{  
uchar i,j,dat;  
dat=0;  
for(i=1;i<=8;i++)
  {  
 j=Read_One_bit();  
 dat=(j<<7)|(dat>>1); 
 }  
return (dat);
 }  
void Write_One_Byte(uchar dat) 
{
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++) 
 {   
testb=dat&0x01;  
 dat=dat>>1; 
  if(testb)  
 {  
  DQ=0;i++;i++;  
  DQ=1;   
 i=5;while(i>0)i--; 
  }   
else  
 {   
 DQ=0;   
 i=5;while(i>0)i--;   
 DQ=1;   
 i++;i++;     
  }
  }
 } 
void tmpchange(void)
{
  uchar f;  
Init_Ds18b20(); 
 f=70;while(f>0)f--;  
delay(1);  
Write_One_Byte(0xcc);          //忽略ROM指令  
Write_One_Byte(0x44);          //溫度轉換指令 
 } 
uint Get_Tmp()                   //獲取溫度get the temperature 
{
  uchar a,b,f; 
 Init_Ds18b20();                //初始化 
 f=70;while(f>0)f--;  
Write_One_Byte(0xcc);          //忽略ROM指令  
Write_One_Byte(0xbe);          //溫度轉換指令
  a = Read_One_Byte();           //讀取到的第一個字節為溫度LSB 
 b = Read_One_Byte();           //讀取到的第一個字節為溫度MSB 
 temp = b;                      //先把高八位有效數據賦于temp  
temp <<= 8;                    //把以上8位數據從temp低八位移到高八位 
 temp = temp|a;                //兩字節合成一個整型變量 
 f_temp = temp*0.0625;             
 temp = f_temp*10+0.5;               //放大十倍  
f_temp=f_temp+0.5;                       //同時進行一個四舍五入操作。
  return temp;
 }  
/****************數碼碼動態顯示函數**************/  
void Display(uint temp)   //顯示程序
 { 
 uint A1,A2,A3;
  A1 = temp/100;    //百位
  A2 = temp%100/10;   //十位
  A3 = temp%10;    //個位 
  if(flag)  
{
   w1=0;
   P0 =0x40;   //用來顯示負號 
  delay(1); 
  w1=1;
   P0=0x00;
   flag=0; 
  } 
 w2=0; 
 P0 = table[A1];    //顯示百位
  delay(10); 
 w2=1;  
P0=0x00;  
  w3=0; 
 P0 = table[A2+10];   //顯示十位,使用的是有小數點的數組(因為temp值擴大了10倍,雖然是十位,實際為個位)
  delay(10); 
 w3=1;
  P0=0x00;
    w4=0;
  P0 = table[A3];    //顯示個位 
 delay(10); 
 w4=1;
  P0=0x00;
 }       
void main() 
{      
      while(1)
         {
              tmpchange();  
             Display(Get_Tmp()); 
       }
 }

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

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

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 亚洲资源站 | 日韩在线综合 | 国产免费又色又爽又黄在线观看 | 欧美一二三四成人免费视频 | 国产在线一区二区三区 | 天天弄| 久久精品欧美电影 | 97视频久久 | 日韩 欧美 综合 | 视频在线观看一区 | 国产精品揄拍一区二区久久国内亚洲精 | 精品久久久久国产 | 久久久精 | av高清毛片 | 午夜精品久久久久久久久久久久 | 欧美精品一区二区在线观看 | 国产精品日日做人人爱 | 欧美高清视频 | 精品国产一区二区国模嫣然 | 久久国产免费 | 91看片网| 国产精品成人av | 免费艹逼视频 | 日韩视频精品 | 国产福利91精品 | 激情网站在线观看 | 国产成人99久久亚洲综合精品 | 午夜视频在线观看网站 | 日韩在线播放网址 | 亚洲欧美日本国产 | 欧美激情在线一区二区三区 | 国内自拍偷拍视频 | 欧美黄在线观看 | 蜜桃精品视频在线 | 日本精品久久久久久久 | 精品网站999www| 一区二区免费视频 | 久久久综合色 | 日韩欧美二区 | 欧美成人精品激情在线观看 | 日韩视频在线一区 |