用89C51单片机设计一个系统,轮流显示0-9,当有按键1按下时,数字显示停止,播放一段歌曲。用C语言最好 15

用89C51单片机设计一个系统,具有6个数码管,按键若干,指示灯若干系统运行后,轮流显示0-9,当有按键1按下时,数字显示停止,播放一段歌曲,播放完毕后继续显示数字;在播... 用89C51单片机设计一个系统,具有6个数码管,按键若干,指示灯若干

系统运行后,轮流显示0-9,当有按键1按下时,数字显示停止,播放一段歌曲,播放完毕后继续显示数字;在播放歌曲的过程中,若按下按键2,则使8个LED灯闪烁5次,闪烁完后继续播放歌曲。
电路图已经附上了,谢谢了。
展开
 我来答
微雨燕轻飞
2012-05-23
知道答主
回答量:26
采纳率:0%
帮助的人:17.2万
展开全部
先写这么多,改天我过来在看看!有时间就写完!有一些错误,自己调试一下 应该问题不大!

int key_value;

void delay1s(void)

{

unsigned char h,i,j,k;

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

int key(int)
{
int key_count;
if(p3.0==0)
{
key_count++;
if(p3.0==0)&(key_count>10)
{
key_value = 0x01;
key_count = 0;
}
}
else if(p3.1==0)
{
key_count++;
if((p3.1==0)&(key_count>10))
{
key_value = 0x02;
key_count = 0;
}
}
else
{
key_value = 0x00;
key_count = 0;
}
retunt key_value;
}

void led_flash(void)
{
p1=0xff;
delay1s();
p1 = 0x00;
delay1s();
}

void main(void)
{
while(1)
{
if(key()==0x01)
{
if(key() == 0x02)
{
flash_count = 5;
}
else
{

}
}
else
{
number_index ++
if( number_index>10)
number_index = 0;
}

p0=number_buff[number_index];
if(flash_count>0)
{
led_flash();
flash_count --;
}

}
}
追问
大哥,能加点注释不?这门课肯定不喜欢得,所以没怎么学,所以你的懂的,帮人帮到底吧。
追答
其实我这个就是个思路,如果再加调试的话,就完全可以实现的!如果要答案,还是抄袭吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
letstone
2012-05-23 · 超过30用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:79.3万
展开全部
最好外面挂个语音芯片,这样就好做,单片机输出电流太小,驱动不了喇叭。
更多追问追答
追问
必须用编程来实现,硬件是不行的。其实就是两个中断问题,但是我不会。
追答
不同的歌,程序不一样,不会是送给女友的吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤子游侠123
2012-05-22 · TA获得超过125个赞
知道答主
回答量:141
采纳率:0%
帮助的人:108万
展开全部
这个要耗费好长时间,每一个晚上做不出来,你自己试着做做 遇到不懂再问问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式