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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

ds18b20數碼管顯示開機溫度一直是-0.06,數碼管不能實時顯示溫度,請大家幫忙看看是...

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

正文摘要:

程序在這里 #include<reg51.h> extern unsigned char code NumberData[12]; typedef  unsigned char uchar; typedef  unsigned int uint; sbit BUS=P2^6;//溫度傳感器接口 sbit LED_O ...

回復

ID:213173 發表于 2021-6-23 22:56
主要是時序問題


  1. #include<reg51.h>
  2. extern unsigned char code NumberData[12];
  3. typedef  unsigned char uchar;
  4. typedef  unsigned int uint;
  5. sbit BUS=P2^6;//溫度傳感器接口
  6. sbit LED_ONE = P2^0;//第一位數碼管位選端口
  7. sbit LED_TWO = P2^1;//第一位數碼管位選端口
  8. sbit LED_THREE = P2^2;//第一位數碼管位選端口
  9. sbit LED_FOUR = P2^3;//第一位數碼管位選端口
  10. volatile uchar GeWei,ShiWei,BaiWei,_Geiwei,_ShiWei;
  11. volatile bit Convert_yes_not=0;
  12. volatile char Negative=0;
  13. /**********************************
  14. 數碼管編碼
  15. **********************************/
  16. code unsigned char NumberData[12] ={
  17.       0x3f,//0
  18.           0x06,//1
  19.           0x5b,//2
  20.           0x4f,//3
  21.           0x66,//4
  22.           0x6d,//5
  23.           0x7d,//6
  24.           0x07,//7
  25.           0x7f,//8
  26.           0x6f,//9         
  27.           0x80,//DP
  28.           0x40 //negative
  29. };
  30. //延時子函數
  31. void Delay_4xN_US(uchar us)
  32. {
  33.     while(--us);
  34. }
  35. //初始化子函數
  36. void Timer0_Init()
  37. {
  38.         TMOD = 0x01;//定時器0模式1-16位定時器-
  39.         TCON = 0x00;//清零TCON
  40.         ET0  = 1;   //允許定時器0中斷
  41.         TH0  = 0x3c;//定時100ms
  42.         TL0  = 0xb0;
  43.         TR0  = 1;   //啟動定時器0
  44. }
  45. void DS18B20_Recover()
  46. {
  47.         BUS = 1;
  48.         Delay_4xN_US(5);//4us
  49.         BUS = 0;
  50.         Delay_4xN_US(200);//800us
  51.         Delay_4xN_US(200);
  52.         BUS = 1;
  53.         Delay_4xN_US(50);
  54.         BUS = 1;
  55.         Delay_4xN_US(25);
  56. }
  57. void SendProc(uchar proc)
  58. {
  59.         uchar i=0;
  60.         for(i=8; i>0; i--)
  61.         {
  62.                 BUS = 0;
  63.                 BUS = proc&0x01;
  64.                 Delay_4xN_US(25);
  65.                 BUS = 1;
  66.                 proc>>=1;
  67.         }
  68.         Delay_4xN_US(25);
  69. }
  70. uchar ReadOneByte()
  71. {
  72.         uchar i;
  73.         uchar dat=0;
  74.         for (i=8;i>0;i--)
  75.         {
  76.                 BUS = 0;
  77.                 dat>>=1;
  78.                 BUS = 1;
  79.                 if(BUS)
  80.                         dat|=0x80;
  81.                 Delay_4xN_US(25);
  82.         }
  83.         return dat;
  84. }
  85. void LED_DATE_Convert(uchar T_L,uchar T_H)
  86. {
  87.         uchar ZhengShu,MiddleShu;
  88.         uint XiaoShu;
  89.         if((T_H>>4)>0)//負數
  90.         {
  91.         Negative = 0xff;
  92.         MiddleShu =((~(T_L&0x0f))&0x0f)+1;
  93.         if(MiddleShu>>4>0)//有進位
  94.         {
  95.         ZhengShu = (~T_H)*16+((~T_L)>>4)+1;
  96.         XiaoShu =(MiddleShu&0x0f)*625;
  97.         }
  98.         else
  99.         {
  100.         ZhengShu = (~T_H)*16+((~T_L)>>4);
  101.         XiaoShu =(MiddleShu&0x0f)*625;
  102.         }
  103.         GeWei  = ZhengShu%10;
  104.         ShiWei = (ZhengShu/10)%10;
  105.         _Geiwei= XiaoShu/1000;
  106.         _ShiWei= (XiaoShu/100)%10;
  107.        
  108.         }
  109.         else//正數
  110.         {
  111.         Negative = 0x00;
  112.         ZhengShu = T_H*16+(T_L>>4);
  113.         XiaoShu =(T_L&0x0f)*625;
  114.         GeWei  = ZhengShu%10;
  115.         ShiWei = (ZhengShu/10)%10;
  116.         BaiWei = ZhengShu/100;
  117.         _Geiwei= XiaoShu/1000;
  118.         _ShiWei= (XiaoShu/100)%10;
  119.         }        
  120. }
  121. void LED_Show()
  122. {
  123.         switch(Negative)
  124.         {
  125.         case 0x00:        //正數
  126.         if(BaiWei!=0)
  127.         {
  128.         P0 = NumberData[BaiWei];
  129.         LED_ONE = 0;
  130.         Delay_4xN_US(100);//400us
  131.         LED_ONE = 1;
  132.         P0 = NumberData[ShiWei];
  133.         LED_TWO = 0;
  134.         Delay_4xN_US(100);//400us
  135.         LED_TWO = 1;
  136.         P0 = NumberData[GeWei]|NumberData[10];
  137.         LED_THREE = 0;
  138.         Delay_4xN_US(100);//400us
  139.         LED_THREE = 1;
  140.         P0 = NumberData[_Geiwei];
  141.         LED_FOUR = 0;
  142.         Delay_4xN_US(100);//400us
  143.         LED_FOUR = 1;
  144.         }
  145.         else
  146.         {
  147.         P0 = NumberData[ShiWei];
  148.         LED_ONE = 0;
  149.         Delay_4xN_US(100);//400us
  150.         LED_ONE = 1;
  151.         P0 = NumberData[GeWei]|NumberData[10];
  152.         LED_TWO = 0;
  153.         Delay_4xN_US(100);//400us
  154.         LED_TWO = 1;
  155.         P0 = NumberData[_Geiwei];
  156.         LED_THREE = 0;
  157.         Delay_4xN_US(100);//400us
  158.         LED_THREE = 1;
  159.         P0 = NumberData[_ShiWei];
  160.         LED_FOUR = 0;
  161.         Delay_4xN_US(100);//400us
  162.         LED_FOUR = 1;
  163.         }
  164.         break;
  165.         case 0xff:        //負數
  166.         if(ShiWei!=0)
  167.         {
  168.         P0 = NumberData[11];
  169.         LED_ONE = 0;
  170.         Delay_4xN_US(100);//400us
  171.         LED_ONE = 1;
  172.         P0 = NumberData[ShiWei];
  173.         LED_TWO = 0;
  174.         Delay_4xN_US(100);//400us
  175.         LED_TWO = 1;
  176.         P0 = NumberData[GeWei]|NumberData[10];
  177.         LED_THREE = 0;
  178.         Delay_4xN_US(100);//400us
  179.         LED_THREE = 1;
  180.         P0 = NumberData[_Geiwei];
  181.         LED_FOUR = 0;
  182.         Delay_4xN_US(100);//400us
  183.         LED_FOUR = 1;
  184.         }
  185.         else
  186.         {
  187.         P0 = NumberData[11];
  188.         LED_ONE = 0;
  189.         Delay_4xN_US(100);//400us
  190.         LED_ONE = 1;
  191.         P0 = NumberData[GeWei]|NumberData[10];
  192.         LED_TWO = 0;
  193.         Delay_4xN_US(100);//400us
  194.         LED_TWO = 1;
  195.         P0 = NumberData[_Geiwei];
  196.         LED_THREE = 0;
  197.         Delay_4xN_US(100);//400us
  198.         LED_THREE = 1;
  199.         P0 = NumberData[_ShiWei];
  200.         LED_FOUR = 0;
  201.         Delay_4xN_US(100);//400us
  202.         LED_FOUR = 1;
  203.         }
  204.         break;
  205.         }
  206. }
  207. void Timer_Interrupt() interrupt 1
  208. {
  209.         uchar T_dat_L,T_dat_H;
  210.         P0=0x00;
  211.         TH0  = 0x3c;//定時100ms
  212.         TL0  = 0xb0;
  213.         if(Convert_yes_not==0)
  214.         {
  215.         DS18B20_Recover();//復位
  216.         SendProc(0xcc);//ROM跳過指令
  217.         SendProc(0x44);//數據轉換指令
  218.         Convert_yes_not=1;
  219.         }
  220.         else
  221.         {
  222.         DS18B20_Recover();//復位
  223.         SendProc(0xcc);//ROM跳過指令
  224.         SendProc(0xbe);//數據讀取指令
  225.         T_dat_L = ReadOneByte();//讀取數據
  226.         T_dat_H = ReadOneByte();//讀取數據
  227.         LED_DATE_Convert(T_dat_L,T_dat_H);
  228.         Convert_yes_not=0;
  229.         }
  230. }
  231. //主函數
  232. void main()
  233. {
  234.         P0=0x00;
  235.         P2=0xff;
  236.         DS18B20_Recover();//復位
  237.         Timer0_Init();
  238.         EA =1;//開放中斷
  239.         while(1)
  240.         {
  241.                 LED_Show();
  242.         }
  243. }
