您的位置:首页 > 编程语言 > C语言/C++

51单片机 C语言电子琴

2016-01-25 12:08 459 查看
题目链接:http://zhidao.baidu.com/question/1573774496307517420.html

#include<reg52.h>

sbit spk = P3^7;        //扬声器接口
unsigned int tab[] = {
    64580,64684,64777,64820,64898,64968,65030,65058};
unsigned char  k, k1, k2;
//-------------------------------------
void keyscan()
{
    if(P1 != 0xff)  {   //P1 外接 8 个按键
      k = 8;
      if(P1 == 0xfe)  k = 0;
      if(P1 == 0xfd)  k = 1;
      if(P1 == 0xfb)  k = 2;
      if(P1 == 0xf7)  k = 3;
      if(P1 == 0xef)  k = 4;
      if(P1 == 0xdf)  k = 5;
      if(P1 == 0xbf)  k = 6;
      if(P1 == 0x7f)  k = 7;
      if (k < 8) {
        k1 = tab[k] / 256;
        k2 = tab[k] % 256;
        TR0 = 1;
      }
      else  TR0 = 0;
    }
    else  TR0 = 0;
}
//-------------------------------------
void main()
{
    TMOD = 0x01;
    ET0 = 1;
    EA = 1;
    while(1)  keyscan();
}
//-------------------------------------
void time() interrupt 1
{
    TH0 = k1;
    TL0 = k2;
    spk = ~spk;
}
//-------------------------------------

追问:2014-05-07 17:13
顺带问下,题目里要和求不同频率的声音,请问给出的代码中如何修改?

回答:2014-05-07 19:09
参考:

http://hi.baidu.com/do_sermon/item/8cff22baf5142245bb0e1247

http://hi.baidu.com/do_sermon/item/d6f155da37a70fe93dc2cbc1

提问者评价:谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: