湖工电子琴课程设计报告_第1页
湖工电子琴课程设计报告_第2页
湖工电子琴课程设计报告_第3页
湖工电子琴课程设计报告_第4页
湖工电子琴课程设计报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、等级:湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 电子琴 专 业 电气工程及其自动化 班 级 学 号 姓 名 指导教师 寻大勇 2014年 6 月 20 日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 电子琴 专业班级 电气工程及其自动化 学生姓名 学 号 指导老师 寻大勇 审 批 任务书下达日期 2014 年 6月 9日任务完成日期 2014 年 6月 20日设计内容与设计要求设计内容:本课题以单片机为核心,设计和制作一个电子琴。要求由44组成16个按钮矩阵,设计成16个音,可随意弹奏想要表达的音乐。设计要求:设计方案要合理、正确;系统硬件设计

2、;完成必要元器件选择;系统软件设计及调试;写出设计报告。主 要 设 计 条 件MCS-51单片机实验操作台1台;PC机及单片机调试软件;单片机应用系统板1套;制作工具1套;系统设计所需的元器件。说 明 书 格 式封面课程设计任务书目录系统总体方案设计系统硬件设计软件设计(包括流程图)系统的安装调试说明8. 总结 9. 参考文献10. 附录11. 课程设计成绩评分表。 目 录第1章.系统设计内容与意义31.1系统设计的主要内容31.2系统设计目的和意义3第2章.系统组成及设计原理4 2.1 系统组成42.2矩阵键盘识别显示原理42.3音乐产生原理与音阶和频率对应关系表7 第3章.系统硬件电路设计

3、.93.1AT89C51主控芯片介绍93.2LED数码管显示电路103.3键盘显示电路10第4章.软件电路仿真114.1总仿真电路图114.2数码管显示电路图114.3复位电路图114.4矩阵键盘电路图124.5扬声器连接电路图12第5章.调试步骤、结果、使用说明13 5.1调试步骤及结果13 5.2使用说明13第6章.经验总结14第7章.参考文献15第8章.附件158.1元器件清单158.2运行程序15 第1章 系统设计内容及意义1.1 系统设计的主要内容本课题以单片机为核心,设计和制作一个电子琴。要求由44组成16个按钮矩阵,设计成16个音,可随意弹奏想要表达的音乐。1.2 系统设计目的和

4、意义 随着电子技术的发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣,电子技术与音乐的结合不断加深。由此而产生的电子琴在这种形势下,因其体积小,易于携带,经济适用,对初学者,尤其对识谱的人来说是很容易弹奏的,一首简单的曲子灵感好的人甚至不用很多的练习和教师的指导就能很快的弹奏出来。是一般家庭都能承受得了的经济投入,而且电子琴键盘操作直观易于掌握。这样就强烈地激发了学习者的学习兴趣,迅速地提高了电子琴的普及率。电子琴使用简单。深受广大音乐爱好者推崇。作为电子专业的学生,掌握电子琴的制作是很好检验我们所学知识应用。它所包含的知识基本上覆盖我们的

5、模拟电子技术基础、数字电子技术基础、EDA技术、电子线路、单片机基础以及接口技术课程的重要章节。虽然我们不能设计出很复杂的电子琴,主要是考虑到设备以及成本等一系列问题,因此我打算设计并制作一个简易的电子琴。采用集成电路设计,基于AT89S52单片机设计一款简易的电子琴,采用4*4距阵键盘,鉴于传统电子琴可以用键盘上的“k0”到“k16”键演奏从低So到高DO等16个音,从而可以用来弹奏喜欢的乐曲。系统组成及设计原理2.1 系统组成本系统主要以51单片机为主控核心,与矩阵键盘,扬声器,LED显示管模块一起组合而成。具体如下: 单片机 数码管 矩阵键盘 扬声器2.2 矩阵键盘识别显示原理 本系统扫

6、描键盘矩阵、显示按键、扬声器发出对应音符。 4X4行列式键盘识别及显示原理如下: 组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。 编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。 非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、

