历史上的今天
返回首页

历史上的今天

今天是:2025年02月17日(星期一)

正在发生

2020年02月17日 | 单片机简易8键电子琴程序

2020-02-17 来源:51hei

简易8键电子琴的原理图:

单片机源程序如下:

/*******************************************************************

********************************************************************

*********            51简易电子琴程序              *****************

********************************************************************

*********           ****************/


#include

#define uint unsigned int

#define uchar unsigned char


sbit fmq=P0^0;//定义P0.0口为蜂鸣器信号输出

uint z;

uint code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};//对应每个单调的计数初值

uchar code keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//按键值,对应io:0,1,2,3,4,5,6,7


/************************************

*********按键扫描函数***************/


void anjian()//用整个P2口作为音调的输入按键(独立按键方式)

{

        

        P2=0xff;//读数据先置1

        if(P2==keymode[0]) //1

        {

                z=tone[0];

                P1=keymode[0];

        }

/**/

        if(P2==keymode[1]) //2

        {

                z=tone[1];

                P1=keymode[1];

        }

/**/

        if(P2==keymode[2]) //3

        {

                z=tone[2];

                P1=keymode[2];

        }

/**/

        if(P2==keymode[3]) //4

        {

                z=tone[3];

                P1=keymode[3];

        }

/**/

        if(P2==keymode[4]) //5

        {

                z=tone[4];

                P1=keymode[4];

        }

/**/

        if(P2==keymode[5]) //6

        {

                z=tone[5];

                P1=keymode[5];

        }

/***/

        if(P2==keymode[6]) //7

        {

                z=tone[6];

                P1=keymode[6];

        }

/* */

        if(P2==keymode[7]) //1.

        {

                z=tone[7];

                P1=keymode[7];

        }



}

/************************************/

void zdkg()

{

        if(P2==0xff)

        {

                P1=0xff;

                TR1=0;//如果没有按键按下,就关闭定时器中断

                fmq=1;//同时也关闭蜂鸣器 

        }

        else          //否则就进入中断

        {

                TR1=1;

        }

}

/*************************************************

****************主函数****************************

*************************************************/

void main()

