资源简介
利用C51单片机的简易电子琴
音乐由不同的音阶组成,而不同的音阶又是由不同的频率发出的,因此产生不同的频率,就可以发出不同的音阶。在本次课程设计中,最主要的工作是程序编写,通过按键的键值,将其转化为不同频率的方波送到对应的发声口,使喇叭发声,本次设计采用的电脑音响。

代码片段和文件信息
#include
#define uint unsigned int
#define uchar unsigned char
#define output P1
#define input P1
enum KEY{key0key1key2key3key4key5key6key7key8key9key10key11key12key13key14key15};
uchar code table[]={
0x3f0x060x5b0x4f0x660x6d0x7d0x07
0x7f0x6f0x770x7c0x390x5e0x790x710x00};
unsigned int code Freqtab[] = {
64021641036426064400
64524645806468464777
64820648986496865030
65058651106515765178};
uint FreqTemp;
sbit SPEAK = P3^7;
void delay1ms(uint n)
{
uint abc;
for(c=n;c>0;c--)
for(b=199;b>0;b--)
for(a=1;a>0;a--);
}
uint key_input(void)
{
uchar temp1temp2;
uchar num = 16;
output = 0x0f;
temp1 = input;
if(0x0f != temp1)
{
delay1ms(5);
temp1 = input;
if(0x0f != temp1)
{
temp1 = temp1 & 0x0f;
output = 0xf0;
delay1ms(1);
temp2 = input;
temp2 = temp2 & 0xf0;
temp1 = temp1 | temp2;
}
}
switch(temp1)
{
case 0xee:num=0;break;
case 0xde:num=1;break;
case 0xbe:num=2;break;
case 0x7e:num=3;break;
case 0xed:num=4;break;
case 0xdd:num=5;break;
case 0xbd:num=6;break;
case 0x7d:num=7;break;
case 0xeb:num=8;break;
case 0xdb:num=9;break;
case 0xbb:num=10;break;
case 0x7b:num=11;break;
case 0xe7:num=12;break;
case 0xd7:num=13;break;
case 0xb7:num=14;break;
case 0x77:num=15;break;
default:break;
}
return num;
}
void T0_INT(void) interrupt 1
{
TL0 = FreqTemp;
TH0 = FreqTemp >> 8;
SPEAK = ~SPEAK;
}
int main()
{
TMOD = 0X01;
EA = 1;
ET0 = 1;
TR0 = 0;
while(1)
{
uint numtemp;
num = key_input();
temp = num;
P0 = table[num];
if(16 != num)
{
FreqTemp = Freqtab[num];
TR0 = 1;
while(0xf0 != output);
TR0 = 0;
SPEAK = 1;
}
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-22 14:45 电子琴\
文件 9680 2018-12-22 12:03 电子琴\Backup Of New Project.pdsbak
目录 0 2018-12-22 09:04 电子琴\Listings\
文件 14156 2018-12-22 09:04 电子琴\Listings\STARTUP.lst
文件 4721 2018-12-22 09:04 电子琴\Listings\electronic organ.lst
文件 9067 2018-12-22 09:04 电子琴\Listings\electronic organ.m51
文件 9677 2018-12-22 12:03 电子琴\New Project.pdsprj
文件 2198 2018-12-22 12:03 电子琴\New Project.pdsprj.LAPTOP-B59USNJL.李博文.workspace
目录 0 2018-12-22 09:04 电子琴\ob
文件 828 2018-12-22 09:04 电子琴\ob
文件 6490 2018-12-22 09:04 电子琴\ob
文件 1121 2018-12-22 09:04 电子琴\ob
文件 1340 2018-12-22 09:04 电子琴\ob
文件 135 2018-12-22 09:04 电子琴\ob
文件 6660 2018-12-22 09:04 电子琴\ob
文件 6376 2016-03-14 08:58 电子琴\STARTUP.A51
文件 2140 2018-12-22 09:04 电子琴\electronic organ.c
文件 85192 2018-12-22 14:45 电子琴\electronic organ.uvgui.李博文
文件 5478 2018-12-22 09:12 电子琴\electronic organ.uvopt
文件 14064 2018-12-22 09:12 电子琴\electronic organ.uvproj
- 上一篇:Hill准则渐进损伤准则-显示算法
- 下一篇:OpenCV 3d结构光扫描
相关资源
- STC8951系列单片机中方指南
- 51单片机PWM程序,占空比、周期可调整
- proteus仿真 AT89C51输出各种波形
- 00
- 我做的电子琴,21个音,一般歌曲基本
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- midi电子琴简单设计(附源代码).ra
- DS18B20分布式多点测温的Proteus仿真
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 基于AT89C51的数据采集系统设计新方法
- C51单片机汇编指令查询、学习工具集
- 基于89c51的数字钟
- 基于单片机交通灯设计
- 51多机通信(内附Proteus及.hex文件)
- IIC proteus仿真实验
- 基于89C51计算机锁定加密键盘设计
- 基于51单片机的计算器(C51编写,有
- 8086交通灯 Proteus原理图及程序
- 单片机电子琴 数码管显示
- 单片机仿真软件proteus6.7免安装绿色版
- STM32+TMC5160代码电路图.rar
- 关于proteus仿真arm7出现错误的问题
- 基于PROTEUS的ARM7显示系统设计与仿真实
- STM32+1602液晶proteus仿真.zip
- AT89C51+ADC0808 PROTEUS仿真
- 单片机驱动4相步进电机proteus仿真
- proteus元件库对照表 (整理清晰)
评论
共有 条评论