历史上的今天
今天是: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)
{
……………………
史海拾趣
|
最近要在Embest edukit2410这个实验箱上做一个MP3,觉得有些问题,想问下。 这个板子上的IIS总线有什么用处? 这个板子可以做出成功移植MP3播放器并且播放音乐吗?… 查看全部问答> |
|
1)首先要知道单片机时钟晶振频率为多少?设fosc=6MHz。 2)时钟周期T是计算机基本时间单位,同单片机使用的晶振频率有关。 那么T =1/fosc=1/6M=166.7ns。 166.7ns。是怎么算出来的?… 查看全部问答> |
|
问题有点怪怪。 开发实验箱是UPNET-2410 ,一般无操作系统开发在WINDOWS下用。ADS1.2进行编写代码。然后编译链接成elf再转BIN文件。最后通过串口下载到FLASH 现在我想在linux上编写代码,或者说我想脱离 ADS1.2。linux上面的交叉编译工具链都有 ...… 查看全部问答> |
|
我在本地c盘建立了一个名叫a.db的数据库,建立了一张表aaa,运行程序,在pda模拟器上读取数据库的时候,不是读取c:\\a.db,而是新建了一个大小为0的数据库,请问PDA程序应该怎么部署,才能把数据库和程序一起部署到PdA上,另外在pda新建的文件夹, ...… 查看全部问答> |
|
由于我使用的操作系统是windows server 2003, 不能安装win ce 5.0的模拟器,而vs2005没有自带的win ce 模拟器, 现在已经安装了sql ce 3.0,想使用vs2003连接sql ce 3.0,但出现如下错误: 代码如下(网上的例子): public void ShowErrors(SqlCe ...… 查看全部问答> |
|
为什么门输出加buffer,就可以增大扇出能力? 在逻辑FPGA,设计中,经常有FAE或其他资料告诉我们,增加BUFFER,可以增大扇出能力。为什么吗? 其实这个问题可以这样来理解:逻辑门的灌电流小,拉电流大,所以一个输出逻辑门可以驱动多个 ...… 查看全部问答> |
|
职位职能: stm32开发工程师(ARM/MCU...) 职位描述: (1)熟悉stm32的软硬件开发,熟练掌握C/C++语言的程序开发,能独立承担开发任务 (2)对汽车CAN总线、K线、J1850有相关了解,有相关开发经验优先 (3)对MCU+wifi有相关了解,熟悉LwIP或 ...… 查看全部问答> |




