人體反應速度測試儀畢業設計稻谷文苑_第1頁
人體反應速度測試儀畢業設計稻谷文苑_第2頁
人體反應速度測試儀畢業設計稻谷文苑_第3頁
人體反應速度測試儀畢業設計稻谷文苑_第4頁
人體反應速度測試儀畢業設計稻谷文苑_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一章 課題綜述1.1 課題背景 速度素質是指人體進行快速運動的能力,即在單位時間內迅速完成某一動作或通過某一距離的能力。反應速度是指人體對刺激發生反應的快慢。從生理機制分析,反應快慢取決于“反射弧”的五個環節:感受器傳入神經神經中樞傳出神經效應器。下面以mcs-8051單片機為核心,設計出測試人體反應速度的儀器用以測試人的反應時間。我們學習的是單片機理論知識,而課程設計則是對我們學習的理論知識的實踐和鞏固。1.2 設計要求 基于mcs-8051單片機的人體反應速度測試儀設計要求如下: 1.按下“開始”按鈕,紅燈亮,按鈕一直保持按下狀態。 2.紅燈持續點亮一段隨機時間,然后熄滅,燈熄滅時人松開

2、按鈕。 3.計算燈熄滅的時間和按鈕被松開的時間之差,顯示出來。 4.若測試者在紅燈熄滅之前松開按鈕,則顯示出錯信息。1.3 面對的問題 1.對mcs-8051單片機的了解和應用。2. 對八段數碼管的特性的了解和使用。1.4 需解決的關鍵技術 課題主要通過控制紅燈的狀態,通過測試按鈕的狀態來間接計算人體反應速度。要了解每一段數碼管與mcs-8051單片機的連接,數碼管顯示數字的段碼,各個芯片的輸入輸出關系,單片機內部定時器的原理與控制,必須通過查閱資料確定。必須了解數碼管顯示器的顯示原理。第二章 系統分析2.1 涉及的基礎知識 通過學習和查閱資料,本課題需要掌握和了解如下知識:1.mcs-805

3、1單片機各輸入輸出端口的功能特性。2.mcs-8051單片機復位電路工作原理及設計。3.mcs-8051單片機晶振電路工作原理及設計。4.測試按鈕、測試燈電路設計。5.驅動器74ls244、反相器74ls04的特性及使用。6.數碼管顯示器的特性及使用。7.mcs-8051單片機引腳。8.單片機內部定時器原理及使用。9.單片機c語言及程序設計。2.2 mcs-8051單片機簡介 隨著超大規模集成電路技術的發展,在一個集成電路芯片上集成了中央處理器cpu、數據存儲器ram、程序存儲器rom或eprom、各種i/o接口等,構成了一個計算機,稱為單片機。也就是說,單片機是集成在一塊集成電路芯片上的計算

4、機。單片機以其較高的性價比、較高的集成度、較高可靠性、較強控制功能以及低電壓、低功耗、偏于攜帶等優點收到廣大用戶的青睞。mcs-51系列單片機以其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富指令系統,堪稱為一代“名機”,為以后的其他單片機發展奠定了基礎。mcs-51系列單片機具有品種全、兼容性強、軟硬件資料豐富等特點,因此應用非常廣泛,直到現在mcs-51系列單片機仍為單片機中的主流機型,也是高檔單片機的基礎。8051是mcs-51系列單片機中的代表產品,它內部集成了功能強大的中央處理器,包含了硬件乘除法器、21個專用控制寄存器、4kb的程序存儲器、128字

5、節的數據存儲器、4組8位的并行口、兩個16位的可編程定時/ 計數器、一個全雙工的串行口以及布爾處理器。8051中集成了完善的各種中斷源,用戶可十分方便的控制和使用其功能,使得它的應用范圍加大,可以說它可以滿足絕大部分的應用場合。2.3 mcs-8051單片機引腳圖mcs-8051單片機采用40條引腳的雙列直插式封裝,引腳配置如圖21所示。 單片機電源引腳接入單片機的工作電源:vcc引腳接+5v電源,vss引腳接地。 單片機時鐘由引腳xtal1和xtal2接外部時鐘配置電路組成。 單片機復位,當振蕩器運行時,在rst引腳加上兩個機器周期的高電平使單片機復位。 mcs-8051單片機具有4個8位的

