51单片机课程设计 声控流水灯
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TR0=0;ET1=ET0=TR1=EA=1;
}
void main()
{
time0_time1_init();delay1m(2000);
while(1)
{
if(!flag1)
{
if(!voice)
{
num++;flag1=1;
he[0]=he[1]=he[2]=he[3]=0;
if(num>=5){num=0;}
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说三极管PNP管脚不懂怎么放置,不懂分得二极管的正负极,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。在单片机方面也是了解了一些些,我相信这次课程设计会对我以后的工作通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为自己的东西。
case 1:led=tab1[he[0]];he[0]++;if(he[0]>=8)he[0]=0;break;//上到下
case 2:led=tab2[he[1]];he[1]++;if(he[1]>=8)he[1]=0;break;//下到上
case 3:led=tab3[he[2]];he[2]++;if(he[2]>=4)he[2]=0;break;//中间到两边
三、硬件原图设计
四、程序流程图
否
是
五、仿真图
六、制作
七、调试
流水灯制作完成后,我们对它进行了调试,一开始灯不停地闪,无法接受到声音信号。后来,我们对PCB进行了检查,发现有放大电路的集电极连接线断路了,导致声音信号没法被芯片接收到。我们迅速的电路进行了修复。修复后,电路能够顺利的进行工作了。
八、心得体会
for(j=0;j<120;j++); //数120次,约1 ms
}
void time0_time1_init()
{
TMOD=0x11;
TH1=(65535-50000)/256;TL1=(65535-50000)%256;
TH0=(65535-50000)/256;TL0=(65535-50000)%256;
TR0=1;
}
}
}
}
void time1_interrupt()interrupt 3
{
TH1=(65535-50000)/256;TL1=(65535-50000)%256;
counter++;
if(counter>=6)
{
counter=0;
switch(num)
{
case 0:if(flag==0){led=0x00;flag=1;}else {led=0xff;flag=0;}break;//闪烁
九、源程序
#include<reg51.h>
typedef unsigned char uchar;
typedef Fra Baidu biblioteknsigned int uint;
#define led P1//流水灯控制
sbit voice=P2^4;//声音输入1101 1011
uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//上到下
counter1++;
if(counter1>=20)//1s后再检测
{
counter1=0;
flag1=0;
TR0=0;
}
}
uchar he[4]={0,0,0,0};
uchar num=0;
uchar counter=0;//定时计数
uchar counter1=0;//定时计数
bit flag=0;//切换闪烁
bit flag1=0;
void delay1m(uint x)
{
uint i,j;
for(i=0;i<x;i++) //连数x次,约x ms
uchar code tab2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//下到上
uchar code tab3[]={0xe7,0xdb,0xbd,0x7e};//中间到两边
uchar code tab4[]={0x7e,0xbd,0xdb,0xe7};//两边到中间
成绩
.
课程设计报告
华中师范大学武汉传媒学院
传媒技术学院
电子信息工程2011
仅发布百度文库,版权所有.
声控流水灯
一、设计题目、要求
题目:声控灯设计
要求:A.使用单片机实现声控灯 B.当说话声音大于一定程度时,发光二极管显示,延时大于1秒
二、设计框图
二、方案设计
运用AT89C51芯片进行处理,运用麦克风将声音信号转换成电信号,再使用多级放大电路将电信号放大送入C51芯片中,运用芯片进行处理,将编辑好的程序输入芯片。每当麦克风送入一个电信号,改变流水灯的点亮方式。让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
case 4:led=tab4[he[3]];he[3]++;if(he[3]>=4)he[3]=0;break;//两边到中间
default:break;
}
}
}
void time0_interrupt()interrupt 1
{
TH0=(65535-50000)/256;TL0=(65535-50000)%256;
}
void main()
{
time0_time1_init();delay1m(2000);
while(1)
{
if(!flag1)
{
if(!voice)
{
num++;flag1=1;
he[0]=he[1]=he[2]=he[3]=0;
if(num>=5){num=0;}
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说三极管PNP管脚不懂怎么放置,不懂分得二极管的正负极,对单片机汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。在单片机方面也是了解了一些些,我相信这次课程设计会对我以后的工作通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为自己的东西。
case 1:led=tab1[he[0]];he[0]++;if(he[0]>=8)he[0]=0;break;//上到下
case 2:led=tab2[he[1]];he[1]++;if(he[1]>=8)he[1]=0;break;//下到上
case 3:led=tab3[he[2]];he[2]++;if(he[2]>=4)he[2]=0;break;//中间到两边
三、硬件原图设计
四、程序流程图
否
是
五、仿真图
六、制作
七、调试
流水灯制作完成后,我们对它进行了调试,一开始灯不停地闪,无法接受到声音信号。后来,我们对PCB进行了检查,发现有放大电路的集电极连接线断路了,导致声音信号没法被芯片接收到。我们迅速的电路进行了修复。修复后,电路能够顺利的进行工作了。
八、心得体会
for(j=0;j<120;j++); //数120次,约1 ms
}
void time0_time1_init()
{
TMOD=0x11;
TH1=(65535-50000)/256;TL1=(65535-50000)%256;
TH0=(65535-50000)/256;TL0=(65535-50000)%256;
TR0=1;
}
}
}
}
void time1_interrupt()interrupt 3
{
TH1=(65535-50000)/256;TL1=(65535-50000)%256;
counter++;
if(counter>=6)
{
counter=0;
switch(num)
{
case 0:if(flag==0){led=0x00;flag=1;}else {led=0xff;flag=0;}break;//闪烁
九、源程序
#include<reg51.h>
typedef unsigned char uchar;
typedef Fra Baidu biblioteknsigned int uint;
#define led P1//流水灯控制
sbit voice=P2^4;//声音输入1101 1011
uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//上到下
counter1++;
if(counter1>=20)//1s后再检测
{
counter1=0;
flag1=0;
TR0=0;
}
}
uchar he[4]={0,0,0,0};
uchar num=0;
uchar counter=0;//定时计数
uchar counter1=0;//定时计数
bit flag=0;//切换闪烁
bit flag1=0;
void delay1m(uint x)
{
uint i,j;
for(i=0;i<x;i++) //连数x次,约x ms
uchar code tab2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//下到上
uchar code tab3[]={0xe7,0xdb,0xbd,0x7e};//中间到两边
uchar code tab4[]={0x7e,0xbd,0xdb,0xe7};//两边到中间
成绩
.
课程设计报告
华中师范大学武汉传媒学院
传媒技术学院
电子信息工程2011
仅发布百度文库,版权所有.
声控流水灯
一、设计题目、要求
题目:声控灯设计
要求:A.使用单片机实现声控灯 B.当说话声音大于一定程度时,发光二极管显示,延时大于1秒
二、设计框图
二、方案设计
运用AT89C51芯片进行处理,运用麦克风将声音信号转换成电信号,再使用多级放大电路将电信号放大送入C51芯片中,运用芯片进行处理,将编辑好的程序输入芯片。每当麦克风送入一个电信号,改变流水灯的点亮方式。让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
case 4:led=tab4[he[3]];he[3]++;if(he[3]>=4)he[3]=0;break;//两边到中间
default:break;
}
}
}
void time0_interrupt()interrupt 1
{
TH0=(65535-50000)/256;TL0=(65535-50000)%256;