娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年10月15日(星期二)

正在發生

2019年10月15日 | 單片機16層可剪裁電梯源碼+Proteus仿真設計

發布者:誰與爭鋒1 來源: eefocus關鍵字:單片機  16層可剪裁電梯  Proteus仿真 手機看文章 掃描二維碼
隨時隨地手機看文章

樓層數可選,硬件可刪除。16層內任意設置最大樓層數,用不到的樓層硬件可以刪除,不影響程序。提供串口通訊,波特率可在main初使化里設置。更新了詳細注釋版本,需要學習的朋友請關注銀穗之家回復:16層電梯源碼。即可下獲取詳細注釋版。

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

/*Uart串口發送函數示例:
1.USART_SendByte(u8 dat) //發送單字節數據
  例:USART_SendByte(0x04);

2.USART_Send(u8* arr,u16 len) //發送多字節數據
  例:
  Usart.TX_BUFF[0]=0xA1;
  Usart.TX_BUFF[1]=0x08;
  Usart.TX_BUFF[2]=0x04;
  Usart.TX_BUFF[3]=0xF9;
  USART_SendByte(Usart.TX_BUFF,4);
  或
  u8 Arr[16]={0xA1,0x08,0x04,0xF9};
  USART_SendByte(Arr,4);

3.USART_SendStr(u8* str) //發送字符串數據
  USART_SendStr("大吉在利,晚上吃雞!rn");

4.有關電梯通信代碼參考:
<1>發送電梯當前樓層給其他設備:     USART_SendByte(ElevState.CurrentFloor);
<2>發送電梯當前運行方向給其他設備: USART_SendByte(ElevState.Direction);
<3>發送電梯當前所有數據給其他設備: USART_Send((u8*)(&ElevState),sizeof(ElevState));

*/

單片機源程序如下:

/*************************電梯主程序*****************************/


#include "reg51.h"

#include "intrins.h"


/*********************程序選擇****************************/

#define USE_MODE 0   //0-定時模擬  1-傳感器

/****************************************************************/

/*********************平臺移植部分代碼****************************/

//定時器模擬版接口:

#if (USE_MODE==0)

sbit DOOR=P3^5;        //電梯門開關控制信號

sbit ElevMotor_P=P3^6; //電梯電機正極控制信號

sbit ElevMotor_N=P3^7; //電梯電機負極控制信號

sbit SHCP=P0^5;        //74HC595  LED、數碼管顯示驅動

sbit DS=P0^6;          //74HC595  LED、數碼管顯示驅動

sbit STCP=P0^7;        //74HC595  LED、數碼管顯示驅動

#define KeyPort_X  P1  //矩陣按鍵接口

#define KeyPort_Y  P2  //矩陣按鍵接口

#endif

//除以上定義的IO外,還需用到P33作為矩陣鍵盤的中斷觸發引腳

//8路與門可用芯片:CD4068或74LS30(芯片是與非門)+出端接一個三極管反向電平。



//傳感器版接口:

#if (USE_MODE==1)

sbit DOOR_CLOSE_SENSOR=P3^4;//電梯門關閉檢測傳感器輸入

sbit DOOR=P3^5;        //電梯門開關控制信號

sbit ElevMotor_P=P3^6; //電梯電機正極控制信號

sbit ElevMotor_N=P3^7; //電梯電機負極控制信號

sbit SHCP=P0^5;        //74HC595  LED、數碼管顯示驅動

sbit DS=P0^6;          //74HC595  LED、數碼管顯示驅動

sbit STCP=P0^7;        //74HC595  LED、數碼管顯示驅動

#define KeyPort_X  P1  //矩陣按鍵接口

#define KeyPort_Y  P2  //矩陣按鍵接口

#endif

//除以上定義的IO外,還需用到P33作為矩陣鍵盤的中斷觸發引腳

//需用到P32作為樓層限位開關觸發中斷引腳

//每個樓層一個限位開關,接在N路輸入的與門芯片上

//如果大于8層,可用兩個8路輸入的與門芯片+一個2路的與門芯片組合

