标题: 我想用两个按键控制2个数码管单独显示数字,但是这个程序按k1 [打印本页]

作者: 1049769176    时间: 2016-12-16 16:31
标题: 我想用两个按键控制2个数码管单独显示数字,但是这个程序按k1
//我想用两个按键控制2个数码管单独显示数字,但是这个程序按k1,第一个数码管亮第二个灭;
//按k2第二个数码管亮了,第一个又灭了,有什么办法可以让这两个数码管同时亮着。请指教,谢谢了!
  1. #include <REG52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit k1=P3^4;
  5. sbit k2=P3^5;
  6. sbit duan=P2^6;
  7. sbit wei=P2^7;
  8. uint m=0,n=0;
  9. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  10. void delay(uint xms)
  11. {
  12.         uint i,j;
  13.         for(i=xms;i>0;i--)
  14.                 for(j=112;j>0;j--);
  15. }

  16. void smgk1()
  17. {
  18.         uint i;
  19.         i=m%10;
  20.          
  21.         P0=tab[i];
  22.         duan=1;
  23.         duan=0;
  24.         P0=0xfe;
  25.         wei=1;
  26.         wei=0;
  27.         delay(500);
  28. }
  29. void smgk2()
  30. {
  31.         uint i;
  32.         i=n%10;
  33.          
  34.         P0=tab[i];
  35.         duan=1;
  36.         duan=0;
  37.         P0=0xfd;
  38.         wei=1;
  39.         wei=0;
  40.         delay(500);
  41. }


  42. void main()
  43. {
  44.         while(1)
  45.         {
  46.          if(k1==0|k2==0)
  47.         {
  48.                 delay(10);
  49.                 if(k1==0)
  50.                 {
  51.                          while(k1!=0);
  52.                         smgk1();
  53.                         m++;               
  54.                 }
  55.                 if(k2==0)
  56.                 {
  57.                          while(k2!=0);
  58.                         smgk2();
  59.                         n++;

  60.                 }
  61.         }
  62.         }        
  63. }
复制代码





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1