久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1551|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)電梯模擬程序 并聯(lián)控制步進(jìn)電機(jī)Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
MCU并聯(lián)控制步進(jìn)電機(jī)(電梯模擬)stc89c51單片機(jī)主控
電機(jī)轉(zhuǎn)1圈為1樓層,電機(jī)運(yùn)行:... 電機(jī)到站:up!  new1:第一個(gè)電機(jī)對(duì)于的樓層 new2:第二個(gè)電機(jī)對(duì)于的樓層
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include "main.h"
  2. #include "Motor.h"
  3. #include "stdio.h"
  4. uint Key_Scan(void);
  5. uint res=0;
  6. void Motor_Muen(void)//菜單界面
  7. {
  8.         LCD_Init();
  9.         LCD_ShowString(1,1,"new1:01");
  10.         LCD_ShowString(1,10,"new2:01");
  11.         LCD_ShowString(2,6,"00");
  12.         LCD_ShowString(2,10,"00");
  13.         LCD_ShowString(2,1,"up!");
  14.         LCD_ShowString(2,14,"up!");
  15. }

  16. //定時(shí)器初始化函數(shù)
  17. void Timer0Init(void)                //1毫秒@22.1184MHz
  18. {
  19.         TMOD = 0x01;                //設(shè)置定時(shí)器模式
  20.         TL0 = 0xCD;                //設(shè)置定時(shí)初始值
  21.         TH0 = 0xF8;                //設(shè)置定時(shí)初始值
  22.         TF0 = 0;                //清除TF0標(biāo)志
  23.         ET0=1;
  24. //        TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
  25.         EA=1;
  26. }

  27. int main(void)        //主函數(shù)
  28. {
  29.         uint keynum=0, //按鍵值
  30.                  enter=0,  //確認(rèn)
  31.                  Key_timer=0; //按鍵計(jì)時(shí)
  32.         buzz1=0;buzz2=0;
  33.         Motor_Muen();
  34.         Timer0Init();
  35.         while(1)
  36.         {
  37.                 LCD_ShowString(2,1,"up!");  
  38.                 LCD_ShowString(2,14,"up!");
  39.                 LCD_ShowNum(2,6,MotorKZ.Motor1_floor,2); //顯示選擇樓層
  40.                 LCD_ShowNum(2,10,MotorKZ.Motor2_floor,2);//顯示選擇樓層
  41.                 keynum=Key_Scan();
  42.                 switch(keynum)//按鍵標(biāo)志位
  43.                 {
  44.                         case 1:MotorKZ.Motor1_floor++; //樓層加一
  45.                                 break;
  46.                         case 2:MotorKZ.Motor1_floor--;//樓層減一
  47.                                 break;
  48.                         case 3:enter=1;
  49.                                 break;
  50.                         case 4:buzz1=~buzz1;
  51.                                 break;
  52.                         case 5:MotorKZ.Motor2_floor++;//樓層加一
  53.                                 break;
  54.                         case 6:MotorKZ.Motor2_floor--;//樓層減一
  55.                                 break;
  56.                         case 7:enter=2;
  57.                                 break;
  58.                         case 8:buzz2=~buzz2;
  59.                                 break;
  60.                 }
  61.                 if(MotorKZ.Motor2_floor<0||MotorKZ.Motor1_floor<0){
  62.                         MotorKZ.Motor1_floor=0;MotorKZ.Motor2_floor=0;
  63.                 }
  64.                 if(enter==1)//電梯運(yùn)行
  65.                 {
  66.                         enter=0;
  67.                         Motor1_circle();
  68.                         buzz1=1;Delay(200);buzz1=0;
  69.                 }else if(enter==2)//電梯運(yùn)行
  70.                 {
  71.                         enter=0;
  72.                         Motor2_circle();
  73.                         buzz2=1;Delay(200);buzz2=0;
  74.                 }else if(enter==0);
  75.                
  76.                 if(keynum==0)
  77.                 {
  78.                         if(Key_timer++>100)//按鍵時(shí)間記錄
  79.                         {Key_timer=0;
  80.                                 TR0=1;
  81.                         }
  82.                 }else TR0=0;
  83.                 if(res==0x0f)
  84.                 {res=0;
  85.                         while(MotorKZ.Motor1_new--)//回到初始化樓層
  86.                         {
  87.                                 if(MotorKZ.Motor1_new<2)break;
  88.                                 Motor_REV(1);
  89.                                 LCD_ShowNum(1,6,MotorKZ.Motor1_new,2);
  90.                         }
  91.                         while(MotorKZ.Motor2_new--)//回到初始化樓層
  92.                         {
  93.                                 if(MotorKZ.Motor2_new<2)break;
  94.                                 Motor_REV(0);
  95.                                 LCD_ShowNum(1,15,MotorKZ.Motor2_new,2);
  96.                         }
  97. //                        MotorKZ.Motor2_new=1;  //初始化樓層
  98. //                        MotorKZ.Motor1_new=1;  //初始化樓層
  99.                         LCD_ShowNum(1,6,MotorKZ.Motor1_new,2);
  100.                         LCD_ShowNum(1,15,MotorKZ.Motor2_new,2);
  101.                 }
  102.         }
  103. }

  104. void Timer0(void) interrupt 1
  105. {
  106.         static uint t=0,time=0,min=0;
  107.         
  108.         TL0 = 0xCD;                //設(shè)置定時(shí)初始值
  109.         TH0 = 0xF8;                //設(shè)置定時(shí)初始值
  110.         if(t++==599)//毫秒
  111.         {
  112.                 t=0;
  113.                 if(time++==59) //秒
  114.                 {
  115.                         time=0;
  116.                         if(min==999)//分
  117.                         {
  118.                                 min=0;
  119.                         }
  120.                 }
  121.         }
  122.         if(time==10)//設(shè)置超時(shí)時(shí)間time是秒,min是分鐘這里設(shè)置的是30秒
  123.         {
  124.                 time=0;
  125.                 TR0=0;res=0x0f;
  126.                
  127.         }
  128. }

  129. uint Key_Scan(void)//按鍵掃描
  130. {
  131.         static uint keyflg=0;
  132.         if((P3&0XFF)!=0XFF)
  133.         {
  134.                 Delay(1);
  135.                 if((P3&0XFF)!=0XFF&&keyflg==0)
  136.                 {
  137.                         keyflg=1;
  138.                         switch(P3&0XFF)
  139.                         {
  140.                                 case 0xfe:return 1;//按鍵1
  141.                                 case 0xfd:return 2;//按鍵2
  142.                                 case 0xfb:return 3;//按鍵3
  143.                                 case 0xf7:return 4;//按鍵4
  144.                                 case 0xef:return 5;//按鍵5
  145.                                 case 0xdf:return 6;//按鍵6
  146.                                 case 0xbf:return 7;//按鍵7
  147.                                 case 0x7f:return 8;//按鍵8
  148.                         }
  149.                 }
  150.         }else keyflg=0;
  151.         return 0;
  152. }