//8路與門:用8路與非門CD4068或74LS30+輸出端接一個三極管反向電平。

/****************************************************************/

/***********************樓梯參數設置*****************************/

#define MaxFloor      16  //電梯總樓層(最大16)


#define FloorStayTime 40 //單位:50ms, 樓層停留時間:40*50ms=2S

#define DoorStayTime  2  //單位:S   , 電梯門停留時間

#define SEG_Num       2  //數碼管數量(為1時請刪除第一個數碼管的595)

/****************************************************************/

#define u8  unsigned char

#define u16 unsigned int

        

#define TRUE  1

#define FALSE 0


#define Null  0  

#define STOP  1

#define UP    2

#define DOWN  3


#define UP_IN     0x01

#define UP_OUT    0x02

#define DOWN_IN   0x04

#define DOWN_OUT  0x08


#define Elev_UP    ElevMotor_P=0;ElevMotor_N=1  //低電平有效

#define Elev_DOWN  ElevMotor_P=1;ElevMotor_N=0  //低電平有效

#define Elev_STOP  ElevMotor_P=1;ElevMotor_N=1  //低電平有效


#define OPEN  1  

#define CLOSE 0

#define DOOR_Open  DOOR=OPEN

#define DOOR_Close DOOR=CLOSE


#define SHCP_H SHCP=1

#define SHCP_L SHCP=0

#define DS_H   DS=1

#define DS_L   DS=0

#define STCP_H STCP=1

#define STCP_L STCP=0


#if MaxFloor>8  

#define MHC595_NUM 8

#else

#define MHC595_NUM 5

#endif 


#define SEGPort 0x01

#define LED_IN_Port 0x02

#define LED_OUT_UP_Port 0x03

#define LED_OUT_DOWN_Port 0x04


typedef struct

{

        u8 ElevRunning;      //電梯運行狀態標志

  u8 CurrentFloor;     //當前電梯所處樓層

        u8 Direction;        //電梯運行方向

        u8 FloorCallTable[MaxFloor+1];//數組[0]不用,從[1]開始使用 ,呼叫列表(所有樓層呼叫的信息均保存于此)

        u8 FloorTimerCount;         //計時

        u8 ArriveFlag;       //到達樓層信號(用于停止或在前一樓層提前加減速)(定時器模擬的用不到)

        u8 FreeFlag;               //電梯空閑狀態標志

}TYPEDEF_ELEVSTATE;

TYPEDEF_ELEVSTATE ElevState; //電梯狀態結構體


//u8 code SEG_NUM[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f};   //共陰SEG數碼管段碼  0~9 

