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

標題: 單片機如何用雙位數碼管顯示計數?目前程序總是一閃而過 [打印本頁]

作者: kongxingzhu    時間: 2019-10-15 16:02
標題: 單片機如何用雙位數碼管顯示計數?目前程序總是一閃而過
如題 ,求大神幫忙修改,原想法是從1到60計數,現在個位數能正常,但十位數就是一閃而過,從閃過的數字看是想要的,但是現在怎么修改一下,不要閃,能停留到下個數更新


單片機源程序如下:
  1. #include "stc15.h"
  2. #define  uchar unsigned char
  3. #define  uint unsigned int
  4. #define  SECOND 100
  5. uchar  tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   //定義共陽極字段碼表(1-9-0)
  6. uint count=0;
  7. uint jishu=0;
  8. uint shiwei;
  9. uint gewei;
  10. sbit L1=P3^5;
  11. sbit L2=P3^6;
  12. sbit L3=P3^7;
  13. sbit miao1=P4^0;
  14. sbit miao2=P4^1;
  15. sbit fen1=P4^2;
  16. sbit fen2=P4^3;
  17. sbit shi1=P4^4;
  18. sbit shi2=P4^5;
  19. struct time{
  20.   uchar hour;
  21.         uchar min;
  22.         uchar sec;

  23. };
  24. struct time clocktime _at_ 0x30;
  25. /***********************************延時函數*********************************************/
  26. void delay(uchar s){
  27. uchar k,z;
  28.         for(k=0;k<s;k++)
  29.         for(z=110;z>0;z--);
  30. }
  31. /************************************T0中斷函數*****************************************/
  32. timer0() interrupt 1 using 2{
  33. TH0=0xd8;
  34.         TL0=0xf0;
  35.         if(++count == SECOND){
  36.         shiwei=jishu/10;
  37.                 gewei=jishu%10;
  38.                 if(shiwei>=1){
  39.                   miao1=1;
  40.                         miao2=0;
  41.                         P2=tab[shiwei];
  42.                         delay(1000);
  43.                         miao2=1;
  44.                         miao1=0;
  45.                         P2=tab[gewei];
  46.                         delay(1000);
  47.                 }
  48.                 else{
  49.                 miao1=0;
  50.                         P2=tab[gewei];
  51. //                        delay(10);
  52.                 }

  53.                 jishu=jishu+1;
  54.                
  55.                 count=0;
  56.                 L1=~L1;

  57.                

  58.                 if(++clocktime.sec == 60){
  59.                 clocktime.sec=0;L2=~L2;
  60.                         if(++clocktime.min==60){
  61.                         clocktime.min=0;L3=~L3;
  62.                                 if(++clocktime.hour==24){
  63.                                 clocktime.hour=0;P3=0x00;
  64.                                 }
  65.                         }
  66.                 }
  67.         }
  68. }
  69. /************************************主函數*********************************************/
  70. void main(){
  71.   TMOD=0x01;
  72.         TH0=0xd8;TL0=0xf0;
  73.         IE=0x82;TR0=1;

  74.         while(1)
  75.         {

  76.         }
  77.       

  78. }
復制代碼



作者: devcang    時間: 2019-10-15 20:20
十位顯示后,延時一下。。。。。。。。。另外,不應該在中斷中寫較多的邏輯代碼


~~~~~~~~~~~~~~~~~~~~~~~
作者: 883    時間: 2019-10-15 22:36
delay()延時不應放在中斷內,顯示會受中斷打斷
作者: 18819771528    時間: 2019-10-16 00:12
調試的時候按Ctrl+f5
作者: e2407    時間: 2019-10-16 00:29
P2=tab[shiwei];
delay(1000);
miao2=1;
miao1=0;
P2=tab[gewei];
你這里P2先賦值十位,延時一陣子就賦值個位,個位把十位覆蓋了
作者: yzwzfyz    時間: 2019-10-16 23:15
能畫出流程圖嗎?估計你畫不出來。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1