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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7874|回復: 15
打印 上一主題 下一主題
收起左側

單片機8層電梯程序分享(支持修改任意最大樓層)仿真+源程序

  [復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 Angle145 于 2020-1-25 21:28 編輯

修改最大樓層方法,在程序中,#define MaxFloor   8    把8改成想要的樓層數就可以了,支持1-8層,其他不用修改。

按照現實的電梯運行設計,兩個版本,一個是用定時器產生定時,定時用來模擬電梯上下樓,別一版本是需要外部的信號來觸發,就是現實中的限位器或者傳感器,用來傳感是否到達某個樓層。理論上每個樓層都要安裝一個傳感器,電梯經過時就可以知道是否到達樓層了。

仿真文件請使用Proteus8.6及以上版本打開。
源程序用Keil5打開。

//在此聲明,代碼全部屬于原創,沒有任何一條是復制粘貼,請尊重個人勞動成果
//在此分享出來僅供大家學習參考使用,請務必禁止用于其他用途

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序:


  1. /*******************電梯主程序**********************/
  2. #include "reg51.h"
  3. #include "intrins.h"

  4. /******************移植部分代碼*************************/
  5. sbit DOOR=P3^5;
  6. sbit DlevMotor_P=P3^6; //電梯電機正極
  7. sbit DlevMotor_N=P3^7; //電梯電機負極
  8. #define SEGPort    P0
  9. #define KeyPort_X  P1
  10. #define KeyPort_Y  P2
  11. /******************************************************/


  12. #define u8  unsigned char
  13. #define u16 unsigned int
  14.         
  15. #define MaxFloor   8

  16. #define FloorStayTime 40        //單位:50ms
  17. #define DoorStayTime  2   //單位:S

  18. #define TRUE  1
  19. #define FALSE 0

  20. #define Null  0  
  21. #define STOP  1
  22. #define UP    2
  23. #define DOWN  3
  24. #define Dlev_UP    DlevMotor_P=0;DlevMotor_N=1  //低電平有效
  25. #define Dlev_DOWN  DlevMotor_P=1;DlevMotor_N=0  //低電平有效
  26. #define Dlev_STOP  DlevMotor_P=1;DlevMotor_N=1  //低電平有效

  27. #define OPEN  1  
  28. #define CLOSE 0
  29. #define DOOR_Open  DOOR=OPEN
  30. #define DOOR_Close DOOR=CLOSE


  31. typedef struct
  32. {
  33.         u8 DlevRunning;
  34.   u8 CurrentFloor;
  35.         u8 Direction;
  36.         u8 FloorCallTable[MaxFloor+1];//數組[0]不用,從[1]開始使用
  37.         u8 FloorTimerCount;        
  38.         u8 ArriveFlag;      //到達樓層信號(用于停止或在前一樓層提前加減速)(此版本是定時器模擬,用不到)
  39.         u8 FreeFlag;        
  40. }TYPEDEF_DLEVSTATE;
  41. TYPEDEF_DLEVSTATE DlevState;


  42. u8 code SEG_NUM[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f};   //SEG數碼管段碼  0~9
  43. u8 Timer_Second;
  44. u16 TimerCount;
  45. u8 RICount=0;
  46. u8 RIOver_Flag=0;
  47. u8 ExternKey[2]={0}; //外部按鍵按下信息
  48. u8 FloorCallTableBUFF[MaxFloor+10]={0};
  49. u8 KeyPressFlag=0;

  50. void delay_ms(u16 xms);
  51. void delay_s(u8 xs);
  52. void EXTI0_Init(void);
  53. void Timer0_Init(void);
  54. void USART_Configure(u16 BaudRate);
  55. u8 KeyScan(void);
  56. void KeyDatHandle(u8 key);
  57. void WaitDoorOpen(u8 ts);
  58. void WaitDoorClose(u8 ts);
  59. void SEG_Display(u8 segnum);
  60. void DlevWorkState(u8 state);
  61. void Elevator(void);
  62. u8 FloorCall_UP(u8 floorside);
  63. u8 FloorCall_DOWN(u8 floorside);
  64. void FLOORCALLCHECK(void);
  65. void SYSYEM_INIT(void);


  66. void main(void)
  67. {
  68.         SYSYEM_INIT();
  69.         EXTI0_Init();
  70.         EXTI1_Init();
  71.         Timer0_Init();
  72.         USART_Configure(9600);
  73.   while(1)
  74.         {
  75.                  KeyPort_Y=0x00;
  76.                  FLOORCALLCHECK();
  77.            Elevator();   
  78.         }
  79. }

  80. void EXTI1_IRQHandler(void) interrupt 2    //矩陣按鍵中斷
  81. {
  82.    KeyDatHandle(KeyScan());
  83. }

  84. void TIM0_IRQHandler(void)  interrupt 1    //定時模擬電梯上升和下降
  85. {
  86.    TH0=(65536-50000)/256;
  87.          TL0=(65536-50000)%256;
  88.         
  89.          TimerCount++;
  90.          if(TimerCount==20)  //1秒
  91.          {
  92.                  TimerCount=0;
  93.                  Timer_Second++;
  94.          }         
  95.          DlevState.FloorTimerCount++;
  96. }
復制代碼


全部資料51hei下載地址:
8層電梯(雙版本).zip (250.59 KB, 下載次數: 236)


評分

參與人數 2黑幣 +62 收起 理由
找人PK + 12
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:149783 發表于 2018-7-7 17:32 | 只看該作者
謝謝你的分享,下載,下來慢慢學習。
回復

使用道具 舉報

板凳
ID:437186 發表于 2018-12-13 20:55 | 只看該作者
想好好看下  學習哈
回復

使用道具 舉報

地板
ID:437186 發表于 2018-12-15 21:15 | 只看該作者
打不開怎么回事啊
回復

使用道具 舉報

5#
ID:142059 發表于 2019-1-16 02:54 來自觸屏版 | 只看該作者
老王頭8 發表于 2018-12-15 21:15
打不開怎么回事啊

你的keil版本太低,安裝keil5
回復

使用道具 舉報

6#
ID:471889 發表于 2019-2-4 06:16 | 只看該作者
不錯,學習了
回復

使用道具 舉報

7#
ID:479667 發表于 2019-2-24 11:20 | 只看該作者
proteus為什么打不開
回復

使用道具 舉報

8#
ID:142059 發表于 2019-3-1 21:40 來自觸屏版 | 只看該作者
dpo 發表于 2019-2-24 11:20
proteus為什么打不開

需要proteus8.6及以上版本
回復

使用道具 舉報

9#
ID:273674 發表于 2019-3-18 14:12 | 只看該作者
LZ我想問下 如果是2部電梯的話 該怎么弄呢
回復

使用道具 舉報

10#
ID:142059 發表于 2019-3-18 21:43 | 只看該作者
李海林 發表于 2019-3-18 14:12
LZ我想問下 如果是2部電梯的話 該怎么弄呢

需要通過通訊來達到協調或者獨立運行
回復

使用道具 舉報

11#
ID:475808 發表于 2019-3-19 08:41 | 只看該作者
很棒!收藏了!
回復

使用道具 舉報

12#
ID:657980 發表于 2019-12-10 19:01 | 只看該作者
有問題想請教,可以私聊嗎
回復

使用道具 舉報

13#
ID:787940 發表于 2020-6-23 18:55 | 只看該作者
大佬 你這個仿真的時候,數碼管不起作用?我按下7樓,數碼管顯示一直不變。。
回復

使用道具 舉報

14#
ID:788184 發表于 2020-6-23 22:08 | 只看該作者
感謝分享,學習了
回復

使用道具 舉報

15#
ID:301242 發表于 2021-5-23 16:24 | 只看該作者
請問樓主,傳感器是用什么類型的呢?比如是壓力?還是光電?c語言編寫控制都一樣的嗎?
回復

使用道具 舉報

16#
ID:142059 發表于 2021-5-27 15:34 | 只看該作者
易木殘陽 發表于 2021-5-23 16:24
請問樓主,傳感器是用什么類型的呢?比如是壓力?還是光電?c語言編寫控制都一樣的嗎?

傳感器光電開關效果最好,都一樣的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91porn在线 | 久久久tv | 日韩精品在线免费观看视频 | 中文字幕人成乱码在线观看 | 国产视频一区二区 | 欧美精品福利 | 国产一区影院 | 日韩欧美中文字幕在线观看 | 国产精品福利网站 | 成人一区二区三区在线观看 | 在线观看中文字幕亚洲 | 国产欧美一区二区三区另类精品 | 欧美男人亚洲天堂 | 一区二区三区四区免费在线观看 | 97偷拍视频 | 国产成人网 | 国产黄色网 | 久久99成人 | 自拍偷拍第1页 | av日韩在线播放 | 日韩在线一区二区 | 三级免费 | 久久久av一区 | 精品国产欧美一区二区三区成人 | 国产免费拔擦拔擦8x高清 | 亚洲欧美一区二区三区在线 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 91高清视频| 在线视频国产一区 | 啪啪精品 | 青娱乐国产 | 成人乱人乱一区二区三区软件 | 国产成人艳妇aa视频在线 | 成人av网站在线观看 | 欧美国产激情二区三区 | 亚洲成人精品国产 | 日日拍夜夜| 欧美一级在线免费 | 天天干在线播放 | 97久久精品午夜一区二区 | 久久久久久久一区 |