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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

Proteus仿真測量溫度l時lcd1602只亮不顯示溫度

[復制鏈接]
跳轉到指定樓層
樓主
  1. #include"reg51.h"
  2. sbit RS=P3^0;
  3. sbit RW=P3^1;
  4. sbit E=P3^2;
  5. sbit DQ=P3^3;
  6. unsigned int readtemp=0;
  7. unsigned char str[]={"0123456789"};
  8. unsigned char s[]={"Temperature:"};

  9. void delay_18B20(unsigned int i)
  10. {
  11.         for(;i>0;i--);
  12. }

  13. void Init_DS18B20(void)         
  14. {
  15.   unsigned char x=0;
  16.   DQ = 1;          //DQ??
  17.   delay_18B20(8);  //????
  18.   DQ = 0;          //DQ??
  19.   delay_18B20(80); //????480us
  20.   DQ = 1;          //????
  21.   delay_18B20(14);
  22.   x=DQ;            //?x=0?????,?x=1?????
  23.   delay_18B20(20);
  24. }

  25. void WriteOneChar(unsigned char dat)
  26. {
  27.   unsigned char i=0;
  28.   for (i=8; i>0; i--)
  29.   {
  30.    DQ = 0;
  31.    DQ = dat&0x01;
  32.    if(DQ){delay_18B20(1);DQ=1;}
  33.          else{delay_18B20(5);DQ = 1;}
  34.    dat>>=1;
  35.    }
  36. }

  37. unsigned char ReadTemperature(void)
  38. {                                                         
  39. unsigned char a=0,b=0;
  40.         unsigned int temp=0;
  41. Init_DS18B20();
  42. WriteOneChar(0xCC);  // ????????
  43. WriteOneChar(0x44);  // ??????
  44. delay_18B20(100);    //
  45. Init_DS18B20();
  46. WriteOneChar(0xCC);  //????????
  47. WriteOneChar(0xBE);  //???????
  48. delay_18B20(100);
  49. a=ReadOneChar();     //?????
  50. b=ReadOneChar();     //?????
  51. temp=((b*256+a)>>4); //???????16??????
  52. return(temp);
  53. }

  54. void delay(unsigned int t)
  55. {
  56.         unsigned int i=0,j=0;
  57.         for(i=0;i<t;i++)
  58.         {
  59.                 for(j=0;j<120;j++);
  60.         }
  61. }

  62. void writedat(unsigned char dat)
  63. {
  64.         RS=1;
  65.         RW=0;
  66.         E=0;
  67.         P2=dat;
  68.         delay(5);
  69.         E=1;
  70.         E=0;
  71. }

  72. void writecom(unsigned char com)
  73. {
  74.         RS=0;
  75.         RW=0;
  76.         E=0;
  77.         P2=com;
  78.         delay(5);
  79.         E=1;
  80.         E=0;
  81. }

  82. void inttlcd()
  83. {
  84.         writecom(0x38);
  85.         writecom(0x0c);
  86.         writecom(0x06);
  87.         writecom(0x01);
  88. }

  89. void display()
  90. {
  91.         unsigned char temp0=0,temp1=0,temp2=0,i=0;
  92.         temp0=readtemp/100;
  93.         temp0=(readtemp%100)/10;
  94.         temp0=readtemp%10;
  95.         
  96.         writecom(0x80);
  97.         delay(5);
  98.         while(s[i]!='\0')
  99.         {
  100.                 writedat(s[i]);
  101.                 delay(5);
  102.                 i++;
  103.         }
  104.         writecom(0x80+0x40+5);
  105.         writedat(str[temp0]);
  106.         delay(5);
  107.         writedat(str[temp1]);
  108.         delay(5);
  109.         writedat(str[temp2]);
  110.         delay(5);
  111.         writedat(0xdf);
  112.         delay(5);
  113.         writedat('C');
  114.         delay(5);
  115. }

  116. void main()
  117. {
  118.         initlcd();
  119.         while(1)
  120.         {
  121.                 readtemp=ReadTemperature();
  122.                 display();
  123.         }
  124. }
