|
基于AT89C52的人體反應(yīng)速度測試儀我把仿真圖和程序文件分享到下面了,需要的可以去看看。
先按住按鈕,等待led亮起后再松開按鈕 測得的時(shí)間及反應(yīng)速度的時(shí)間.
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真圖
單片機(jī)源程序如下:
- #include<stdlib.h>
- #include<stdio.h>
- #include<intrins.h>
- #include<reg52.h>
- sbit key=P1^0;
- sbit led=P1^1;
- typedef unsigned char byte;
- typedef unsigned int word;
- static byte disp[5];
- code byte table[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- byte bot(void)
- {
- if(key==0)return 0;
- else return 1;
- }
- void display(word ms)
- {
- byte posi=0x01,i,j,temp;
- disp[3]=ms/1000;
- disp[2]=(ms%1000)/100;
- disp[1]=(ms%100)/10;
- disp[0]=ms%10;
- for(i=0;i<4;i++) //數(shù)碼管顯示
- {
- temp=disp[i];
- temp=table[temp];
- for(j=0;j<200;j++) //延時(shí)
- {
- P2=posi; //顯示xxxx秒形式
- P0=temp;
- }
- posi*=2;
- }
- }
- unsigned long random(void) //生成隨機(jī)數(shù)
- {
- word rt; byte k=0;
- srand (50000); //種下隨機(jī)數(shù)種子,范圍0-50000
- rt=rand(); //生成隨機(jī)熟
- rt=rt*rand(); //使隨機(jī)數(shù)足夠大,能夠延時(shí)足夠時(shí)間
- return rt;
- }
- void INIT_TMR1(void)
- {
- TMOD=0x11;
- TH1=0xfc;
- TL1=0x66;
- TR1=1;
- }
- void delaylms(void) //延時(shí)1ms
- {
- INIT_TMR1();
- while(1)
- {
- if(TF1==1)
- break;
- }
- }
- void main(void)
- {
- byte k=0;
- k=bot(); //獲取按鍵情況
- P1=0xff; //輸入前先把P1口都加高電平
- while(1) //主循環(huán)開始
- {
- word mstime=0,j;
- word r;
- while(bot()); //等待按鍵按下,否則始終等待
- led=0; //按鍵被按下后,燈亮
- r=random();
- for (j=r;j>0;--j) //延時(shí)一段隨機(jī)時(shí)間,為1馬上的隨機(jī)倍數(shù)
- {
- delaylms();
- k=bot();
- if (k==1) //如果在燈滅前談起按鍵,顯示最長時(shí)間作為懲罰
- {
- mstime=9999;
- goto loop;
- }
- }
- led=1; //燈滅
- INIT_TMR1(); //初始定時(shí)狀態(tài)
- while(1) //如果按鍵彈起,反復(fù)進(jìn)入定時(shí)狀態(tài),沒1ms計(jì)時(shí)器
- {
- if(TF1==1)
- {
- TH1=0xfc;
- TL1=0x18;
- TR1=1;
- TF1=0;
- ++mstime;
- }
- if(k=bot())
- break;
- }
- loop: led=1;
- while(1)
- {
- if(k==1) //按鍵彈開后始終顯示時(shí)間
- {
- k=bot();
- display(mstime);
- }
- else //若按鍵按下,重新開始測試
- {
- while(1)
- {
- if(k==1) //按鍵彈開后始終顯示時(shí)間
- {
- k=bot();
- display(mstime);
- }
- else //若按鍵按下,重新開始測試
- {
- mstime=0;
- P2=0xff;
- break;
- }
- }
- }
- }
- }
- }
復(fù)制代碼
Keil代碼與Proteus8.8; 7.5仿真下載:
人體反應(yīng)速度測試儀項(xiàng)目.7z
(70.8 KB, 下載次數(shù): 67)
2022-6-23 16:28 上傳
點(diǎn)擊文件名下載附件
文件
|
評分
-
查看全部評分
|