7、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。 (1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。 (2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生

8、相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。 (3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入输出端口。 (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。用AT89S51的并行口P

9、1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。总体电路具体原理如下:开始 模块初始化 发送扫描码有键按 下N Y停止运转 扫描矩阵 显示按键 启动定时器 延时 结束矩阵电子琴弹奏模式程序流程图:电子琴子程序开中断并允许中断设定定时器工作方式取键值根据键值查音阶表给定时器T0赋值开始计时进入中断蜂鸣器取反退出中断返回键盘扫描程序2.3 音乐产生原理与音阶和频率对应关系表一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,

10、我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,可得到中音DO(523Hz)。计数脉冲值与频率的关系式(如式2-1所示)是: Nfi2fr (2-1) 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T655

11、36N65536fi2fr例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T65536N65536fi2fr6553610000002fr65536500000/fr低音DO的T65536500000/26263627 中音DO的T65536500000/52364580高音DO的T65536500000/104665059 音乐的音拍,一个节拍为单位(C调) 曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms对于不同的曲调我们也可以用单

12、片机的另外一个定时/计数器来完成。 现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示 音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1

13、DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283

14、下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据 低音019之间,中音在2039之间,高音在4059之间 TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,652

15、52,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 第3章 系统硬件电路设计3.1AT89C51主控芯片介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出

16、管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示: 图4.2 AT89C51外形及引脚排列图3.2LED数码管显示电路单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED(Light Emitting Diode);液晶显示器,简称LCD(Liquid Crystal Display);近年也有配置CRT显示器的,前者价廉,配置灵活,与单片机接口方便;后者可进行图形显示,但接口较复杂,成本也高。单

17、片机中通常使用7段LED构成字型“8”,另外,还有一个小数点发光二极管,以显示数字,符号及小数点。这种显示器有共阴极和共阳极两种。发光二极管的阳极连在一起称为共阳极显示器,阴极连在一起称为共阴极显示器。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔画ag,另一个小数点位dp发光二极管。当在某段发光二极管上施加一定的正向电压时,该段笔画即亮;不加电压则暗。为了保护各段LED不被损坏,须加限流电阻。共阴极和共阳极7段LED显示数字0F,“”符号及“灭”的编码(a段为最低位,dp点为最高位)。 3.3键盘显示电路 组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不

18、管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。 编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。 非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能

19、。第4章 软件电路仿真4.1总仿真电路图4.2数码管显示电路图4.3复位电路图4.4矩阵键盘电路图4.5扬声器连接电路图第5章 调试步骤、结果、使用说明5.1调试步骤及结果 软件仿真调试主要是针对单片机部分进行调试。在软件运行前,先确保电路中连线正确,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要通过目测,用来完成检测电路中是否存在断路或者短路情况等。在确保软件仿真电路正常,无异常情况(断路或短路)方可进行软件运行,在本次设计中,软件运行主要是测试单片机键盘控制部分、数码管点亮部分、和音频功放电路调试。1、数码管LED电路调试:软件运行,随机按下按钮可以看到数码管显

20、示数字;单片机键盘控制部分调试:软件运行,随机按动键盘可以发现各个按键对应的音正确通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。5.2使用说明基于单片机的电子琴,软件仿真是用keil系列软件进行程序编写及其检测,protues系列软件进行电路仿真。、Keil下编译,产生目标HEX文件,protues下Programme Files选择产生的HEX文件,点击运行开始模拟。、开启本系统,数码管

21、显示“”。、按任意键盘,数码管显示所按下的键盘数,扬声器发出相应的音符。第6章 经验总结 做了两周的单片机课程设计,我有了很多的体会和感想。通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。本次我是以51单片机为主体进行电子琴的课程设计,做完后,感觉到自己的不足依然很多,但是收获也颇丰。关于这次课程设计,我花费了比较多的心思,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等,在摸索中学习,在摸索中成长,在学习的过程中带着问题去学我发现效率更高,这是我做这次课程设计的一个极大的收获,在真正设计之前我

22、做了相当丰富的准备,首先巩固一下课程理论,再一遍熟悉可测好难过只是的构架,然后结合加以理论分析、总结,有了一个清晰的思路和一个完整的软件流程图之后才着手设计。通过这次课程设计,我的收获有如下几点:将理论教学与实践相结合,使学生对于单片机的实际应用有了比较深刻的认识;使学生对单片机应用系统设计的各种方法有所了解;通过分工合作,培养学生之间的合作精神;让学生熟悉电子系统设计的全过程;提高学生对于设计课题的分析能力、编程能力和解决实际问题的综合能力;通过实践,增强了下阶段的学习信心。为将来的毕业设计奠定了夯实的基础。但是依旧存在不少问题: 1.对于基础知识掌握的不牢固,特别是对于单片机的前项通道设计

23、的理解的不够,反映出模拟电路掌握的不好。2.缺乏对于电子系统设计测试的概念。3.存在时间动手能力较差的问题。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于解决了所有问题。同时,在老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位老师再次表示忠心的感谢!第7章 参考文献1.单片机原理与应用 王迎旭等编 机械工业出版社2.51系列单片机设计实例 楼然苗等编 北京航空航天大学出版社3.计算机硬件技术基础实验教程 黄勤等编 重庆大学出版社4.微型计算机接口技术及应用 刘乐善主编 华中科技大学出版社5.单片微型计算机原理及接口技术陈

24、光东等 华中科技大学出版社第8章 附件8.1元器件清单AT89C51芯片 1枚RESPACK-8芯片 1枚共阳极七段数码管 1枚按钮 16枚扬声器 1枚20pf电容 2枚10uf电容 1枚CTYSTAL 1枚10k电阻 1枚电源 1组8.2运行程序:BUFF EQU 30HSTH0 EQU 31HSTL0 EQU 32HTEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0 ORG 001BH LJMP TIM1START: MOV TMOD,#01H ;设置T0工作方式 SETB ET0 SETB EA ;启动T0MAIN: MOV P1,#0

25、FFH ;P1全置1 CLR P1.4 ;开始扫描第一行 MOV A,P1 ANL A,#0FH ;屏蔽高四位 XRL A,#0FH ;低位 有”0”则有键按下,否则无 JZ KKEY1 ; 判断有无键按下,有则继续,没有则转移到KKEY1 LCALL DELY10MS ;调用延时程序 MOV A,P1 ;重新开始判断有无键按下 ANL A,#0FH XRL A,#0FH JZ KKEY1 MOV A,P1 ANL A,#0FH ;求键值 CJNE A,#0EH,CKK1 ;相等说明该行第一列有键按下,不等则转移 MOV BUFF,#0 ;该键值为0 LJMP NDK1 ;跳到NDK1执行相应

26、的功能程序CKK1: CJNE A,#0DH,KK2;相等说明该行第二列有键按下,不等则转移 MOV BUFF,#1;该键值为1 LJMP NDK1;跳到NDK1执行相应的功能程序KK2: CJNE A,#0BH,KK3;相等说明该行第三列有键按下,不等则转移 MOV BUFF,#2;该键值为2 LJMP NDK1;跳到NDK1执行相应的功能程序KK3: CJNE A,#07H,KK4;相等说明该行第四列有键按下,不等则转移 MOV BUFF,#3;该键值为2 LJMP NDK1;跳到NDK1执行相应的功能程序KK4: NOPNDK1: MOV A,BUFF MOV DPTR,#TABLE M

27、OVC A,A+DPTR MOV P0,A MOV A,BUFF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0NDK1A: MOV A,P1 ANL A,#0FH XRL A,#0FH JNZ NDK1A CLR TR0KKEY1: MOV P1,#0FFH ;开始扫描第二行 CLR P1.5 MOV A,P1 ANL A,#0FH XRL A,#0FH J

28、Z KKEY2 LCALL DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ KKEY2 MOV A,P1 ANL A,#0FH CJNE A,#0EH,KK5 MOV BUFF,#4 LJMP NDK2KK5: CJNE A,#0DH,KK6 MOV BUFF,#5 LJMP NDK2KK6: CJNE A,#0BH,KK7 MOV BUFF,#6 LJMP NDK2KK7: CJNE A,#07H,KK8 MOV BUFF,#7 LJMP NDK2KK8: NOPNDK2: MOV A,BUFF MOV DPTR,#TABLE MOVC A,A+DPTR

29、 MOV P0,A MOV A,BUFF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0NDK2A: MOV A,P1 ANL A,#0FH XRL A,#0FH JNZ NDK2A CLR TR0KKEY2: MOV P1,#0FFH ;开始扫描第三行 CLR P1.6 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ KKEY3 LCAL

30、L DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ KKEY3 MOV A,P1 ANL A,#0FH CJNE A,#0EH,KK9 MOV BUFF,#8 LJMP NDK3KK9: CJNE A,#0DH,KK10 MOV BUFF,#9 LJMP NDK3KK10: CJNE A,#0BH,KK11 MOV BUFF,#10 LJMP NDK3KK11: CJNE A,#07H,KK12 MOV BUFF,#11 LJMP NDK3KK12: NOPNDK3: MOV A,BUFF MOV DPTR,#TABLE MOVC A,A+DPTR MOV

31、 P0,A MOV A,BUFF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0NDK3A: MOV A,P1 ANL A,#0FH XRL A,#0FH JNZ NDK3A CLR TR0KKEY3: MOV P1,#0FFH;开始扫描第四行 CLR P1.7 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ KKEY4 LCALL DEL

32、Y10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ KKEY4 MOV A,P1 ANL A,#0FH CJNE A,#0EH,KK13 MOV BUFF,#12 LJMP NDK4KK13: CJNE A,#0DH,KK14 MOV BUFF,#13 LJMP NDK4KK14: CJNE A,#0BH,KK15 MOV BUFF,#14 LJMP NDK4KK15: CJNE A,#07H,KK16 MOV BUFF,#15 LJMP NDK4KK16: NOPNDK4: MOV A,BUFF MOV DPTR,#TABLE MOVC A,A+DPTR MOV

33、P0,A MOV A,BUFF MOV B,#2 MUL AB MOV TEMP,A MOV DPTR,#TABLE1 MOVC A,A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP MOVC A,A+DPTR MOV STL0,A MOV TL0,A SETB TR0NDK4A: MOV A,P1 ANL A,#0FH XRL A,#0FH JNZ NDK4A CLR TR0KKEY4: MOV A,#0FFHMOV P2,A MOV A,P2JB ACC.0, KKEY5LCALL DELY10MSMOV A,P2JB ACC.0, KKEY5

34、MOV BUFF,#16LJMP START22START22: MOV A,BUFFCJNE A,#16,KKEY5LJMP START2KKEY5: LJMP MAIN START2: MOV TMOD,#10H ;设T1在M1 MOV IE,#88H ;中断使能 START0: MOV 30H,#00 ;取简谱码指针 NEXT: MOV A,30H ;简谱码指针载入A MOV DPTR,#TAB ;至TAB取简谱码 MOVC A,A+DPTR ;MOV R2,A ;渠道的简谱码暂存于R2 JZ END0 ;是否渠道00(结束码) ANL A,#0FH ;不是,则取低4位(节拍码) MOV

35、 R5,A ;将节拍码存入R5 MOV A,R2 ;将取到的简谱码再载入A SWAP A ;高低4位交换 ANL A,#0FH ;取低4位(音符码) JNZ SING ;取到的音符码是否为0? CLR TR1 ;开始,则不发音 SJMP D1 ;跳至D1 SING: DEC A ;取到的音符码减1(不含0) MOV 22H,A ;存入(22H) RL A ;乘2 MOV DPTR,#TAB1 ;至TABLE1取相对的高位字节计数值 MOVC A,A+DPTR ; MOV TH1,A ;取到的高位字节存入TH0 MOV 21H,A ;取到的高位字节存入(21H) MOV A,22H ;在载入取到

36、的音符码 RL A ;乘2 INC A ;加1 MOVC A,A+DPTR ;至TABLE1取相对的低位字节计数值 MOV TL1,A ;取到的低位字节存入TL0 MOV 20H,A ;取到的低位字节存入(20H) SETB TR1 ;启动TIMER0D1: LCALL DELAY ;其本单位时间1/4拍187毫秒 INC 30H ;取简谱码指针加1 JMP NEXT ;取下一个简谱码 END0: CLR TR1 ;停止TIMER0 LJMP MAIN ;重复循环 TIM1: PUSH ACC ;将A的值暂存于堆栈 PUSH PSW ;将PSW的值暂存于堆栈 MOV TL1,20H ;重设计数值 MOV TH1,21H ; CPL P3.0 ;将P1.0位反相,控制蜂鸣器发声 POP PSW ;至堆栈取回PSW的值 POP ACC ;至堆栈取回A的值 RETI DELAY:MOV R7,#02 D2: MOV R4,#187 D3: MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 RET DELY10MS:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论