找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 537|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机简单入手 — 单音频输出

[复制链接]
跳转到指定楼层
楼主
此例为单音频输出,想学习51的师兄可以先从此入手。
代码:
#include<reg51.h>
sbit SOND=P1^0;
sbit KL=P3^0;
sbit KH=P3^2;
void tone(unsigned char t)
{
unsigned char j;
unsigned int i;
for(i=0;i<(30000/t);i++)
{
SOND=~SOND;
for(j=0;j<t;j++);
}
SOND=0;
}
void main()
{
unsigned char n,k;
unsigned int t;
unsigned char T[21]=
{219,193,170,159,139,122,107,100,87,75,70,60,52,43,40,33,27,25,20,16,12};  //音符1-7的高低音
while(1)
{
if((KL==0)&(KH!=0))  n=0;
else if((KH==0)&(KL!=0))  n=2;
else n=1;
if((~(P1|0x01))!=0)
{
k=P1|0x01;
for(t=0;t<2000;t++);
while((~(P1|0x01))!=0);
switch(k)
{
case 0xfd:tone(T[1+n*7]);break;//音符1
case 0xfb:tone(T[2+n*7]);break;//音符2
case 0xf7:tone(T[3+n*7]);break;//音符3
case 0xef:tone(T[4+n*7]);break;//音符4
case 0xdf:tone(T[5+n*7]);break;//音符5
case 0xbf:tone(T[6+n*7]);break;//音符6
case 0x7f:tone(T[7+n*7]);break;//音符7
default:;
}
}
}
}


proteus.PNG (52.93 KB, 下载次数: 24)

proteus仿真图

proteus仿真图

代码2.PNG (17.95 KB, 下载次数: 20)

C语言代码

C语言代码

代码1.PNG (19.54 KB, 下载次数: 26)

C语言代码

C语言代码

单音频输出.zip

50.69 KB, 下载次数: 2, 下载积分: 黑币 -5

仿真资料

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表