基于ARM平台的钢琴游戏 实现琴键按下效果

2019-10-12来源: eefocus关键字:ARM平台  钢琴游戏  琴键

本阶段任务与步骤
================
1,设置好共享文件夹

2,编译这些代码:
   make

3,将编译好的示例程序piano丢到开发板,观察运行效果
   注意:要将所有的bmp文件也要上传到开发板(已经上传过了就不用重复上传了)

4,修改piano.c,使得钢琴12个琴键均能按下去。
0.png 

单片机源程序如下:

  1. /***********************************************

  2. //

  3. //  Copyright(C), 2013-2016, GEC Tech. Co., Ltd.

  4. //

  5. //  作者: 林世霖

  6. //  微信公众号:秘籍酷

  7. //  日期: 2016-6

  8. //

  9. //  描述: 在LCD上显示音乐钢琴的界面

  10. //

  11. //  GitHub: github.com/vincent040

  12. //  Bug Report: 2437231462@qq.com

  13. //

  14. ***********************************************/


  15. #include

  16. #include

  17. #include

  18. #include

  19. #include

  20. #include

  21. #include

  22. #include


  23. #include

  24. #include

  25. #include

  26. #include

  27. #include


  28. #include

  29. #include

  30. #include


  31. #include "bmp.h"

  32. #include "ts.h"


  33. int main(int argc, char const *argv[])

  34. {

  35.         // 1,打开LCD设备

  36.         int lcd = open("/dev/fb0", O_RDWR);


  37.         // 2,获取LCD设备的参数

  38.         struct fb_var_screeninfo vinfo;

  39.         ioctl(lcd, FBIOGET_VSCREENINFO, &vinfo);


  40.         // 3,为该LCD设备映射显存

  41.         unsigned char *FB;

  42.         FB = mmap(NULL, vinfo.xres * vinfo.yres * vinfo.bits_per_pixel/8,

  43.                                         PROT_READ|PROT_WRITE, MAP_SHARED, lcd, 0);


  44.         // 4,显示整个钢琴的界面

  45.         //    4.1 显示背景(background.bmp)

  46.         bmp2lcd("background.bmp", FB, &vinfo, 0, 0);


  47.         //    4.2 显示标题栏(bar.bmp)

  48.         bmp2lcd("bar.bmp", FB, &vinfo, 0, 0);


  49.         //    4.3 显示12个琴键(bar.bmp)

  50.         int i;

  51.         for(i=0; i<12; i++)

  52.         {

  53.                 bmp2lcd("key_off.bmp", FB, &vinfo, 10+65*i, 47);

  54.         }


  55.         //    4.4 显示LOGO(logo.bmp)

  56.         bmp2lcd("logo.bmp", FB, &vinfo, 214, 355);



  57.         // 5,打开触摸屏设备,开始音乐钢琴

  58.         int ts = open("/dev/event0", O_RDWR);

  59.         struct coordinate coor;


  60.         while(1)

  61.         {

  62.                 // 5.1 等待手指触碰,并顺便获取触碰点坐标(coor.x和coor.y)

  63.                 wait4touch(ts, &coor);


  64.                 // 5.2 根据coor的坐标信息来更新琴键的状态

  65.                 bmp2lcd("key_on.bmp", FB, &vinfo,(coor.x-10)/65*65+10, 47);


  66.                 // 5.3 根据coor的坐标信息播放相应的琴键声音(暂时不做)

  67.                 


  68.                 // 5.4 等待手指的松开

  69.                 wait4leave(ts);


  70.                 // 5.5 将相应的琴键恢复弹起的状态

  71.                 bmp2lcd("key_off.bmp", FB, &vinfo,(coor.x-10)/65*65+10,  47);

  72.         }

  73.         

  74.         return 0;

  75. }








  76.         // int ts = open("/dev/event0", O_RDWR);

  77.         // struct coordinate coor;


  78.         // while(1)

  79.         // {

  80.         //         // 5.1 等待手指触碰,并顺便获取触碰点坐标(coor.x和coor.y)

  81. ……………………


  82. …………限于本文篇幅 余下代码请从51黑下载附件…………




所有资料51hei提供下载:
 06实现琴键按下效果.rar 


关键字:ARM平台  钢琴游戏  琴键 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476945.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F030 使用内部时钟和外部时钟
下一篇:LPC2000系列Proteus仿真+代码 菜鸟的ARM学习笔记

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

