【资料图】
1、//头文件:#include
2、关闭其它位SMG_q=1;SMG_b=0;SMG_s=1;SMG_g=1;P0=table[da%1000/100];break;case 2://选择十位数码管,关闭其它位SMG_q=1;SMG_b=1;SMG_s=0;SMG_g=1;P0=table[da%100/10];break;case 3://选择个位数码管,关闭其它位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;}//扫描键盘unsigned char ReadKey(void){unsigned char lkey=0;if((P3&0xfc)!=0xfc){//检测所有按键是否有按键按下SPK=0;//按键按下则蜂鸣器发声delay(10);//有按键按下则延时一段时间。
3、以消除按键拌动if(oldkey!=(P3&0xfc)){//检测按键未松开而且不是之前按下的按健就进入读键值,否则不作处理oldkey=P3&0xfc;//保存当前状态,为下一次扫描做判断。
4、请看上一行if(key1==0)lkey=1;//第一个键按下复值1else if(key2==0)lkey=2;//第二个键按下复值2else if(key3==0)lkey=3;//第三个键按下复值3else if(key4==0)lkey=4;//第四个键按下复值4else if(key5==0)lkey=5;//第五个键按下复值5else if(key6==0)lkey=6;//第六个键按下复值6}}else{oldkey=0xfc;//如果都没有按键按下,将复值初始状态SPK=1;//无按键按下则退出蜂鸣}return lkey;}//主函数void main(void) {unsigned int ldata=0;//作为显示的数据unsigned char i;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(20000); P2=0xfd; delay(20000); P2=0xfb; delay(20000); P2=0xf7; delay(20000); P2=0xef; delay(20000); P2=0xdf; delay(20000); P2=0xbf; delay(20000); P2=0x7f; delay(20000); P2=0xbf; delay(20000); P2=0xdf; delay(20000); P2=0xef; delay(20000); P2=0xf7; delay(20000); P2=0xfb; delay(20000); P2=0xfd; delay(20000); P2=0xfe; delay(20000); P2=0xff;}P0=0;//数码管输出,准备测试每一位SMG_g=0;//测试个位数码管delay(38000);SMG_g=1;//关闭数码管。
5、测试个位完毕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;//数码管输出。
6、准备测试每一位SMG_g=0;//测试个位数码管delay(38000);SMG_g=1;SMG_s=1;SMG_b=1;SMG_q=1;SPK=0;//测试蜂鸣器delay(3500);SPK=1;//关闭蜂鸣器delay(30000);SPK=0;//测试蜂鸣器delay(3500);SPK=1;//关闭蜂鸣器delay(30000);SPK=0;//测试蜂鸣器delay(50000);SPK=1;//关闭蜂鸣器delay(30000);SPK=0;//测试蜂鸣器delay(50000);SPK=1;//关闭蜂鸣器delay(30000);SPK=0;//测试蜂鸣器delay(50000);delay(50000);delay(50000);SPK=1;//关闭蜂鸣器delay(30000);JDQ=0;//测试继电器delay(50000);JDQ=1;//关闭继电器delay(50000);JDQ=0;//测试继电器delay(50000);delay(50000);delay(50000);JDQ=1;//关闭继电器for(i=0;i<8;i++) {P2<<=1;//用移位法将1向高位移入一位delay(50);}while(1){//循环扫描按键及显示switch(ReadKey()){//读取键值做以下相应处理case 1:ldata++;//1键显示内容加1P2=0xfe;break;case 2:ldata--;//2键显示内容减1P2=0xfc;break;case 3:ldata+=10;//3键显示内容加10P2=0xf8;break;case 4:ldata-=10;//4键显示内容减10P2=0xf0;break;case 5:ldata+=100;//5键显示内容加100P2=0xe0;break;case 6:ldata-=100;//6键显示内容减100 P2<<=1; break;}display(ldata);//显示相应的数值,这里用函数的形式调用显示delay(100);}}。
相信通过语c自戏范文这篇文章能帮到你,在和好朋友分享的时候,也欢迎感兴趣小伙伴们一起来探讨。
本文由用户上传,如有侵权请联系删除!