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

立即注冊 登錄
返回首頁

uid:67624的個人空間

日志

ds18b20數碼管顯示溫度

已有 919 次閱讀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 單片機教程網

返回頂部
主站蜘蛛池模板: 亚洲欧美精品在线观看 | 高清久久久| 中文在线一区二区 | 久久久亚洲一区 | 亚洲国产精品久久久 | 激情 婷婷 | 日韩一区二区在线播放 | 天天色影视综合 | 成人自拍av | 成人综合视频在线 | 日韩午夜激情 | 久久亚洲欧美日韩精品专区 | 日韩成人在线观看 | aaaaa毛片 | 日韩成人av在线 | 在线国产一区二区 | 午夜精品一区二区三区免费视频 | 精品国产99 | 久久久久久久久久久久一区二区 | 免费在线观看成人av | 欧美美女二区 | 第四色播日韩第一页 | 日韩国产在线观看 | 国产精品一区二区三区免费观看 | 午夜网 | 日本一区二区不卡视频 | 国产美女自拍视频 | 亚洲免费一区二区 | 中文字幕在线欧美 | 国产精品国产 | 九九热在线视频 | 日韩精品在线观看一区二区三区 | 99福利视频 | 黄网址在线观看 | 成人午夜毛片 | 日韩欧美一区二区三区免费观看 | 日韩网站在线观看 | 欧美性一区二区三区 | 精品国产91亚洲一区二区三区www | 亚洲欧美少妇 | 国产精品久久久久久久一区探花 |