51单片机课程设计.docx

上传人:b****7 文档编号:23463404 上传时间:2023-05-17 格式:DOCX 页数:13 大小:49.66KB
下载 相关 举报
51单片机课程设计.docx_第1页
第1页 / 共13页
51单片机课程设计.docx_第2页
第2页 / 共13页
51单片机课程设计.docx_第3页
第3页 / 共13页
51单片机课程设计.docx_第4页
第4页 / 共13页
51单片机课程设计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

51单片机课程设计.docx

《51单片机课程设计.docx》由会员分享,可在线阅读,更多相关《51单片机课程设计.docx(13页珍藏版)》请在冰豆网上搜索。

51单片机课程设计.docx

51单片机课程设计

河北工业大学计算机硬件技术基础(MCS-51)2009年综合实验报告

学院能环班级热能073姓名周浩学号070670成绩

一、题目:

简易电子琴的设计-B(10)

二、问题的提出

1.目的:

(1)能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,独立对其进行测试与检查。

(2)熟悉8051单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。

(3)实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。

(4)对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

2.基本要求:

(1)要按任务书的要求认真分析问题,并解决问题;

(2)要求用MCS-51单片机知识完成程序的设计;

(3)在实验室利用现有的设备,完成题目的设计与调试。

三、总体设计

1、分析问题的功能

用DP-51PROC的按键K1~K8作为电子琴的按键,控制蜂鸣器能够发出do、re、mi、fa、so、la、xi等七个音符和播放生日歌。

2、系统总体结构设计

1)硬件设计:

根据问题确定单片机、I/O接口、定时器、I/O设备、中断等;

单片机:

DP-51PROC模拟器

I/O接口:

P1口

定时器:

定时器/计数器T/C0

I/O设备:

DP-51PROC的按键K1~K8、蜂鸣器

中断:

外部中断INT1

2)软件设计:

按问题功能分模块,简述各模块功能。

 

程序流程图:

 

四、详细设计:

1、硬件详细设计:

1)画出电路图;

2)进行硬件资源分配。

I/O口地址:

P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7、P3.3

所用存储单元:

A:

数据中转

R0:

记录p1.x对应值

R5、R6:

分别记录歌曲音节延时和频率

30H、31H:

存储要输出访波频率的高低位

2、设计中的主要困难及解决方案

在这部分论述设计中遇到的主要困难及解决方案。

1)困难1:

do、re、mi、fa、so、la、xi等七个音符的简谱代码及歌曲的简谱。

解决方案:

从任务书及相关资料中查得音符简码,并根据歌曲播放顺序设置编码次序,依次放入数据库,播放时依次从数据库中查值并赋予30h、31h依次发声播放。

2)困难2:

按键与音符的对应问题。

解决方案:

将p1.x八位全部置1,根据按键的不同应用cjne判断按键并在所在按键中对30h、31h赋值,实现对应按键与音符的发声。

3)设计创新放音

解决方案:

参照学习网上建立音节数据库的方法,建立低中高音数据库可见任意输入歌曲,控制节奏

五、程序清单

BUZZEQUP3.3

ORG8000H

LJMPMAIN

ORG800BH

LJMPINT_T0

ORG8100H

MAIN:

MOVSP,#60H;初始化堆栈向量

MOV30H,#00;定时器初值清零

MOV31H,#00

MOVP1,#0FFH;设置P1口为输入模式

MOVTMOD,#01H;设置定时器0为工作模式1

SETBET0;开定时器0中断

SETBEA;开总中断

CLRTR0;关闭定时器0

START:

MOVR0,P1

CJNER0,#0FFH,KEY1;键盘扫描

CLRTR0

SJMPSTART

KEY1:

CJNER0,#0FEH,KEY2;K1键按下

MOV30H,#0FEH;设置音阶高音do

MOV31H,#22H

LJMPSET_TIMER

KEY2:

CJNER0,#0FDH,KEY3;K2键按下

MOV30H,#0FEH;设置音阶高音re

MOV31H,#56H

LJMPSET_TIMER

KEY3:

CJNER0,#0FBH,KEY4;K3键按下

MOV30H,#0FEH;设置音阶高音mi

MOV31H,#85H

LJMPSET_TIMER

KEY4:

CJNER0,#0F7H,KEY5;K4键按下

MOV30H,#0FEH;设置音阶高音fa

MOV31H,#9AH

LJMPSET_TIMER

KEY5:

CJNER0,#0EFH,KEY6;K5键按下

MOV30H,#0FEH;设置音阶高音so

MOV31H,#0C1H

LJMPSET_TIMER

KEY6:

CJNER0,#0DFH,KEY7;K6键按下

MOV30H,#0FEH;设置音阶高音la

MOV31H,#0E4H

LJMPSET_TIMER

KEY7:

CJNER0,#0BFH,KEY8;K7键按下

MOV30H,#0FFH;设置音阶高音xi

MOV31H,#03H

LJMPSET_TIMER

KEY8:

CJNER0,#7FH,NOKEY;K8键按下

LJMPSTART1;播放洋娃娃和小熊跳舞

SET_TIMER:

SETBTR0;发音

WAIT1:

MOVA,P1

CPLA

JNZWAIT1

NOKEY:

CLRTR0

LJMPSTART;无键按下

START1:

MOVDPTR,#MUSIC;取生日歌发生顺序的表头

CONT:

CLRA;查表将歌曲播放次序代码输入给A

MOVCA,@A+DPTR

CJNEA,#00,CHK;判断是否为停止不是则跳转查音

AJMPNOKEY;是停止则跳回

CHK:

PUSHACC;往后移动指针查表

INCDPTR

CLRA

MOVCA,@A+DPTR

MOVR4,A

POPACC

CHK1:

CJNEA,#01,CHK2;根据A值选择发声音节

ACALLDOL

CHK2:

CJNEA,#02,CHK3

ACALLREL

CHK3:

CJNEA,#03,CHK4

ACALLMIL

CHK4:

CJNEA,#04,CHK5

ACALLFAL

CHK5:

CJNEA,#05,CHK6

ACALLSOL

CHK6:

CJNEA,#06,CHK7

ACALLLAL

CHK7:

CJNEA,#07,CHK11

ACALLSIL

CHK11:

CJNEA,#11,CHK12

ACALLDO

CHK12:

CJNEA,#12,CHK13

ACALLRE

CHK13:

CJNEA,#13,CHK14

ACALLMI

CHK14:

CJNEA,#14,CHK15

ACALLFA

CHK15:

CJNEA,#15,CHK16

ACALLSO

CHK16:

CJNEA,#16,CHK17

ACALLLA

CHK17:

CJNEA,#17,CHK21

ACALLSI

CHK21:

CJNEA,#21,CHK22

ACALLDOH

CHK22:

CJNEA,#22,CHK23

ACALLREH

CHK23:

CJNEA,#23,CHK24

ACALLMIH

CHK24:

CJNEA,#24,CHK25

ACALLFAH

CHK25:

CJNEA,#25,CHK26

ACALLSOH

CHK26:

CJNEA,#26,CHK27

ACALLLAH

CHK27:

CJNEA,#27,CHK0

ACALLSIH

CHK0:

CJNEA,#00,CONT2

ACALLNON

CONT2:

INCDPTR

AJMPCONT

DOL:

MOVR6,#254;给每个音节定音频率和发声时长

MOVR5,#16

AJMPOUTPUT

REL:

MOVR6,#226

MOVR5,#18

AJMPOUTPUT

MIL:

MOVR6,#201

MOVR5,#21

AJMPOUTPUT

FAL:

MOVR6,#190

MOVR5,#22

AJMPOUTPUT

SOL:

MOVR6,#170