復制代碼


屏幕截圖_20230528_005304.png (55.2 KB, 下載次數: 35)

屏幕截圖_20230528_005304.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2023-5-28 06:22 | 只看該作者
1.缺少函數ReadOneChar()2.LCD初始化函數名不符

3.顯示函數中 temp1、temp2沒有賦值
4.顯示固定字符代碼的位置不當

5.仿真中1602數據接口連接與程序不符



  1. #include"reg51.h"
  2. sbit RS=P3^0;
  3. sbit RW=P3^1;
  4. sbit E=P3^2;
  5. sbit DQ=P3^3;
  6. unsigned int readtemp=0;
  7. unsigned char str[]={"0123456789"};
  8. unsigned char s[]={"Temperature:"};

  9. void delay_18B20(unsigned int i)
  10. {
  11.         for(;i>0;i--);
  12. }

  13. void Init_DS18B20(void)         
  14. {
  15.   unsigned char x=0;
  16.   DQ = 1;          //DQ??
  17.   delay_18B20(8);  //????
  18.   DQ = 0;          //DQ??
  19.   delay_18B20(80); //????480us
  20.   DQ = 1;          //????
  21.   delay_18B20(14);
  22.   x=DQ;            //?x=0?????,?x=1?????
  23.   delay_18B20(20);
  24. }
  25. void WriteOneChar(unsigned char dat)
  26. {
  27.         unsigned char i=0;
  28.         for (i=8; i>0; i--)
  29.         {
  30.                 DQ = 0;
  31.                 DQ = dat&0x01;
  32.                 if(DQ){delay_18B20(1);DQ=1;}
  33.                 else{delay_18B20(5);DQ = 1;}
  34.                 dat>>=1;
  35.         }
  36. }

  37. unsigned char ReadOneChar()
  38. {
  39.         unsigned char i=0;
  40.         unsigned char dat=0;
  41.         for(i=8;i>0;i--)
  42.         {
  43.                 DQ=0;
  44.                 dat>>=1;
  45.                 DQ=1;
  46.                 if(DQ)
  47.                         dat|=0x80;
  48.                 delay_18B20(4);
  49.         }
  50.         return (dat);
  51. }

  52. unsigned char ReadTemperature(void)
  53. {                                                         
  54.         unsigned char a=0,b=0;
  55.         unsigned int temp=0;
  56.         Init_DS18B20();
  57.         WriteOneChar(0xCC);  // ????????
  58.         WriteOneChar(0x44);  // ??????
  59.         delay_18B20(100);    //
  60.         Init_DS18B20();
  61.         WriteOneChar(0xCC);  //????????
  62.         WriteOneChar(0xBE);  //???????
  63.         delay_18B20(100);
  64.         a=ReadOneChar();     //?????
  65.         b=ReadOneChar();     //?????
  66.         temp=((b*256+a)>>4); //???????16??????
  67.         return(temp);
  68. }

  69. void delay(unsigned int t)
  70. {
  71.         unsigned int i=0,j=0;
  72.         for(i=0;i<t;i++)
  73.         {
  74.                 for(j=0;j<120;j++);
  75.         }
  76. }

  77. void writedat(unsigned char dat)
  78. {
  79.         RS=1;
  80.         RW=0;
  81.         E=0;
  82.         P2=dat;
  83.         delay(1);
  84.         E=1;
  85.         E=0;
  86. }

  87. void writecom(unsigned char com)
  88. {
  89.         RS=0;
  90.         RW=0;
  91.         E=0;
  92.         P2=com;
  93.         delay(1);
  94.         E=1;
  95.         E=0;
  96. }

  97. void initlcd()
  98. {
  99.         writecom(0x38);
  100.         writecom(0x0c);
  101.         writecom(0x06);
  102.         writecom(0x01);
  103. }

  104. void display()
  105. {
  106.         unsigned char temp0=0,temp1=0,temp2=0;
  107.         temp0=readtemp/100;
  108.         temp1=(readtemp%100)/10;
  109.         temp2=readtemp%10;
  110.         writecom(0x80+0x40+5);
  111.         writedat(str[temp0]);
  112.         delay(5);
  113.         writedat(str[temp1]);
  114.         delay(5);
  115.         writedat(str[temp2]);
  116.         delay(5);
  117.         writedat(0xdf);
  118.         delay(5);
  119.         writedat('C');
  120.         delay(5);
  121. }

  122. void main()
  123. {
  124.         unsigned char i;
  125.         initlcd();
  126.         writecom(0x80);
  127.         while(s[i]!='\0')
  128.         {
  129.                 writedat(s[i]);
  130.                 delay(5);
  131.                 i++;
  132.         }
  133.         while(1)
  134.         {
  135.                 readtemp=ReadTemperature();
  136.                 display();
  137.         }
  138. }
