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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6341|回復: 11
收起左側

關于protues 數(shù)碼管的顯示

[復制鏈接]
ID:357189 發(fā)表于 2018-6-25 12:38 | 顯示全部樓層 |閱讀模式
顯示溫度 有的時候 會顯示 一些亂的數(shù)  
是不是 延時的問題?  

這是 溫度顯示的問題

這是 溫度顯示的問題

控制下限 無法顯示負數(shù)

控制下限  無法顯示負數(shù)

按鍵 設置上下限 溫度時   不能調成負數(shù)    和這個讓我頭皮發(fā)麻  完全不知道原因
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit d1=P2^2;
  5. sbit d2=P2^1;
  6. sbit d3=P2^0;
  7. sbit d4=P2^3;
  8. sbit key1=P3^0;
  9. sbit key2=P3^1;
  10. sbit key3=P3^2;
  11. sbit beep=P3^3;
  12. sbit DS=P1^2;
  13. sbit ACC_7=ACC^7;
  14. uint count=700,alarm=-300;
  15. uchar shu;
  16. uchar shi,fen,ri,yue,nian,xq,miao,ss;      
  17. uint temp;             // ??????
  18. uchar flag;
  19. uchar code tab[]=
  20. {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  21. uchar code tab1[]=//С???????
  22. {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

  23. void delay(uint z)
  24. {
  25.    uint x,y;
  26.    for(x=z;x>0;x--)
  27.    for(y=120;y>0;y--);
  28. }
  29. void dsreset()//????λ
  30. {     

  31.    uint i;
  32.    DS=0;
  33.    i=103;
  34.    while(i>0)i--;
  35.    DS=1;
  36.    i=4;
  37.    while(i>0)i--;
  38. }
  39. uchar tmpread()   //???????
  40. {
  41.               uchar j,k,dat;
  42.               uint i;
  43.     for(j=1;j<=8;j++)
  44.    {
  45.    DS=0;i++;          //???
  46.    DS=1;i++;i++;
  47.    k=DS;
  48.    i=8;while(i>0)i--;
  49.    dat=(k<<7)|(dat>>1);//?????????????λ????????????????DAT??
  50.     }
  51.     return(dat);

  52. }

  53. void tmpwritebyte(uchar dat)   //д??????
  54. {
  55.    uint i;
  56.    uchar j;
  57.    bit testb;
  58.    for(j=1;j<=8;j++)
  59.     {
  60.    testb=dat&0x01;
  61.    dat=dat>>1;
  62.    if(testb)     //д 1
  63.    {
  64.      DS=0;
  65.      i++;i++;
  66.      DS=1;
  67.      i=8;while(i>0)i--;
  68. }
  69. else
  70.     {
  71.    DS=0;       //д 0
  72.    i=8;while(i>0)i--;
  73.    DS=1;
  74.    i++;i++;
  75.     }
  76.   }

  77. }
  78. void tmpchange()  //DS18B20???任
  79. {
  80.     dsreset();
  81.     delay(1);
  82.     tmpwritebyte(0xcc);  //??????????rom
  83.     tmpwritebyte(0x44);  //??????
  84. }

  85. uint tmp()               //??????
  86. {
  87.      float tt;
  88.      uchar a,b;
  89.      dsreset();
  90.      delay(1);
  91.      tmpwritebyte(0xcc);
  92.      tmpwritebyte(0xbe);
  93.      a=tmpread(); //a??????8λ
  94.      b=tmpread(); //b??????8λ
  95.      temp=b;     //temp?????UINT 16bit
  96.      temp<<=8;             //??????????????
  97.      temp=temp|a;   
  98.      if(b>127)
  99.      {
  100.       flag=1;
  101.       ss=flag;
  102.       temp=~temp+1;
  103. }
  104.      tt=temp*0.0625; // temp/16 ????????????tt.7λ????,4λС??
  105.      temp=tt*10+0.5; // ??????????????λС??
  106.      return(temp);
  107. }

  108. void displayTemp(uint temp)   //?????????

  109. {
  110.      uchar ge,shi,bai,qian,ser;
  111.      d1=0;
  112.      d1=0;
  113.      d3=0;
  114.      d4=0;
  115.      dsreset();
  116.      ser=temp/10;     //???????λ??????????
  117.      SBUF=ser;
  118.      qian=temp/1000;
  119.      bai=temp/100%10; // ??λ????
  120.      shi=temp/10%10;   // ?λ????
  121.      ge=temp%10;   // ??λ????

  122.      if(flag==1)
  123. {
  124.      flag=0;
  125.      P0=0xbf;
  126.      d1=1;
  127.      delay(2);
  128.       d1=0;
  129. }
  130. if(qian!=0)
  131. {
  132.      P0=tab[qian];
  133.      d1=1;
  134.      delay(2);
  135.      d1=0;            
  136. }
  137. else
  138. {
  139.      P0=0xff;
  140.      d1=1;
  141.      delay(2);
  142.      d1=0;            
  143. }
  144. if(temp>99)
  145. {
  146.       P0=tab[bai];
  147.       d2=1;
  148.       delay(2);
  149.       d2=0;
  150. }
  151.       P0=tab1[shi];
  152.       d3=1;
  153.       delay(2);
  154.       d3=0;
  155.       P0=tab[ge];
  156.       d4=1;
  157.       delay(2);
  158.       d4=0;
  159. }
  160. uint keyscan()
  161. {
  162.       if(key1==0)
  163.     {
  164.       delay(5);
  165.       if(key1==0)
  166.         {
  167.       while(!key1);
  168.       shu++;
  169. }
  170.     }
  171. if(key2==0)
  172.    {
  173.       delay(5);
  174.       if(key2==0)
  175. {
  176.       while(!key2);
  177.       count=count+10;
  178.       if(shu==2)
  179.      {
  180.       alarm+=10;
  181. }                                                                  
  182. }
  183. }
  184.       if(key3==0)
  185. {
  186.       delay(5);
  187.       if(key3==0)
  188.    {
  189.       while(!key3);
  190.       count=count-10;
  191.       if(shu==2)
  192.       {
  193.        alarm-=10;
  194. }
  195. }
  196. }
  197. return(count);
  198. }
  199. void main()
  200. {
  201.     beep=0;
  202.     delay(10);
  203.     while( 1 )
  204. {
  205.     tmpchange();
  206.     if(shu==0)
  207. {
  208.     displayTemp(tmp( ));
  209. }
  210.     keyscan();
  211.     if(shu==1)
  212. {
  213.     displayTemp(count);
  214. }
  215.      if(shu==2)
  216. {
  217.      displayTemp(alarm);
  218.                             }
  219. if(shu==3)
  220. {
  221.       shu=0;            
  222. }
  223.      if(temp>count||(temp<alarm))
  224. {
  225.      beep=0;
  226. }
  227.      else
  228.      beep=1;
  229. }
  230. }
復制代碼
temp.zip (103.74 KB, 下載次數(shù): 16)




評分

參與人數(shù) 1黑幣 +1 收起 理由
jscsd226 + 1 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:234075 發(fā)表于 2018-6-25 12:57 | 顯示全部樓層
如果讀取數(shù)據(jù)有誤會顯示不正確的數(shù)字,但如果顯示多余的小數(shù)點時,就應該是你的數(shù)碼管顯示數(shù)組問題。protues大多用的共陰極,你uchar code tab[]=定義的是共陽極代碼
回復

使用道具 舉報

ID:273292 發(fā)表于 2018-6-25 13:33 | 顯示全部樓層
動態(tài)顯示,掃描時間控制問題吧
回復

使用道具 舉報

ID:358231 發(fā)表于 2018-6-25 13:41 | 顯示全部樓層
延時時間加長一點試一下
回復

使用道具 舉報

ID:358386 發(fā)表于 2018-6-25 13:45 | 顯示全部樓層
延時有問題
回復

使用道具 舉報

ID:266660 發(fā)表于 2018-6-25 14:37 | 顯示全部樓層
延時最好500ms
回復

使用道具 舉報

ID:234075 發(fā)表于 2018-6-25 14:39 | 顯示全部樓層
zhb2004xp 發(fā)表于 2018-6-25 12:57
如果讀取數(shù)據(jù)有誤會顯示不正確的數(shù)字,但如果顯示多余的小數(shù)點時,就應該是你的數(shù)碼管顯示數(shù)組問題。protue ...

不好意思,看的不仔細
回復

使用道具 舉報

ID:358475 發(fā)表于 2018-6-25 14:56 | 顯示全部樓層
應該是延時的問題
回復

使用道具 舉報

ID:358699 發(fā)表于 2018-6-25 18:51 | 顯示全部樓層
可以改變延時時間再調調
回復

使用道具 舉報

ID:326301 發(fā)表于 2018-6-25 19:07 | 顯示全部樓層
如果只是最高位顯示有問題的話,看看是不是超數(shù)值了
回復

使用道具 舉報

ID:357189 發(fā)表于 2018-6-25 20:28 | 顯示全部樓層
zhb2004xp 發(fā)表于 2018-6-25 12:57
如果讀取數(shù)據(jù)有誤會顯示不正確的數(shù)字,但如果顯示多余的小數(shù)點時,就應該是你的數(shù)碼管顯示數(shù)組問題。protue ...

好的 我試一試 共陰極
回復

使用道具 舉報

ID:357189 發(fā)表于 2018-6-25 20:29 | 顯示全部樓層

好嘞 謝謝
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日产精品一区二区三区四区 | 日日夜夜视频 | 午夜精品一区二区三区免费视频 | 国产福利在线 | 国产一区2区 | 久久精品99国产精品日本 | 日本免费一区二区三区四区 | 最新午夜综合福利视频 | 国产日日操 | 欧美一级免费看 | 欧美寡妇偷汉性猛交 | 亚洲日本欧美日韩高观看 | 免费久久网 | 国产最新精品视频 | 日日爱av| 日本不卡免费新一二三区 | 久久se精品一区精品二区 | 日本三级黄视频 | 欧美国产精品一区二区三区 | 午夜久草 | 亚洲日韩中文字幕一区 | av在线免费观看网址 | 91精品国产91久久久久久密臀 | 国产免费a | 欧美一区永久视频免费观看 | 亚洲成人av| 欧美一级高清片 | 在线亚洲欧美 | 欧美视频二区 | 四虎永久免费影院 | 免费美女网站 | 国产高清视频一区 | 中国一级特黄真人毛片免费观看 | 欧美久久久久久久久中文字幕 | 中文字幕av一区 | 国产精品永久免费视频 | 婷婷在线免费 | av手机在线播放 | 国产一区二区毛片 | 久久久精品视 | 情侣酒店偷拍一区二区在线播放 |