内工大单片机工程实训报告

合集下载

单片机实训报告通用总结

单片机实训报告通用总结

一、前言单片机作为现代电子设备的核心控制单元,具有体积小、功能强、功耗低等特点。

通过单片机实训,可以让我们更好地掌握单片机的原理、编程和应用。

本文将对单片机实训的过程、收获和心得进行总结。

一、实训过程1. 实训内容本次单片机实训主要包括以下内容:(1)单片机原理及基本结构(2)单片机编程语言C语言(3)单片机外围电路设计(4)单片机应用系统开发2. 实训步骤(1)学习单片机原理及基本结构,了解其工作原理和特点。

(2)学习单片机编程语言C语言,掌握基本语法和编程技巧。

(3)学习单片机外围电路设计,了解常用元器件的功能和作用。

(4)结合所学知识,设计并实现一个简单的单片机应用系统。

二、实训收获1. 理论知识方面(1)掌握了单片机的基本原理和结构,了解了其工作过程。

(2)学会了C语言编程,掌握了单片机编程的基本方法和技巧。

(3)了解了单片机外围电路的设计方法和常用元器件的应用。

2. 实践能力方面(1)提高了动手能力,学会了单片机的组装和调试。

(2)培养了团队协作精神,学会了与他人共同完成项目。

(3)锻炼了问题解决能力,学会了在遇到困难时寻求帮助和解决方案。

三、实训心得1. 学以致用,理论与实践相结合在实训过程中,我们不仅要学习理论知识,还要将其应用到实际项目中。

通过实践,我们才能真正掌握单片机的原理和应用。

2. 注重细节,严谨求实在单片机设计和调试过程中,细节至关重要。

一个微小的错误可能导致整个项目失败。

因此,我们要严谨求实,注重每一个细节。

3. 团队合作,共同进步单片机实训是一个团队项目,需要大家共同协作。

在实训过程中,我们要学会与他人沟通、交流,共同解决问题,实现共同进步。

4. 持续学习,不断进步单片机技术发展迅速,我们要保持学习的热情,不断更新知识,提高自己的技能水平。

四、总结通过本次单片机实训,我们不仅掌握了单片机的原理和应用,还提高了自己的实践能力和团队协作精神。

在今后的学习和工作中,我们将继续努力,不断进步,为我国电子产业的发展贡献自己的力量。

关于单片机实训报告万能【六篇】

关于单片机实训报告万能【六篇】

关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。

系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。

踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

但在这次实训中同时使我对汇编语言有了更深的认识。

当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。

这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。

这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。

希望这次的经历能让我在以后学习中激励我继续进步。

【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。

了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。

LED显示器:LED显示器是由发光二管组成显示字段的器件。

通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。

有段选码和和位选码。

当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。

LED显示器的显示方式有动态和静态两种。

7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇精选

单片机实训报告范文精选5篇实训报告是展示本身实训收获成长的重要报告,那么实训报告该如何写呢?小编精选了一些关于实训报告的优秀范例,一起来看看吧。

单片机课程设计心得体会在学校学习期间我有幸的参加了学校的单片机学习小组,在小组里我理解了什么是单片机,单片机有哪些用途,利用单片机可以实现哪些功能来方便人们的生活如交通灯,时钟,还有中,电子玩具等等,它们里面都有单片机的存在来实现某种功能。

通过在单片机小组里的学习我简单总结了几点心得和体会:第一:万事开头难,要英勇的迈出第一步,不要总找借口说没有学习过就总推脱。

凡事都有第一步可以先可简单的来,然后可以逐步的向深层次学习。

可以从建工程开始,然后可以找一个简单的小程序先把它敲进单片机内然他运转起来,感受一下单片机的运转,让本人理解单片机整个运转。

第二:关于知识点,学过的要掌握结实,关于没有学的和临时用不到的先不用学习。

比方:小灯得点亮就没有用到中断可以先不用看。

