51单片机板子功能测试.docx
- 文档编号:17179106
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:13
- 大小:15.80KB
51单片机板子功能测试.docx
《51单片机板子功能测试.docx》由会员分享,可在线阅读,更多相关《51单片机板子功能测试.docx(13页珍藏版)》请在冰豆网上搜索。
51单片机板子功能测试
/***************************************************************************标题:
板子测试自检测试程序
说明:
自检
1、LED灯轮流点阵,
2、数友管轮流点亮,
3、蜂鸣器自检,
4、继电器自检,
5、按键测试,数码管显示输入值
******************************************************************************///头文件:
#include 52.h> //变量定义: codeunsignedchartable[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //表: 共阳数码管0-9 unsignedcharl_posit=0;//显示位置 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; SMG_s=1; SMG_g=1; break; case2: //选择十位数码管,关闭其它位 SMG_q=1; SMG_b=1; SMG_s=0; SMG_g=1; break; case3: //选择个位数码管,关闭其它位 SMG_q=1; SMG_b=1; SMG_s=1; SMG_g=0; P0=table[da%10]; break;}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向高位移入一位 delay (25000); P2=0xff;//LED灯测试完毕 for(i=8;i>1;i--){P2>>=1;//用移位法将1向高位移入一位 delay (25000);}for(i=1;i<2;i++){P2=0xfe; delay (200); P2=0xfd; delay (200); P2=0xfb; delay (200); P2=0xf7; delay (200); P2=0xef; delay (200); P2=0xdf; delay (200); P2=0xbf; delay (200); P2=0x7f; delay (200); P2=0xbf; delay (200); P2=0xdf; delay (200); P2=0xef; delay (200); P2=0xf7; delay (200); P2=0xfb; delay (200); P2=0xfd; delay (200); P2=0xfe; delay (200); P2=0xff;}P0=0; SMG_g=0; delay (38000); SMG_g=1; SMG_s=0; delay (38000); SMG_s=1; SMG_b=0;//数码管输出,准备测试每一位 //测试个位数码管 //关闭数码管,测试个位完毕 //十位 // //百位 delay (38000); SMG_b=1; SMG_q=0; delay (38000);// //千位数码管 SMG_q=1;//关闭数码管,测试个位完毕 SMG_b=0;//百位 delay (38000); SMG_b=1;// SMG_s=0;//十位 delay (38000); SMG_s=1;// P0=0;//数码管输出,准备测试每一位 SMG_g=0;//测试个位数码管 delay (38000); SMG_s=0;//十位 delay (38000); SMG_b=0; delay (38000); SMG_q=0; delay (38000); SMG_g=1; SMG_s=1; SMG_b=1; SMG_q=1; SMG_q=0; delay (38000); SMG_b=0; delay (38000); SMG_s=0; delay (38000); P0=0; SMG_g=0; delay (38000);//百位 //千位数码管 //千位数码管 //百位 //十位 //数码管输出,准备测试每一位 //测试个位数码管 SMG_g=1; SMG_s=1; SMG_b=1; SMG_q=1; SPK=0; delay (3500); SPK=1; delay (300); SPK=0; delay (3500); SPK=1; delay (300); SPK=0; delay (500); SPK=1; delay (300); SPK=0; delay (500); SPK=1; delay (300); SPK=0; delay (500); delay (500); delay (500); SPK=1; delay (300); JDQ=0; delay (500); JDQ=1; delay (500); JDQ=0; delay (500); delay (500); delay (500); JDQ=1; for(i=0;i<8;i++){P2<<=1; delay (50); }//测试蜂鸣器 //关闭蜂鸣器 //测试蜂鸣器 //关闭蜂鸣器 //测试蜂鸣器 //关闭蜂鸣器 //测试蜂鸣器 //关闭蜂鸣器 //测试蜂鸣器 //关闭蜂鸣器 //测试继电器 //关闭继电器 //测试继电器 //关闭继电器 //用移位法将1向高位移入一位 while (1){ switch(ReadKey()){ case1: ldata++; P2=0xfe; break; case2: ldata--; P2=0xfc; break; case3: ldata+=10; P2=0xf8; break;//循环扫描按键及显示 //读取键值做以下相应处理 //1键显示内容加1 //2键显示内容减1 //3键显示内容加10 case4: ldata-=10;//4键显示内容减10 P2=0xf0; break; case5: ldata+=100;//5键显示内容加100 P2=0xe0; break; case6: ldata-=100;//6键显示内容减100 P2<<=1; 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);//显示相应的数值,这里用函数的形式调用显示 delay (100); }}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 板子 功能 测试