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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

編譯錯誤 怎么樣DS18B20的測溫與顯示(整數加小數)仿真不出來

查看數: 1772 | 評論數: 3 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-11-27 00:08

正文摘要:

#include"reg52.h" sbit DQ=P1^4; void Delay_OneWire(unsigned int t) {                  unsigned char i;       &n ...

回復

ID:397211 發表于 2021-11-27 16:24
temp=temp*(0.625);要加幾位小數就擴大多少倍就行了,擴大10倍就是1位小數。。。。。。。
ID:985176 發表于 2021-11-27 09:26
wulin 發表于 2021-11-27 06:59
DS18B20對時序要求比較苛刻,隨意套用別人的代碼不易成功。更不能隨意增減“;”號和改變數據類型。

原來是這樣 謝謝呀
ID:213173 發表于 2021-11-27 06:59
DS18B20對時序要求比較苛刻,隨意套用別人的代碼不易成功。更不能隨意增減“;”號和改變數據類型。

  1. #include"reg52.h"
  2. //#include"onewire.h"
  3. //#include"absacc.h"
  4. sbit DQ=P1^4;
  5. code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
  6. unsigned char dspbuf[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  7. unsigned char dspcom=0;
  8. unsigned char intr;  
  9. bit temper_flag=0;  

  10. bit init_ds18b20();
  11. void Write_DS18B20(unsigned char dat);
  12. unsigned char Read_DS18B20(void);
  13. unsigned int rd_temperature(void);
  14. void display(void);
  15. void Delay_OneWire(unsigned int t);

  16. void Delay_OneWire(unsigned int t)
  17. {      
  18.         while(t--);
  19. }

  20. void Write_DS18B20(unsigned char dat)
  21. {
  22.         unsigned char i;
  23.         for(i=0;i<8;i++)
  24.         {
  25.                 DQ=0;
  26.                 DQ=dat&0x01;
  27.                 Delay_OneWire(5);
  28.                 DQ=1;
  29.                 dat>>=1;               
  30.         }
  31.         Delay_OneWire(4);
  32. }
  33. unsigned char Read_DS18B20(void)
  34. {
  35.         unsigned char i;
  36.         unsigned char dat;
  37.         for(i=0;i<8;i++)
  38.         {
  39.                 DQ=0;
  40.                 dat>>=1;
  41.                 DQ=1;
  42.                 if(DQ)
  43.                 {
  44.                         dat|=0x80;
  45.                 }
  46.                 Delay_OneWire(4);
  47.         }
  48.         return dat;
  49. }

  50. bit init_ds18b20()
  51. {
  52.         bit initflag=0;
  53.         DQ=1;
  54.         Delay_OneWire(8);
  55.         DQ=0;
  56.         Delay_OneWire(80);
  57.         DQ=1;
  58.         Delay_OneWire(10);
  59.         initflag=DQ;
  60.         Delay_OneWire(20);
  61.         return initflag;
  62. }

  63. unsigned int rd_temperature(void)
  64. {
  65.         unsigned char low,high;
  66.         unsigned int temp;
  67.         init_ds18b20();      
  68.         Write_DS18B20(0xCC);
  69.         Write_DS18B20(0x44);
  70.         Delay_OneWire(2000);  
  71.         init_ds18b20();   
  72.         Write_DS18B20(0xCC);
  73.         Write_DS18B20(0xBE);
  74.         low=Read_DS18B20();  
  75.         high=Read_DS18B20();
  76.         temp=high<<8;        
  77.         temp|=low;      
  78.         return temp;
  79. }

  80. void main(void)      
  81. {
  82.         unsigned int temperature;
  83.         unsigned char tempH,tempL;
  84.         TMOD|=0x01;            
  85.         TH0=(65536-2000)/256;
  86.         TL0=(65536-2000)%256;
  87.         EA=1;
  88.         ET0=1;               
  89.         rd_temperature();
  90.         Delay_OneWire(0xffff);
  91.         TR0=1;
  92.         while(1)
  93.         {
  94.                 if(temper_flag)
  95.                 {
  96.                         temper_flag=0;
  97.                         temperature=rd_temperature();
  98.                         tempH=temperature>>4;
  99.                         tempL=(temperature&0x0f)*0.625;
  100.                         dspbuf[5]=tab[tempH/10];
  101.                         dspbuf[6]=tab[tempH%10]&0x7f;
  102.                         dspbuf[7]=tab[tempL];
  103.                 }
  104.         }
  105. }

  106. void _isr_timer_0(void) interrupt 1
  107. {
  108.         TH0=(65536-2000)/256;
  109.         TL0=(65536-2000)%256;
  110.         display();
  111.         if(++intr==100)
  112.         {
  113.                 intr=0;
  114.                 temper_flag=1;
  115.         }
  116. }

  117. void display(void)
  118. {
  119.         P0=0xff;
  120.         P2=0x01<<dspcom;
  121.         P0=dspbuf[dspcom];
  122.         dspcom=++dspcom%8;
  123. }
  124. /*
  125. unsigned char rd_temperature(void)
  126. {
  127.         uchar low,high;
  128.         unit temp;
  129.         init_ds18b20();
  130.         Write_DS18B20(0xCC);
  131.         Write_DS18B20(0x44);
  132.         Delay_OneWrite(400);
  133.         init_ds18b20();
  134.         Write_DS18B20(0xCC);
  135.         Write_DS18B20(0xBE);
  136.         low=Read_DS18B20();
  137.         high=Read_DS18b20();
  138.         temp=high;
  139.         temp<<=8;
  140.         temp|=low;
  141.         temp=temp*(0.625);
  142.         return temp;
  143. }

  144. void display(void)
  145. {
  146.         P2=((P2&0x1f)|0xE0);
  147.         P0=0xff;
  148.         P2&=0x1f;
  149.         P2=((P2&0x1f)|0xC0);
  150.         P0=1<<dspcom;
  151.         P2&=0x1f;
  152.         P2=((P2&0x1f)|0xE0);
  153.         if(dspcom==6)
  154.         {
  155.                 P0=tab[dspbuf[dspcom]]&0x7f;
  156.         }
  157.         else
  158.                 P0=tab[dspbuf[dspcom]];
  159.         P2&=0x1f;
  160.         if(++dspcom==8)
  161.         {
  162.                 dspcom=5;
  163.         }
  164. }*/

復制代碼







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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产一区二区三区在线观看 | 中文字幕精品一区二区三区精品 | 亚洲精品视频免费观看 | 夜夜爽99久久国产综合精品女不卡 | 久久久国产一区 | 日韩欧美国产一区二区三区 | 亚洲a视频| www.国产精 | 夜久久 | 国产精品1 | 精品视频在线免费观看 | 91大神新作在线观看 | 国产在线精品一区二区 | 久久激情视频 | 在线激情视频 | 国产主播第一页 | 亚洲视频在线观看 | 欧美黄色片 | 日韩精品久久 | 国产午夜亚洲精品不卡 | 国产成人精品免费视频大全最热 | 中文字幕在线播放不卡 | 在线一区视频 | 亚州精品天堂中文字幕 | av一区在线观看 | 一区二区在线免费观看 | 久热伊人| 99精品欧美一区二区三区 | 成人精品一区二区三区中文字幕 | 成人二区| 久久亚洲一区二区三区四区 | 日韩免费高清视频 | 最新中文字幕第一页视频 | 精品久久九 | 国产精品国产a级 | 美女爽到呻吟久久久久 | 99精品国产一区二区三区 | 黄色片亚洲 | 国产一区亚洲二区三区 | 日本午夜视频 | 中文字幕高清 |