6、輸入/輸出口,p0、p1、p2和p3口。 p0口是雙向8位三態i/o口,此口常作為地址總線低8位及數據總線分時復用口,可帶8個lsttl負載。p1口是8位準雙向i/o口,可帶4個lsttl負載。p2口是8位準雙向i/o口,常作地址總線高8位使用,可驅動4個lsttl負載。 p3口是8位準雙向i/o口,為雙功能復用口,可驅動4個lsttl負載。2.4 數碼管顯示器2.4.1 數碼管顯示器的特性1.發光響應快,亮度強,高頻特性好;而且隨著材料的不同,數碼管還能發出紅、黃、綠、藍、橙等多種顏色的光。圖21 mcs-8051單片機引腳圖2. 機械性能好,體積小,重量輕,價格低廉;能與coms和ttl電

7、路配合使用;使用壽命長。3. 工作電壓低,驅動電流適中。每段電流為510ma,一只數碼管的8段led全亮需要電流3570ma。這樣打的電流需要由驅動電路提供,因此,使用時要注意數碼管的驅動問題。在使用中,為了給發光二極管加驅動電壓,他們應有一個公共的引腳,公共的引腳有如下兩種鏈接方法:一、共陰極接法。把發光二極管的陰極連接在一起構成陰極公共引腳,使用時公共引腳接地,這樣陽極引腳上加高電平的發光二極管就導通點亮,而加低電平的則不亮。二、共陽極接法。把發光二極管的陽極連接在一起作為陽極公共引腳,使用時陽極公共引腳接+5v。這樣陰極引腳上加低電平的發光二極管即可導通點亮,而加高電平的則點不亮。本課題

8、采用sr410561k四位一體數碼管,為共陽極接法,位選信號位高電平有效,段碼信號為低電平有效。2.4.2 數碼管的顯示原理 并排使用的多位數碼管組成數碼管顯示器。數碼管顯示器多采用動態顯示方式,全部數碼管共用一套段碼驅動電路,各位數碼管的同段引腳短接后再接到對應段碼的驅動線上。顯示時通過位控制信號采用掃描的方法逐位地循環點亮各位數碼管。動態顯示雖然在任一時刻只有一位數碼管被點亮,但是由于人眼具有的視覺殘留效應,看起來與全部數碼管持續點亮的效果完全一樣。 數碼管顯示器的動態顯示需要為各位提供段碼以及相應的位控制,此即通常所說的段控和位控。把數碼管顯示器段碼表預先存放在存儲器中,使用時通過查表就

9、可以得到段碼。段碼輸出后送到公共端碼線上,也可稱為段控信號。而通過并行口輸出的相互獨立的位碼則是起選通作用的,也稱位控活掃描信號,用于選擇顯示位。動態顯示具有硬件簡單,功耗低和顯示靈活性強等優點。但動態顯示增加了驅動軟件的復雜性,且顯示亮度較低。2.4.3 數碼管顯示器段碼 sr410561k四位一體數碼管采用共陽極接法,單個數碼管如圖22所示。圖22 八段數碼管則數碼管段碼如表21所示。表21 數碼管段碼顯示數字dp g f e d c b a段碼011000000c0111111001f9210100100a4310110000b041001100199510010010926100000