赛普拉斯宣布支持Arm平台安全架构(PSA)的Trusted Firmware-M
赛普拉斯超低功耗双核PSoC®6 MCU提供PSA定义的最高级别保护。先进嵌入式解决方案的领导者赛普拉斯半导体公司(纳斯达克代码:CY)近日宣布,推出基于PSoC®6 MCU的支持Arm®平台安全架构(PSA)Trusted Firmware-M的参考实例,是符合PSA标准的最高级别保护能力的解决方案。通过利用PSA全套威胁模型、安全分析、硬件和固件架构规范以及Trusted Firmware-M设计参考,物联网(IoT)设计人员可以快速、轻松地使用PSoC 6 MCU实现安全设计。Arm物联网设备IP业务部副总裁兼总经理Paul Williamson表示:“互联设备正在快速发展,为了真正实现这些技术所带来的效益,安全性不可忽视
发表于 2018-03-11
赛普拉斯推出支持Arm平台安全架构Trusted Firmware-M的参考实例
赛普拉斯半导体公司近日宣布,推出基于PSoC®6 MCU的支持Arm®平台安全架构(PSA)Trusted Firmware-M的参考实例,是符合PSA标准的最高级别保护能力的解决方案。通过利用PSA全套威胁模型、安全分析、硬件和固件架构规范以及Trusted Firmware-M设计参考,IoT设计人员可以快速、轻松地使用PSoC 6 MCU实现安全设计。Arm物联网设备IP业务部副总裁兼总经理Paul Williamson表示:“互联设备正在快速发展,为了真正实现这些技术所带来的效益,安全性不可忽视。在广大IoT应用中实现安全的MCU开发是业界的共同责任,而赛普拉斯的PSoC 6 MCU将进一步把PSA的优势扩展到整个生态系统
发表于 2018-03-08
赛普拉斯宣布支持Arm平台安全架构(PSA)的Trusted Firmware-M
先进嵌入式解决方案的领导者赛普拉斯半导体公司(纳斯达克代码:CY)近日宣布,推出基于PSoC®6 MCU的支持Arm®平台安全架构(PSA)Trusted Firmware-M的参考实例,是符合PSA标准的最高级别保护能力的解决方案。通过利用PSA全套威胁模型、安全分析、硬件和固件架构规范以及Trusted Firmware-M设计参考,物联网(IoT)设计人员可以快速、轻松地使用PSoC 6 MCU实现安全设计。 Arm物联网设备IP业务部副总裁兼总经理Paul Williamson表示:“互联设备正在快速发展,为了真正实现这些技术所带来的效益,安全性不可忽视。在广大物联网应用中实现安全的MCU开发是业界的共同责任
发表于 2018-03-08
赛普拉斯宣布支持Arm平台安全架构(PSA)的Trusted Firmware-M
基于ARM平台的数字滤波器的软件实现方法
为:(3)交错定理2 FIR数字滤波器在ARM上的实现Chebyshev逼近法主要利用Remez交换算法来实现,其设计流程图如图1所示。本文主要讨论怎样在ARM平台上实现该算法,从而设计FIR数字滤波器。其具体设计流程图如图2所示,步骤如下:求出P(ωk)的值。事实上,也可以利用关于P(ω)的Lagrange差值公式来求解P(ω),具体公式为:(5)误差E(ω)的计算有了上面的基础,再利用公式(4)就可以求出E(ω),然后重复上述过程,直到找到符合要求的E(ω)为止,这样,就可以确定P(ω)的值。(6)实值频率响应H(ω)的确定通过P(ω)得到最佳解后,便可直接利用公式(3)来确定实值频率响应,而不必再去求解参数{αk}。3结束语
发表于 2018-02-17
基于ARM平台的数字滤波器的软件实现方法
在ARM平台上如何才能以节能方式来设计和编软件
PC相关的加载进行加载。    因此,这种最大限度减少常量影响的方法很实用。确保在编译时这些常量是已知的,如果可能,最好能把这些常量嵌入到单条ARM指令中。为了存取全局变量,尽可能减少加载基址指针的需求。这就需要确保全局变量在运行时都在内存中,这样才能使用单个指针存取多个变量。实现这个目标最简单的方式是将全局变量放到一个结构中。    尽管A R M的堆栈访问相对高效(堆栈访问可较好地加载和存储多条指令),但是程序员还可以通过很多方式来减少堆栈访问:减少活动变量、避免占用本地变量地址、可能时充分利用尾部调用优化、将传递到函数的参数数量减少到四个以下、允许编译器主动内联函数等。   
发表于 2018-02-17
在ARM平台上如何才能以节能方式来设计和编软件
ARM平台数据突然丢失的原因是什么
输出低电平,此时处理器仍未掉电,收到状态信息可及时响应处理。另一路掉电检测可供其它功能使用。 图5系统掉电检测电路1.4工控行业领导品牌在ARM内核核心板、开发板、工控机等领域,M6708核心板、M/A335x核心板、M/A28x核心板、EPC系列工控主板、IoT系列无线主板/网关、DCP系列经典工控机等产品中,核心板产品针对Nand-Flash有着完善的坏块管理、工控主板添加掉电保护等措施。例如分别在WinCE与Linux系统下加固Flash驱动、对操作系统进行双备份;软件与硬件信号测试对Flash进行10万次掉电试验等。同时,致远电子配备专业的EMC实验室、安规实验室、环境实验室等可实际模拟恶劣应用状况试验。结合优质供应商保证各产品
发表于 2017-12-30
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved