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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2225|回復: 0
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:410111 發表于 2019-1-8 08:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
讀取ds18b20序列碼

單片機源程序如下:
  1. //讀取序列碼 用12864以16進制的形式顯示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)        //毫秒級延時
  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寫指令
  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寫數據
  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)//  微妙級延時
  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);//延時56us
  71.         delayus(20); //延時164us
  72.         ds = 1;
  73.         delayus(30);//延時250us               
  74. }
  75. void write(uc data1)  //ds18b20寫數據
  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讀數據
  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進制顯示序列碼
  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. }
復制代碼

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



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人av电影 | 日韩欧美国产精品一区二区三区 | 正在播放国产精品 | 91xxx在线观看 | 亚洲天堂一区 | 找个黄色片 | 久久美女视频 | 欧美激情欧美激情在线五月 | 午夜精品一区二区三区在线观看 | 一区二区精品 | 久久69精品久久久久久久电影好 | 欧美激情在线精品一区二区三区 | 亚州精品天堂中文字幕 | 午夜男人免费视频 | 伊人电影院av | 欧美寡妇偷汉性猛交 | 自拍偷拍第一页 | 日本高清中文字幕 | 黑人一级片视频 | 亚洲福利电影网 | 国产精品国产三级国产aⅴ入口 | 久草福利| 精品欧美一区二区三区久久久 | 欧美中文字幕在线观看 | 一区二区三区久久 | 精精国产视频 | 性一交一乱一伦视频免费观看 | 精品国产乱码一区二区三区a | 国产精品久久久久aaaa樱花 | 91视频18 | av网站免费观看 | 亚洲欧美成人影院 | 天天操狠狠操 | 美女网站视频免费黄 | 亚洲精品久久久久久久久久吃药 | 人人鲁人人莫人人爱精品 | 久久毛片 | 欧美视频三区 | 九色.com| 亚洲高清视频在线观看 | 久久久精品一区 |