1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標(biāo)題: 獨(dú)立鍵盤的程序 加快掃描的話,第三個(gè)數(shù)碼管就顯示不清 求大佬解答 [打印本頁(yè)]

作者: ckeai    時(shí)間: 2018-7-13 15:23
標(biāo)題: 獨(dú)立鍵盤的程序 加快掃描的話,第三個(gè)數(shù)碼管就顯示不清 求大佬解答
這是個(gè)獨(dú)立鍵盤的程序
用的是普中科技開發(fā)板
加快掃描的話,第三個(gè)數(shù)碼管就顯示不清,掃描變慢的話就會(huì)抖,求大神給個(gè)好法子

單片機(jī)源碼:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uintunsigned int
  4. #define ucharunsigned char
  5. sbit led1=P2^2;
  6. sbit led2=P2^3;
  7. sbit led3=P2^4;
  8. sbit key1=P3^1;
  9. uinttemp=000,t0,ge,shi,bai,aa;
  10. uchar codetable[]={0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71};
  14. void SMG(int ge,int shi,int bai);
  15. void delay(uintz);
  16. void keyscan1();
  17. void main()
  18. {
  19.      EA=1;
  20.        TMOD=1;
  21.        TR0=1;
  22.      ET0=1;
  23.               while(1) /
  24.        {      
  25.         SMG(ge,shi,bai);
  26.         if(t0==1)//0.01s速度運(yùn)行 每0.01s個(gè)位數(shù)加一
  27.        {
  28.        temp++;
  29.        t0=0;
  30.        if(aa==1000)
  31.        {
  32.        temp=000;
  33.        aa=0;
  34.        }
  35.        }
  36. P3=0xff;
  37.   if(key1==0)
  38. {
  39.    delay(10);
  40.    if(key1==0)//倆次判斷防止第一次按下去是誤按
  41.   {
  42.      TR0=0;
  43.         SMG(ge,shi,bai);
  44.   }
  45.    while(!key1);
  46.    delay(10); //消抖
  47.    while(!key1);//檢測(cè)按鍵是否釋放
  48.     TR0=1;
  49. }
  50. }
  51.   }
  52. void time0()interrupt 1 using 1
  53. {
  54.        TH0=(65536-10000)/256;
  55.        TL0=(65536-10000)%256;
  56.        t0++;
  57.        aa++;
  58. }
  59. void delay(uint z)
  60. {
  61.        uint x,y;
  62.        for(x=z;x>0;x--)
  63.               for(y=50;y>0;y--);//因此程序速度較快 為防止delay中包含中斷點(diǎn)t0==1
  64. }
  65. void SMG(intge,int shi,int bai)
  66. {
  67.        bai=temp/100;
  68.          P0=table[bai];
  69.          led1=1;led2=1;led3=1;
  70.          delay(5);
  71.          shi=temp%100/10;
  72.          P0=table[shi];
  73.          led1=0;led2=1;led3=1;
  74.          delay(5);//更改延時(shí)時(shí)間的長(zhǎng)短可以看到不同效果,例如改為1000看到的是先出現(xiàn)1,再出現(xiàn)2,而delay(5)是一下子出現(xiàn)數(shù)字12
  75.          ge=temp%10;
  76.          P0=table[ge];
  77.          led1=1;led2=0;led3=1;
  78.          delay(5);   
  79. }
復(fù)制代碼







作者: yzwzfyz    時(shí)間: 2018-7-14 04:41
你的程序構(gòu)思差!
所有掃描的延時(shí)沒不能用硬延時(shí),要用中斷做處理。這樣CPU就不“累了”。
參考一下我回的這個(gè)帖子“在線等請(qǐng)問(wèn)獨(dú)立鍵盤的掃描去抖怎么寫啊 haohaoxue51 發(fā)表于 2018-7-11 19:49”




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