MOVR5,#25

AJMPOUTPUT

LAL:

MOVR6,#150

MOVR5,#28

AJMPOUTPUT

SIL:

MOVR6,#134

MOVR5,#31

AJMPOUTPUT

DO:

MOVR6,#126

MOVR5,#33

AJMPOUTPUT

RE:

MOVR6,#113

MOVR5,#37

AJMPOUTPUT

MI:

MOVR6,#100

MOVR5,#41

AJMPOUTPUT

FA:

MOVR6,#95

MOVR5,#44

AJMPOUTPUT

SO:

MOVR6,#85

MOVR5,#49

AJMPOUTPUT

LA:

MOVR6,#75

MOVR5,#55

AJMPOUTPUT

SI:

MOVR6,#67

MOVR5,#62

AJMPOUTPUT

DOH:

MOVR6,#63

MOVR5,#65

AJMPOUTPUT

REH:

MOVR6,#56

MOVR5,#73

AJMPOUTPUT

MIH:

MOVR6,#50

MOVR5,#82

AJMPOUTPUT

FAH:

MOVR6,#47

MOVR5,#88

AJMPOUTPUT

SOH:

MOVR6,#42

MOVR5,#98

AJMPOUTPUT

LAH:

MOVR6,#37

MOVR5,#110

AJMPOUTPUT

SIH:

MOVR6,#33

MOVR5,#124

AJMPOUTPUT

NON:

MOVR6,#33

MOVR5,#124

AJMPOUTPUT;输出R4*R5周的方波

OUTPUT:

PUSH05

LOOP:

CJNEA,#00,SOUND

AJMPMUTE

SOUND:

CLRP3.3

MUTE:

ACALLDELAY

SETBP3.3

ACALLDELAY

DJNZR5,LOOP

POP05

DJNZR4,OUTPUT

REST:

MOVR6,#170

MOVR5,#30

WAIT:

ACALLDELAY

DJNZR5,WAIT

RET

DELAY:

MOVB,R6;延时半周期t=15us*R6+9us

DL:

MOVR7,#6

DJNZR7,$

DJNZR6,DL

MOVR6,B

RET

MUSIC:

DB21,02,22,02,23,02,24,02,25,02,25,02,25,01,24,01,23,02

DB24,01,24,01,24,02,23,02,22,02,21,02,23,02,25,04

DB26,02,26,02,26,01,25,01,24,01,25,02,25,02,25,01,

DB24,01,23,01,24,02,24,02,24,01,23,01,22,01

DB21,02,23,02,21,02,00,04

INT_T0:

;T0中断服务程序

MOVTH0,30H;定时器附初值

MOVTL0,31H

CPLBUZZ;输出方波

RETI

END

六、调试程序的方法

1)硬件调试方法

编译一个程序(按一个健,相应指示灯变亮),确定按键功能完好;编辑另外一个发声程序确定蜂鸣器可以发出声音。

2)软件调试方法

连接好线,打开单片机电源,将自己的设计一个程序编译运行,确定keil软件完好。

七、你所设计的程序最终完成的功能

1)说明你编制的程序能完成的功能;

用DP-51PROC的按键K1~K8作为电子琴的按键,控制蜂鸣器能够分别发出do、re、mi、fa、so、la、xi等七个音符和播放歌曲。

2)准备的测试数据,并记录运行结果。

do、re、mi、fa、so、la、xi等七个音符和播放洋娃娃和小熊跳舞。

七音的初值为:

65058、65110、65157、65178、65217、65252、65283。

歌曲频率及发声时长顺序见源程序。

八、对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价。

此程序实现了设计任务书的基本要求,声音比较准,音调响亮。

但是,此设计仅有八个按键可以应用,所以只是指完成了高音部分的发音。

2、对课题提出更完善的方案。

将双排键应用到设计中,以完成低、中、高所有音符的发音。

 

日期:

2009年1月1日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1