云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 郑通强—单片机课程设计报告

郑通强—单片机课程设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 6:08:42

JB P0.0,HEHE CJNE A,VAL1,W1 SJMP W0 W1: LCALL DELAY CJNE A,VAL1,HEHE SJMP W0

HEHE: CLR TR0 LJMP JUDGEMOOD

其中VAL1存放的是开始按下P2时P2的值,这段程序可以判断按键的释放,但是对蜂鸣器的发声产生

了影响。

最后从网上查找资料,写出如下程序,问题得到了解决:

W0: LCALL LDCX MOV P2,#0FH MOV A,P2 CPL A ANL A,#0FH JB P0.0,HAHA JNZ W0 LCALL DELAY MOV P2,#0FH MOV A,P2 CPL A ANL A,#0FH JB P0.0,HAHA JNZ W0

HAHA: MOV IE,#00H CLR TR0 LJMP JUDGEMOOD

2、 自动播放音乐相关问题

由于对音乐知识缺少了解,一开始不明白自动播放音乐的原理,后来查找资料,认真了解了单片机播放音乐的原理,明白这一部分的关键在制表和查表,于是确定了每一个按键对应的音调,在此基础上制作了所播放音乐的数表,查数表并利用数表数据的高四位再次查表,获取音符的音调,然后利用第一次查表数据的低四位进行延时程序的循环。独立完成相关程序的编写后,修改了存在的一些小问题,再与原来的主干程序整合,出现了按键释放无法正常判断的问题,上面已有提到。 3、 显示问题

点阵显示一开始也不是很熟悉,在研究过实验指导书上的示例程序后有了一定的了解并在此基础上进行了一定的改动,能大概的显示出想要的图案(除了显示设计的图形以外,还会有一些无关的LED会闪),并且在弹奏模式下也能大概的显示和模拟声调,只是在自动播放模式下,加入显示后,蜂鸣器只发出一个音调,显示也只显示一个图案,没有发生改变。后来将显示程序放在一个新的中断程序中进行调用,又出现了新的问题:弹奏模式下,调用显示程序的时间间隔长的时候,所设计的显示图案用到的LED不能全亮,而是依次循环亮暗;调用显示程序的时间间隔短

- 7 -

的时候,能正确地显示图案,但是在松开按键的一段时间后,图案才会消失,蜂鸣器也是在松开后的一段时间后才停止发声。而自动播放模式下,依然是只能发出一个声音、显示一个图案。后来把把显示程序从中断中拿出来,并对现场进行一定的保护,弹奏模式下的功能完全得到实现,并且弹奏与播放模式也能进行正常的切换,只是自动播放时依然只能显示一个图案、播放一个音符。经过仔细思考,想到只显示一个图案、播放一个音符应该是由于音符计数出现了问题,而音符计数是存放在R2中的,仔细检查程序,并没有发现显示子程序与自动播放部分程序的冲突在哪儿,于是在调用显示子程序之前对R2进行了一个保护,程序返回之前进行恢复,这样处理之后再次运行程序,程序终于能够正常的实现所有要求的功能。

从这一个问题中,可谓深刻体会到保护现场的重要性。 二、 调试结果

经过多天的努力,全部功能得以正常实现:开关接到低电位时,进入弹奏模式,分别按下十六个按键时,发出十六种不同音调的声音,并且每一种声音都会有一种图案在点阵上显示,按键0对应的图案是16*16点阵的第一列从下到上,有一个灯亮,按键1对应的图案是16*16点阵的第二列从下到上,有两个灯亮……按键F对应的图案是16*16点阵的第十六列从下到上,有十六个灯亮,松开按键后,停止发声与显示;开关拨到高电位,进入自动播放模式,播放一段音乐,并且对应不同的音调,点阵显示的团案也随之改变,对音调进行模拟与显示;在这个过程中,随时拨动开关,都能及时切换工作模式。

- 8 -

附录(程序代码) D_DAT0 EQU 60H D_DAT1 EQU 61H D_DAT2 EQU 62H D_DAT3 EQU 63H ;0~3为定义数码管显示数据存储单元 D_DAT4 EQU 64H D_DAT5 EQU 65H D_DAT6 EQU 66H D_DAT7 EQU 67H ;4~7为点阵LED行数据 D_DAT8 EQU 68H ;点阵LED列数据

DOT_A0 EQU 69H DOT_A1 EQU 6AH ;点阵数据表首地址

RR2 EQU 6BH RR3 EQU 6CH RR4 EQU 6DH RR5 EQU 6EH LINE EQU 70H ROW EQU 71H VAL EQU 72H VR2 EQU 73H

LSIO EQU P1.0 ;串行移位数据引脚 LSCLK EQU P1.1 ;串行移位时钟信号 LRCLK EQU P1.2 ;数码管LED输出锁存信号 DRCLK EQU P1.3 ;点阵LED输出锁存信号 ;************

ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 0030H

START: MOV TMOD,#01H MOV SP,#30H ;***************

MOV D_DAT0,#0 MOV D_DAT1,#1 MOV D_DAT2,#2 MOV D_DAT3,#3 ;初始化显示数据 MOV D_DAT4,#4 MOV D_DAT5,#5

- 9 -

MOV D_DAT6,#6 MOV D_DAT7,#7 MOV D_DAT8,#01H MOV RR4,#0 CLR LSIO ;串行移位数据引脚 CLR LSCLK ;串行移位时钟信号 CLR LRCLK ;数码管LED输出锁存信号 CLR DRCLK ;点阵LED输出锁存信号 ;****************

JUDGEMOOD:JNB P0.0,PLAY ;判断开关状态,选择模式,1则自动播放,0则演奏模式 LJMP AUTO

;*************************************** ;演奏模式

;************************************** PLAY: SETB P0.1

MOV P2,#0F0H MOV A,P2 CJNE A,#0F0H,L1 ;判断是否有按键按下 SJMP JUDGEMOOD L1: JB P2.4,L2 ;反转法扫描键盘 ,L为行,R为列 LCALL DELAY ;延时子程序,防抖动 JB P2.4,L2 ;将行设置为1后、列设为0后,检测哪一行为0 MOV LINE,#00H LJMP RSCAN L2: JB P2.5,L3 LCALL DELAY JB P2.5,L3 MOV LINE,#01H LJMP RSCAN L3: JB P2.6,L4 LCALL DELAY JB P2.6,L4 MOV LINE,#02H LJMP RSCAN L4: JB P2.7,L1 LCALL DELAY JB P2.7,L1 MOV LINE,#03H RSCAN: MOV P2,#0FH C1: JB P2.0,C2 MOV ROW,#00H LJMP CALCU C2: JB P2.1,C3 ;将列设置为1后、行设为0后,检测哪一列为0

- 10 -

搜索更多关于: 郑通强—单片机课程设计报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

JB P0.0,HEHE CJNE A,VAL1,W1 SJMP W0 W1: LCALL DELAY CJNE A,VAL1,HEHE SJMP W0 HEHE: CLR TR0 LJMP JUDGEMOOD 其中VAL1存放的是开始按下P2时P2的值,这段程序可以判断按键的释放,但是对蜂鸣器的发声产生了影响。 最后从网上查找资料,写出如下程序,问题得到了解决: W0: LCALL LDCX MOV P2,#0FH MOV A,P2 CPL A ANL A,#0FH JB P0.0,HAHA JNZ W0 LCALL DELAY

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com