- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十三章 8051人机交互的C编程.ppt
第十三章 8051人机交互的C编程 13.1 键盘 键盘的结构形式有两种: 独立式键盘 行列式键盘 独立式按键是各按键互相独立地接通一条输入数据线,各按键的状态互不影响,如图所示,这是最简单的键盘结构,该电路采用了中断方式读取键值。 优点:电路简单; 缺点:当键数较多时,要占用较多的I/O线。 #include reg51.h #define uchar unsigned char extern void delay_10ms(void);? ??????????? /*延时10ms函数*/ bit? key_flag; uchar key_value; void main(void)? { ??? IE=0x81;??? ?????? ???????? ???????? /*中断总控制位EA、外中断0开中断*/ ??? IP=0x01;??? ??????????????? ???????? /*外中断0为高中断优先级*/ ??? key_flag=0; ???????????????? ?????? /*设置中断标志为0*/ ??? do { ?????? if? (key_flag) {? ??????????? ???? /*如果按键有效*/ ????????? switch (key_value){ ?????? /*根据按键分支*/ case 1: ……?? break; ????? /*处理P1.0口按键*/ case 2: ……?? break; /*处理P1.1口按键*/ case 4: ……?? break; ????? /*处理P1.2口按键*/ default: break;? ????? ???????? /*无效按键,如多个键同时按下*/ } key_flag =0;?? ???????? /*清按键标志*/ } } while(1); } /************外中断0处理程序 **********/ void int0 () interrupt 0 { uchar? reread_key; IE=0x80;? ?/*屏蔽int0中断*/ ??? key_flag=0; ???????????????? ?????? /*设置中断标志为0*/ ??? P1=0xff;?? ????????????????? ???????? /*P1锁存器各口置1*/ ??? key_value=P10x07; ?? ? /*读取外中断输入,并屏蔽高5位*/ delay_10ms( );??? ??????????????? /*延时10ms*/ reread_key=P10x07;? ? /*再读输入,并屏蔽高5位*/ if?(key_value==reread_key) { ?????? key_flag=1; ?????????? ????? /*设置中断标志为1*/ } IE=0x81; ??????????????????????????????? /*打开int0中断*/ } 行列式键盘 在键数较多时,通常都将键盘排列成行列矩阵式,如图所示。每一水平线(行线)与垂直线(列线)的交叉处不相通,是通过一个按键连通的。利用这种行列矩阵结构只需N个行线和M个列线即可组成M × N个按键的键盘。 在这种行列矩阵式非编码键盘的单片机系统中,对键的识别通常采用两步扫描判别法。 首先判别按键所在的行:向P1口输出列扫描字0FH,列线全为0,行线全为1。然后读入(输入)行线状态来判断。如果有按键按下,总会有一根行线被拉至低电平,从而使行输入不全为1 。 然后判别按键所在的列:向P1口输出行扫描字F0H,即行线全0,列线全1,然后读入(输入)列线状态来判断。如果有按键按下,总会有一根列线被拉至低电平,从而使列输入不全为1。 将行和列的状态相或,再把该值取反得到该位置键值。 13.2显示器 LED显示器是由发光二极管显示字段的显示器件。 在单片机应用系统中通常使用的是七段LED。这种显示器有共阴极与共阳极两种。 LED显示器有两种方式: (1)LED静态显示方式 (2)LED动态显示方式 通过8155扩展I/O口控制的8位LED动态显示接口 13.3 8279键盘/显示器接口 D7~D0(数据总线):双向、三态总线。用于和系统的数据总线相连,在CPU和8279之间传递命令或数据。 CLK(系统时钟):输入线,用于8279内部定时,以产生工作所需要的时序。 RESET(复位):输入,高电平有效。 /CS(片选):输入,低电平有效。只有当/CS= 0时,8279才被选中,CPU才能对其进行读、写操作,否则被禁止。 A0
文档评论(0)