• 大小: 48KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: 其他
  • 标签: C51  电子琴  proteus  

资源简介

利用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  电子琴\objects\
     文件         828  2018-12-22 09:04  电子琴\objects\STARTUP.obj
     文件        6490  2018-12-22 09:04  电子琴\objects\electronic organ
     文件        1121  2018-12-22 09:04  电子琴\objects\electronic organ.build_log.htm
     文件        1340  2018-12-22 09:04  电子琴\objects\electronic organ.hex
     文件         135  2018-12-22 09:04  电子琴\objects\electronic organ.lnp
     文件        6660  2018-12-22 09:04  电子琴\objects\electronic organ.obj
     文件        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

评论

共有 条评论