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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用單片機LM1602和DS18B20顯示溫度只有-25~+25,所以哪里有問題啊?

[復制鏈接]
跳轉到指定樓層
樓主
ID:744425 發表于 2020-6-1 21:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助求助!!!!!

我的問題又更新了。為什么proteus仿真的時候,只有-25~+25的數值顯示是正確的啊?怎么改呢?
  1. #include <REG51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit RS=P2^0;
  5. sbit RW=P2^1;
  6. sbit EN=P2^2;
  7. sbit DQ=P3^4;

  8. uchar code table1[]="Temperature is:";
  9. uint table2[6],temperature,temperatureflag;
  10. uint wei_bai,wei_shi,wei_ge,xiaoshu,fuhao,wendu;

  11. void delay(int a)
  12. {
  13.   int i,j;
  14.   for(i=a;i>0;i--)
  15.     for(j=0;j<110;j++);
  16. }

  17. void delayus(int a)
  18. {
  19.   while(a--);
  20. }

  21. void write_com(uchar com)
  22. {
  23.   P0=com;
  24.   RS=0;RW=0;EN=1;
  25.   delay(10);
  26.   EN=0;
  27. }

  28. void write_dat(uchar dat)
  29. {
  30.   P0=dat;
  31.   RS=1;RW=0;EN=1;
  32.   delay(10);
  33.   EN=0;
  34. }

  35. void init_LM1602()
  36. {
  37.   write_com(0x01);
  38.   write_com(0x38);
  39.   write_com(0x0c);
  40.   write_com(0x06);
  41. }

  42. uchar read_onebyte()
  43. {
  44.   uchar i,temp=0;
  45.   for(i=0;i<8;i++)
  46.   {
  47.     DQ=0;
  48.          temp>>=1;
  49.          DQ=1;
  50.          if(DQ) temp|=0x80;
  51.          delayus(4);
  52.   }
  53.   return temp;
  54. }

  55. void write_onebyte(uchar dat)
  56. {
  57.   uchar i;
  58.   for(i=0;i<8;i++)
  59.   {
  60.     DQ=0;
  61.          DQ=dat&0x01;
  62.          delayus(10);
  63.          DQ=1;
  64.          dat>>=1;
  65.   }
  66. }

  67. void init_DS18B20()
  68. {
  69.   uchar x=0;
  70.   DQ=1;
  71.   delayus(8);
  72.   DQ=0;
  73.   delayus(80);
  74.   DQ=1;
  75.   delay(4);
  76.   x=DQ;
  77.   delayus(20);
  78. }

  79. uchar read_Temparature()
  80. {
  81.   uchar tempL=0,tempH=0;
  82.   init_DS18B20();
  83.   write_onebyte(0xcc);
  84.   write_onebyte(0x44);
  85.   delayus(100);
  86.   init_DS18B20();
  87.   write_onebyte(0xcc);
  88.   write_onebyte(0xbe);
  89.   tempL=read_onebyte();
  90.   tempH=read_onebyte();

  91. /*  if(tempH&0xF0)     //顯示負數
  92.   {
  93.     tempL=~tempL;
  94.     tempH=~tempH;
  95.     temperature=(tempH*256+tempL)/16*(-1)-1;
  96.          temperatureflag=1;
  97.   }
  98.   else              //顯示正數
  99.   {
  100.     temperature=(tempH*256+tempL)*0.0625;
  101.          temperatureflag=0;
  102.   }*/

  103.   temperature=tempH;
  104.   temperature=temperature<<8;
  105.   temperature=temperature|tempL;
  106.   if(temperature>0x0fff)
  107.   {
  108.     temperature=~temperature+2;
  109.         temperatureflag=1;
  110.   }
  111.   else temperatureflag=0;

  112.   temperature=temperature*0.0625*10;
  113.   return temperature;
  114. }

  115. void display()
  116. {
  117.   wendu=read_Temparature();
  118.   if(temperatureflag==1) fuhao=0x2d;
  119.   else fuhao=0x2b;

  120.   wei_bai=wendu/1000+0x30;
  121.   wei_shi=wendu%1000/100+0x30;
  122.   wei_ge=wendu%100/10+0x30;
  123.   xiaoshu=wendu%10+0x30;

  124.   write_com(0xc3);
  125.   write_dat(fuhao);
  126.   write_dat(wei_bai);
  127.   write_dat(wei_shi);
  128.   write_dat(wei_ge);
  129.   write_dat(0x2e);
  130.   write_dat(xiaoshu);
  131.   write_dat(0xdf);
  132.   write_dat(0x43);
  133. }

  134. void main()
  135. {
  136.   uchar i;
  137.   init_LM1602();
  138.   while(1)
  139.   {
  140.     write_com(0x80);
  141.     for(i=0;i<15;i++)
  142.     {
  143.       write_dat(table1[i]);
  144.            delay(5);
  145.     }
  146.     display();
  147.   }
  148. }
復制代碼

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

使用道具 舉報

沙發
ID:744425 發表于 2020-6-1 23:47 | 只看該作者
就是,超出-25~+25范圍時,溫度顯示就不正常了
回復

使用道具 舉報

板凳
ID:213173 發表于 2020-6-2 06:11 | 只看該作者
uchar read_Temparature() 函數數據類型錯誤,應為uint read_Temparature() 。
回復

使用道具 舉報

地板
ID:584814 發表于 2020-6-2 07:46 | 只看該作者
可以實物顯示的未必都能過仿真,所以如果你永遠仿真的話可以問自己的老師
回復

使用道具 舉報

5#
ID:648281 發表于 2020-6-2 08:30 | 只看該作者
把溫度變量 unsigned char 改成 unsigned int
回復

使用道具 舉報

6#
ID:744425 發表于 2020-6-2 11:33 | 只看該作者
man1234567 發表于 2020-6-2 07:46
可以實物顯示的未必都能過仿真,所以如果你永遠仿真的話可以問自己的老師

哎,按道理是要去做實物的,奈何回不了學校就只能仿真了
回復

使用道具 舉報

7#
ID:744425 發表于 2020-6-2 11:35 | 只看該作者
wulin 發表于 2020-6-2 06:11
uchar read_Temparature() 函數數據類型錯誤,應為uint read_Temparature() 。

啊,真的,解決了!謝謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.色婷婷| 黄色大片网 | 在线观看精品视频网站 | 午夜精品视频在线观看 | 国产成人高清视频 | 国产精品揄拍一区二区久久国内亚洲精 | 国产蜜臀| 96av麻豆蜜桃一区二区 | 三级在线观看 | 操久久久 | 亚洲交性| 殴美成人在线视频 | 免费国产一区 | 最新免费视频 | 97国产一区二区精品久久呦 | 伊人久麻豆社区 | 精品久久久久久国产 | 成人av播放 | 亚洲视频欧美视频 | 国产精品一区二区视频 | 久久影院一区 | 成人av激情| 男女羞羞在线观看 | 99久久婷婷国产综合精品电影 | 999免费观看视频 | 最新午夜综合福利视频 | 欧美一级黄 | 天天操,夜夜爽 | 一级看片免费视频 | 91看片网| 欧美一区二区三区在线观看视频 | 男人av在线| 在线观看亚洲 | 欧美aa在线 | 久艹av| 国产精品美女久久久久久久久久久 | 美女一级黄 | 国产乱码一二三区精品 | 国产91久久久久久久免费 | 国产区在线免费观看 | 亚洲精品久久久久avwww潮水 |