显示和键盘流程图与程序.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.2 部分软件设计 3.2.3 显示子程序 动态显示程序框图如图所示。 显示程序的要点有两个: 一是代码转换。 因为直接驱动 LED显示器的是字形码,而人们习惯的是 0、1、2、?、 F 等字符,因此,必须将待显示的字符转换成字形码。 转换用查表的方法进行。 二是通过软件实现逐位轮流点亮每个 LED。 为了实现代码转换, 首先开辟一个显示缓冲区, 将待显示的字符预先存放在缓冲区中。由于有 4 位 LED显示器,故不妨假设显示缓冲区长度为 4 个字节。显示缓冲区地址为 DIS0~DIS3 ,DIS0 单元与最左边一位 LED相对应, DIS3 单元与最右边一位 LED相对应。 开 始 8051 初始化 动态显示初始化 送位选字 查段选表 段选码送入 延时 1mS 指向下个显示缓冲单元 显示下一位 3 位显示完? 结 束 图 3-3 显示子程序方框图 程序清单如下: DIS: ORG 0500H MOV A , MOV DPTR ,#7F00H MOVX @DPTR ,A MOV R0 , #78H MOV R3 , #7FH MOV A ,R3 LD: MOV DPTR ,#7F01H MOVX @DPTR, A INC DPTR MOV A ,@R0 ADD A ,#0DH MOVC A ,@ DPTR ACALL DLY MOV A ,R3 JNB A ,R0 RR A ,LD1 MOV R3 ,A INC R0 AJMP LD0 LD1: SJMP LD1 DSEG: DB 3FH , 06H,5BH,4FH,66H, 6DH 7DH ,07H,7FH, 6FH DLY: MOV R7 ,#02H DL: MOV R6 ,#0FFH DL1: DJNZ R6 , DL1 DJNZ R7 ,DL RET 3.2.4 键盘子程序 键盘扫描子程序框图如图 开 始 有键闭合吗? 调用延时子程序 两次调用 延时子程序 确有键闭合吗 判断闭合键号 闭合键释放吗 键号 →A 返 回 图 3-4 键盘扫描子程序框图 键盘扫描子程序如下: KEY: ORG ACALL JNZ ACALL AJMP K1: ACALL ACALL ACALL JNZ AJMP K2: MOV MOV K3: MOV MOV MOVX INC INC MOVX JB MOV  0440H KS K1 DIR KEY DIR DIR KS K2 KEY R2 , #0FEH R4 , #00H DPTR ,#PA A ,R2 @DPTR,A DPTR DPTR A ,@ DPTR ACC.0 , L1 A ,#00H  ; ;调用 KS判别是否有键按下 ;有键按下转移 ;无键按下,调延时子程序 ; ;加长延时时间,消除键抖动 ; ;调用 KS子程序,再次判别 有无键按下 ;有键按下,转逐列扫描 ;误读键,返回 ;首列扫描字送 R2 ;首列号送 R4 ; A 口地址送 DRTR ; ;列扫描字送 8155A口 ;指向 8155C口 ; ;读取行扫描值 ;第 0 行无键按下,转查第 1 行 ;第 0 行有键按下,该行的行首键号  #00H 送 A L1:  AJMP JB MOV  LK ACC .1 ,L2 A ,#08H #08H  ;转求键号 ;第 1 行无键按下,转查第 2 行 ;第 1 行无键按下,该行的行首键号 送 A L2:  AJMP JB MOV  LK ACC .2 ,L3 A ,#10H  ;转求键号 ;第 2 行无键按下,转查第 3 行 ;第 2 行有键按下, 该行的行首键号  #10H 送 A L3:  AJMP JB MOV  LK ACC.3 , NEXT A ,#18H  ;转查键号 ;第 3 行无键按下,转查下一列 ;第 3 行有键按下,该行的行首键号  #18H 送 LK: K4:  ADD PUSH ACALL ACALL JNZ  A A , R4 ACC DIR KS K4  ;形成键释放 ;未释放,等待 ;键释放,弹出堆栈送 ;键扫描结束,返回 ;修改列号  ACC POP ACC ; RET NEXT:INC R4 ; MOV A , R2 ; JNB ACC.7 ,KEY ;8 列扫描完返回 KEY RL A ;未扫描完,扫描字左移一位, 变为下列扫描字 MOV R2 ,A ;扫描字暂存 R2 AJMP K3 ; KS: MOV DPTR ,#PA ; A 口地址送 DPTR MOV A , #00H ; MOVX @DPTR ,A ;令扫描字 00H 送 A 口 INC DPTR ;指向 C口 INC DPTR ; MOVX A ,@

文档评论(0)

明若晓溪 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档