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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11639|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

帶注釋的DS18B20測溫單片機(jī)程序源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:300102 發(fā)表于 2018-6-10 14:07 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. #include<reg52.h>  
  2. #include<intrins.h>
  3. #include <math.H>
  4. #define uchar  unsigned char  
  5. #define uint  unsigned int
  6. uchar i,L,M;
  7.   uchar datas[] = {0, 0, 0, 0, 0};
  8. sbit ds=P2^2;
  9. sbit RW = P3^6;
  10. sbit RS = P3^5;  
  11. sbit EN = P3^4;
  12. void delay(uchar us)
  13. {
  14.   while(us--);
  15. }
  16. void delayMs(uint a)
  17. {
  18.     uint i, j;
  19.     for(i = a; i > 0; i--)
  20.         for(j = 100; j > 0; j--);
  21. }
  22. /***LCD1602顯示***/
  23. void Read_busy()
  24. {
  25.     uchar busy;
  26.   P0=0xff;
  27.   RS = 0;
  28.     RW=1;
  29.   do
  30.       {
  31.      EN = 1;
  32.     busy=P0;
  33.     EN=0;
  34.    }
  35.    while(P0&0x80);//0x80:10000000,判斷狀態(tài)字的最后一位是0還是1.如果是0,則為不忙。不忙的話,則可以跳出do....while循環(huán)
  36. }
  37. //讀狀態(tài),將液晶的狀態(tài)發(fā)回給單片機(jī)
  38. void writeCmd(uchar cmd)//寫1602命令一個字節(jié)
  39. {
  40.     Read_busy();//判斷忙
  41.    RS = 0;
  42.     RW=0;
  43.     P0 = cmd;//發(fā)送狀態(tài)字
  44.     EN = 1;//數(shù)據(jù)送過去以后,1602把它讀走。
  45.     EN=0;
  46. }
  47. //1602顯示字符串函數(shù)
  48. void Write_data(uchar date)
  49. {
  50.      Read_busy();//判斷忙不忙   
  51.     RS = 1;
  52.     RW=0;
  53.      P0 = date;//把數(shù)據(jù)送到數(shù)據(jù)線上
  54.      EN = 1;
  55.      EN=0;
  56. }
  57. void init()
  58. {
  59.     RW= 0;
  60.     writeCmd(0x38);
  61.     writeCmd(0x0c);
  62.     writeCmd(0x06);
  63.     writeCmd(0x01);
  64. }
  65. /****18B20函數(shù)****/
  66. void Init()//DS18B20初始化
  67. {
  68. //uchar t;
  69. ds=1;
  70. _nop_();//小小的延時
  71. ds=0;
  72. delay(75);//拉低總線499.45us;
  73. ds=1;
  74. //t=ds;//把ds的值賦給i,等待ds響應(yīng),如果i為1,則傳回主函數(shù)中去,及檢測到了DS18B20的響應(yīng)
  75. delay(20);
  76. ds=1;//釋放總線
  77. _nop_();
  78. //return(t);
  79. }
  80. uchar read_byte()//讀數(shù)據(jù)
  81. {
  82. uchar i,j,dat;
  83.   for(i=0;i<8;i++)
  84. {
  85.    ds=0;
  86.    _nop_();
  87.    ds=1;//釋放總線
  88.   _nop_();
  89.   j=ds;//獲取數(shù)據(jù)
  90.   delay(10);
  91.   ds=1;
  92.   _nop_();
  93.   dat=(j<<7|dat>>1);//j左移7位,dat右移。一個字節(jié)便被存進(jìn)去了
  94.     return(dat);
  95. }
  96. }
  97. void write_byte(uchar dat)//寫數(shù)據(jù)
  98. {
  99. uchar i;
  100. for(i=0;i<8;i++)
  101.   {
  102.     ds=0;
  103.   _nop_();
  104.   ds=dat&0x01;//當(dāng)dat最低位為1時。與上以后還是1.所以就滿足時序圖的要求了。
  105.   delay(10);
  106.     ds=1;//釋放總線,準(zhǔn)備下一次數(shù)據(jù)輸入
  107.   _nop_();//釋放總線要保持1us
  108.   dat>>=1;
  109.   }
  110. }
  111. void tempcod(uint t) //溫度轉(zhuǎn)化。。。顯示溫度值函數(shù),t傳遞的是整形的溫度值(t是傳過來的溫度)
  112. {
  113.     uchar temp;
  114.     datas[0] = (temp / 10)+'0';//十位轉(zhuǎn)ASCLL碼
  115.     datas[1] = (temp % 10)+'0';//個位轉(zhuǎn)ASCLL碼
  116.    /* datas[2] = '\'';
  117.     datas[3] = 'c';
  118.     datas[4] = '0';//字符串結(jié)束符
  119.   Write_data(12,1,datas[]);//表示顯示在橫坐標(biāo)為12,縱坐標(biāo)在第二行的地方。*/
  120. }
  121. void display()
  122. {
  123. writeCmd(0x46|0x80);
  124. Write_data(datas[0]);//顯示十位
  125.   Write_data(datas[1]);//顯示個位
  126.   Write_data('.');
  127.   Write_data(0xdf);
  128.   Write_data('c');
  129. }
  130. main()
  131. {
  132. writeCmd(0x38);//顯示設(shè)置16*2顯示
  133.   writeCmd(0x0c);//開顯示
  134. writeCmd(0x06);//地址指針加一
  135. writeCmd(0x80);//顯示的位置(地址)
  136. writeCmd(0x01);//清屏
  137. // Write_data(i);
  138. //while(1);//讓程序一直停在這里
  139. while(1)
  140. {
  141. Init();
  142. write_byte(0xcc);//跳過ROM指令
  143. write_byte(0x44);//發(fā)送溫度轉(zhuǎn)化指令
  144. Init();
  145.   write_byte();//讀取暫存器的值
  146.   L=read_byte();//低八位
  147.   M=read_byte();//高八位
  148.   i=M;i<<=8;
  149.   i|=L;
  150.    i=i*0.0625*10+0.5;
  151. display(i);
  152. }
  153. }


復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:633896 發(fā)表于 2019-11-1 15:50 | 只看該作者
樓主  你這里面 display里怎么可以放i變量  我用你的程序 編譯程序報(bào)錯
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国内精品久久影院 | 欧美午夜精品久久久久久浪潮 | 日韩欧美国产一区二区三区 | 欧美一区二区三区在线观看视频 | 日韩视频一区二区在线 | 无人区国产成人久久三区 | 一区精品视频 | 中文字幕二区 | 91文字幕巨乱亚洲香蕉 | 日本二区在线观看 | www.欧美视频 | 91免费电影 | 国产乱一区二区三区视频 | 日韩二区 | 九九伊人sl水蜜桃色推荐 | 91麻豆产精品久久久久久夏晴子 | 97av视频| www.狠狠干 | 欧美99久久精品乱码影视 | 成人av观看 | 欧美成人在线网站 | 91久久精品日日躁夜夜躁欧美 | 在线āv视频 | 欧美成人精品一区二区男人看 | 亚洲444eee在线观看 | 国产传媒毛片精品视频第一次 | 久久国产高清 | 欧美日韩国产一区二区 | 91日韩| 国产超碰人人爽人人做人人爱 | 欧美成年网站 | 国产精品电影在线观看 | 久久久高清 | 91在线免费观看网站 | 国产乱码精品一区二区三区av | 精品国产女人 | 国产片一区二区三区 | 亚洲中午字幕 | 黄篇网址| 国产高清精品网站 | 欧美国产日韩在线观看 |