- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章显示与键盘
LED显示器接口 从LED显示器的原理可知,为了显示字母与数字,必须最终转换成相应的段选码。这种转换可以通过硬件译码器或软件进行译码。 硬件译码器LED显示器接口 软件译码LED显示器接口 例:单只数码管循环显示 0~9 #includereg51.h #includeintrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void DelayMS(uint x) {uchar t; while(x--) for(t=0;t120;t++);} void main() { uchar i=0; P0=0x00; while(1) { P0=~DSY_CODE[i]; i=(i+1)%10; DelayMS(300); } } 例:8 只数码管从左到右依次滚动显示0~7,程序通过每次仅循环选通一只数码管 #includereg51.h #includeintrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t120;t++); } //主程序 void main() { uchar i,wei=0x80; while(1) { for(i=0;i8;i++) { P0=0xff; P0=DSY_CODE[i]; //发送段码 wei=_crol_(wei,1); P2=wei; DelayMS(2); //发送位码 } } } 独立式键盘与单片机接口 程序清单: ORG 0030H KB:MOV P1,#0FFH ;置P1口为输入口 MOV A,P1 ;读键状态 CPL A ANL A,#0FH ;屏蔽高4位 JZ KB ;无键闭合则返回 ACALL D10MS ;延时去抖动 MOV A,P1 ;再读键状态 CPL A ANL A,#0FH JZ KB ;无键闭合则返回 CJNE A,#01H,KB01 INC 20H ;K1键闭合,20H单元加1 SJMP KB KB01:CJNE A,#02H,KB02 DEC 20H ;K2键闭合,20单元减1 SJMP KB KB02:CJNE A,#04H,KB03 MOV 21H,#00H ;K3键闭合,21H单元清0 SJMP KB KB03:CJNE A,#08H,KB MOV 21H,#0FFH ;K4键闭合,21H单元置FF SJMP KB ;若有两键以上闭合则返回 END 例:开关 S1 和 S2 分别控制 LED1 和 LED2。 #includereg51.h sbit S1=P1^0; sbit S2=P1^1; sbit LED1=P0^0; sbit LED2=P0^1; //主程序 void main() { while(1) { LED1=S1; LED2=S2; } } 例:数码管显示 4X4 矩阵键盘按键号 #includereg51.h #define uchar unsigned char #define uint unsigned int //段码 uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00
文档评论(0)