• 大小: 22KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签: 定时器  按键  音调  

资源简介

C51单片机 通过定时器产生特定方波,然后按下矩阵键盘使蜂鸣器发出不同音调

资源截图

代码片段和文件信息


#include 
#define uchar unsigned char
#define uint unsigned int
uchar i;

sbit Beep =P2^3 ; //讯响器控制脚?

//36种音阶
unsigned sound_list[36]=
{
63628//低 1 DO  
63731//# 1 DO#
63853//低 2 RE
63928//# 2 RE#
64021//低 3 M
64103//低 4 FA
64185//# 4 FA#
64260//低 5 SO
64331//# 5 SO#
64400//低 6 LA
64463//# 6
64524//低 7 SI
64580//中1 DO
64633//# 1 DO#
64684//中 2 RE
64732//# 2 RE#
64777//中 3 M
64820//中 4 FA
64860//# 4 FA#
64898//中 5 SO
64934//# 5 SO#
64968//中 6 LA
64994//# 6
65030//中 7 SI
65058//高 1 DO
65085//# 1 DO#
65110//高 2 RE
65134//# 2 RE#
65157//高 3 M
65178//高 4 FA
65198//# 4 FA#
65217//高 5 SO
65235//# 5 SO#
65252//高 6 LA
65268//# 6
65282//高 7 SI
} ;


/******************************************************************************/
void Time0_Init();
void delay(uint z);
uchar keyscan();

/****************************************************************/


/*-------------------------------------------------
功能:主程序
-------------------------------------------------*/
void main()
{
Time0_Init(); //定时器0中断初始化
while(1)
{
keyscan();//播放


}
}







void Time0_Init()
{

TMOD=0x01;
TH0=sound_list[i]/256; 
TL0=sound_list[i]%256;
EA=1;
ET0=1;




}

void Time0_Int() interrupt 1
{
Beep=!Beep;
  TH0=sound_list[i]/256; 
TL0=sound_list[i]%256;


}




/******************************
矩阵键盘延时函数
**********************************/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**************************************
矩阵扫描
**************************************/
uchar keyscan()
{
uchar temp1=0xed;
uchar temp;


/*************************这一组的矩阵键盘是坏的******************************
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:


break;
case 0xde:

break;
case 0xbe:

break;
case 0x7e:

break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}

/***************************************************/

P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
P1=0xaa;
TR0=1;
i=0;
delay(300);//改变声音的时间长短
TR0=0;

break;
case 0xdd:
P1=0x55;
TR0=1;
i=3;
delay(300);
TR0=0;


break;
case 0xbd:
P1=0xa5;
TR0=1;
i=6;
delay(200);
TR0=0;

break;
case 0x7d:
P1=0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4946  2015-06-19 19:03  按键音调\ajyd.c

     文件      19853  2015-06-19 19:01  按键音调\ajyd.LST

     文件       7644  2015-06-19 19:01  按键音调\ajyd.OBJ

     文件       1228  2015-06-19 16:36  按键音调\ajydcs.c

     文件       3157  2015-06-19 16:36  按键音调\ajydcs.LST

     文件       1939  2015-06-19 16:36  按键音调\ajydcs.OBJ

     文件       6829  2015-06-19 19:01  按键音调\按键音调

     文件       2056  2015-06-19 19:01  按键音调\按键音调.hex

     文件      11251  2015-06-19 19:01  按键音调\按键音调.M51

     文件       1013  2015-06-23 20:13  按键音调\按键音调.Opt

     文件        163  2015-06-23 20:13  按键音调\按键音调.plg

     文件       1983  2015-06-19 19:03  按键音调\按键音调.Uv2

    .......      1003  2015-06-23 20:09  按键音调\按键音调_Opt.Bak

    .......         0  2015-06-19 13:53  按键音调\按键音调_Uv2.Bak

     文件       1937  2015-06-19 16:36  按键音调\按键音调测试

     文件        789  2015-06-19 16:36  按键音调\按键音调测试.hex

     文件       3241  2015-06-19 16:36  按键音调\按键音调测试.M51

     文件       1016  2015-06-19 17:21  按键音调\按键音调测试.Opt

     文件        167  2015-06-23 20:09  按键音调\按键音调测试.plg

     文件       1991  2015-06-19 17:21  按键音调\按键音调测试.Uv2

    .......         0  2015-06-19 16:06  按键音调\按键音调测试_Uv2.Bak

     目录          0  2015-06-23 20:13  按键音调

----------- ---------  ---------- -----  ----

                72206                    22


评论

共有 条评论