復(fù)制代碼

Keil代碼與Proteus8.13仿真下載:
并聯(lián)控制步進(jìn)電機(jī)(電梯模擬).zip (318.2 KB, 下載次數(shù): 50)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天色官网 | 97免费在线观看视频 | 成人在线免费av | 三级黄色片在线观看 | 久久y| 永久看片| 在线播放中文字幕 | 中文字幕影院 | 国产精品a久久久久 | 精品美女视频在线观看免费软件 | 性高湖久久久久久久久3小时 | www.一区二区三区.com | 爱草视频| 国产精品精品视频一区二区三区 | 亚洲国产精品成人综合久久久 | 老司机免费视频 | 午夜激情视频 | 91av免费看 | 99久久精品国产毛片 | 毛片毛片毛片毛片毛片 | 成人国产免费观看 | 成人一区二区视频 | 日韩精品一区二区三区 | av黄色在线观看 | 日韩精品色网 | 精品国产一区二区三区在线观看 | 做a视频| 黄色毛片在线看 | 久久精品久久久久久 | 国产一级片在线播放 | 久久91av | 精品在线一区 | 午夜a v电影 | 91影视| 中文字幕av中文字幕 | 久久成人免费观看 | 欧美啪啪| 在线免费观看视频你懂的 | 天堂视频一区 | 视频一区在线 | 日韩高清一区 |