10、1082711111000f88100000008091001000090a1000100088b1000001183c11000110c6d10100001a1e1000011086f100011108e2.5 定時器2.5.1 定時器工作原理 在mcs-8051單片機內集成了兩個16位的定時器/計數器t0和t1,其基本工作原理是加1計數,即對指定的脈沖信號進行加1操作,直到出現溢出為止。當t0和t1作為定時器使用時,其計數脈沖信號取自單片機內部的時鐘信號,每個機器周期產生一個計數脈沖,使計數器加1。t0和t1分別有兩個8位的計數器組成,其中t0由特殊功能寄存器th0與tl0組成,而t1則由

11、特殊功能寄存器th1與tl1組成。這四個寄存器用來存儲定時或計數使用的初值,所以也被稱為時間常數存儲器。特殊功能寄存器tmod和tcon完成對定時器/計數器的控制功能。2.5.2 定時器的控制 mcs-8051單片機的定時功能是由特殊功能寄存器th0,tl0,th1,tl1,tmod和tcon完成的。 特殊功能寄存器tmod用于確定定時器的工作方式,格式如下:d7d6d5d4d3d2d1d0gatec/tm1m0gatec/tm1m0 其中,前4位用于控制t1的工作方式,后四位用于控制t0的工作方式。本課題僅使用t1作為定時器,選擇工作方式為方式1,即為選擇t1為16為定時器。則tmod的值應

12、設置為00010000b,即tmod=0x10。 特殊功能寄存器tcon用于用于控制定時器的啟動和停止技術,同時包含了定時器的狀態,可進行位尋址。格式如下:d7d6d5d4d3d2d1d0tf1tr1tf0tr0ie1it1ie0it0 本課題中用到的控制位有ti的控制位tr1和tf1,無需中斷控制。tr1為t1運行控制位,若tr1=1,允許t1計數,若tr1=0,禁止t1計數。tf1為t1計數溢出標志值,當t1被允許計數后,t1從初值開始加1計數,最高位產生溢出時,tf1由硬件置1,tf1的信息可由軟件查詢。2.5.3 定時器初值的設定 本課題中,設置初值使t1的定時周期為1ms。當紅燈熄滅

13、后,定時器開始工作,每1ms定時器產生一次溢出,使數碼管要顯示的反應時間以毫秒為單位加1,達到使數碼管顯示人體反應時間的目的。t1采用工作方式1定時,時鐘頻率采用6mhz,則計數初值: x=216-6×106×1×10-3/12=65536-6000/12=65036化為二進制x=1111111000001100b,則計數初值應為th1=0xfe ,tl1=0x0c。第3章 總體方案設計3.1 總體方案數碼管的顯示電路中采用動態數碼管顯示。采用mcs-8051單片機的p0端口(p0.0p0.7端口)控制段碼,低電平有效。p2.0p2.3端口控制4位數碼管的位選擇,

14、高電平有效。(p2.3端口控制第1個數碼管,p2.2端口控制第2個數碼管,p2.1端口控制第3個數碼管,p2.0端口控制第4個數碼管)。各個數碼管的段碼都是p0端口的輸出,即各個數碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數字,可采用動態掃描的方式,即先只讓最低位顯示,經過一段延時,再只讓次低位顯示,以此類推。由于視覺暫留,只要延時時間足夠短,就能夠使得數碼的顯示看起來非常穩定清楚。3.2 功能模塊框圖 人體反應速度測試儀的功能模塊框圖如圖31所示。硬件電路由mcs-8051單片機、電源電路、測試按鈕和測試燈電路、晶振電路、復位電路、驅動電路、反相電路以及數碼管顯示電路組成。 電源電路測