復制代碼



回復

使用道具 舉報

板凳
ID:68189 發表于 2023-5-28 08:11 | 只看該作者
  1. void writedat(unsigned char dat)
  2. {
  3.         RS=1;
  4.         RW=0;
  5.         E=0;
  6.         P2=dat;
  7.         delay(5);
  8.         E=1;
  9.         E=0;
  10. }

  11. void writecom(unsigned char com)
  12. {
  13.         RS=0;
  14.         RW=0;
  15.         E=0;
  16.         P2=com;
  17.         delay(5);
  18.         E=1;
  19.         E=0;
  20. }
復制代碼

LCD1602的數據端口 與  單片機的驅動端口  連接錯誤。
代碼中,顯示驅動端口是P2   實際仿真圖中卻沒有與P2連接。
P2.0 ---D0   P2.1-----D1   .......P2.7 ------ D7
回復

使用道具 舉報

地板
ID:1080359 發表于 2023-5-28 14:33 | 只看該作者
wulin 發表于 2023-5-28 06:22
1.缺少函數ReadOneChar()2.LCD初始化函數名不符

3.顯示函數中 temp1、temp2沒有賦值

感謝大佬解答,但是我將您的代碼復制后的結果卻是90°C,請問這是怎么回事呢?

屏幕截圖_20230528_142623.png (51.43 KB, 下載次數: 36)

屏幕截圖_20230528_142623.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产精品国产专区不蜜 | 国产精品久久久久久久久久久久冷 | 欧美精品 在线观看 | 久久久精品网站 | 欧美精品一区二区三区在线播放 | 美女一区| 亚洲福利一区 | 国产一级淫片a直接免费看 免费a网站 | 在线播放国产一区二区三区 | 成人在线观看免费 | 超碰成人在线观看 | 国产日韩欧美精品一区二区三区 | sese视频在线观看 | a级毛片免费高清视频 | 人妖videosex高潮另类 | 久久久久久久久综合 | 国产一级电影在线 | 在线看免费的a | 国产精品一区二区三区在线播放 | 欧美日韩精品久久久免费观看 | 欧洲亚洲一区二区三区 | 中文字幕 在线观看 | 国产成人免费视频网站高清观看视频 | 欧美成视频 | 久久69精品久久久久久久电影好 | 久久久国产精品视频 | 羞羞羞视频| 亚洲成人黄色 | 国产精品久久久久aaaa九色 | 免费视频一区二区 | 超级乱淫av片免费播放 | 亚洲精品一区二区二区 | 日日日视频 | 国产精品视频免费看 | 亚洲精品视频在线播放 | 99在线精品视频 | 午夜欧美| 国产美女久久久 | 国产精品观看 | 久久激情网 | 久久国产一区二区三区 |