欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機溫度計仿真問題 加減控制不了數(shù)碼管的變化

[復(fù)制鏈接]
ID:253996 發(fā)表于 2017-12-12 13:59 | 顯示全部樓層 |閱讀模式
QQ截圖20171209210036.png

數(shù)碼管顯示只有這個界面:
QQ截圖20171212135752.png

整體為
QQ截圖20171212135829.png

我在傳感器上加減控制不了數(shù)碼管的變化。

單片機源程序如下:
  1. #include <REG52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int      
  4. sbit DQ = P1^0;
  5. sbit RS = P1^4;
  6. sbit RW = P1^6;
  7. sbit EN = P1^5;
  8. union {
  9.     uchar c[2];
  10.         uint x;
  11. } temp;
  12. uchar flag;
  13. uint cc,cc2;
  14. float cc1;
  15. uchar buff1[13] = {"temperature:"};
  16. uchar buff2[6] = {"+00.0"};
  17. //檢查忙函數(shù)
  18. void fbusy()
  19. {
  20.     P2 = 0xff;
  21.         RS = 0;
  22.         RW = 1;
  23.         EN = 1;
  24.         EN = 0;
  25.         while((P2 & 0x80))
  26.         {
  27.            EN = 0;
  28.            EN = 1 ;
  29.         }
  30. }
  31. //寫命令函數(shù)
  32. void wc51r(uchar j)
  33. {
  34.    fbusy();
  35.    EN = 0;
  36.    RS = 0;
  37.    RW = 0;
  38.    EN = 1;
  39.    P2 = j;
  40.    EN = 0;
  41. }
  42. //寫數(shù)據(jù)函數(shù)
  43. void wc51ddr(uchar j)
  44. {
  45.    fbusy();
  46.    EN = 0;
  47.    RS = 1;
  48.    RW = 0;
  49.    EN = 1;
  50.    P2 = j;
  51.    EN = 0;
  52. }
  53. void init()
  54. {
  55.    wc51r(0x01);
  56.    wc51r(0x38);
  57.    wc51r(0x0c);
  58.    wc51r(0x06);
  59. }
  60. //unchar useconds;
  61. void delay(uint useconds)
  62. {
  63.    for(; useconds>0; useconds--);
  64. }
  65. uchar ow_reset(void)
  66. {
  67.    uchar presence;
  68.    DQ = 0;
  69.    delay(50);
  70.    DQ = 1;
  71.    delay(3);
  72.    presence = DQ;
  73.    delay(25);
  74.    return(presence);
  75. }
  76. uchar read_byte(void)
  77. {
  78.    uchar i;
  79.    uchar value = 0;
  80.    for (i=8; i>0; i--)
  81.    {
  82.      value >>= 1;
  83.          DQ = 0;
  84.          DQ = 1;
  85.          delay(1);
  86.          if(DQ) value |=0x80;
  87.          delay(6);
  88.         }
  89.         return(value);
  90. }
  91. void write_byte(uchar val)
  92. {
  93.    uchar i;
  94.    for (i=8; i>1; i--)
  95.    {
  96.      DQ = 0 ;
  97.          DQ = val&0x01;
  98.          delay(5);
  99.          DQ=1;
  100.          val = val/2;
  101.    }
  102.    delay(5);
  103. }

  104. void Read_Temperature(void)
  105. {
  106.    ow_reset();
  107.    write_byte(0xCC);
  108.    write_byte(0xBE);
  109.    temp.c[1] = read_byte();
  110.    temp.c[0] = read_byte();
  111.    ow_reset();
  112.    write_byte(0xCC);   
  113.    write_byte(0x44);
  114.    return;
  115. }
  116. void main()
  117. {
  118.    uchar k;
  119.    delay(10);
  120.    EA = 0;
  121.    flag = 0;
  122.    init();
  123.    wc51r(0x80);
  124.    for (k=0; k<13; k++)
  125.    {wc51ddr(buff1[k]);}
  126.    while(1)
  127.    {
  128.      delay(10000);
  129.          Read_Temperature();
  130.          cc = temp.c[0]*256.0 + temp.c[1];
  131.          if  (temp.c [0] > 0xf8)   {flag=1; cc=~cc+1;}
  132.          else flag=0;
  133.          cc1 = cc*0.0625;
  134.          cc2 = cc1*100;
  135.          buff2[1] = cc2/1000 + 0x30;
  136.          if (buff2[1] == 0x30)
  137.              buff2[1] = 0x20;
  138.                  buff2[2] = cc2/100        - (cc2/1000)*10 + 0x30;
  139.                     buff2[4] = cc2/10        - (cc2/100)*10 + 0x30;
  140.                  if (flag==1)
  141.                  buff2[0] = '-';
  142.      else
  143.              buff2[0] = '+';
  144.      wc51r(0xc5);
  145.          for (k=0; k<6; k++)
  146.          { wc51ddr (buff2[k]);}
  147.    }
  148. }   
復(fù)制代碼

回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2017-12-12 17:54 | 顯示全部樓層
本帖最后由 zl2168 于 2017-12-12 18:00 編輯

給你介紹一個正確有效看得懂的案例,自己對照查錯吧!
實例97  一線式DS18B20測溫
⒈ DS18B20簡介
⑴ 內(nèi)部組織結(jié)構(gòu)    …
⑵ 操作步驟和操作指令    …
⒉ 電路設(shè)計    …
⒊ 程序設(shè)計    …
⒋ Keil調(diào)試    …
⒌ Proteus仿真    …
實例97 DS18B20測溫.rar (51.78 KB, 下載次數(shù): 9)
DS18B20 測溫.jpg
Proteus仿真一下,確認有效。以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機應(yīng)用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。仿真電路和Hex文件能在清華出版社網(wǎng)站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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