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
提问者评价:谢谢!
#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
提问者评价:谢谢!
相关文章推荐
- c++高精度模板
- C语言编程:统计输入的各字符的个数
- C语言编程:扑克牌魔术
- C语言编程,对字符串进行处理
- 很好的c++和Python混合编程文章
- C语言函数传递与值传递
- C语言编程:进制转换器
- C语言:从键盘输入两个字符串,输出第一个字符串在第二个字符串中的位置
- C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数...
- C语言编程:字符串连接
- 基于51单片机的00-99秒表--C语言
- 用C语言按照冒泡法进行数字排序
- C语言编程:8051单片机系统的时钟为11.0592MHz,把0~99从串行口输出
- C++ STL--stack/queue 的使用方法
- 基于51单片机的交通灯C语言程序设计
- 用C语言编写程序,判断输入的一个字符串是否是回数
- 关于C语言延时时间的问题
- 51单片机,C语言编程,控制指示灯闪烁的频率
- C语言编程:密码解密
- C语言编程:大小写互换