如此可以防止知识过多记不住的苦恼。

关于程序这里的知识点不能只停留在理论层次上,一定要结合着程序进展学习如此才能掌握的特别牢靠,当用到哪里的知识点不记得了可以去看书,关于用不到的可以不去看。

第三:程序不要只是看别人得,一定要本人写过才是本人的。

开始不明白可以参考别人的,看看每一句代表着什么意思,可以实现什么现象。

明白之后本人再重新写一遍,你会觉观察别人的能明白到本人写的时候特别困难。

当你本人能写出来的时候说明你真明白了。

第四:一定要学会程序调试的方法。

有时候把程序写完了然后运转时不能实现理想的现象。

这时有人就晕了不知该如何办,然后就去征询别人。

当别人找出征询题出在哪里时就会恍然大悟。

事实受骗遇到征询题一定要本人尝试着处理,不能遇到征询题就去征询别人。

本人一定要掌握处理征询的方法和思路。

第五:在学习初期看别人的代码,学习别人的思路这个特别有用。

通过看别人的代码特别是有多年编程经历的人的程序,可以迅速提高本人的编程水平。

单片机实训综合报告

单片机实训综合报告

一、前言单片机作为一种微型的计算机系统,因其体积小、功耗低、功能强、成本低等特点,在工业控制、智能家居、通信等领域得到了广泛的应用。

为了提高学生的实践能力,培养创新精神和工程实践能力,我们进行了单片机实训。

本文将对本次实训进行总结,分析实训过程中遇到的问题及解决方法,并对实训成果进行展示。

二、实训目的1. 熟悉单片机的基本原理和组成,掌握单片机的开发环境。

2. 学习单片机编程,了解C语言在单片机中的应用。

3. 学会使用单片机外围电路,实现基本的功能。

4. 培养学生的动手能力、团队协作能力和创新精神。

三、实训内容1. 单片机硬件电路搭建在本次实训中,我们搭建了基于51单片机的最小系统,包括单片机、晶振、复位电路、电源电路等。

通过搭建电路,使学生了解单片机的硬件组成,为后续编程打下基础。

2. 单片机编程使用C语言对单片机进行编程,实现以下功能:(1)LED流水灯:通过控制LED灯的亮灭,实现流水灯效果。

(2)按键控制LED灯:通过按键控制LED灯的开关。

(3)数码管显示:将当前时间显示在数码管上。

3. 单片机外围电路应用(1)使用继电器控制外部设备:通过单片机控制继电器,实现外部设备的开关。

(2)使用蜂鸣器发出声音:通过单片机控制蜂鸣器,实现不同频率的声音。

四、实训过程及问题解决1. 电路搭建过程中,遇到电路连接错误、元器件损坏等问题。

通过查阅资料、请教老师,逐一解决了这些问题。

2. 编程过程中,遇到程序运行不稳定、功能实现不完善等问题。

通过分析程序逻辑、修改代码,使程序运行稳定,功能完善。

3. 在单片机外围电路应用过程中,遇到继电器控制不灵敏、蜂鸣器声音不稳定等问题。

通过调整电路参数、优化代码,使继电器控制灵敏,蜂鸣器声音稳定。

五、实训成果1. 完成了基于51单片机的最小系统搭建。

2. 编写并调试了LED流水灯、按键控制LED灯、数码管显示等程序。

3. 应用单片机外围电路,实现了继电器控制和蜂鸣器发声等功能。

单片机实训总结(集锦10篇)

单片机实训总结(集锦10篇)

单片机实训总结(集锦10篇)单片机实训总结第1篇单片机是一门应用性和综合性很强的学科,它综合了电子技术中的模拟电路和数字电路方面的知识,特别是数字电路,因为数字电路在单片机里面的应用很多。

由于单片机涉及的知识很多,所以我们只能循序渐进的学习,逐步的积累,没有什么捷径可循。

