完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
原理图如下:
矩阵键盘控制小灯 //矩阵键盘+小灯 #include void delayms(int ms); void key_scan(void); void main(void){ P02=0XA0;P00=0X00;P2=0X80;P0=0XFF; while(1){ key_scan(); } } //延时 void delayms(int ms){ int q,w; for(q=0;q for(w=845;w>0;w--); } //按键 void key_scan(void){ //第一列控制1-4灯亮 P44=0;P42=1;P35=1;P34=1; if((P30==0)&&(P44==0)){ delayms(5); if(P30==0){ P00=0; } while(!P30); } else if((P31==0)&&(P44==0)){ delayms(5); if(P31==0){ P01=0; } while(!P31); } else if((P32==0)&&(P44==0)){ delayms(5); if(P32==0){ P02=0; } while(!P32); } else if((P33==0)&&(P44==0)){ delayms(5); if(P33==0){ P03=0; } while(!P33); } //第二列控制1-4灯灭 P44=1;P42=0;P35=1;P34=1; if((P30==0)&&(P42==0)){ delayms(5); if(P30==0){ P00=1; } while(!P30); } else if((P31==0)&&(P42==0)){ delayms(5); if(P31==0){ P01=1; } while(!P31); } else if((P32==0)&&(P42==0)){ delayms(5); if(P32==0){ P02=1; } while(!P32); } else if((P33==0)&&(P42==0)){ delayms(5); if(P33==0){ P03=1; } while(!P33); } } 矩阵键盘+小灯+数码管 //矩阵键盘+小灯+数码管 #include unsigned char seg[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0xff}; void delayms(int ms); void key_scan(void); unsigned int led,g; void main(void){ P02=0XA0;P00=0X00;P2=0X80;P0=0XFF; P02=0XC0;P00=0X04;P2=0XFF;P0=0XFF; while(1){ key_scan(); } } //延时 void delayms(int ms){ int q,w; for(q=0;q for(w=845;w>0;w--); } //矩阵键盘 void key_scan(void){ unsigned char temp; //第一列控制数码管0-3 P44=0;P42=1;P3=0Xff; temp=P3; temp=(temp&0X0F); if (temp!=0X0F){ delayms(5); temp=P3; temp=(P3&0X0F); if (temp!=0X0F){ temp=P3; switch(temp){ case 0XfE:P0=seg[0];break; case 0XfD:P0=seg[1];break; case 0Xfb:P0=seg[2];break; case 0Xf7:P0=seg[3];break; } while(temp!=0X0F){ temp=P3; temp=(temp&0X0F); } } } //第二列控制数码管4-7 P44=1;P42=0;P3=0XfF; temp=P3; temp=(temp&0X0F); if (temp!=0X0F){ delayms(5); temp=P3; temp=(P3&0X0F); if (temp!=0X0F){ temp=P3; switch(temp){ case 0XfE:P0=seg[4];break; case 0XfD:P0=seg[5];break; case 0Xfb:P0=seg[6];break; case 0Xf7:P0=seg[7];break; } while(temp!=0X0F){ temp=P3; temp=(temp&0X0F); } } } //第三列控制数码管8.9.-.灭 P44=1;P42=1;P3=0XdF; temp=P3; temp=(temp&0X0F); if (temp!=0X0F){ delayms(5); temp=P3; temp=(P3&0X0F); if (temp!=0X0F){ temp=P3; switch(temp){ case 0XdE:P0=seg[8];break; case 0XdD:P0=seg[9];break; case 0Xdb:P0=seg[10];break; case 0Xd7:P0=seg[11];break; } while(temp!=0X0F){ temp=P3; temp=(temp&0X0F); } } } //第四列控制流水灯、0-9,灯亮、都灭 P44=1;P42=1;P3=0XeF; temp=P3; temp=(temp&0X0F); if (temp!=0X0F){ delayms(5); temp=P3; temp=(P3&0X0F); if (temp!=0X0F){ temp=P3; switch(temp){ case 0XeE: P02=0XC0;P00=0X04;P2=0XFF;P0=0XFF; P0=seg[10]; for(led=0;led<8;led++){ P02=0XA0;P00=0X00;P2=0X80;P0=0XFF; P0=(0X01< delayms(200); } P0=0xff; P02=0XC0;P00=0X04;P2=0XFF;P0=0XFF; break; case 0XeD:P0=seg[9]; for(g=0;g<10;g++){ P0=seg[g]; delayms(200); } break; case 0Xeb: P0=seg[10]; P02=0XA0;P00=0X00;P2=0X80;P0=0XFF; P0=0x00; break; case 0Xe7: P02=0XA0;P00=0X00;P2=0X80;P0=0XFF; P0=0xff; P02=0XC0;P00=0X04;P2=0XFF;P0=0XFF; P0=seg[11]; break; } while(temp!=0X0F){ temp=P3; temp=(temp&0X0F); } } } } |
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
3363 浏览 0 评论
3370 浏览 9 评论
3061 浏览 16 评论
3551 浏览 1 评论
9182 浏览 16 评论
1304浏览 3评论
669浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
663浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2411浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1978浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-24 02:26 , Processed in 1.160140 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191