{

        EA=1;//开总中断

        ET1=1;//定时器T1中断允许

        TMOD=0x10;//使用定时器T1的模式1

        TH1=(65536-500)/256;//定时器T1的高8位重新赋初值

        TL1=(65536-500)%256;//定时器T1的低8位重新赋初值

        P1=0xff;//先关所有LED灯


        while(1)

        {

        

……………………


推荐阅读

史海拾趣

Devar Inc公司的发展小趣事

Devar Inc公司自创立之初,就致力于在增强现实(AR)领域取得突破。经过多年的研发,公司成功推出了世界上首个用于AR的生成式AI神经网络。这项技术允许用户通过简单的文本提示创建3D对象和其他AR资产,极大地简化了AR内容的创作过程。Devar的AR平台结合了神经网络和云解决方案,让用户能够轻松创建并分享AR内容,开启了AR创作的新时代。

乔光电子(FTR)公司的发展小趣事

随着电商的兴起,Devar Inc公司看到了智能包装的巨大潜力。公司研发了一系列智能包装解决方案,利用传感器、RFID技术和物联网技术,实现了产品的追踪、溯源和防伪功能。同时,Devar还积极探索将AR技术应用于包装设计中,为消费者提供与产品包装互动的体验。这些创新不仅提升了产品的附加值,也增强了消费者对品牌的认同感。

Eurosil Electronics Ltd公司的发展小趣事

作为一家有社会责任感的企业,Eurosil始终关注社会公益事业。公司积极参与各种公益活动,如捐赠教育设施、支持贫困地区发展等。通过这些活动,Eurosil不仅回馈了社会,也提升了企业的社会形象和品牌价值。同时,公司还鼓励员工参与志愿服务活动,培养员工的公益意识和社会责任感。

Antex公司的发展小趣事

到了1965年,Antex公司迎来了一次重要的技术突破。公司成功研发出“环形件轧机”,这一创新技术不仅提高了生产效率,还大幅提升了产品的精度和稳定性。这一技术的成功应用,使得Antex的业务范围得到了进一步扩大,公司在电子行业中的地位也愈发稳固。

Exclara Inc公司的发展小趣事

在Exclara看来,质量是企业的生命线。公司始终坚持质量至上的原则,从原材料采购到生产过程的每一个环节都严格把关,确保产品质量的稳定性和可靠性。同时,公司还建立了完善的客户服务体系,为客户提供全方位、个性化的服务支持。这种以客户为先的经营理念不仅赢得了客户的信任和支持,也为公司赢得了良好的口碑和声誉。

Daco Semiconductor Co Ltd公司的发展小趣事

Daco Semiconductor在成立之初就专注于半导体技术的研发与创新。公司由一群对半导体行业充满热情的工程师创立,他们致力于开发更高效、更稳定的半导体产品。一次偶然的实验中,Daco的研发团队发现了一种新型的材料组合,这种材料组合能够显著提高半导体的性能和稳定性。这一技术突破成为了Daco的核心竞争力,也为其在竞争激烈的半导体市场中打开了新的局面。

问答坊 | AI 解惑

不知道要如何入手啊???

刚刚开始学习,不知道药学什么啊,感觉太难了,想要学arm9,但是不知道要怎么入手啊,请求高手指教啊…

查看全部问答>

我国研制出指纹识别电子签名芯片

我国研制出指纹识别电子签名芯片…

查看全部问答>

Embest edukit2410 的声音问题?

最近要在Embest edukit2410这个实验箱上做一个MP3,觉得有些问题,想问下。 这个板子上的IIS总线有什么用处? 这个板子可以做出成功移植MP3播放器并且播放音乐吗?…

查看全部问答>

166.7ns。是怎么算出来的?

1)首先要知道单片机时钟晶振频率为多少?设fosc=6MHz。 2)时钟周期T是计算机基本时间单位,同单片机使用的晶振频率有关。 那么T =1/fosc=1/6M=166.7ns。 166.7ns。是怎么算出来的?…

查看全部问答>

linux上写的程序如何下载到无操作系统硬件上运行

问题有点怪怪。 开发实验箱是UPNET-2410 ,一般无操作系统开发在WINDOWS下用。ADS1.2进行编写代码。然后编译链接成elf再转BIN文件。最后通过串口下载到FLASH 现在我想在linux上编写代码,或者说我想脱离 ADS1.2。linux上面的交叉编译工具链都有 ...…

查看全部问答>

怎么把本地数据库部署到PdA上

我在本地c盘建立了一个名叫a.db的数据库,建立了一张表aaa,运行程序,在pda模拟器上读取数据库的时候,不是读取c:\\a.db,而是新建了一个大小为0的数据库,请问PDA程序应该怎么部署,才能把数据库和程序一起部署到PdA上,另外在pda新建的文件夹, ...…

查看全部问答>

VS2003 可以连接 SQL CE 3.0吗?

由于我使用的操作系统是windows server 2003, 不能安装win ce 5.0的模拟器,而vs2005没有自带的win ce 模拟器, 现在已经安装了sql ce 3.0,想使用vs2003连接sql ce 3.0,但出现如下错误: 代码如下(网上的例子): public void ShowErrors(SqlCe ...…

查看全部问答>

为什么门输出加buffer,就可以增大扇出能力?

为什么门输出加buffer,就可以增大扇出能力?   在逻辑FPGA,设计中,经常有FAE或其他资料告诉我们,增加BUFFER,可以增大扇出能力。为什么吗? 其实这个问题可以这样来理解:逻辑门的灌电流小,拉电流大,所以一个输出逻辑门可以驱动多个 ...…

查看全部问答>

找个stm32开发工程师

职位职能: stm32开发工程师(ARM/MCU...) 职位描述: (1)熟悉stm32的软硬件开发,熟练掌握C/C++语言的程序开发,能独立承担开发任务 (2)对汽车CAN总线、K线、J1850有相关了解,有相关开发经验优先 (3)对MCU+wifi有相关了解,熟悉LwIP或 ...…

查看全部问答>