在大二的时候,我就听学长介绍过单片机,当时感觉很神奇,从此就对单片机特别感兴趣,也感觉它特别有用。

于是经学长推荐,在大二上学期我利用学习之余在图书馆借书,学习了KILE和Proteus软件,刚开始学习的时候,对单片机没有什么认识,不知道什么是单片机,更不知道它有什么作用。

通过学习才大体知道了单片机的一些知识。

由中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及串行通信接口等集成在一块芯片上,构成了一个单片微型计算机,简称为单片机。

也算给我正式学习单片机打下一个基础。

在大二下学期,我购买了一套单片机学习开发板和郭天祥主编的《新概念51单片机C语言教程》,从此正式开启我的单片机学习之路。

在刚开始学时,就完全模仿郭天祥主编的这本书再结合开发板一步一步的学,从点亮一个发光二级管,流水灯,数码管,定时器,中断,矩阵键盘,AD、DA,串口通行,I2C总线等一步一步的深入学习。

此时,我虽然能看懂程序,一些简单的程序可以自己编写,但一些比较复杂的自己编不出来。

在大二暑假,我发现了郭天祥主讲的《十天学会单片机》视屏,于是我坚持天天看视屏,然后在自己根据视屏内容结合开发板写程序,调程序,就这样学了一个暑假。

通过这个视屏,我初步了解了单片机的硬件结构,编程方法及调试方法(用KILE软件调试和用开发板调试),寄存器的使用,学会了如何看芯片资料,初步开始利用芯片时序图来编程。

可以说这个视屏对我学习单片机有巨大的帮助,更夸张的说是这个视屏将我带进了单片机的世界,让我尽情的体验单片机带给我的快乐!在大三上学期,我有幸参加了教改班的单片机课程学习。

单片机实训报告【三篇】

单片机实训报告【三篇】

【导语】实训报告是展⽰⾃⾝实训收获成长的重要报告。

以下是⽆忧考整理的单⽚机实训报告,欢迎阅读!更多相关⽂章请关注⽆忧考报告频道!单⽚机实训报告篇⼀ 通过为期⼀周的单⽚机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不⾜。

相信这对我们以后的学习和⼯作都会有很⼤的帮助。

我们⼀定要在最短的时间⾥对这些不⾜加以改正! ⾸先,在这次试训中我被单⽚机强⼤的功能所震撼,以前在课堂上完全没有能理解可编程单⽚机的优越性。

这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活⼒。

换是我们认识到这次试训不仅仅是⼀个软件的应⽤,更多的是使我们认识到学习到很多在课堂上⽆法得到的东西。

特别是protues软件的功能是我们了解了当今开发系统的新⽅向,简直太不可思议啦! 单⽚机作为⼀种最简单的软件,与我们的⽇常⽣活息息相关,了解⼀些单⽚机程序的简单录⼊是⾮常必要的。

如:LED显⽰器、键盘和显⽰器的应⽤和原理。

在被刺实训中我们每个⼈通过⼀个⼋位流⽔灯的制作,使我们深深地体会到了单⽚机在现实⽣活中的⼩⼩应⽤,既增强了我们的好奇⼼,⼜巩固了我们的理论知识。

更让我们体会到了单⽚机⼿动的开始平台的完善与成熟。

只要你有想法,单⽚机就有可能让他成为现实。

这⾥我学习完protues软件后的第⼀感觉是,虽然这软件⼯作不稳定,但是会有相当不错的效果出来。

这对我以后的⼯作⼀定会有帮助的。

在这次试训中不仅只对单⽚机编程有了新的认识,还对整个单⽚机的开发平台都有了⼀厅的了解,这是⼀笔不错的收获。

通过这⼏天的试训,使我的感触很深,真实“条条⼤路通罗马”,要达到⽬的,不同的⼈就有不同的⽅法。

只要你的⽅法不错!五花⼋门都可以,⽽且是各有特⾊。

⾛出来的结果都有各⾃的独到之处。

