• 大小: 0.04M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: 其他
  • 标签: 其他  

资源简介

项目4基于AT89S52单片机人体反应速度测试仪的设计.rar

资源截图

代码片段和文件信息

#include
#include
#include
sbit key=P1^0;
sbit led=P1^1;
typedef unsigned char byte;
typedef unsigned int word;
static byte disp[5];
//byte table[]   内存放数码管码表
code byte
table[11]={/*0123456789*/
0xC00xF90xA40xB00x990x920x820xF80x800x90

};
/************************************************************   
 *函数名:bot
 *描  述:读取按键
 *输入:无
 *返回:有按键被按下则返回0,否则返回1
 ************************************************************/

byte bot(void)    //读取按键,有按键被按下则返回0,否则返回1
{
   if(key==0)return 0;
   else return 1;
}
/************************************************************
 *函数名:display
 *描  述:将缓存区display[]中的整数译码后用数码管进行显示
 *输  入:整形变量 ms
 *返  回:无
 ************************************************************/

void display(word ms)        //数码管上的显示反应时间
{
  byte posi=0x01ijtemp;
  disp[3]=ms/1000;            //1s
  disp[2]=(ms%1000)/100;      //100ms
  disp[1]=(ms%100)/10;        //10ms
  disp[0]=ms%10;              //1ms

  for(i=0;i<4;i++)             //数码管显示
  {
    temp=disp[i];
    temp=table[temp];
    for(j=0;j<200;j++)         //延时
    {
       P2=posi;
         //显示xxxx秒形式
       P0=temp;  
    
    }
   posi*=2; 
  }
}
/************************************************************
 *函数名:random
 *描  述:调用系统随即函数
 *输  入:无
 *返  回:大的随机数
 ************************************************************/

 unsigned long random(void)          //生成随机数
 {
  word rt;
  byte k=0;
  srand (50000);                       //种下随机数种子,范围0-50000
  rt=rand();                           //生成随机熟
  rt=rt*rand();                        //使随机数足够大,能够延时足够时间
  return rt;

}
/************************************************************
*描 述:定时器初始化子程序
*输 入:无
*返 回:无
*功 能:定时器0开中断程序,计数器1计算待测信号的脉冲熟
*************************************************************/

void INIT_TMR1(void)
{
 TMOD=0x11;
 TH1=0xfc;
 TL1=0x66;
 TR1=1;
}

void delaylms(void)                    //延时1ms
{
  INIT_TMR1() ;
  while(1)
  {
     if(TF1==1)
     {
        break;
     }
  }
}

void main(void)
{
  byte k=0;
  k=bot();                         //获取按键情况
  P1=0xff;                         //输入前先把P1口都加高电平
  while(1)                         //主循环开始 
  {                                   
    word mstime=0j;
    word r;
    while(bot());                  //等待按键按下,否则始终等待   
    led=0;                          //按键被按下后,灯亮
    r=random();
    for (j=r;j>0;--j)                //延时一段随机时间,为1马上的随机倍数
         {
            delaylms();
            k=bot();
            if (k==1)              //如果在灯灭前谈起按键,显示最长时间作为惩罚
              {
                mstime=9999;
                goto loop;
              }
         }
    led=1;                 //灯灭
    INIT_TMR1();            //初始定时状态
   while(1)                //如果按键弹起,反复进入定时状态,没1ms计时器溢出一次,毫秒数加1
    {
       if(TF1==1)
          {
             TH1=0xfc;
             TL1=0x1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1593  2008-11-18 11:16  项目4  基于AT89S52单片机人体反应速度测试仪的设计\2.hex

     文件     105902  2009-03-23 21:35  项目4  基于AT89S52单片机人体反应速度测试仪的设计\Last Loaded 人的反应测速.DBK

     文件       1257  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试

     文件       1567  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.hex

     文件         90  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.lnp

     文件       4188  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.M51

     文件       1079  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.Opt

     文件        270  2009-03-24 23:28  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.plg

     文件       2076  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试.Uv2

     文件          0  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人体反应速度测试_Uv2.Bak

     文件     105392  2009-03-23 21:36  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人的反应测速.DSN

     文件        742  2010-06-12 10:50  项目4  基于AT89S52单片机人体反应速度测试仪的设计\人的反应测速.PWI

     文件       3822  2009-02-01 21:26  项目4  基于AT89S52单片机人体反应速度测试仪的设计\项目4  基于AT89S52单片机人体反应速度测试仪.c

     文件       7260  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\项目4  基于AT89S52单片机人体反应速度测试仪.LST

     文件       2215  2009-03-24 23:15  项目4  基于AT89S52单片机人体反应速度测试仪的设计\项目4  基于AT89S52单片机人体反应速度测试仪.OBJ

     目录          0  2011-06-23 19:27  项目4  基于AT89S52单片机人体反应速度测试仪的设计

----------- ---------  ---------- -----  ----

               237453                    16


评论

共有 条评论