亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2589|回復(fù): 0
收起左側(cè)

51單片機(jī)讀取ds18b20序列碼的程序源碼 LCD12864顯示

[復(fù)制鏈接]
ID:410111 發(fā)表于 2019-1-8 08:45 | 顯示全部樓層 |閱讀模式
讀取ds18b20序列碼

單片機(jī)源程序如下:
  1. //讀取序列碼 用12864以16進(jìn)制的形式顯示64位序列碼
  2. #include "reg52.h"
  3. #include "intrins.h"
  4. #define focs   11059200UL
  5. typedef unsigned char  uc ;
  6. typedef unsigned int ui        ;
  7. sbit ds = P2^2;
  8. sbit ds1 = P2^1;
  9. sbit we = P2^7;
  10. sbit du = P2^6;
  11. sbit RW = P3^6;
  12. sbit EN = P3^4;
  13. sbit RSB = P3^7;
  14. sbit RS = P3^5;
  15. #define ui unsigned int
  16. #define uc unsigned char
  17. uc  code data2[] = {"序列碼:"};
  18. uc data4[] = {"0000000000000000"};
  19. void delay(ui i)        //毫秒級(jí)延時(shí)
  20. {
  21.         ui x,y;
  22.         for(x = i;x > 0;x--)
  23.                 for(y = 120;y > 0;y--);
  24. }
  25. void  write_cmd12864(uc m)//12864寫(xiě)指令
  26. {
  27.          RS = 0;
  28.         RW = 0;
  29.         EN = 0;
  30.         P0 = m;
  31.         delay(5);
  32.         EN = 1;
  33.         delay(5);
  34.         EN = 0;
  35. }
  36. void write_data12864(uc m)//121864寫(xiě)數(shù)據(jù)
  37. {
  38.         RS = 1;
  39.         RW = 0;
  40.         EN = 0;
  41.         P0 = m;
  42.         delay(5);
  43.         EN = 1;
  44.         delay(5);
  45.         EN = 0;
  46. }
  47. void init_12864()//12864初始化
  48. {
  49.         we = 0;
  50.         du = 0;
  51.         RSB = 1;
  52.         write_cmd12864(0x30);
  53.         delay(6);
  54.         write_cmd12864(0x0c);         
  55.         delay(6);
  56.         write_cmd12864(0x01);
  57.         delay(6);                        
  58. }

  59. void delayus(uc i)//  微妙級(jí)延時(shí)
  60. {
  61.         while(i--);
  62. }
  63. void init()          //ds18b20初始化
  64. {
  65.         ds = 1;
  66.         _nop_();
  67.         ds = 0;
  68.         delayus(75);
  69.         ds = 1;
  70.         delayus(4);//延時(shí)56us
  71.         delayus(20); //延時(shí)164us
  72.         ds = 1;
  73.         delayus(30);//延時(shí)250us               
  74. }
  75. void write(uc data1)  //ds18b20寫(xiě)數(shù)據(jù)
  76. {
  77.         uc i;
  78.         for(i = 0;i < 8;i++)
  79.         {
  80.                 delayus(0);
  81.                 ds = 0;
  82.                 delayus(0);
  83.                 ds = data1&0x01;
  84.                 data1 = data1>>1;
  85.                 delayus(10);
  86.                 ds = 1;
  87.                 _nop_();
  88.         }
  89.         ds = 1;
  90.         _nop_();        
  91. }
  92. uc read_byte()        //ds18b20讀數(shù)據(jù)
  93. {
  94.         uc i,j = 0,data2,data3;
  95.         
  96.         for(i = 0;i < 8;i++)
  97.         {
  98.                 ds = 0;
  99.                 _nop_();
  100.                 ds = 1;
  101.                 _nop_();
  102.                 data3 = ds;
  103.                 delayus(10);
  104.                 ds = 1;
  105.                 _nop_();
  106.                 data2 = (data3<<7)|(data2>>1);
  107.         }
  108.         return data2;
  109. }
  110. void ds18b20_main(ui sum[])
  111. {
  112.         ui i;
  113.         init();
  114.         write(0x33);
  115.            for(i = 0; i < 8;i++)
  116.         {
  117.                 sum[i] =read_byte();
  118.         }
  119. }
  120. void main()
  121. {
  122.            ui i,j,sum1[8];
  123.         delay(100);
  124. //        while(1)
  125. //        {
  126.                 ds18b20_main(sum1);
  127.                 for(i = 0;i < 16;i = i+2)  //  用16進(jìn)制顯示序列碼
  128.                 {
  129.                         if(sum1[j]/16>9)
  130.                                 data4[i] = 48+7+sum1[j]/16;
  131.                         else
  132.                                 data4[i] = 48+sum1[j]/16;
  133.                         if(sum1[j]%16>9)
  134.                                 data4[i+1] = 48+7+sum1[j]%16;
  135.                         else
  136.                                 data4[i+1] = 48+sum1[j]%16;
  137.                         j++;        
  138.                 }  
  139.                 init_12864();
  140.                 delay(5);
  141.                 write_cmd12864(0x80);
  142.                 delay(5);
  143.                 i = 0;
  144.                 while(data2[i]!='\0')
  145.                 {
  146.                         write_data12864(data2[i]);
  147.                         i++;
  148.                 }
  149.                 i = 0;
  150.                 write_cmd12864(0x90);
  151.                 delay(5);
  152.                 while(data4[i]!='\0')
  153.                 {
  154.                         write_data12864(data4[i]);
  155.                         i++;
  156.                 }
  157.                 while(1);
  158. //        }
  159. }
復(fù)制代碼

所有資料51hei提供下載:
ds18b20讀取序列碼.rar (28.9 KB, 下載次數(shù): 31)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表