在编程中“简”字贯穿于整个程序设计中,越简单越好,毕竟单⽚机留给⽤户的资源是有限的,所以我们要充分利⽤这些资源,达到更好的效果,这些是我们在以后的学习⽣活中应值得注意的地⽅。

单片机实训报告总结

单片机实训报告总结

单片机实训报告总结
本次单片机实训报告总结如下:
单片机实训是一次非常有意义和实践性很强的项目,通过实际动手操作和编程实现,我深入了解了单片机的基本原理、工作原理和应用领域。

在实验过程中,我学习了单片机的硬件部分设计和软件部分编程的相关知识,掌握了单片机的相关开发工具和调试方法。

在实训过程中,我首先了解了单片机的基本原理和工作原理,掌握了单片机的硬件组成和功能。

然后,我学习了单片机的编程语言和编程方式,熟悉了单片机的编程环境和开发工具。

最后,我通过实际操作和编程实现了几个简单的单片机应用,例如LED灯控制、数码管显示、按键输入等。

在实训过程中,我不仅掌握了单片机的基本原理和操作方法,还学习到了很多解决问题的思路和方法。

通过自己不断的实践和调试,我提高了自己的动手能力和问题解决能力。

通过本次单片机实训,我深刻认识到单片机在现代电子领域中的广泛应用和重要性。

掌握了单片机的相关知识和技术,对我以后的学习和工作都将有很大的帮助。

总之,本次单片机实训是一次非常有益的学习和实践经历。

通过实际操作和编程实现,我不仅掌握了单片机的基本原理和操作方法,还提高了自己的动手能力和问题解决能力。

这次实训对我以后的学习和工作都具有重要的意义和价值。

关于单片机的实训报告范文

关于单片机的实训报告范文

一、前言随着科技的飞速发展,单片机作为一种重要的嵌入式系统,广泛应用于工业控制、智能家居、物联网等领域。

为了提高我们的实践能力,培养创新精神和工程实践能力,我们选择了单片机作为实训课程。

以下是我对单片机实训过程的总结和心得体会。

二、实训目的1. 掌握单片机的基本原理和组成。

2. 熟悉单片机的编程方法和调试技巧。

3. 学会使用单片机进行简单的嵌入式系统设计。

4. 培养团队协作和解决问题的能力。

三、实训内容1. 单片机基本原理和组成实训过程中,我们学习了单片机的基本原理和组成。

