单片机简易电子琴课程设计

  • 格式:doc
  • 大小:86.50 KB
  • 文档页数:12

下载文档原格式

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

单片机简易电子琴课程设计

哈尔滨理工大学

单片机原理及接口技术课程设计报告

设计题目:简易电子琴实验

专业:电机与电器

班级:电机10-3

姓名:朱明海

学号:1030350312

1234567

P1.0P1.1

P1.2P1.3P1.4P1.5

P1.6

Vcc

Buzzer LS12K

R1

5.1K

R2

8550Q60.01uF C40Ctrl

100

R11P1.7

五、课程设计框图

主程序:

节拍1子程序(手动按键时用) 节拍2子程序(手动按键时用)

0FFH->P1 开始 播放一段音乐 P1.0=0

调用节拍1子程序 N Y 调用节拍2子程序 Y

调用节拍3子程序

Y 调用节拍4子程序 调用节拍5子程序 调用节拍6子程序 调用节拍7子程序

P1.1=0

P1.2=0

N P1.3=0

Y Y Y P1.4=0

P1.5=0

N P1.6=0

Y N N N 0->P1.7 延时180us 1->P1.7 延时190us

开始 返回

0->P1.7 延时200us 1->P1.7 延时200us

开始 返回

节拍3子程序(手动按键时用)节拍4子程序(手动按键时用)开始

0->P1.7

延时180us

1->P1.7

延时170us

返回

开始

0->P1.7

延时160us

1->P1.7

延时160us

返回

节拍5子程序(手动按键时用)节拍6子程序(手动按键时用)开始

0->P1.7

延时150us

1->P1.7

延时150us

返回

开始

0->P1.7

延时140us

1->P1.7

延时140us

返回

节拍7子程序(手动按键时用)节

拍1子程序(自动放音时用,时间约0.2s )

节拍2子程序(自动放音时用,时间约0.2s ) 节拍3子程序(自动放音时用,时间约0.2s )

0->P1.7 延时220us 计数器-1 1->P1.7 延时210us 1100->计数器 N

计数器-1=0

返回

Y 0->P1.7 延时130us 1->P1.7 延时130us

开始 返回

开始

节拍4子程序(自动放音时用,时间约0.2s ) 节拍5子程序(自动放音时用,时间约0.2s )

节拍6子程序(自动放音时用,时间约0.2s ) 节拍7子程序(自动放音时用,时间约0.2s )

N

Y 0->P1.7 延时170us 计数器-1 1->P1.7 延时170us

开始 1300->计数器 计数器-1=0

返回

Y N

0->P1.7 延时180us 计数器-1 1->P1.7 延时180us 开始 1250->计数器 计数器-1=0

返回

0->P1.7 延时185us 计数器-1 1->P1.7 延时180us

开始 1200->计数器 Y N

计数器-1=0

返回

N

Y 0->P1.7 延时190us 计数器-1 1->P1.7 延时190us 开始 1150->计数器 计数器-1=0

返回

六、课程设计步骤

1、主机连线说明

D1区:Ctrl — A3区:P1.7 G6区:JP74 —

A3区:JP51(P1口)

2、运行程序,按G6区的1-7号键,输出7种音阶。

3、使用G6区的1-7号键,自弹一首歌曲。

七、课程设计演示程序

K1 BIT P1.0

;按键1 K2

BIT P1.1 ;按键2

Y N

0->P1.7 延时150us 计数器-1 1->P1.7 延时150us 开始 1420->计数器 计数器-1=0

返回

N

Y 0->P1.7 延时160us 计数器-1 1->P1.7 延时160us 开始 1350->计数器 计数器-1=0

返回

K3 BIT P1.2 ;按键3

K4 BIT P1.3 ;按键4

K5 BIT P1.4 ;按键5

K6 BIT P1.5 ;按键6

K7 BIT P1.6 ;按键7

Buzzer BIT P1.7 ;蜂鸣器

M1 EQU 17

M2 EQU 16

M3 EQU 15

M4 EQU 14

M5 EQU 13

M6 EQU 12

M7 EQU 11

ORG 0000H

LJMP START

ORG 0100H

START: MOV SP,#60H

MAIN: MOV P1,#0FFH ;P1口初始化

LCALL Demo ;播放一段演示音乐

MAIN_1: JB K1,MAIN_2 ;判断1号键是否按下,否则检测2号键LCALL Sound1 ;发音子程序

MAIN_2: JB K2,MAIN_3 ;判断2号键是否按下,否则检测3号键

LCALL Sound2 ;发音子程序

MAIN_3: JB K3,MAIN_4 ;判断2号键是否按下,否则检测4号键

LCALL Sound3 ;发音子程序

MAIN_4: JB K4,MAIN_5 ;判断4号键是否按下,否则检测5号键

LCALL Sound4 ;发音子程序

MAIN_5: JB K5,MAIN_6 ;判断5号键是否按下,否则检测6号键

LCALL Sound5 ;发音子程序

MAIN_6: JB K6,MAIN_7 ;判断6号键是否按下,否则检测7号键

LCALL Sound6 ;发音子程序

MAIN_7: JB K7,MAIN_73 ;判断7号键是否按下,否则跳回检测1号键

LCALL Sound7 ;发音子程序

MAIN_73: SJMP MAIN_1 ;返回从1号键开始扫描

;播放演示音乐