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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請問大家為什么我的數碼管顯示的不正常啊,是程序哪出問題了嗎

[復制鏈接]
跳轉到指定樓層
樓主
    本來應該是應該顯示幾個數而且可調節,但是一直在抖動,這是程序
  1. #define uchar unsigned char
  2. #define uint unsigned int
  3. sbit DQ=P1^7;
  4. sbit key1=P1^3;
  5. sbit key2=P1^4;
  6. sbit dianji=P3^1;
  7. float ff;
  8. uint y3;
  9. uchar shi,ge,xiaoshu,sheding=20,gaonum,dinum;
  10. uchar code dispcode[]={    //∂Œ¬Î
  11. 0x3f,0x06,0x5b,0x4f,
  12. 0x66,0x6d,0x7d,0x07,  
  13. 0x7f,0x6f,0x77,0x7c,
  14. 0x39,0x5e,0x79,0x71};  
  15. uchar code tablel[]={ //¥ˉ–° ˝μ„μƒ∂Œ¬Î
  16. 0xbf,0x86,0xdb,0xcf,
  17. 0xe6,0xed,0xfd,
  18. 0x87,0xff,0xef};
  19. uchar dispbitcode[]={    //Œa—°
  20. 0xfe,0xfd,0xfb,0xf7,
  21. 0xef,0xdf,0xbf,0x7f};   
  22. uchar dispbuf[8]={0,0,0,0,0,0,0,0};  
  23. void Delay(uint num)// —” ±∫Ø ˝
  24. {
  25.          while(--num);
  26. }
  27. void digitalshow(uchar a4,uchar a3,uchar a2,uchar a1,uchar a0)
  28. {
  29.          dispbuf[0]=a0;  
  30.          dispbuf[1]=a1;
  31.           dispbuf[2]=a2;  
  32.         dispbuf[3]=a3;  
  33.         dispbuf[4]=a4;  
  34.          
  35.          P2=0xff;
  36.          P0=dispcode[dispbuf[0]];  
  37.         P2=dispbitcode[5];  
  38.         Delay(1);  
  39.   
  40.          P2=0xff;
  41.          P0=dispcode[dispbuf[1]];
  42.          P2=dispbitcode[4];
  43.          Delay(1);  
  44.          P2=0xff;
  45.          P0=dispcode[dispbuf[2]];
  46.          P2=dispbitcode[2];  
  47.         Delay(1);  

  48.          P2=0xff;
  49.          P0=tablel[dispbuf[3]];
  50.          P2=dispbitcode[1];  
  51.         Delay(1);
  52.          P2=0xff;
  53.          P0=dispcode[dispbuf[4]];  
  54.         P2=dispbitcode[0];  
  55.         Delay(1);
  56. }
  57. void dmsec(uint count)  
  58. {      
  59.          uint i;   // 1ms—” ±
  60.          while(count--)   
  61.         {  
  62.                 for(i=0;i<125;i++){}  
  63.         }
  64. }  
  65. void tmreset(void)
  66. {
  67.         DQ=0;
  68.         Delay(90);
  69.         DQ=1;
  70.         Delay(4);
  71. }
  72. void tmpre(void)
  73. {                    
  74.         while(DQ);
  75.          while(~DQ);
  76.          Delay(4);  
  77. }  
  78. bit tmrbit(void)
  79. {
  80.          uint i;  
  81.         bit dat;  
  82.         DQ=0;
  83.          i++;    // i++;¥Û∏≈1us  
  84.         DQ=1;  
  85.         i++;  
  86.         i++;      
  87.         dat=DQ;
  88.          Delay(8);              
  89.         return(dat);
  90. }  
  91. uchar tmrbyte(void)  //∂¡“a∏ˆ±»Ãÿ
  92. {           
  93.         uchar i,j,dat;  
  94.         dat=0;
  95.          for(i=1;i<=8;i++)   
  96.         {   
  97.                 j=tmrbit();   
  98.                 dat=(j<<7)|(dat>>1);  
  99.         }
  100.          return(dat);
  101. }  
  102. void tmwbyte(uchar dat)  //–¥“a∏ˆ±»Ãÿ
  103. {               
  104.         uint i;  
  105.         uchar j;  
  106.         bit testb;
  107.          for(j=1;j<=8;j++)   
  108.         {   
  109.                 testb=dat&0x01;   
  110.                 dat=dat>>1;  // ¥”μÕŒaø™ o   
  111.                 if(testb)       // Write 1   
  112.                 {   
  113.                         DQ=0;   // œ»¿≠μÕ     
  114.                         i++;   
  115.                         i++;  // >1us                              
  116.                         DQ=1;   
  117.                         Delay(4);              
  118.                 }   
  119.                 else            // Write 0   
  120.                 {   
  121.                         DQ=0;
  122.                            Delay(4);               
  123.                         DQ=1;   
  124.                         i++;   
  125.                         i++;   // ‘Ÿ¿≠∏fl                           
  126.                 }  
  127.         }
  128. }
  129. void tmstart(void)    //ds1820ø™ o◊™aa
  130. {   
  131.          dmsec(1);                  
  132.         tmreset();     
  133.         tmpre();     
  134.         dmsec(1);
  135.     tmwbyte(0xcc);   // skip rom      
  136.         tmwbyte(0x44);   // ◊™aa
  137. }
  138. uchar tmrtemp(void)     //∂¡»°Œ¬∂»
  139. {                    
  140.         uchar a,b;  
  141.         tmreset();  
  142.         tmpre();  
  143.         dmsec(1);
  144.          tmwbyte(0xcc);   // skip rom
  145.          tmwbyte(0xbe);   // ◊™aa  
  146.         a=tmrbyte();   // LSBμÕ8Œa  
  147.         b=tmrbyte();  // MSB∏fl8Œa  
  148.         y3=b;  
  149.         y3<<=8;  
  150.         y3=y3|a;
  151.          ff=y3*0.0625;  
  152.         y3=ff*10+0.5;  
  153.         return(y3);
  154. }
  155. void keyscan(void)
  156. {
  157.          if(key1==0)  
  158.         {   
  159.                 dmsec(5);   
  160.                 if(key1==0)   
  161.                 {   
  162.                         sheding++;   
  163.                         if(sheding==100)     
  164.                         sheding=20;   
  165.                 }
  166.                 while(!key1);  
  167.         }
  168.          else if(key2==0)  
  169.         {   
  170.                 dmsec(5);   
  171.                 if(key2==0)   
  172.                 {   
  173.                         sheding--;   
  174.                         if(sheding==0)     
  175.                         sheding=20;   
  176.                 }   
  177.                 while(!key2);   
  178.         }
  179. }
  180. void deal(uint tmp)   //Œ¬∂»¥¶¿ì
  181. {
  182.          if(tmp<=sheding)  
  183.         {   
  184.                 gaonum=0;   
  185.                 dinum=4;  
  186.         }
  187.          else if((tmp>sheding)&&(tmp<=(sheding+5)))  
  188.         {   
  189.                 gaonum=1;   
  190.                 dinum=3;  
  191.         }
  192.          else if((tmp>(sheding+5))&&(tmp<=(sheding+10)))  
  193.         {   
  194.                 gaonum=2;   
  195.                 dinum=2;  
  196.         }
  197.          else if((tmp>(sheding+10))&&(tmp<=(sheding+15)))  
  198.         {   
  199.                 gaonum=3;   
  200.                 dinum=1;  
  201.         }  
  202.         else  
  203.         {   
  204.                 gaonum=4;  
  205.                  dinum=0;  
  206.         }
  207. }
  208. void dianjik()    //μáa˙øÿ÷∆
  209. {
  210.          uchar q,i;
  211.          for(q=0;q<dinum;q++)  
  212.         {
  213.                   dianji=0;
  214.                  digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);   
  215.                 for(i=255;i>0;i--)   
  216.                 {
  217.                            digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);      
  218.                   }  
  219.         }
  220.          for(q=0;q<gaonum;q++)  
  221.         {
  222.                   dianji=1;
  223.                   digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);   
  224.                 for(i=255;i>0;i--)   
  225.                 {
  226.                            digitalshow(shi,ge,xiaoshu,sheding/10,sheding%10);      
  227.                   }  
  228.         }
  229. }
  230. void main(void)  
  231. {
  232.          uint last;  
  233.         dianji=0;  
  234.         tmstart();   
  235.         dmsec(450);   // ≥ı oaØds18b20  
  236.         while(1)  
  237.         {     
  238.                 tmstart();   // ds1820ø™ o◊™aa   
  239.                 dmsec(2);   
  240.                 last=tmrtemp()+256; // ∂¡»°Œ¬∂»   
  241.                 shi=last/100;   
  242.                 ge=(last%100)/10;   
  243.                 xiaoshu=(last%100)%10;   
  244.                 keyscan();   
  245.                 dmsec(2);   
  246.                 deal(last/10);   
  247.                 dianjik();  
  248.         }      
  249. }
復制代碼


758A90FFBEB95D33EC1A062797E7875F-1.jpg (93.97 KB, 下載次數: 44)

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

使用道具 舉報

沙發
ID:7485 發表于 2018-6-22 08:36 | 只看該作者
注釋都是亂碼。

電腦軟件仿真正確嗎?
回復

使用道具 舉報

板凳
ID:320306 發表于 2018-6-22 08:38 | 只看該作者
延時長了!!!!!!!!!!!!!!!!
回復

使用道具 舉報

地板
ID:305987 發表于 2018-6-22 09:01 | 只看該作者
延時改短點,抖動是因為頻率太低了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内自拍偷拍一区 | 国产9 9在线 | 中文 | 久久亚洲天堂 | 韩日一区二区三区 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 久久久久久亚洲国产精品 | 国产精品成人在线 | 国产一区二区三区不卡av | 久久精品久久精品 | 国产精品成人在线 | 一区二区在线观看av | 中文字幕 在线观看 | 国产成人久久精品一区二区三区 | 国产精品视屏 | 国产一区二区精品在线 | 亚洲成人福利视频 | www.日本国产 | 欧美一区二区二区 | 日本不卡一区 | 毛色毛片免费看 | 国产高清在线观看 | 亚洲一区二区三区福利 | 日韩成人在线播放 | 日韩欧美一区二区三区免费观看 | 7777在线视频 | 99热最新网址 | 天堂va在线观看 | 蜜桃在线一区二区三区 | 免费看片在线播放 | 中文字幕av亚洲精品一部二部 | 亚洲视频一区二区三区 | av网站免费在线观看 | 欧美在线二区 | 日韩一区二区在线免费观看 | 国产精品国产馆在线真实露脸 | 亚洲在线| 成人激情免费视频 | 国产成人精品一区二区三区在线观看 | 亚洲人成人一区二区在线观看 | 亚洲人人 | 777zyz色资源站在线观看 |