单片机是由中央处理器(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器等组成。

通过学习,我们了解了单片机的指令系统、寻址方式、中断系统等基本概念。

2. 单片机编程和调试实训中,我们学习了Keil C51集成开发环境的使用方法,掌握了单片机的编程技巧。

通过编写程序,我们实现了单片机的输入输出控制、定时器/计数器功能、中断控制等功能。

同时,我们还学习了调试技巧,解决了程序运行过程中出现的问题。

3. 嵌入式系统设计在实训过程中,我们设计了一个简单的嵌入式系统,实现了温度检测、报警功能。

系统主要由单片机、温度传感器、蜂鸣器、显示模块等组成。

通过设计,我们了解了嵌入式系统的设计流程,掌握了硬件选型、软件编程、系统调试等技能。

4. 团队协作和解决问题实训过程中,我们分组进行项目设计,培养了团队协作能力。

在遇到问题时,我们积极思考、讨论,最终找到了解决方案。

这让我们认识到,在团队中,沟通和协作至关重要。

四、实训心得体会1. 理论与实践相结合实训过程中,我们深刻体会到理论与实践相结合的重要性。

通过实际操作,我们对单片机的原理和编程有了更深入的理解。

2. 学会编程和调试技巧实训过程中,我们学会了Keil C51集成开发环境的使用方法,掌握了单片机的编程技巧。

同时,我们还学会了调试技巧,能够快速解决程序运行过程中出现的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计目的:(题目四号宋体字)通过一个以8 位单片机为核心的模拟量数字表的硬件调试过程,掌握具有A/D、七段LED 显示、RS-485 通信、Watchdog 等接口电路的单片机应用系统的设计思想和方法。

学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。

通过上述过程提高学生工程实践能力和素质。

二、设计任务:要求明确设计任务内容及任务分工等;(内容小四号宋体字)★基本任务:完成蜂鸣器、键盘、七段LED 显示器的自检程序设计。

(1)蜂鸣器自检要求:利用程序实现两种以上声音。

(2)键盘自检要求:确定键盘正确。

(3)七段LED 显示器自检要求:确定LED 显示器每一段均正确。

框图(包括自检和任务的框图):1、硬件编程框图及相关说明2、主程序框图、子程序框图及相关说明三、程序清单:要求有明确的程序注解、程序清单可分两栏打印(1)蜂鸣器自检程序BEEP:setb p2.3 ;关喇叭acall delay1 ;调用延时1clr p2.3 ;开喇叭acall DELAY2 ;调用延时2setb p2.3 ;关喇叭acall DELAY2 ;调用延时2clr p2.3 ;开喇叭acall DELAY3 ;调用延时3setb p2.3 ;关喇叭acall DELAY3 ;调用延时3sjmp BEEP ;跳到beepRETDELAY1: ;延时子程序MOV R1,#0FFHCX0: MOV R2,#0FFHCX: DJNZ R2,CXDJNZ R1,CX0RETDELAY2: 延时子程序MOV R1,#0FAHCX1: MOV R2,#0FAHCX2: DJNZ R2,CX2DJNZ R1,CX1RETDELAY3: 延时子程序MOV R1,#0FAHCX3: MOV R2,#0FAHCX4: DJNZ R2,CX4DJNZ R1,CX3 RET(2)键盘自检程序BEEP:MOV R1,#4H ;设置移位次数LCALL SEL8 ;打开三态门MOV P1 ,#0FFH ;将P1口设置成I/OMOV A,P1 ;采样LCALL SEL7 ;关闭三态门SJMP CXW1RETCXW1: RRC A ;把键的值放到进位位JNC CXW2 ;如果键合上,跳到CXW2,发音子程序DJNZ R1,CXW1 ;(K1没闭合,就看K2是否闭合;K2没闭合,就看K3是否闭合;K3没闭合,就看K4是否闭合)SJMP BEEP ;四个键都没闭合,就重新采样RETCXW2: CLR P2.3 ;开喇叭LCALL DELAY ;调用延时SETB P2.3 ;关喇叭SJMP BEEP ;发音完毕,跳转到BEEP,重新采样RETSEL7: CLR P2.7 ;(关闭三态门子程序)SETB P2.6SETB P2.5RETSEL8: SETB P2.7 ;(打开三态门子程序)SETB P2.6SETB P2.5RETDELAY: MOV R6,#0AH ;(延时子程序)CXW3: MOV R7,#0F8HCXW4: DJNZ R7,CXW4DJNZ R6,CXW3RET(3)七段LED 显示器自检程序DT1: CLR P2.5 ;(使第一位LED 有效,并显示从1到9) CLR P2.6 CLR P2.7 LCALL cc1 RETDT2: CLR P2.5 ;(使第二位LED 有效,并显示从1到9) CLR P2.6设置移位次数打开三态门采样关三态门K1闭合?K2闭合?K4闭合?峰鸣器发音K3闭合?YNNNYYNY调用延时程序SETB P2.7LCALL cc1RETDT3: CLR P2.5 ;(使第三位LED有效,并显示从1到9) SETB P2.6CLR P2.7LCALL cc1RETDT4: CLR P2.5 ;(使第四位LED有效,并显示从1到9) SETB P2.6SETB P2.7LCALL cc1RETDT5: SETB P2.5 ;(使第五位LED有效,并显示从1到9) CLR P2.6CLR P2.7LCALL cc1LJMP DT1RETcc1: LCALL SEL0 ;(调用送字型的子程序,使LED显示0到9)LCALL DELAYLCALL SEL1LCALL DELAYLCALL SEL2LCALL DELAYLCALL SEL3LCALL DELAYLCALL SEL4LCALL DELAYLCALL SEL5LCALL DELAYLCALL SEL6LCALL DELAYLCALL SEL7LCALL DELAYLCALL SEL8LCALL DELAYLCALL SEL9LCALL DELAYLCALL SEL10LCALL DELAYRETSEL0: MOV A,#7EH ;SEL1到SEL10是送字型子程序,SEL0是送0子程序MOV P0,ARETSEL1: MOV A,#0CH ;(SEL 1是送1子程序)MOV P0,ALCALL DELAYRETSEL2: MOV A,#0B6HMOV P0,A(SEL 2是送2子程序)LCALL DELAYRETSEL3: MOV A,#9EH(SEL3是送3子程序)MOV P0,ALCALL DELAYRETSEL4: MOV A,#0CCH(SEL 4是送4子程序)MOV P0,ALCALL DELAYRET(SEL 5是送5子程序)SEL5: MOV A,#0DAHMOV P0, ALCALL DELAYRET(SEL 6是送6子程序)SEL6: MOV A,#0FAHMOV P0,ALCALL DELAYRET(SEL 7是送7子程序)SEL7: MOV A,#0EHMOV P0,ALCALL DELAYRET(SEL8是送8子程序)SEL8: MOV A,#0FEHMOV P0,ALCALL DELAYRET(SEL9是送9子程序)SEL9: MOV A,#0DEHMOV P0,ALCALL DELAYRET(SEL 10是送小数点子程序,即使小数点亮)SEL10: MOV A,#01HMOV P0,ARETDELAY: MOV R6,#9fH(延时子程序)CXW3: MOV R7,#9fHCXW4: DJNZ R7,CXW4DJNZ R6,CXW3RET(4)一首歌的程序编程思路:歌曲是由音调和节拍有机组合而成。

音调是由发音的频率决定的,七种不同频率的方波来产生七种音调,我们用定时器1来控制方波的频率。

节拍就是音调持续的时间,节拍用节拍(延时)程序控制。

BUZZER EQU P2.3 ;伪指令,不编译org 0000h ;主程序起始地址ajmp beep ;跳至主程序org 000bh ;定时器1中断地址jmp tim0 ;跳至timer0中断子程序BEEP:LCALL SEL81 ;打开三态门MOV P1 ;#0FFH(P1口设置为输入输出口)MOV A,P1 ;(采样K1键的状态)LCALL SEL71 ;关三态门SJMP CXW1RETCXW1: RRC A ;(K1的状态送到累加器的进位位)JNC CXW2 ;(K1闭合,跳到点亮LED并放歌的子程序)SJMP BEEP ;(如果K1没闭合,继续扫描键盘)RETCXW2:DT1: CLR P2.5 ;(选位子程序,选择第一位LED)CLR P2.6setb P2.7LCALL cc1 ;(调用LED显示的子程序)mov tmod,#01h ;设timer0在MODE1mov ie,#82h ;打开定时器1中断start0:CLR P2.5 ;(选择第一位LED)CLR P2.6setb P2.7LCALL cc1 ;(调用LED显示的子程序)mov 30h,#00hnext: mov a,30hmov dptr,#table ;(DPTR指向歌曲的简谱码表的首地址)movc a,@a+dptr取简谱码mov r2,a ;取到的简谱码暂存于R2jz end0 ;判断是否取到00(结束码)?anl a,#0fh ;不是结束码,则取低4位(节拍码)mov r5,a ;将节拍码存入R5mov a,r2 ;将取到的简谱码再载入Aswap a ;高低四位交换,也就是节拍码和音调码交换位置anl a,#0fh ;取低四位(音符码)jnz sing ;取到的音符码是否为零?clr tr0 ;音调码是0,则不发音jmp d1sing: dec a ;取到的音符码减1(不含0).mov 22h,a ;存入(22H).rl a ;乘2mov dptr,#table1 ;到音调的频率表table1取相对应的定时器定时初值movc a,@a+dptrmov th0,a ;给定时器的TH0赋定时处值mov 21h,a ;mov a,22h ;再载入取的的音符码rl a ;乘2inc a ;加1movc a,@a+dptr ;mov tl0,a ; 给定时器的TL0赋定时初值mov 20h,a ;取到的高位字节存入(20H)setb tr0 ;启动timer0d1: call delay ;基本单位时间1/4拍187毫秒inc 30h ;取简谱码指针加1jmp next ;取下一个码end0: clr tr0 ;停止timer0jmp start0 ;重复循环lJMP BEEPRETSEL71: CLR P2.7 ;关三态门子程序SETB P2.6SETB P2.5RETSEL81: SETB P2.7 ;开三态门子程序SETB P2.6SETB P2.5RETtim0: ;;time0中断服务子程序用来产生方波(音调)的负半波。

push acc ;中断现场保护push pswmov tl0,20h ;重设定时初值mov th0,21hcpl BUZZER ;P2.3反相pop psw ;至堆栈取回psw的值pop acc ;至堆栈取回a的值reti ;返回主程序delay: mov r7,#02h ;187毫秒d2: mov r4,#187d3: mov r3,#248CXW: djnz r3,CXWdjnz r4,d3djnz r7,d2djnz r5,delay ;延时时间,受节拍码得控制,延时时间也就是音调持续的时间retcc1: LCALL SEL0 ;(使LED显示从0到9)LCALL delay1LCALL SEL1LCALL delay1LCALL SEL2LCALL delay1LCALL SEL3LCALL delay1LCALL SEL4LCALL delay1LCALL SEL5LCALL delay1LCALL SEL6LCALL delay1LCALL SEL7LCALL delay1LCALL SEL8LCALL delay1LCALL SEL9LCALL delay1LCALL SEL10LCALL delay1retdelay1: MOV R6,#0ffH ;(LED显示0到9时的延时子程序)CXW3: MOV R7,#0ffHCXW4: DJNZ R7,CXW4DJNZ R6,CXW3RETRET;SEL0到SEL10是送字型子程序,请参考LED自检的程序,此处不再重述)SEL0: MOV A,#7fHMOV P0,ALCALL delay1RETSEL1: MOV A,#60HMOV P0,ALCALL delay1RETSEL2: MOV A,#0B6HMOV P0,ALCALL delay1RETSEL3: MOV A,#0f2HMOV P0,ALCALL delay1RETSEL4: MOV A,#0e8HMOV P0,ALCALL delay1RETSEL5: MOV A,#0dAHMOV P0,ALCALL delay1RETSEL6: MOV A,#0dFHMOV P0,ALCALL delay1RETSEL7: MOV A,#70HMOV P0,ALCALL delay1RETSEL8: MOV A,#0ffHMOV P0,ALCALL delay1RETSEL9: MOV A,#0fbHMOV P0,ALCALL delay1RETSEL10: MOV A,#01HMOV P0,ALCALL delay1RETtable1: DW 64580,64684,64777,64820 ;(table1是各方波(音调)对应的周期表)DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021;(table:是简谱码表,也就是歌曲的曲谱表,每个码的高四位是音调,低四位是节拍)table: DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94HDB 1fH,88H,14H,24H,34H,32H,42H,54H,14HDB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74HDB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fHDB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2HDB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68HDB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68HDB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fHDB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12HDB 94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fHDB 00子程序:七个子程序,采样子程序,打开三态门子程序,关闭三态门子程序,定时器中断程序,LED显示子程序,LED显示延时子程序,音调延时(节拍)子程序。

相关文档
最新文档