復制代碼



ID:123289 發表于 2021-6-23 16:29
先把R3改為100歐。
ID:739545 發表于 2021-6-23 10:35
18b20為啥接那么多電阻

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91色视频在线观看 | 91精品国产乱码久久久久久 | 日本国产精品视频 | 黄色免费在线观看网址 | 一级片免费视频 | 欧美激情精品久久久久久变态 | 在线一区视频 | 欧美精品一区二区三区在线 | 91视频88av | 国产一区二区三区久久久久久久久 | 日韩一区二区三区视频 | 久久久久国产一区二区三区四区 | 一级黄色短片 | 欧美a在线看 | 又黑又粗又长的欧美一区 | 国产精品一区二区在线 | av一二三区 | 亚洲最新在线视频 | 在线午夜电影 | 老牛影视av一区二区在线观看 | 国产在线中文字幕 | 天天操欧美 | 亚洲视频在线看 | 夜夜夜操| 青青草在线视频免费观看 | 欧美精品啪啪 | 久久精品99久久 | 日韩区| 久久综合久色欧美综合狠狠 | 成人免费av | 国产一区二区观看 | 久久婷婷av | 亚洲国产精品视频一区 | 午夜码电影 | 精品亚洲一区二区 | 国产欧美精品一区二区色综合朱莉 | 一区二区在线 | 亚洲电影一级片 | 91操操操| 欧美一级在线免费 | 国产精品精品视频一区二区三区 |