莫旭濤_6_項(xiàng)目18_人體反應(yīng)速度測試儀設(shè)計_第1頁
莫旭濤_6_項(xiàng)目18_人體反應(yīng)速度測試儀設(shè)計_第2頁
莫旭濤_6_項(xiàng)目18_人體反應(yīng)速度測試儀設(shè)計_第3頁
莫旭濤_6_項(xiàng)目18_人體反應(yīng)速度測試儀設(shè)計_第4頁
莫旭濤_6_項(xiàng)目18_人體反應(yīng)速度測試儀設(shè)計_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 學(xué)號序號 6 單片機(jī)原理與接口技術(shù) 實(shí)驗(yàn)報告實(shí)驗(yàn)項(xiàng)目序號 4 實(shí)驗(yàn)項(xiàng)目名稱 人體反應(yīng)速度測試 姓 名 莫 旭 濤 專 業(yè) 電子信息工程 班 級 電信13-4BF 完成時間 2014年月10月16日 一調(diào)試心得這是我們第一個用C語言編寫的項(xiàng)目實(shí)例,剛剛開始的時候,對C是有些陌生的,但是經(jīng)過這么一個案例的編寫,明顯對C語言的操作變得熟練了。相比起匯編來,C語言人性化許多,修改錯誤也比較讓人習(xí)慣。在這程序的編寫中,同樣遇到了許多的問題,但是只要花時間,就沒有解決不了了問題。在編寫這個程序的時候,首先要解決的問題是矩陣鍵盤和數(shù)碼管的顯示,這兩個模塊我們用得非常多,在以后對單

2、片機(jī)的操作中也會經(jīng)常用到,所以,我們最好寫成模塊的形式,方便以后調(diào)用。再次遇到要使用矩陣鍵盤和數(shù)碼管的時候,就可以直接把代碼復(fù)制粘貼過來使用。編寫這個程序遇到的第一個疑難雜癥就是游戲次數(shù)的設(shè)置,因?yàn)闀系拇a是在一個while循環(huán)中進(jìn)行的,所以沒有游戲次數(shù)可言。每次反應(yīng)速度的測試顯示一個相應(yīng)的值,但是我們自己寫的代碼中明顯是要設(shè)置游戲次數(shù)的,這樣才能取出平均值,讓我們測量的反應(yīng)時間變得更加精確。所以我們while循環(huán)中要設(shè)置一個調(diào)出循環(huán)的次數(shù),這個次數(shù)就是我們游戲次數(shù),在這里,要注意初值和減一所放的位置。第二個疑難是隨機(jī)數(shù)的生成,因?yàn)樵?1單片機(jī)中是不支持對系統(tǒng)時間的調(diào)用,所以沒有 也不能使用

3、時間函數(shù),而我們所有的算法算出來的數(shù)都會是一個有一定規(guī)律順序的數(shù)。再次,如果用另外一個定時器來生成隨機(jī)數(shù),就可以做到代替時間函數(shù),生成真正的隨機(jī)數(shù)。二程序代碼功能簡介:第一部分的代碼:第八個數(shù)碼管顯示要按下的鍵,第6個數(shù)碼管顯示實(shí)際按下的鍵值。若按對,錄入反應(yīng)時間;若按錯,置反應(yīng)時間為9999ms。1-4個數(shù)碼管顯示幾次按鍵的平均反應(yīng)時間。第二部分代碼:實(shí)現(xiàn)書上測試反應(yīng)速度的程序。程序開始后,按下按鍵,led燈一直亮著,直到一個隨機(jī)的時間,led燈熄滅。此時可以松手,記燈熄滅到松手的時間差為反應(yīng)時間。代碼如下:矩陣鍵盤模塊:#include project18s.h#include uchar

4、 key_value=0x10;uchar temp,a;uchar keyboard()uchar i,t=4;P2=0xFF;/P2口寫1 a=0x7F; /p_value賦初始值i=1;while(t-)a=_crol_(a,1);/循環(huán)左移一位,檢測下一行key_scan();i+;if(i=5) i=1; a=0x7f;return key_value;void key_scan()P2=a; /P2.0置零temp=P2; /讀P2口的值temp=temp&0xF0;/取高四位,都得用temp,即temp=p2,temp=temp&0xf0;while(temp!=0xF0)/如果

5、高四位不全為0,則有鍵下delay(5);/延時消抖while(temp!=0xF0)/再讀一次,如果高四位還是不全為0,真的有鍵按下了temp=P2;/讀P2口的值給tempswitch(temp)case 0xEE:key_value=0; break;case 0xDE:key_value=1; break;case 0xBE:key_value=2; break;case 0x7E:key_value=3; break;case 0xED:key_value=4; break;case 0xDD:key_value=5; break;case 0xBD:key_value=6; bre

