- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理与接口技术人体反应速度测试仪设计毕业论文
学号
单片机原理与接口技术
实验报告
实验项目序号 4
实验项目名称 人体反应速度测试
姓 名 莫 旭 涛 专 业 电子信息工程
班 级 电信13-4BF 完成时间 0月
一调试心得
二.程序代码
功能简介:
第一部分的代码:第八个数码管显示要按下的键,第4个数码管显示几次按键的平均反应时间。
:
矩阵键盘模块:
#include project18s.h
#include intrins.h
uchar key_value=0x10;
uchar temp,a;
uchar keyboard()
{
uchar i,t=4;
i=1;
while(t--)
{
a=_crol_(a,1);//循环左移一位,检测下一行
key_scan();
i++;
if(i==5) { i=1; a=0x7f;}
}
return key_value;
}
void key_scan()
{
P2=a; //P2.0置零
temp=P2; //读P2口的值
temp=temp0xF0; //取高四位,都得用temp,即temp=p2,temp=temp0xf0;
while(temp!=0xF0) //如果高四位不全为0,则有键下
{
delay(5); //延时消抖
while(temp!=0xF0) //再读一次,如果高四位还是不全为0,真的有键按下了
{
temp=P2; //读P2口的值给temp
switch(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; break;
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;
temp=temp0xf0;
}
seed+=times;
key_hit=1;
times--;
}
}
}
void delay(uint z)
{
uint m,n;
for(m=z;m0;m--)
for(n=78;n0;n--);
}
数码管显示模块:
#include project18s.h
uchar code smg_duan[17]={0x3F,0x06,0x5B,0x4F,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76}; //数码管段选码表,我们的数码管是共阴极数码管
uchar code smg_wei[8]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe};//选择亮哪一个数码管
void seg_disp(uchar wei,uchar duan) //单个数码管的显示
{
weixuan=1;
P0=s
文档评论(0)