u8 code SEG_NUM[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共陽SEG數碼管段碼  0~F 

u16 code LED_NUM[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   //SEG數碼管段碼  0~9


u8 HC595_BUFF[MHC595_NUM]={0};

u8 Timer_Second;

u16 TimerCount;


u8 RIOver_Flag=0;

u8 ExternKey[2]={0}; //外部按鍵按下信息

u8 FloorCallTableBUFF[MaxFloor+10]={0};

u8 KeyPressFlag=0;


#define USART_RX_LEN 20  //接收緩存長度(請勿超過芯片rom剩余大小)

typedef struct

{

  u8 RX_BUFF[USART_RX_LEN]; //接收緩存

        u8 TX_BUFF[USART_RX_LEN]; //發送緩存

        u16 RX_COUNT;

}USART;

USART Usart;


void delay_ms(u16 xms);

void delay_s(u8 xs);

void EXTI0_Init(void);

void Timer0_Init(void);

void USART_Configure(u16 BaudRate);

void HC595_Send(u8 *p);

u8 KeyScan(void);

void KeyDatHandle(u8 key);

void WaitDoorOpen(u8 ts);

void WaitDoorClose(u8 ts);

void SEG_Display(u8 segnum);

void LED_ON(u8 addr,u8 lednum);

void LED_OFF(u8 addr,u8 lednum);

void DlevWorkState(u8 state);

void Elevator(void);

u8 FloorCall_UP(u8 floorside);

u8 FloorCall_DOWN(u8 floorside);

u8 DelNullCheck(void);

void FloorCallCheck(void);

void USART_SendByte(u8 dat);

void USART_Send(u8* arr,u16 len);

void USART_SendStr(u8* str);

void SYSYEM_INIT(void);


void delay_ms(u16 xms)

{

        u8 i;

        u16 t;

  for(t=xms;t>0;t--)

          for(i=112;i>0;i--);

}


void delay_s(u8 xs)

{

   TimerCount=0;

         Timer_Second=0;

   while(Timer_Second}


void EXTI0_Init(void)

{

  EA = 1;  

        IT0= 1; //下降沿觸發

        EX0= 1;

}


void EXTI1_Init(void)

{

  EA = 1;  

        IT1= 1; //下降沿觸發

        EX1= 1;

}


……………………


…………限于本文篇幅 余下代碼請從51黑下載附件…………

        else

        if(((key>0)&&(key<=8))||((key>32)&&(key<=40))) //樓梯內的樓層選擇按鍵(使用第1行和第5行作為電梯內部16個按鍵,每行8個鍵)

        {

                if(key>32) tempkey=key-32+8;

                else       tempkey=key;

                if(tempkey<=MaxFloor) 

                {

                        LED_ON(LED_IN_Port,tempkey);

                        if(((tempkey>ElevState.CurrentFloor)&&(tempkey                        else

                        if((tempkey                }

        }

        else 

        if(((key>9)&&(key<=16))||((key>40)&&(key<=48)))  //每個樓層門口外的向下按鍵(底樓按向下無效),第2行和第6行

        {

                 if(key>40) tempkey=key-40+8;

                 else       tempkey=key-8;

                 if((tempkey>1)&&(tempkey<=MaxFloor))

                 {

                         LED_ON(LED_OUT_DOWN_Port,tempkey);

                   ElevState.FloorCallTable[tempkey]|=DOWN_OUT;

                 }

        }

        else 

        if(((key>16)&&(key<=24))||((key>48)&&(key<56))) //每個樓層門口外的向上按鍵(頂樓按向上無效),第2行和第7行

        {

                 if(key>48) tempkey=key-48+8;

                 else       tempkey=key-16;

                 if(tempkey                 {

                         LED_ON(LED_OUT_UP_Port,tempkey);

                         ElevState.FloorCallTable[tempkey]|=UP_OUT;

                 }

        }

        else

        if(key==25)  //開門

        {

                if(ElevState.ElevRunning==FALSE)

                {

                  if(DOOR==CLOSE) DOOR_Open;

                }

        }

[1] [2] [3] [4]
關鍵字:單片機  16層可剪裁電梯  Proteus仿真 引用地址:單片機16層可剪裁電梯源碼+Proteus仿真設計

上一篇:51單片機+74HC138驅動16*96點陣顯示漢字的Proteus仿真+源代碼
下一篇:簡單的單片機按鍵控制流水燈

推薦閱讀

STM32的ADC功能較為完善,個人理解的還不是很深入。一點點的吃透!在學習ADC之前我們需要知道相關的ADC的配置一:ADC的最關鍵的時鐘需要使能,用的是HSI:RCC_HSICmd(ENABLE);//時鐘源選擇及配置,參見時鐘樹二:既然是ADC采集,當然需要你設置需要采集的通道,需要利用的I/O口 1,使能相應IO口的時鐘---->配置 I/O的引腳,模式,速率,輸出類型及是...
全球云和本地環境數據管理軟件的公認領導者Commvault(納斯達克代碼:CVLT)在Commvault GO 2019大會上宣布,任命Mercer Rowe擔任全球渠道與聯盟合作伙伴副總裁,同時任命Edison Peres擔任戰略顧問,這象征著Commvault正在擁抱改變并正在打造更加強大、世界一流的銷售和市場團隊。 在過去十年內,Mercer Rowe一直在VMware和IBM等公司擔任渠道和聯盟合...
10月14日,在IC CHINA 2020的全球IC企業家大會上,豪威集團高級副總裁吳曉東發表了題為“探索世界,感知無限”的主題演講,分享了手機和筆記本等領域的發展歷程,并展示了豪威目前在該領域的研發狀況及眾多技術優勢。根據群智咨詢的調查數據,2020年,全球智能手機攝像頭傳感器行業產值規模預計將達110億美金左右,相較2018年增長幅度約為42%。與此同時...
①HSI 是內部高速時鐘, RC 振蕩器, 頻率為 8MHz。 可作為系統時鐘或 PLL 鎖相環的輸入。②HSE 是外部高速時鐘。 可通過外接一個頻率范圍是 4-16MHz 的時鐘或者晶振。 HSE 可以作為系統時鐘和 PLL 鎖相環輸入, 還可以經過 128 分頻后輸入給 RTC。③LSI 是內部低速時鐘, RC 振蕩器, 頻率大約為 40K, 可供獨立看門狗和 RTC...

史海拾趣

問答坊 | AI 解惑

AT89S52中文資料、24c02中文資料手冊

希望能幫助大家…… [ 本帖最后由 鑫海寶貝 于 2011-4-6 17:49 編輯 ]…

查看全部問答∨

酒精測試儀的設計

小弟今年大四 做的畢業設計是:酒精測試儀的設計,可是網上相關資料不多。希望大家相關課題的可以互相幫助幫助!…

查看全部問答∨

非理想Flyback CCM 模式的建模與仿真

非理想Flyback  CCM 模式的建模與仿真…

查看全部問答∨

還是Norflash的問題

我在SST39VF3201上用以下函數進行擦除: bool SST39VF320X::Erase_One_Block (U32 Dst) {     bool  ReturnStatus=TRUE;     IntOff();         *(U16 *) (BaseAddres + 0x5555 * AddrsShi ...…

查看全部問答∨

ucos2移植的困擾

   Tyep mismatch in redeclaration of \'OSTakCreate\'!!! 和他相關聯的文件函數我找了,但都沒找到原因。請問有誰以前遇到過這類問題,期待著您的回復!…

查看全部問答∨

經典的純數據GSM/GPRS傳輸模塊-M590

M590 尺寸:28mm*24mm*11mm 全球第一款單芯片GPRS模塊 功耗低:待機功耗2.5MA 溫寬大:-40—80 支持串口的CMUX功能 開放1Kbytes數據區供客戶使用 獨特AES軟件加密功能 PMB7880集成了基帶、射頻(收發)以及電源管理四顆芯片 編碼方式:CS-2 ...…

查看全部問答∨

串口工具什么都不顯示!!!!

我的串口工具上面無法顯示自己改的U-BOOT的選項菜單,什么都沒有,做i2c和LCD實驗的時候也是串口工具上面什么都沒有!但是uart實驗又是成功的,也就是說串口的設置是對的!。。。問題到底在什么地方阿~麻煩各位了! 我用的是mini2440的板子,USB ...…

查看全部問答∨

請問在EVC下的precompiled header file是什么?不是“ #include "stdafx.h"”嗎?

請問在EVC下的precompiled header file是什么?不是“ #include "stdafx.h" ”嗎? 我編譯程序 報錯: C:\\abcd\\my_draw_v1\\TopologyLine.c(6) : fatal error C1853: \'emulatorDbg/my_draw_v1.pch\' is not a precompiled header file c ...…

查看全部問答∨

兩段代碼,上一段顯示為0,,下一段顯示為8.。

#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit duan=P2^6;        //申明U1鎖存器的鎖存端        sbit wei=P2^7;        //申U2鎖存器 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兴文县| 清涧县| 类乌齐县| 临西县| 微博| 汶上县| 会同县| 锡林浩特市| 长沙市| 尚志市| 交口县| 邵阳市| 深州市| 溆浦县| 冕宁县| 宁安市| 岑溪市| 连南| 伊吾县| 宣城市| 麻城市| 博客| 余干县| 梧州市| 汝阳县| 琼结县| 大洼县| 通州市| 绥宁县| 吉安县| 保康县| 马尔康县| 壤塘县| 邢台市| 梨树县| 于都县| 广昌县| 连云港市| 娄烦县| 杭锦后旗| 朝阳区|