標(biāo)題: 51單片機(jī)30S倒計時顯示程序+電路圖 [打印本頁]

作者: lianlian    時間: 2015-7-10 02:45
標(biāo)題: 51單片機(jī)30S倒計時顯示程序+電路圖






  1. //計時程序,要求有兩個定時器,要有聲音(蜂鳴器就行),顯示(數(shù)碼管)
  2. //2016 04 29      E:\DPJ_C\OTHER\30S倒計時\30s.c
  3. #include <reg52.h>
  4. #define uchar unsigned char
  5. sbit BZ = P1^2;
  6. sbit P20=P2^0;
  7. sbit P21=P2^1;
  8. uchar a=30,b,c,time,flag;
  9. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

  10. void delay_ms(unsigned int ms)  //1ms延時
  11. {
  12.     while(ms--)
  13. for(b=123;b>0;b--);
  14. }

  15. void disp();

  16. void t0intinit()
  17. {
  18.   TMOD=0x11;
  19.   TH0=0x3c;
  20.   TL0=0xb0;
  21.   TH1=0xfe;
  22.   TL1=0x0c;
  23.   EA=1;
  24.   ET0=1;
  25.   ET1=1;
  26.   TR0=1;
  27. }

  28. void main(void)
  29. {
  30.   t0intinit();
  31. while(1)
  32. {
  33.   disp();
  34.   while(flag)
  35.   {
  36.    disp();
  37.    TR1=1;
  38.    if(c==3)   //蜂鳴3s后停止
  39.    {
  40.     flag=0;
  41.     TR0=0;
  42.     TR1=0;
  43.    }
  44.   }
  45. }
  46. }

  47. void disp( )
  48. {
  49.    P0=tab[a%10];
  50. P21=0;
  51.   delay_ms(1);
  52. P21=1;
  53. P0=tab[a/10];
  54. P20=0;
  55.   delay_ms(1);
  56. P20=1;
  57. }

  58. void t0int(void) interrupt 1
  59. {
  60.   TH0=0x3c;
  61. TL0=0xb0;
  62. time++;
  63. if(time==20)
  64. {
  65.   time=0;
  66.   if(a!=0)
  67.   a--;
  68.   else
  69.   {
  70.    flag=1;
  71.    c++;
  72.   }
  73. }
  74. }


  75. void t1int(void) interrupt 3 //定時器T1作1kz蜂鳴
  76. {
  77.   TH1=0xfe;     //0.5ms定時
  78. TL1=0x0c;
  79. if(flag==1)
  80. BZ=~BZ;
  81. }
復(fù)制代碼



作者: 小菜鳥3號    時間: 2021-12-29 12:39
有完整的電路圖嗎?





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