实现4位数码管和4x4按键的移位显示.docVIP

实现4位数码管和4x4按键的移位显示.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现4位数码管和4x4按键的移位显示

实现4位数码管与4x4按键的移位显示,还有小数点的按键功能,注意,本例使用的是共阳数码管,用共阴的要修改一下段码和位选。。。 #includereg52.h #includeintrins.h #define uchar unsigned char #define uint unsigned int unsigned char code LED7Code[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x40,0x79,0x24,0x30, 0x19,0x12,0x02,0x78,0x00,0x10}; //uint i=0,a=16,b=16,c=16; uchar num[4]={16,16,16,16}; uchar _FLAG = 0; uchar hang=0; uchar lie=0; uchar key_in; //读入的按键信息,检测是否有键按下 //uint n=0; //uint buff; void delay(uchar t) { uchar i,j; for(i=0;it;i++) { for(j=100;j0;j--); { ; } } } /* void cshh() { IT1=1;//INT0下降沿触发 EX1=1; //使能INT0 EA=1; //开总中断 PX1=0; } */ uint scankey() { P2=0xf0; delay(10); if((P20xf0)!=0xf0) { switch(P2) { case 0x70: hang=1;break; case 0xb0: hang=2;break; case 0xd0: hang=3;break; case 0xe0: hang=4;break; default: break; } delay(10); P2=0x0f; if((P20x0f)!=0x0f) { switch(P2) { case 0x07: lie=1; break; case 0x0b: lie=2; break; case 0x0d: lie=3; break; case 0x0e: lie=4; break; default: break; } } delay(5); return(((hang-1)*4+lie)-1); } else return(16); } uchar checkKey(void) { uchar key_1, key_2; static uchar key; P2 = 0x0F; key_1 = P2; key_1 = key_1 0x0F; delay(5); key_2 = P2; key_2 = key_2 0x0F; if(key_1 == key_2) { if(key_2 == 0x0f) //键弹起 { if(_FLAG == 1) { _FLAG = 2; //_FLAG=2表示按键弹起,一次按下动作结束 return key; } else if(_FLAG == 0) { return 0xff; } } else //键按下 { if(_FLAG == 0) { _FLAG = 1; //_FLAG=1表示按键按下,还未弹起 key = scankey(); } } } else { return 0xff; } } void display()//显示函数 { uchar j, wei=0xff; //位选信号首先选中最右侧的LED灯(即num[7]对应的LED灯) delay(1); wei=0xfe; delay(1); /* if(key_in==15) { P0 = LED7Code[num[0]]; //送段码信号 } else { */ for(j=0; j4; j++) { //P0 = 0xff; //delay(1); P0 = LED7Code[num[j]]; //送段码信号 P1 = wei; //送某一个LED灯的位选信号 delay(1); P1 = 0xff; //清当前的位选信号 delay(1); wei = wei 1 | 0x01; //位选

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档