15、試按鈕和測試燈電路數碼管顯示電路mcs8051 單片機 復位電路 驅動電路 反相電路 晶振電路 圖31 人體反應速度測試儀功能模塊框圖第4章 系統硬件設計4.1 硬件連接圖4.1.1 測試按鈕與測試燈電路mcs-8051單片機的p1.0端口控制一個發光二極管,即為測試紅燈。發光二極管加限流電阻接+5v電源,當單片機的p1.0端口輸出低電平時,紅燈亮,輸出高電平時,紅燈滅。p1.1端口接“開始”按鈕,按鈕另一端接地。若按鈕按下,則p1.1口輸入低電平,否則輸入高電平。4.1.2 數碼管顯示電路 數碼管采用sr410561k四位一體數碼管。mcs-8051單片機的p0口的8個端口(p0.0p0.7

16、)控制數碼管的八段數碼顯示。p0口8位輸出經限流電阻接入到數碼管顯示器的段碼端口。數碼管采用共陽極接法,低電平有效。限流電阻的接入是由于在應用數碼管進行顯示時,首先需要考慮的問題是驅動電流,與發光二極管相同,數碼管的發光段也需要串聯限流電阻,串聯限流電阻的組織越大,電流越小,亮度越低;電阻阻值越小,電流越大,亮度越高。在使用限流電阻時需要在每一個線段上都串聯限流電阻,而不要在公共端上串聯一個限流電阻,否則在顯示不同的數字時,會造成數碼管亮度的不同。單片機p2口的p2.0p2.3控制4位數碼管的位選,p2口輸出經限流電阻后需進行反相,反相之后經驅動電路接入到數碼管顯示器的位選端。4.1.3 晶振

17、電路 時鐘是單片機的心臟,單片機各功能部件的運行都是以時鐘頻率為基準,有條不紊地一拍一拍地工作。因此,時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統的運行。單片機必須在時鐘的驅動下才能正常工作。mcs-8051單片機的時鐘可以由內部方式或外部方式產生。本課題采用內部方式的晶振電路,如圖41所示,一般選用石英晶體振蕩器。利用 mcs-8051單片機內部的震蕩電路,并在xtal1和xtal2兩腳間外接晶體以及電容c1和c2構成的并聯諧振電路,使內部振蕩器產生自激振蕩。組成時鐘電路的晶體振蕩器的頻率大小決定了單片機系統的工作頻率,即決定著單片機的工作速度,本課題時鐘頻率采用6mhz

18、。圖41 晶振電路4.1.4 復位電路 采用上電自動復位電路,工作原理是:通電瞬間,rc電路充電,rst端出現正脈沖,只要rst端保持10ms以上的高電平,就能使單片機有效復位。當晶振頻率選用6mhz時,c取22uf,r取1k歐,如圖42所示。圖42 復位電路4.1.5 驅動電路用四個pnp數碼管作為每一位數碼管的驅動電路,這樣使得數碼管電流更大,亮度更亮。p2.0p2.3控制數碼管顯示器的四個位,當相應的端口變為高電平時,經反相器變為低電平,驅動相應的三極管會導通,+5v通過相應的驅動三極管給數碼管相應的位供電,這時只要p0口送出相應的顯示段碼,數碼管就能顯示出所需數值,即顯示定時器的計時數

19、值。4.1.6 反相電路由于程序中設置p2口輸出的位選信號為高電平,使驅動三極管導通應使用低電平,即在位選信號輸出線路中限流電阻后應接入反相器。本課題反相器采用74ls04反相器。74ls04芯片為6非門(反相器),內部含有6個coms反相器,74ls04的作用就是反相。反相器輸出三極管驅動電路接入到數碼管位選端口。74ls04如圖43所示。圖43 74ls04反相器4.2 實現方法 主程序采用查詢方式,當按鈕按下時,mcs-8051單片機使led燈亮起的同時調用隨機函數產生一個隨機時間,單片機利用產生的這個隨機時間計時。計時時間到,mcs-8051單片機輸出使p1.0端口為高電平,led測試

20、燈熄滅,mcs-8051單片機進行新的一輪計時,當測試者松開按鈕時,計時時間停止,單片機把這個計時時間送往數碼管顯示電路顯示。當mcs-8051單片機第一輪的計時時間還未到時,若按鈕松開,則單片機輸出錯誤提示,使數碼管顯示為9999。4.3 詳細流程圖圖41 詳細流程圖第五章 程序代碼編寫5.1 按鈕電路的實現描述:讀取按鈕當前的狀態byte bot(void) /按鈕狀態,若按鈕被按下則返回0,否則返回1if(key=0) return 0;else return 1;5.2 四位數碼管顯示電路的實現描述:數碼管進行顯示反應時間void display(word ms) /數碼管上的顯示反應