6、ak;case 0x7D:key_value=7; break;case 0xEB:key_value=8; break;case 0xDB:key_value=9; break;case 0xBB:key_value=10; break;case 0x7B:key_value=11; break;case 0xE7:key_value=12; break;case 0xD7:key_value=13; break;case 0xB7:key_value=14; break;case 0x77:key_value=15; break;while(temp!=0xf0)/松手檢測temp=P2;

7、temp=temp&0xf0;seed+=times;key_hit=1;times-;void delay(uint z) uint m,n;for(m=z;m0;m-)for(n=78;n0;n-);數(shù)碼管顯示模塊:#include project18s.hsbit seg_oe=P13; /數(shù)碼管顯示使能端,低電平有效sbit duanxuan=P14; /數(shù)碼管的段選端sbit weixuan=P15; /數(shù)碼管的位選端uchar code smg_duan17=0x3F,0x06,0x5B,0x4F, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,

8、 0x39,0x5e,0x79,0x71,0x76; /數(shù)碼管段選碼表,我們的數(shù)碼管是共陰極數(shù)碼管uchar code smg_wei8=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe;/選擇亮哪一個數(shù)碼管void seg_disp(uchar wei,uchar duan)/單個數(shù)碼管的顯示weixuan=1;P0=smg_weiwei;weixuan=0;duanxuan=1;P0=smg_duanduan;duanxuan=0;seg_oe=0;delay10ms();seg_oe=1;void delay10ms()uchar i,j;for(i=1;

9、i40;i+)for(j=1;j40;j-);頭文件:#ifndef Pro_H#define Pro_H#include #define uchar unsigned char#define uint unsigned int#definegame_times 2/游戲次數(shù)extern uchar key_hit;extern int seed;extern int times;void seg_disp(uchar,uchar);void delay10ms();uchar keyboard();void key_scan();void delay(uint);#endif主程序代碼:/*

10、項(xiàng)目18單片機(jī)人體反應(yīng)速度測試儀的設(shè)計*包含模塊:矩陣鍵盤,數(shù)碼管,定時器*/#include project18s.h#include #include uchar key_hit=0;int seed=12;int times=game_times;uchar disp5;int mstime=0;void display(uint ms)/顯示反應(yīng)時間uchar i;disp3=ms/1000;disp2=(ms%1000)/100;disp1=(ms%100)/10;disp0=ms%10;for(i=0;i4;i+)seg_disp(i,dispi);unsigned long ra

11、ndom(uchar k)/生成隨機(jī)數(shù)uint rt;srand(k);rt=rand();rt=rt*rand();return rt;int average(int time)/求反應(yīng)時間的平均值int i,sum=0;for(i=0;igame_times-1;i+)sum+=timei;return(sum/game_times);void main()int timegame_times=0;uchar disp_num,hit_num;uchar disp_ms;TMOD=0x11;TH0=0xfc;TL0=0x17;TR0=1;ET0=1;EA=1;while(1)while(t

12、imes)while(1)disp_num=random(seed)%16;hit_num=keyboard();seg_disp(5,hit_num);seg_disp(7,disp_num);if(!key_hit)if(TF0=1)TR0=1;TF0=0;if(key_hit)TR0=0;key_hit=0;disp_ms=mstime;break;if(disp_num=hit_num)display(disp_ms);timetimes=disp_ms;elsedisplay(9999);timetimes=9999;mstime=0;TR0=1;seg_disp(5,hit_num

13、);seg_disp(7,disp_num);display(average(time);void Int_T0(void)interrupt 1+mstime;TH0=0xfc; /(65535-1000)/256=252=0xfc 定時時間1msTL0=0x17;/(65535-1000)%256=23=0x17書上的代碼經(jīng)調(diào)試可用,如下:主程序代碼:#include project18.h#include #include #include sbit key=P20;sbit led=P10;typedef unsigned char byte;typedef unsigned int

14、word;static byte disp5;code byte table11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;byte bot(void)if(key=0)return 0;elsereturn 1;void display(word ms)uchar i;disp3=ms/1000;disp2=(ms%1000)/100;disp1=(ms%100)/10;disp0=ms%10;for(i=0;i0;-j)delay1ms();k=bot();if(k=1)mstime=9999;goto loop;led=1;INI

15、T_TMR1();while(1)if(TF1=1)TH1=0xfc;TL1=0x18;TR1=1;TF1=0;+mstime;if(k=bot()break;loop:led=1;while(1)if(k=1)k=bot();display(mstime);elsemstime=0;P2=0xff;break;頭文件代碼:#ifndef Pro_H#define Pro_H#include #define uchar unsigned char#define uint unsigned intvoid seg_disp(uchar,uchar);void delay10ms();#endif數(shù)碼管模塊:#include project18.hsbit seg_oe=P13; /數(shù)碼管顯示使能端,低電平有效sbit duanxuan=P14; /數(shù)碼管的段選端sbit weixuan=P15; /數(shù)碼管的位選端uchar code smg_duan16=0x3F,0x06,0x5B,0x4F, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; /數(shù)碼管段選碼表,我們的數(shù)碼管是共陰極數(shù)碼管uchar code smg_wei8=0x7

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論