基于STM32的四路搶答器_第1頁
基于STM32的四路搶答器_第2頁
基于STM32的四路搶答器_第3頁
基于STM32的四路搶答器_第4頁
基于STM32的四路搶答器_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

課程設(shè)計說明書課程設(shè)計說明書題目:基于STM32的四路搶答器學(xué)院:年級專業(yè):學(xué)號:學(xué)生姓名:指導(dǎo)教師: 第1頁共33頁課程設(shè)計說明書摘要在各種智力競賽場合,搶答器是必不可少的最公正的用具。在我們各種競賽中我們也經(jīng)常能看到有搶答的環(huán)節(jié),某些舉辦方采用讓選手通過舉答題板的方法判斷選手的答題權(quán),這在某種程度上會因為主持人的主觀誤斷造成比賽的不公平性,而搶答器的應(yīng)用就能避免這種弊端。今天隨著科技的不斷進步搶答器的制作也更加追求精益求精,人們擺脫了耗費很多元件僅來實現(xiàn)用指示燈和一些電路來實現(xiàn)簡單的搶答功能,使第一個搶答的參賽者的編號能通過指示燈顯示出來,避免不合理的現(xiàn)象發(fā)生。但這種電路不易于擴展,而且當(dāng)有更高要求時就無法實現(xiàn),例如參賽人數(shù)的增加。隨著數(shù)字電路的發(fā)展,數(shù)字搶答器誕生了,它易于擴展,可靠性好,集成度高,而且費用低,功能更加多樣,是一種高效能的產(chǎn)品。而如今在市場上銷售的搶答器大多采用可編程邏輯元器件,或利用單片機技術(shù)進行設(shè)計。本文實現(xiàn)了一個基于嵌入式STM32單片機的4路搶答器系統(tǒng)設(shè)計,本系統(tǒng)設(shè)計主要分為硬件設(shè)備和軟件控制兩大部分。外部硬件使用STM32單片機作為控制中心,用4個按鍵作為搶答輸入,搶答開始后,搶答成功者的LED燈標(biāo)識為紅色閃爍,并且顯示各搶答輸入的時間。關(guān)鍵詞:智能搶答器,STM32,按鍵輸入,數(shù)碼管顯示 第2頁共33頁課程設(shè)計說明書課程設(shè)計說明書 第頁/*調(diào)用庫函數(shù),初始化GPIOA*/GPIO_Init(GPIOA,&GPIO_InitStructure);/*關(guān)閉所有l(wèi)ed燈*/GPIO_SetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);}程序分析:進入LED_GPIO_Config后,完成LED相關(guān)引腳配置。4.4.3按鍵配置函數(shù)#include"key.h"voidKEY_Config(void){//GPIO配置EXTI_InitTypeDefEXTI_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIO_InitStructure);//EXTI配置GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0|\GPIO_PinSource1|GPIO_PinSource2|GPIO_PinSource3);//中斷源EXTI_InitStructure.EXTI_Line=EXTI_Line0|EXTI_Line1|EXTI_Line2|EXTI_Line3;//中斷線路EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//外部觸發(fā)EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);}程序分析:完成KEY相關(guān)引腳配置,并設(shè)置相應(yīng)的中斷線,中斷模式,觸發(fā)方式,使能EXTI的配置。4.4.4NVIC配置#include"nvic.h"voidNVIC_Config(void){//éù?÷NVIC?á11ì?NVIC_InitTypeDefNVIC_InitStructure;//設(shè)置中斷0NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//設(shè)置中斷1NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//設(shè)置中斷2NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//設(shè)置中斷3NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;NVIC_Init(&NVIC_InitStructure);}程序分析:在NVIC中,分別完成相應(yīng)的中斷1,2,3,4中斷分組,搶占優(yōu)先級,響應(yīng)優(yōu)先級的配置,由于是均等條件的搶答,故搶占及響應(yīng)優(yōu)先級均為同一等級。4.4.5DIGITRON函數(shù)#include"digitron.h"u8table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//共陽極0-9intFlagA=1,FlagB=1,FlagC=1,FlagD=1;u16TIME=500;voiddelayms(u16time);//延時1msvoidTimeCount(void);//計時voidDIGITRON_GPIO_Config(void){/*定義一個GPIO_InitTypeDef類型的結(jié)構(gòu)體*/GPIO_InitTypeDefGPIO_InitStructure;/*開啟GPIOA的外設(shè)時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);/*選擇要控制的GPIOB引腳*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/*設(shè)置引腳模式為通用推挽輸出*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/*設(shè)置引腳速率為50MHz*/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/*調(diào)用庫函數(shù),初始化GPIOA*/GPIO_Init(GPIOB,&GPIO_InitStructure);}voidTimeCount(){u8i=0,j=0,m=0,n=0;//選手Afor(;i<10;i++){GPIO_ResetBits(GPIOB,GPIO_Pin_All);switch(i){case0:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);delayms(TIME);break;//0case 1: GPIO_SetBits(GPIOB,GPIO_Pin_1 |GPIO_Pin_2);delayms(TIME);break;//1case2:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_3 | GPIO_Pin_4 |GPIO_Pin_6);delayms(TIME);break;//2case3:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_2 | GPIO_Pin_3 |GPIO_Pin_6);delayms(TIME);break;//3case4:GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2|\GPIO_Pin_5|GPIO_Pin_6);delayms(TIME);break;//4case5:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2|\GPIO_Pin_3 | GPIO_Pin_5 |GPIO_Pin_6);delayms(TIME);break;//5case6:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_2|\GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);delayms(TIME);break;//6case7:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_2);delayms(TIME);break;//7case8:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5\|GPIO_Pin_6);delayms(TIME);break;//8case9:GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|\GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_6);delayms(TIME);break;//9}if(FlagA==1){break;}}voiddelayms(u16time)//延時1ms{u16i=0;while(time--){i=12000;while(i--);}}程序分析:在數(shù)碼管函數(shù)中,采用switch-case語句進行數(shù)碼管從0-9的顯示,每個數(shù)字顯示500ms,在響應(yīng)中斷后,跳出for循環(huán),從而實現(xiàn)搶答時間的顯示。4.4.6中斷服務(wù)函數(shù)voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET){for(;i<=repeat;i++){LED1(ON);Delay(100);LED1(OFF);Delay(100);}FlagA=1;EXTI_ClearITPendingBit(EXTI_Line0);}}程序分析;當(dāng)按鍵按下后,產(chǎn)生下降沿,從而進入中斷函數(shù),LED閃爍,并將FlagA置1,實現(xiàn)數(shù)碼管函數(shù)的跳出for循環(huán)。4.5本章小結(jié)本章是搶答器的軟件設(shè)計,采用庫函數(shù)編程的方法,實現(xiàn)搶答功能,將程序下載到硬件電路中,實現(xiàn)搶答功能。第5章總結(jié)與展望5.1總結(jié)本文研究與設(shè)計的八路多功能搶答器采用了通用的電子元器件,利用80C51單片機及外圍接口實現(xiàn)搶答系統(tǒng),利用單片機的定時器/計數(shù)器定時和計數(shù)的原理,將軟、硬件有機地結(jié)合起來。通過查資料和搜集有關(guān)的文獻(xiàn),理論聯(lián)系實踐,培養(yǎng)了自學(xué)能力和動手能力。并且由原先的被動的接受知識轉(zhuǎn)換為主動的尋求知識,這可以說是學(xué)習(xí)方法上的一個很大的突破。在設(shè)計過程中由于時間倉促和能力有限使很多地方難免存在不足之處,硬件設(shè)計和軟件設(shè)計中有些功能還尚未開發(fā)出來。但在以后的工作中,我會嚴(yán)格要求自己,追求完美。整個設(shè)計通過了軟件和硬件上的調(diào)試,我想這對于自己以后的學(xué)習(xí)和工作都會有很大的幫助的。在這次設(shè)計中遇到了很多實際性的問題,在實際設(shè)計中才發(fā)現(xiàn),書本上理論性的東西與在實際運用中的還是有一定的出入的,所以有些問題不但要深入地理解,而且要不斷地更正以前的錯誤思維。對于單片機設(shè)計,其硬件電路是比較簡單的,主要是解決程序設(shè)計中的問題。而程序設(shè)計是一個很靈活的東西,它反映了你解決問題的邏輯思維和創(chuàng)新能力。它才是一個設(shè)計的靈魂所在。因此在整個設(shè)計過程中大部分時間是用在程序上面的。很多子程序是可以借鑒書本上的,但怎樣銜接各個子程序才是關(guān)鍵的問題所在,這需要對單片機的結(jié)構(gòu)很熟悉。因此可以說單片機的設(shè)計是軟件和硬件的結(jié)合,二者是密不可分的。但是,通過這次設(shè)計我也發(fā)現(xiàn)自己的很多不足之處。在設(shè)計過程中我發(fā)現(xiàn)自己考慮問題很不全面,自己的專業(yè)知識掌握的很不牢固,所掌握的計算機應(yīng)用軟件還不夠多,我希望自己的這些不足之處能在今后的工作和學(xué)習(xí)中得到改善。而且,通過這次設(shè)計,我懂得了學(xué)習(xí)的重要性,學(xué)會了堅持和努力,這將為以后的學(xué)習(xí)做出了最好的榜樣!5.2展望回頭再看看該設(shè)計,還可以將設(shè)計的擴展功能增強:1、可以設(shè)計聲控裝置,在主持人說開始時,系統(tǒng)自動完成清零并開始計時的功能。2、增加記分模塊,可以設(shè)定初始積分,并記錄每次搶答完成后的積分。3、將搶答按鍵用無線實現(xiàn),如紅外線,使搶

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論