今天也要好好的 2019年05月08日
求指错,C51矩阵按键数码管显示
程序编译通过,但是数码管完全没反应,由于刚刚接触不多,对于一些语句的顺序和用法可能错了自己看不出来 #include<reg52.h> sbit duan=P2^6;//定义数码管段选段选 sbit wei=P2^7;//定义数码管位选 unsigned char Hang_scan[]={0xfe,0xfd,0xfb,0xf7};//行扫描初始值数组 unsigned char DIGITAL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char key=0;//按键编号 void delay();//声明延时函数 void scan(){ unsigned char i;//行编号 for(i=0;i<4;i++){ P3=Hang_scan[i];//逐行赋初始值 if(P3!=Hang_scan[i]){//按键消抖 delay(); if(P3!=Hang_scan[i]){//再次判断按键是否按下 switch(P3&0xf0){//由按键按下后P3高四位的值判断列位置 case 0xe0:key=4*i+1; break;//第1列 case 0xd0:key=4*i+2; break;//2 case 0xb0:key=4*i+3; break;//3 case 0x70:key=4*i+4; break;//4 } }while(P3!=Hang_scan[i]){}//判断按键是否弹起 } } } void delay(){ unsigned char j; for(j=0;j<1000;j++); } void main(){ while(1){ scan(); wei=1;//打开位选 P0=0xfb;//选择第二位 wei=0; duan=1;//打开段选 P0=DIGITAL[key-1];//给数码管端口赋值 duan=0; } }
...全文
浏览 点赞 收藏 回复
写回复
回复

还没有回复,快来抢沙发~

发动态
发帖子
疑难问题
创建于2007-09-28

9303

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告