单片机简易8键电子琴程序

发布者:BlissfulJoy最新更新时间:2020-02-17 来源: 51hei关键字:单片机  8键  电子琴 手机看文章 扫描二维码
随时随地手机看文章

简易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)

        {

        

……………………


关键字:单片机  8键  电子琴 引用地址:单片机简易8键电子琴程序

上一篇:基于单片机的三相步进电机控制系统设计分解
下一篇:单片机智能温控风扇原理图PCB文件与源程序

推荐阅读最新更新时间:2024-11-06 06:10

单片机C语言程序设计:10s的秒表
#include #define uchar unsigned char #define uint unsigned int sbit K1=P3^7; uchar i,Second_Counts,Key_Flag_Idx; bit Key_State; uchar DSY_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //延时 void DelayMS(uint ms) { uchar t; while(ms--) for(t=0;t 120;t ); } //处理按键事件 void Key_E
[单片机]
<font color='red'>单片机</font>C语言程序设计:10s的秒表
51单片机学习:红外遥控实验
实验名称:红外遥控实验 接线说明: 实验现象:下载程序后,数码管上显示数码管上显示红外解码遥控器键值 注意事项:红外接收头凸起处要与PCB板接口凸起丝印处对应 ***************************************************************************************/ #include public.h #include smg.h #include ired.h /******************************************************************************* * 函 数 名 : main * 函数
[单片机]
PIC单片机对LED数码管矩阵键盘显示的设计
#include #include “。./head/config.h” __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);//对熔丝位进行设置 单片机LED共阳极段码表(带小数点) 0~9 const char table1[]={0X0A,0XFA,0X8C,0XA8,0X78,0X29,0X09,0XBA,0X08,0X28,0x18,0x49,0x0f,0xc8,0x0d,0x1d}; 数码管位码表 const char table[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; unsigned int result = 0,lastresult = 0;
[单片机]
PIC<font color='red'>单片机</font>对LED数码管矩阵键盘显示的设计
51单片机IO口模拟串口通讯C源程序
#include reg51.h sbit BT_SND =P1^0; sbit BT_REC =P1^1; /**********************************************    IO 口模拟232通讯程序    使用两种方式的C程序 占用定时器0    **********************************************/    #define MODE_QUICK    #define F_TM F0    #define TIMER0_ENABLE TL0=TH0; TR0=1; #define TIMER0_DISABLE TR0=0;
[单片机]
nanoWatt XLP技术在单片机上的引用
单机片介绍 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 nanoWatt XLP技术 全球知名的单片机应商美国微芯科技公司推出采用nanoWatt XLP技术的全新8位PIC单片机(MCU)系列,可以实现极低的休眠电流。高性能、低功耗的PIC1
[单片机]
51单片机串口通信篇
基本介绍 单片机通信是指单片机和单片机 或者 单片机和计算机的相互通信,一般比较多都是单片机(下位机)和计算机(上位机)作为通信。 串行通信其实用的还是挺多的,就比如我们在调试程序时,可以通过串行口来调试程序。像什么蓝牙模块、语音模块等等也挺多是用串行通信。 一般通信方式为两种:并行通信 和 串行通信。 通信制式 一共为3种: 单双工: 一个只能发送,一个只能接收。(相当于两个人,一个只能说话,一个只能听) 半双工:都可以发送和接收,但是同一时刻不能发送和接收同时进行。相当于一般的对讲机 你说话的时候 你是接收不了对方说的话的。 全双工:就是可以同时发送或者接收。相当于现在我们的手机打电话一样。可以两个人互骂哈哈
[单片机]
51<font color='red'>单片机</font>串口通信篇
单片机存储器和I/O接口组织
  微处理器对I/O接口寻址的方式可分为两大类,一种是内存映射式寻址( Memory Mapped I/O),另一种是输入输出映射式寻址(I/O Mapped I/O)。   内存映射式寻址采用了I/O接口与存储器统一编址的方式,这种方式是将I/O接口看成内存区域中的一个或几个单元,占用内存区域中的一些地址。这种方式的优点是,不需专门的I/O指令,而采用访问内存的指令来访问I/O接口。一般来说,访问内存的指令功能是比较强的,因而这种方法可以像访问内存那样,直接对I/O接口的信息进行处理。这种方式的缺点是地址的利用率较低。I/O接口占用内存的一部分地址,使得内存可寻址的区域减少。由于存储器需占用的地址由该芯片的容量决定,且其占用的地址
[单片机]
利用单片机实现复杂的分立逻辑
开发人员可利用PIC16F13145系列单片机中的可配置逻辑模块(CLB)外设实现硬件中复杂的分立逻辑功能,从而精简物料清单(BOM)并开发定制专用逻辑。 在许多嵌入式系统应用中,通常都会使用分立式逻辑器件,例如74'HC系列。这些逻辑器件的优势在于可以独立于单片机(MCU)工作,并且响应速度比软件快得多。但是,这些器件会增加物料清单(BOM)并且需要占用额外的PCB面积。 为了解决这一问题,Microchip的许多单片机都集成了一种名为可配置逻辑单元(CLC)的外设(在PIC® MCU上)或名为可配置定制逻辑(CCL)的类似外设(在AVR® MCU上)。这两种外设都实现了软件定义的定制逻辑,可以独立于CPU执
[单片机]
利用<font color='red'>单片机</font>实现复杂的分立逻辑
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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