找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3416|回复: 0
收起左侧

51单片机自动窗帘Proteus仿真程序

[复制链接]
ID:449192 发表于 2020-3-27 14:49 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar code tab1[]={"Now_G: "};       
  5. uchar code tab5[]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xff7,0xf6};  
  6. sbit k1 = P2^0;         
  7. sbit k2 = P2^1;         
  8. sbit k3 = P2^2;
  9. sbit k4 = P2^3;
  10. sbit k5 = P2^4;
  11. sbit k7 = P2^5;
  12. sbit led = P3^3;
  13. sbit k6 = P3^4;
  14. uchar i = 0;
  15. bit flag = 0;
  16. bit flag1 = 0;
  17. bit flag2 = 0;
  18. bit flag3 = 0;
  19. bit mode = 1;
  20. void delayxms(uint ms)                                          
  21. {
  22.     uint a,j;

  23.     for(a=0;a<ms;a++)
  24.           for(j=0;j<110;j++);

  25. }
  26. void key()
  27. {
  28.           if(k1==0)
  29.           {
  30.                      delayxms(5);
  31.                    while(k1==0);
  32.                    flag1 = 0; flag = 1;
  33.           }
  34.           if(k2==0)       
  35.           {
  36.                         delayxms(5);
  37.                         while(k2==0);
  38.                         flag1 = 1; flag = 1;
  39.           }
  40.           if(k3==0)       
  41.           {
  42.                         delayxms(5);
  43.                         while(k3==0);
  44.                         flag = 0;
  45.           }
  46. }

  47. void key1()
  48. {
  49.            if(k4==0)
  50.           {
  51.                      delayxms(5);
  52.                    while(k4==0);
  53.                    flag1 = 0; flag = 1;
  54.           }
  55.           if(k5==0)       
  56.           {
  57.                         delayxms(5);
  58.                         while(k5==0);
  59.                         flag1 = 1; flag = 1;
  60.           }
  61.           if(k3==0)       
  62.           {
  63.                         delayxms(5);
  64.                         while(k3==0);
  65.                         flag = 0;
  66.           }
  67. }
  68. void T0_init()
  69. {
  70.           TMOD=TMOD | 0x01;              
  71.           TH0=(65535-50000)/256;      
  72.           TL0=(65535-50000)%256;
  73.           EA=1;                                 
  74.           ET0=1;                     
  75.           //TR0=1;                     
  76. }

  77. void main()
  78. {
  79.   
  80.   T0_init();
  81.   while(1)
  82.   {
  83.                             
  84.                             if(k6==0)
  85.                                 {
  86.                                              delayxms(5);
  87.                                            while(k6==0);
  88.                                            mode = ~mode;
  89.                                 }
  90.                                 if(mode == 1)
  91.                                 {
  92.                                    key(); //按键检测
  93.                                    if(flag == 0)
  94.                                    {TR0 = 0;}
  95.                                    else
  96.                                    {TR0 = 1;}
  97.                                    led = 1;
  98.                                 }
  99.                                 if(mode == 0)
  100.                                 {
  101.                                    key1(); //按键检测
  102.                                    if(flag == 0)
  103.                                    {TR0 = 0;}
  104.                                    else
  105.                                    {TR0 = 1;}
  106.                                    led = 0;
  107.                                 }
  108.   }
  109. }
  110. void T0_time() interrupt 1   
  111. {
  112.           TR0 = 0;
  113.       TH0=(65535-50000)/256;      
  114.           TL0=(65535-50000)%256;     
  115.           if(i > 7)
  116.           {i = 0;}
  117.           if(flag1 == 0)
  118.           {P1 = tab5[i];} //正转
  119.           else
  120.           {P1 = tab5[7-i];} //反转
  121.           i += 1;
  122.           TR0 = 1;
  123. }
复制代码

仿真工程51hei提供下载:
自动窗帘仿真.zip (94.33 KB, 下载次数: 65)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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