单片机原理及其接口技术实验报告(毕业论文)内容摘要:

S MOV A,0FFH MOVX @DPTR,A MOV A,R2 RL A MOV R2,A INC R0 CJNE R0,26H,DISP1 RET DELAY500MS: PUSH 00H MOV R0,25。 延时 秒 NEXT: ACALL DELAY20MS DJNZ R0,NEXT POP 00H RET DELAY500US:PUSH 03H 21 MOV R3,250 DJNZ R3,$ POP 03H RET DELAY20MS:PUSH 06H PUSH 07H MOV R7,99 AGAIN: MOV R6,100 DJNZ R6,$ DJNZ R7,AGAIN POP 07H POP 06H RET TAB: DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H。 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 DB 80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH。 8 ,9 ,A ,B ,C ,D ,E ,F DB 40H, 79H, 24H, 30H, 19H, 12H, 2H, 78H。 0.,1.,2.,3.,4.,5.,6.,7. DB 00H, 10H, 08H, 03H, 46H, 21H, 06H, 0EH。 8.,9.,A.,B.,C.,D.,E.,F. END 实验步骤: ~ 与 JD0~ JD7 连接起来。 开关 KC 倒向上方。 ,将在预习中做好的实验内容 1 和 2 的程序拷贝到一个 *.asm 文件加入。 ,运行。 20H 起始的 6 个字节中置入 00H~ 0FH 中的任意 6 个值,然后连续运行此程序,应显示 0~ F 中的6 个数字;在 20H 起始的 6 个字节中置入 10H~ 1FH 中的任意 6 个值,然后连续运行此程序,应显示 0.~F. 中的 6 个数字。 ,可以用设断点、单步运行的方法查找错误所在,修改后重新编译、与单片 机硬件连接,运行。 直至获得正确的结果。 ,将在预习中做好的实验内容 1 和 3 的程序拷贝到一个 *.asm 文件加入。 ,运行。 22 LED 显示器,应从右向左依次出现 0、 3…… 重要提示: ‚ ,:。 ‛是西文字符,切不可使用中文符号;数字‚ 0‛与字符‚ o‛不可混淆。 ,单片机的时钟为 12MHz,每条指令的执行时间可以从教材的附表中查出。 0000H(以后各实验均同)。 SS10, 在进行硬件连接前最好也按一次 SS10。 ,进行编译后再重新进行硬件连接才能生效。 330 次可以用双重循环实现。 且使用的计数单元与显示子程序中用到的不能冲突。 7. 开关 KC 倒向上方。 实验总结:本次试验编程比较复杂,但在老师的指导和同学的帮助下还是完成了试验。 通过这前三次的实验多单片机的实验过程有了较稳定的掌握。 实验 4 矩阵键盘的使用 实验目的: 掌握矩阵键盘的使用及键盘扫描程序的设计方法。 实验设备: ZY15MCU12BD 型综合单片机实验箱 一台、具有 一个 RS232 串行口并安装 Keil C51 的计算机一台。 实验原理及环境: 实验箱上有一个 16 键的矩阵键盘,分为 4 行 4 列。 4 行分别连接到一片 8255(与 8段 LED 显示器的段驱动和位驱动共用)的 PC0~ PC3, 4 列分别连接到 8255 的 PC4~ PC7。 8255 的 A 口、 B 口、 C 口、控制口的地址分别为片外 RAM 的 4000H、 4001H、 4002H、 4003H。 第 4 列 (PC7) 第 3 列 (PC6) 第 2 列 (PC5) 第 1列 (PC4) 行 输 入 PC3 00H 01H 02H 03H 第 4 行 PC2 04H 05H 06H 07H 第 3 行 PC1 08H 09H 0AH 0BH 第 2 行 PC0 0CH 0DH 0EH 0FH 第 1 行 00H 01H 02H 03H 列 驱 动 图 41 键盘布置及键值 23 选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。 每个键均安排一个键值,如图 41 所示。 实验内容: (在主程序中已对接口芯片 8255 做好必要的初始化)。 这个程序对键盘作一次扫描,若无键按下,返回时累加器 A 中为 FFH,若有键按下 ,返回时 A 中为该键键值 ,键盘扫描子程序流程图如图 42 所示。 Y Y N Y N N Y 开始 输出列驱动码 输入行状态 有无键按下。 有无键按下。 暂存行状态 软件延时 20mS 再读行状态 二次相同。 读行状态 直到键松开 调用查键值子程序 返回 列驱动码指向下一列 (列驱动码左移 ) 列驱动码超出。 A← 0FFH 返回 有无键按下。 有无键按下。 N R2置列驱动码初值 (第 1列低电平,其他列高) 24 其中,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个子程序的参数如下: 入口:行列关键值码放在累加器 A 中,高 4 位是列驱动码(被扫描列的对应位为 0,其余位均为 1),低 4 位是行状态(按下键的对应位为 0,其余位均为 1)。 出口:键码放在 A 中带出。 占用: R A、 PSW、 DPTR。 程序清单如下:。 查键值子程序,起始地址为 KEY20 KEY20: PUSH ACC。 暂存关键值 MOV R1,00H。 查键值自变量清 0 图 42 键盘扫描子程序流程图 25 KEY21: JNB ,KEY22。 计算列数 RR A INC R1 SJMP KEY21 KEY22: MOV A,R1。 按每列 4个键计算 MOV B,4 MUL AB MOV R1,A POP ACC。 恢复关键值 KEY23: JNB ,KEY24。 计算行数 RR A INC R1 SJMP KEY23 KEY24: MOV DPTR,KEYTAB。 读取键值 MOV A,R1 MOVC A,@A+DPTR RET KEYTAB: DB 0FH,0BH,07H,03H DB 0EH,0AH,06H,02H DB 0DH,09H,05H,01H DB 0CH,08H,04H,00H ,为了运行这个子程序,另编写以下程序 : ORG 0000H MOV SP,6FH MOV R0,5。 延时 秒 LOOP1: MOV R1,200 LOOP2: MOV R2,250 DJNZ R2,$ DJNZ R1,LOOP2 DJNZ R0,LOOP1 MOV DPTR,4003H。 8255 初始化 26 MOV A,10000001B。 A口、 B口方式 0输出, C口高 4位输出,低 4位输入 MOVX @DPTR,A LOOP3: LCALL DISP。 调用显示子程序 DIS,设显示子程序入口为 DISP LCALL KEY。 调用键盘扫描子程序,设键盘扫描子程序入口为 KEY CJNE A,0FFH,LOOP4。 如果有键按下转 SJMP LOOP3 LOOP4: MOV 20H,21H MOV 21H,22H MOV 22H,23H MOV 23H,24H MOV 24H,25H MOV 25H,A SJMP LOOP3 其中显示子程序使用实验 3 中的显示子程序。 程序运行后,每按一键便从显示器的右端移入一个对应的数。 程序清单: ORG 0000H MOV SP,6FH MOV 20H,00 MOV 21H,00 MOV 22H,00 MOV 23H,00 MOV 24H,00 MOV 25H,00 ACALL DELAY500MS。 延时 MOV DPTR,4003H。 8255 初始化 MOV A,10000001B。 A 口、 B 口方式 0 输出, C 口高 4 位输出,低 4 位输入 27 MOVX @DPTR,A LOOP3: LCALL DISP。 调用显示子程序 LCALL KEY。 键盘扫描子程序入口 CJNE A,0FFH,LOOP4。 如果有键按下转 SJMP LOO。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。