标题: 自动洗衣机控制器的单片机仿真及源程序 数码管显示 [打印本页]

作者: 51黑ff    时间: 2016-9-25 22:59
标题: 自动洗衣机控制器的单片机仿真及源程序 数码管显示
51单片机做的自动洗衣机控制器的proteus仿真,下面是原理图:

洗衣机控制器的所有资料下载:
洗衣机半自动控制器模拟.rar (31.78 KB, 下载次数: 86)


源程序:
  1. //数码显示倒计时,四位数码管共阳显示
  2. #include<reg51.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  6. uchar minute,second=0;
  7. sbit led1=P1^0;
  8. sbit led2=P1^1;
  9. sbit button1=P1^2;
  10. sbit button2=P1^3;
  11. sbit button3=P1^4;
  12. sbit m1=P3^0;
  13. sbit m2=P3^1;
  14. void show(void)        ;
  15. void delay(uchar t);        //US延时程序
  16. void scankey() ;//
  17. void init_timer(void);//定时器初始化
  18. void clockwise(void);
  19. void unclockwise(void)        ;
  20. void stop(void);

  21.   main()
  22.   {P3=0x00;
  23.    minute=20;
  24.     init_timer();
  25.         while(1)
  26.          {scankey();
  27.          show();
  28.          }
  29.          }
  30. void init_timer(void)  //定时器初始化程序
  31. {  TH0=0x0f8;
  32.          TL0=0x30;
  33.    TMOD|=0x01; //使用模式一,16位定时器
  34.    EA=1;        // 总中断打开
  35.    ET0=1;  //        定时器中断打开
  36.    TR0=0;        //        定时器开关打开
  37.    }
  38. void show(void)//显示程序
  39. { uchar a=10;
  40.   P2=0x01;
  41.   P0=dis[minute/10];
  42.   delay(a);
  43.   P2=0x02;
  44.   P0=dis[minute%10]        ;
  45.   delay(a);
  46.   P2=0x04;
  47.   P0=dis[second/10];
  48.   delay(a);
  49.   P2=0x08;
  50.   P0=dis[second%10]         ;
  51.   delay(a);
  52.   }
  53. void timer0_isr(void) interrupt 1          //定时器
  54. {        static uint num1, num2,num0,i,num;
  55.       TL0=0x30;
  56.       TMOD|=0x01;
  57.           TH0=0x0f8;
  58.          TL0=0x30;
  59.            num++; num1++;num2++;
  60.            if(num2==1000)
  61.             {i++;
  62.                  num2=0;
  63.                  switch(i)
  64.                   {case 1:clockwise();break;//正转
  65.                    case 4:stop();break;//停转
  66.                    case 6:unclockwise();break;//反转
  67.                    case 9:stop();break;//停止
  68.                    case 11:i=0;break;}}

  69.          if(num1==250)
  70.            {led2=~led2;
  71.             num1=0;}
  72.          if(num==500)
  73.          {num=0;
  74.           
  75.           
  76.      if((minute==0)&&(second==0))
  77.                     { TR0=0;
  78.                           led1=~led1;}
  79.               else  if(second==0)
  80.                {second=59;
  81.                     minute--;
  82.                 }
  83.                 else second--;
  84.        }
  85. }  
  86. void delay(uchar t)
  87. {         uchar i;
  88.     while(t--)for(i=0;i<120;i++);
  89.   
  90. }
  91. void scankey()
  92. { if(button1==0)
  93.     { delay(100);
  94.           if(button1==0)
  95.              minute++;
  96.         }
  97.    if(button2==0)
  98.    {delay(100);
  99.      if(button2==0)
  100.           minute--;
  101.           }
  102.         if(button3==0)
  103.         {delay(100);
  104.          if(button3==0)
  105.           TR0=~TR0;
  106.           if(TR0==0)
  107.             stop();
  108.           }}
  109.   void clockwise(void)
  110. { m1=1;
  111.   m2=0;
  112.   }
  113.   void unclockwise(void)
  114.   { m1=0;
  115.     m2=1;
  116.         }
  117. void stop(void)
  118. {m1=0;
  119. m2=0;
  120. }
复制代码



作者: wanggaohan    时间: 2016-12-14 21:05
谢谢分享 受教了
作者: qq861500540    时间: 2018-6-2 16:54
受教了,正需要




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