21、時間 byte posi=0x01,i,j,temp; /posi初始化選擇為最低位 disp3=ms/1000; /1s disp2=(ms%1000)/100; /100ms disp1=(ms%100)/10; /10ms disp0=ms%10; /1ms for(i=0;i<4;i+) /數碼管顯示 temp=dispi; temp=tabletemp; for(j=0;j<200;j+) p2=posi; /p2口進行位選擇 p0=temp; /p0口進行段選擇 posi=posi*2; /posi二進制向左移動一位,選擇下一位 5.3 隨機函數的實現描述:用隨機函數產

22、生一個隨機數,為隨機時間,即按鈕按下到紅燈熄滅的時間 unsigned long random(void) /生成隨機數 word rt; srand (50000); /產生的隨機數的范圍為0-50000 rt=rand(); /產生一個隨機數 return rt;5.4 定時器程序的實現描述:定時器初始化程序void init_t1(void) tmod=0x10; /定時器1為工作方式1 th1=0xfe; /定時器1的周期為1ms tl1=0x0c; tr1=1; /啟動定時器1void lms(void) /1ms產生一次溢出 init_t1() ; while(1) if(tf1=

23、1) /等待定時器1溢出 break; 5.5 主函數的實現#define led p10#define key p11void main(void) unsigned char code table16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e byte k=0; k=bot(); /獲取按鈕情況,k=0為按鈕被按下 word mstime=0; p1=0xff; /p1口預制高電平,紅燈熄滅(p1.0) while(1) word mstime=0,j; word r,j

24、; while(bot(); /等到按鈕被按下,循環條件為0,跳出該循環 led=0; /按鍵被按下后,燈亮 r=random(); /產生隨機時間 for (j=r;j>0;j-) /使紅燈在該時間內為亮 lms(); k=bot(); if (k=1) /如果測試者在紅燈熄滅前松開按鈕按鈕 mstime=9999; /使數碼管顯示9999出錯信息 led=1 ; /紅燈熄滅 goto loop; led=1; /隨機延時結束,紅燈熄滅 init_t1(); /定時器1初始化 while(1) if(tf1=1) /定時器每1ms產生一次溢出 th1=0xfe; tl1=0x0c; t

25、r1=1; tf1=0; /溢出位復位 mstime=mstime+1; /計時時間增加1ms if(bot() break; /測試者松開按鈕,計時結束 loop: while(1) if(k=1) /按鍵彈開后始終顯示時間 k=bot(); display(mstime); else /若按鍵按下,重新開始測試 mstime=0; p2=0xff; break; 5.6總程序#define led p10#define key p11byte bot(void) if(key=0) return 0;else return 1;void display(word ms) byte posi

26、=0x01,i,j,temp; disp3=ms/1000; disp2=(ms%1000)/100; disp1=(ms%100)/10; disp0=ms%10; for(i=0;i<4;i+) temp=dispi; temp=tabletemp; for(j=0;j<200;j+) p2=posi; p0=temp; posi=posi*2; unsigned long random(void) word rt; srand (50000); rt=rand(); return rt; void init_t1(void) tmod=0x10; th1=0xfe; tl1=

27、0x0c; tr1=1; void lms(void) init_t1() ; while(1) if(tf1=1) break; void main(void) unsigned char code table16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e byte k=0; k=bot(); word mstime=0; p1=0xff; while(1) word mstime=0,j; word r,j; while(bot(); led=0; r=random(); for (j=r;j>0;j-) lms(); k=bot(); if (k=1) mstime=9999; led=1 ; goto loop; led=1; init_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論