51单片机板子功能测试Word文件下载.docx
《51单片机板子功能测试Word文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机板子功能测试Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
![51单片机板子功能测试Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/2cb22473-4307-4586-98e0-225b538490d0/2cb22473-4307-4586-98e0-225b538490d01.gif)
//显示位置
unsignedcharoldkey=0xff;
//保存按键接口状态
//引脚定义:
sbitSMG_q=P1^0;
//定义数码管阳级控制脚(千位)
sbitSMG_b=P1^1;
//定义数码管阳级控制脚(百位)
sbitSMG_s=P1^2;
//定义数码管阳级控制脚(十位)
sbitSMG_g=P1^3;
//定义数码管阳级控制脚(个位)
sbitSPK=P1^5;
//定义蜂鸣器
sbitJDQ=P1^4;
//定义继电器
sbitkey1=P3^7;
//定义按键1
sbitkey2=P3^6;
//定义按键2
sbitkey3=P3^5;
//定义按键3
sbitkey4=P3^4;
//定义按键4
sbitkey5=P3^3;
//定义按键5
sbitkey6=P3^2;
//定义按键6
/***************/
//参数范围0-65536
voiddelay(unsignedintt){while(t--);
}//显示函数,参数为显示内容
voiddisplay(unsignedintda){P0=0XFF;
da=da%100;
switch(l_posit){
case0:
//选择千位数码管,关闭其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=table[da/1000];
//输出显示内容
break;
case1:
//选择百位数码管,关闭其它位
SMG_q=1;
SMG_b=0;
case2:
//选择十位数码管,关闭其它位
SMG_s=0;
case3:
//选择个位数码管,关闭其它位
SMG_g=0;
P0=table[da%10];
}l_posit++;
//每调用一次将轮流显示一位
if(l_posit>
3)
l_posit=0;
}//扫描键盘
unsignedcharReadKey(void){unsignedcharlkey=0;
if((P3&
0xfc)!
=0xfc){//检测所有按键是否有按键按下
SPK=0;
//按键按下则蜂鸣器发声
delay
(10);
//有按键按下则延时一段时间,以消除按键拌动if(oldkey!
=(P3&
0xfc)){//检测按键未松开而且不是之前按下的按健就进入读键值,否则不作处理
oldkey=P3&
0xfc;
if(key1==0)
}lkey=1;
elseif(key2==0)
lkey=2;
elseif(key3==0)
lkey=3;
elseif(key4==0)
lkey=4;
elseif(key5==0)
lkey=5;
elseif(key6==0)//保存当前状态,为下一次扫描做判断,请看上一行//第一个键按下复值1
//第二个键按下复值2
//第三个键按下复值3
//第四个键按下复值4
//第五个键按下复值5
lkey=6;
//第六个键按下复值6}}
else{
oldkey=0xfc;
//如果都没有按键按下,将复值初始状态
SPK=1;
}returnlkey;
//无按键按下则退出蜂鸣
//主函数
voidmain(void){unsignedintldata=0;
unsignedchari;
for(i=0;
i<
8;
i++){}//作为显示的数据
P2<
<
=1;
//用移位法将1向高位移入一位
(25000);
P2=0xff;
//LED灯测试完毕
for(i=8;
i>
1;
i--){P2>
>
}for(i=1;
2;
i++){P2=0xfe;
(200);
P2=0xfd;
P2=0xfb;
P2=0xf7;
P2=0xef;
P2=0xdf;
P2=0xbf;
P2=0x7f;
P2=0xfe;
}P0=0;
(38000);
//数码管输出,准备测试每一位
//测试个位数码管
//关闭数码管,测试个位完毕
//十位
//
//百位
//千位数码管
P0=0;
(3500);
(300);
(500);
JDQ=0;
JDQ=1;
i++){P2<
(50);
}//测试蜂鸣器
//关闭蜂鸣器
//测试蜂鸣器
//测试继电器
//关闭继电器
while
(1){
switch(ReadKey()){
ldata++;
ldata--;
P2=0xfc;
ldata+=10;
P2=0xf8;
//循环扫描按键及显示
//读取键值做以下相应处理
//1键显示内容加1
//2键显示内容减1
//3键显示内容加10
case4:
ldata-=10;
//4键显示内容减10
P2=0xf0;
case5:
ldata+=100;
//5键显示内容加100
P2=0xe0;
case6:
ldata-=100;
//6键显示内容减100
if(P2==0x00)
{P2=0xff;
ldata=0;
}if(P2==0xfe){ldata=1234;
}if(P2==0xfc){ldata=2345;
}if(P2==0xf8){ldata=3456;
}if(P2==0xf0){ldata=4567;
}break;
}display(ldata);
//显示相应的数值,这里用函数的形式调用显示
(100);
}}