- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【8-19】使用DA转换器DAC0832产生梯形波,梯形波的上.doc
第八章作业:
1、设某一MCS-51系统,要求连接16个4×4的键盘,其硬件原理如下图所示,请编写相应键值扫描和识别程序。
答:
线路反转法:
程序说明:
本程序通过线路反转法实现对按键扫描码的判读和其他相关操作。
所谓线路反转法就是先通过将列清零读取按键的行值,在通过行清零读取列值,得到按键的扫描码,在通过查表的方式与0~F数值对应的按键扫描码比较得到相应的按键值。本程序通过在有键按下和键松开时添加的延时10ms子程序实现了防抖功能,同时利用了按键状态标志位(有键按下时标志为1,无键按下时标志为0)实现了对键按下与键松开的判断,同时也基于该状态标志位的操作实现了对连击和串键的避免,即通过在执行完相应的按键操作子程序并返回主程序后,通过不断读取按键值并判断状态标志位,如果始终为1(即该键始终按下或有其他键串键)则程序不向下执行,直至检测到键松开才继续执行。
程序流程图:(为简便只画出了主程序和按键获取子程序的流程图,因为延时子程序和按键操作子程序十分明了就不画了)
源程序:
ORG 0000H
LJMP MAIN
ORG 0030H
KEY: MOV P1, #00H ;按键获取与判断子程序
MOV P0, #0FH ;线路反转法,读行值
MOV A, P0
ANL A, #0FH
MOV B, A
MOV P0, #00H
MOV P1, #0FH ;线路反转法,读列值
MOV A, P1
ANL A, #0FH
SWAP A
ORL A, B ;行数与列数合并得按键扫描码
CJNE A, #0FFH, DOWN
JB 00H, UP
SJMP KEY ;没有键按下且
UP: CLR 00H
SJMP RETU
DOWN: SETB 00H
RETU: RET ;键按下或松开时才返回主程序
MAIN: CLR 00H ;按键状态标志位为1则键按下
LCALL KEY
LCALL DELAY
LCALL KEY
MOV DPTR, #KEYCD
MOV R1, #30H ;存储键值首地址
MOV R2, #0FFH
MOV B, A
SEARCH: INC R2
MOV A, R2
MOVC A, @A+DPTR ;查表获得R2对应的扫描码
CJNE A, B, JUDGE ;与获得的实际扫描比较
MOV A, R2 ;找到按键值
LCALL OP ;转向按键处理子程序
SJMP SLACK
JUDGE: CJNE A, #0FFH, SEARCH
MOV A, #0FFH ;未找到按键值
SJMP MAIN ;返回重新获取
SLACK:LCALL KEY
JB 00H, SLACK ;按键未松开不执行等待松开
LCALL DELAY
SJMP MAIN ;按键松开返回主程序重新获取
KEYCD: DB 0EEH, 0DEH, 0BEH, 7EH
DB 0EDH, 0DDH, 0BDH, 7DH
DB 0EBH, 0DBH, 0BBH, 7BH
DB 0E7H, 0D7H, 0B7H, 77H
DB 0FFH
DELAY: MOV R6, #0AH ;延时10ms防抖子程序
A1: MOV R7, #0FFH
A2: NOP
NOP
DJNZ R7, A2
DJNZ R6, A1
RET
OP: MOV @R1, A ;按键操作处理子程序
INC R1
RET
END
2、设某一MCS-51系统,要求外接8个LED数码管,其硬件原理如下图所示,请编写相应的动态显示程序,设显示内容为。
(输出口1地址为:BFH;输出口2地址为:7FH;)
答:
程序说明:
本程序实现了单片机驱动动态LED显示的功能,其中使用了外部存储器哦扩展技术。将段码输出口地址规定为BFH,即当P2.6口输出为低电平时且有向外的写信号(WR=0)时被选通输出LED显示的段码;而将位码输出口地址规定为7FH,即当P2.7口输出为低电平是且有向外的写信号(WR=0)时被选通输出LED显示的位码,通过一排反相器后控制8个LED的共阴极的点位,即控制其是否显示。于是可知可以将位码初始值设定为01H而仅使第一个LED显示,并通过
您可能关注的文档
最近下载
- 人工智能教学课件.ppt VIP
- 公司与员工签订车辆使用协议(2024两篇) .pdf VIP
- 小森LS-40印刷机保养操作指导07.pdf VIP
- 2024-2025学年深圳市育才三中小升初入学分班考试语文试卷附答案解析.pdf VIP
- 咖啡瑞幸咖啡美国上市招股说明书中文全译版本.pdf
- 2023年深圳市南山区育才三中小升初分班考试数学模拟试卷及答案解析.pdf VIP
- 涵管埋设施工技术方案.docx VIP
- 2018-2019、2021-2022年重庆邮电大学《808数字电路与逻辑设计》历年硕士真题汇总.pdf VIP
- 初中化学装置气密性的检验.pptx VIP
- 原理1-经济学概述.ppt VIP
文档评论(0)