单片机实验四(电子琴自动演奏)
一、实验设备
PC机一台、实验箱一台。
二、实验内容
实现电子琴功能,自动演奏歌曲《葫芦娃》片段,并设置两个按键来实现歌曲的“暂停”和“开始/停止”。
图1 《葫芦娃》曲谱片段
三、实验步骤
①先在CUBE软件中进行硬件的图形化配置,选择STM32F407ZE芯片后,先进行常规的RCC和SYS设置,并配置时钟树使得HCLK为168MHz(如图2所示),在项目管理中进行项目的命名、存放地址、IDE等配置。
图2 时钟树的配置
②分析实验得,需要打开定时器并开启PWN波输出,设置PWN波Prescaler为83即可,Counter Period和pulse进行不报错设置(如图3所示)。
图3 定时器的配置
③分析实验得,需要两个按键来实现控制功能,打开两个GPIO并设置为输入模式(如图4所示)。
图4 GPIO开关的配置
④生成配置代码,进入到KEIL中完成相关功能代码,先进行KEIL的常规配置,设置晶振频率为8MHz,并设置硬件调试模式为J-LINK/J-TRACE Cortex,先根据曲谱写入曲谱数组,并写入pwn波输出函数,在while循环中使用递增不断改变曲谱的值,根据曲谱的值改变频率从而改变音调,从而实行歌曲的自动循环演奏,根据对两个按键的扫描通过改变play的值,来完成歌曲的暂停与播放,并通过改变i的值为0来实现歌曲的从头播放,编译下载后,进行硬件连线从而实现实验功能。
//曲谱
uint8_t num[75] = {0,0, 1,1,1,1,3,3,3, 1,1,1,1,3,0,0, 6,6,6,6,6,5,6,6,5,5,1,1,3,3,0,0,0, 8,6,6,5,6,6,5,5,1,1,2,2,0,0, 7,7,7,7,7,7,5,3,3,3,3,5,5,5,5,5,5,0};
//电子琴while (1){flag = KEY_Scan();if(flag!=0){if(flag == 1){if(play == 0){play = 1;i = 0;}else play = 0; }else if(flag == 2){if(play == 0)play = 1;else play = 0;}} if(play == 1){key = num[i];i++;if(i >= 75) i = 0;switch(key){case 0:{__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0);break;}case 1:{__HAL_TIM_SetAutoreload(&htim1,1000000/262);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/262*0.9);break;}case 2:{__HAL_TIM_SetAutoreload(&htim1,1000000/294);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/294*0.9);break;}case 3:{__HAL_TIM_SetAutoreload(&htim1,1000000/330);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/330*0.9);break;}case 4:{__HAL_TIM_SetAutoreload(&htim1,1000000/349);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/349*0.9);break;}case 5:{__HAL_TIM_SetAutoreload(&htim1,1000000/392);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/392*0.9);break;}case 6:{__HAL_TIM_SetAutoreload(&htim1,1000000/440);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/440*0.9);break;}case 7:{__HAL_TIM_SetAutoreload(&htim1,1000000/492);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/492*0.9);break;}case 8:{__HAL_TIM_SetAutoreload(&htim1,1000000/523);__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,1000000/523*0.9);break;}}HAL_Delay(200); }else if(play == 0)__HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_2,0);
四、实验收获
①学会了在以不同按键实现不同功能的工程中,在按键扫描函数中加入按键正忙变量,来避免出现按键冲突。
②学会了自主设计单片机时,如何规划单片机代码的实现顺序,来逐步验证功能,防止一次性敲完所有代码后,在一次性验证时出现问题,排查错误范围太广。
③通过这次的实验,将理论的单片机知识和实际中的具体问题方案联系了起来,加深了对具体知识的印象,体会了通过STM32分析问题、设计/开发具体问题方案的过程。
单片机实验四(电子琴自动演奏)相关推荐
- 单片机实验四-七段数码管及键盘控制
动态显示0-15 ORG 0100HLCALL INIT START:MOV P1,#00H ;控制哪个7段数码管显示MOV R0,#16MOV R1,#30H;LOOP0:MOV P2,@R1;IN ...
- 【单片机】实验四定时器
实验四 定时器 一.实验目的 1.理解单片机内部定时器的工作原理及使用方法 2.了解单片机定时中断程序的编写和调试方法 3.掌握定时器的基本使用方法 二.实验设备(仪器) PC 微机一台 三.实验原理 ...
- 单片机实验说明<四>矩阵键盘与LCD基本使用
实验四 矩阵键盘识别设计 设计要求: 对4×4矩阵式键盘电路的键值进行编码,编程实现在LCD液晶显示器上显示每个按键的"0-F"序号 电路设计: 软件代码: #include &q ...
- PWM控制直流电机(单片机实验)
PWM控制直流电机(单片机实验) 有问题欢迎私信哦 一.题目 设计电路,使用定时器实现PWM对直流电机的转速控制,并且实现按键切换转动方向.并进行软件仿真,做出实物. 二.基本要求 1.设置按键控制直 ...
- PLC单片机实验开发设备
在单片机的应用中,PLC控制系统已经成为了其组成中的重要组成部分.单片机主要利用PLC必备的编程接口来进行通信,使用LCD作为用户的界面,界面中可以显示出PLC的工作状态.工艺参数,也可以使用相应的按 ...
- 单片机实验笔记(汇编、Proteus仿真)(下)
接上一条单片机实验笔记(汇编.Proteus仿真) 第五节课 第五节课 内容为驱动多位数码管.和驱动一位数码管大同小异. ORG 0000H LJMP MAINORG 0100H MAIN: MOV ...
- 单片微型计算机原理及应用实验报告,小学期单片机实验报告_相关文章专题_写写帮文库...
时间:2019-05-13 01:16:21 作者:admin 北京邮电大学信息与通信工程学院 小学期AVR单片机实验报告 实验题目: 基于ATmega16L单片机的电子琴设计 学生姓名:学渣 班 级 ...
- PLC单片机实验开发系统装置QY-DPJ12
一.装置简介 QY-DPJ12PLC单片机实验开发系统综合装置可完成51/96/8088/8086等CPU的单片机.微机的全部软.硬件实验.在单片机仿真实验系统的基础上,增加8088十六位微机原理和接 ...
- 基于AT89C52单片机的简易电子琴设计与仿真
点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87853299?spm=1001.20 ...
最新文章
- 【linux】CentOS启动后网络自动配置过程
- Ubuntu系统在VMware虚拟机中显示显示过小
- Notepad++写Verilog HDL代码时,在注释语句下出现红色波浪线怎么办?
- php 学习笔记 数组2
- 数学学习--最小二乘法案例剖析
- 智宇科技 ZYARJX-1机械臂智能小车 —— 手机端蓝牙控制程序
- 魅族升级android p,高通宣布:这些手机将第一时间升级Android P!
- 1月28日云栖精选夜读 | 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
- JQuery Tree 树形结构插件 zTree
- jquery html 片段,十条jQuery代码片段助力Web开发效率提升
- aix oracle监听配置_AIX系统中安装ORACLE,客户端连接时,监听会宕掉的问题
- 几个ubuntu16.04镜像下载地址
- python是如何登上编程语言排行榜榜首的
- 领航服务器系统,应用领航:盘点那些年我们一起追过的OS
- 滴滴怒怼美团;阿里麻吉宝刷屏;B站、爱奇艺上市 | CSDN 极客头条
- Bailian3177 判决素数个数【入门】(POJ NOI0113-10)
- [转载] python字符串方法有哪些_27种Python字符串操作方法大全
- 多线程之NSThread
- java 需要 不是语句,我应该避免使用Java标签语句吗?
- 【钉钉-场景化能力包】阿里商旅助力费控报销