版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上列出這個設(shè)計中要用到的STM32的各個引腳及實際用途如表(1)所示,硬件電路圖如圖(2)所示??刂埔? 總體控制要求:電梯由安裝在各樓層電梯口的上升下降呼叫按鈕(U1、U2、U3、D2、D3、D4),電梯轎廂內(nèi)樓層選擇按鈕(S1、S2、S3、S4),上升下降指示(UP、DOWN),各樓層到位行程開關(guān)(SQ1、SQ2、SQ3、SQ4)組成。電梯自動執(zhí)行呼叫。2 電梯在上升的過程中只響應(yīng)向上的呼叫,在下降的過程中只響應(yīng)向下的呼叫,電梯向上或向下的呼叫執(zhí)行完成后再執(zhí)行反向呼叫。3 電梯停止運(yùn)行等待呼叫時,同時有不同呼叫時,誰先呼叫執(zhí)行誰。4 具有呼叫記憶、內(nèi)選呼叫指示功能
2、。5 具有樓層顯示、方向指示、到站聲音提示功能。 設(shè)計中用到的各引腳分布:輸入B11->B14一層到四層的內(nèi)選按鈕輸入B8->B10二層到四層的下呼按鈕輸入B5->B7一層到三層的上呼按鈕輸入B1->B4行程控制輸出C12->C15當(dāng)前樓層指示輸出C11橋箱下降指示輸出C10橋箱上升指示輸出C6->C9一層到四層的內(nèi)選指示燈輸出C3->C5二層到四層的下呼指示燈輸出C0->C2一層到三層的上呼指示燈輸出D12八音盒,到站聲輸出D8->D11數(shù)碼管的控制端子 表(1)硬件電路圖如下圖所示: 圖(2)程序的流程圖如圖(3): 圖(3)程序代碼如
3、下:#include "stm32f10x_lib.h"#include "stdio.h"void RCC_Configuration(void); /時鐘配置函數(shù)void GPIO_Configuration(void); /通用I/O口配置函數(shù)void ask_Scan(void);void delay(vu32 Count); /延時unsigned char inslt4=0,dnask3=0,upask3=0,fnow4=0;signed char nnum=0,dnnum=0,upnum=0,innum=0,i=0;/inslt4四層內(nèi)選,
4、dnask下呼請求,upask3上呼請求,fnow當(dāng)前樓層;u8 updnFlag=0;/上呼與下呼標(biāo)main (void) #ifdef DEBUG debug(); #endif RCC_Configuration(); GPIO_Configuration(); GPIO_ResetBits(GPIOC, GPIO_Pin_0); GPIO_ResetBits(GPIOC, GPIO_Pin_1); GPIO_ResetBits(GPIOC, GPIO_Pin_2); /各層的上呼請求清零 GPIO_ResetBits(GPIOC, GPIO_Pin_3); GPIO_ResetBits
5、(GPIOC, GPIO_Pin_4); GPIO_ResetBits(GPIOC, GPIO_Pin_5); /各層的下呼請求清零 GPIO_ResetBits(GPIOC, GPIO_Pin_6); GPIO_ResetBits(GPIOC, GPIO_Pin_7); GPIO_ResetBits(GPIOC, GPIO_Pin_8); GPIO_ResetBits(GPIOC, GPIO_Pin_9); /各層的內(nèi)選請求清零 GPIO_ResetBits(GPIOC, GPIO_Pin_10); /橋箱上升請求清零 GPIO_ResetBits(GPIOC, GPIO_Pin_11);
6、/ 橋箱下降請求清零 GPIO_ResetBits(GPIOC, GPIO_Pin_12); GPIO_ResetBits(GPIOC, GPIO_Pin_13); GPIO_ResetBits(GPIOC, GPIO_Pin_14); GPIO_ResetBits(GPIOC, GPIO_Pin_15); /當(dāng)前樓層指示清零 GPIO_ResetBits(GPIOD, GPIO_Pin_8); GPIO_ResetBits(GPIOD, GPIO_Pin_9); GPIO_ResetBits(GPIOD, GPIO_Pin_10); GPIO_ResetBits(GPIOD, GPIO_Pi
7、n_11); /當(dāng)前樓層顯示清零 GPIO_ResetBits(GPIOD, GPIO_Pin_12); /到站聲清零while(1) void wait_display_scan(void) / 等待狀態(tài)掃描 void nowfloor_scan(void)/掃描當(dāng)前電梯所在的樓層 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)=1)fnow0=1; nnum=1; if(GPIO_ReadIntputDataBit(GPIOB,GPIO_Pin_2)=1)fnow1=1;nnum=2; if(GPIO_ReadIntputDataBit(GPIOB,G
8、PIO_Pin_3)=1)fnow2=1;nnum=3; if(GPIO_ReadIntputDataBit(GPIOB,GPIO_Pin_4)=1)fnow3=1;nnum=4; void nowfloor_display(void) switch(nnum) case 1: GPIO_SetBits(GPIOC, GPIO_Pin_6); /第一層指示燈亮 GPIO_Write(GPIOD,0x01<<8); / 顯示第一層 break; case 2: GPIO_SetBits(GPIOC, GPIO_Pin_7); /第2層指示燈亮 GPIO_Write(GPIOD,0x0
9、2<<8); / 顯示第2層 break; case 3: GPIO_SetBits(GPIOC, GPIO_Pin_8); /第3層指示燈亮 GPIO_Write(GPIOD,0x03<<8); / 顯示第3層 break; case 4: GPIO_SetBits(GPIOC, GPIO_Pin_9); /第4層指示燈亮GPIO_Write(GPIOD,0x04<<8); / 顯示第4層 break; void ask_scan(void) /判斷有沒有上呼、下呼、內(nèi)選請求 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_
10、5)=1)upask0=1;upnum=1;updnFlag=0; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)=1)upask1=1;upnum=2;updnFlag=0; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)=1)upask1=1;upnum=3;updnFlag=0; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)=1)dnask0=1;upnum=2;updnFlag=1; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)=1
11、)dnask1=1;upnum=3;updnFlag=1; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)=1)dnask2=1;upnum=4;updnFlag=1; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)=1)inslt0=1;innum=1; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)=1)inslt1=1;innum=2; if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)=1)inslt2=1;innum=3; if(
12、GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)=1)inslt3=1;innum=4; void ask_display(void) switch(upnum) case 1: GPIO_SetBits(GPIOC, GPIO_Pin_0); /第1層上呼指示燈亮 break; case 2 GPIO_SetBits(GPIOC, GPIO_Pin_1); /第2層上呼指示燈亮 break; case 3: GPIO_SetBits(GPIOC, GPIO_Pin_2); /第3層上呼指示燈亮 break; switch(dnnum) case 2: GPIO
13、_SetBits(GPIOC, GPIO_Pin_3); /第2層下呼指示燈亮 break; case 3: GPIO_SetBits(GPIOC, GPIO_Pin_4); /第3層下呼指示燈亮 break; case 4: GPIO_SetBits(GPIOC, GPIO_Pin_5); /第4層下呼指示燈亮 break; switch(innum) case 1: GPIO_SetBits(GPIOC, GPIO_Pin_6); /第1層內(nèi)選指示燈亮 break; case 2: GPIO_SetBits(GPIOC, GPIO_Pin_7); /第2層內(nèi)選指示燈亮 break; cas
14、e 3: GPIO_SetBits(GPIOC, GPIO_Pin_8); /第3層內(nèi)選指示燈亮 break; case 4: GPIO_SetBits(GPIOC, GPIO_Pin_9); /第3層內(nèi)選指示燈亮 break; if(upnum=0|dnnum=0|innum=0) /如果沒有呼叫請求 void wait_display_scan(void); /等待并顯示當(dāng)前樓層 else switch(updnFlag) case(0) void upask_dispose(void) if(nnun=upnum|nnum=innum) GPIO_setBits(GPIOD, GPIO_
15、Pin_12); /開門、警報到站 void nowfloor_display(void) ; void delay(vu32 Count); /開門延時 else for (i=nnum+1;i<=4;i+) if(upnumi=1|dnnumi=1|inslti=1) /當(dāng)前層的上面有請求,上移一層,在看是否是 nnum+; /想要去的層或呼叫層void nowfloor_display(void) ;void ask_display(void);void upask_dispose(void); else updnFlag=1 void wait_display_scan(void
16、); /若下面沒有請求了,反向 GPIO_SetBits(GPIOC, GPIO_Pin_11); /橋箱下降指示燈亮 break; case(1) void dnask_dispose(void) if(nnun=dnnum|nnum=innum) GPIO_setBits(GPIOD, GPIO_Pin_12); /開門、警報到站 void nowfloor_scan(void) ; void delay(vu32 Count); /開門延時 else for (i=nnum-1;i>=1;i-)if(upnumi=1|dnnumi=1|inslti=1) /當(dāng)前層的下面有請求,下移
17、一層,在看是否是 nnum-; /想要去的層或呼叫層void ask_display(void);void nowfloor_display(void) ;void dnask_dispose(void); elseupdnFlag=0void wait_display_scan(void); /若下面沒有請求了,反向GPIO_SetBits(GPIOC, GPIO_Pin_10); /橋箱上升指示燈亮 break;void RCC_Configuration(void)/時鐘配置函數(shù) ErrorStatus HSEStartUpStatus; u8 SYSCLKSourceValue; RC
18、C_DeInit(); /對RCC復(fù)位 RCC_HSEConfig(RCC_HSE_ON);/使能HSE時鐘 HSEStartUpStatus=RCC_WaitForHSEStartUp();/取HSE是否準(zhǔn)備好標(biāo)志 if(HSEStartUpStatus=SUCCESS)/判斷HSE是否準(zhǔn)備好 /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); RCC_HCLK
19、Config(RCC_SYSCLK_Div1); /配置AHB時鐘為系統(tǒng)時鐘 RCC_PCLK1Config(RCC_HCLK_Div2);/配置低速APB1時鐘為系統(tǒng)時鐘的一半 RCC_PCLK2Config(RCC_HCLK_Div2);/配置高速APB2時鐘為系統(tǒng)時鐘的一半 RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); /對HSE進(jìn)行倍頻,倍頻因子為9,倍頻后時鐘頻率為72MHZ RCC_PLLCmd(ENABLE); /使能倍頻后的時鐘 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RES
20、ET)/等待PLL時鐘啟用成功 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/將倍頻后的時鐘設(shè)置為系統(tǒng)時鐘 SYSCLKSourceValue=RCC_GetSYSCLKSource();/取時鐘頻率值 while(SYSCLKSourceValue != 0x08) /判斷系統(tǒng)時鐘是否為倍頻后的時鐘 /- 0x00: HSI used as system clock /- 0x04: HSE used as system clock /- 0x08: PLL used as system clock RCC_APB2PeriphClockCmd(RCC
21、_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOB, ENABLE); /使能APB2的外設(shè)GPIOA和GPIOC的時鐘void GPIO_Configuration(void) /通用I/O端口配置函數(shù) GPIO_InitTypeDef GPIO_InitStructure; /* Configure GPIOC pin0, pin1, pin2 and pin3 as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_InitStruc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 托班冬天有趣課程設(shè)計
- 自動插線機(jī)課程設(shè)計
- 研學(xué)紅色教育課程設(shè)計
- 牙齒矯正牽引課程設(shè)計
- 藝人練習(xí)生課程設(shè)計
- 承德護(hù)理職業(yè)學(xué)院《科學(xué)研究方法與論文寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年版特定事項連帶保證協(xié)議版B版
- 2024文化創(chuàng)意產(chǎn)業(yè)合作開發(fā)協(xié)議
- 2024年綠色能源項目內(nèi)部股東股權(quán)轉(zhuǎn)讓與權(quán)益調(diào)整協(xié)議3篇
- 2025年度:區(qū)塊鏈技術(shù)應(yīng)用合同標(biāo)的數(shù)字資產(chǎn)安全3篇
- 12G614-1砌體填充墻結(jié)構(gòu)構(gòu)造
- 自然拼讀法基本規(guī)則 教案
- 德語語言學(xué)導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年中國海洋大學(xué)
- 檢驗試劑實施方案范文
- JT-T-1078-2016道路運(yùn)輸車輛衛(wèi)星定位系統(tǒng)視頻通信協(xié)議
- 2024-2029年中國人工骨行業(yè)發(fā)展分析及發(fā)展前景與趨勢預(yù)測研究報告
- 2024年高校教師資格證資格考試試題庫及答案(各地真題)
- 扭虧增盈提質(zhì)增效方案
- 侵權(quán)法智慧樹知到期末考試答案章節(jié)答案2024年四川大學(xué)
- 期末考試卷2《心理健康與職業(yè)生涯》(解析卷)高一思想政治課(高教版2023基礎(chǔ)模塊)
- 年度安全生產(chǎn)投入臺賬(詳細(xì)模板)
評論
0/150
提交評論