找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3471|回复: 2
打印 上一主题 下一主题
收起左侧

自动洗衣机控制器的单片机仿真及源程序 数码管显示

[复制链接]
跳转到指定楼层
楼主
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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:154667 发表于 2016-12-14 21:05 | 只看该作者
谢谢分享 受教了
回复

使用道具 举报

板凳
ID:336756 发表于 2018-6-2 16:54 | 只看该作者
受教了,正需要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表