




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩.课程设计报告华中师范大学武汉传媒学院传媒技术学院电子信息工程2011仅发布百度文库,版权所有.单片机课程设计一、设计题目、要求题目:声控灯设计要求:A.使用单片机实现声控灯 B.当说话声音大于一定程度时,发光二极管显示,延时大于1秒二、设计框图1、硬件框图STC89C51复位电路键盘震荡电路流水灯电路三、方案设计如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管
2、LED1LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。四、硬件原图设计五、程序流程图开始根据键盘指令执行流水灯显示效果检查是否有键按下读取键值执行结束六、仿真图仿真结果如下:当S2关闭当S3关闭七、制作八、调试流水灯制作完成后,我们对它进行了调试,一开始灯不停地闪,无法接受到声音信号。后来,我们对PCB进行了检查,发现有放大电路的集电极连接线断路了,导致声音信号没法被芯片接收到。我们迅速的电路进行了修复。修复后,电路能够顺利的
3、进行工作了。 九、心得体会回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功。 在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。比如在调试的时候,程序老是不稳定中断服务程序有时执行一次,有时又执行两次,开始我以为是板子
4、受环境影响。后来在网上百度才知道是软件问题,是我忘了在执行中断服务程序时候把相应的中断关了,导致在执行中断服务程序时易受影响执行两次或两次以上。在这个发现问题之后,我在中断服务程序中关了相应的外中断之后。问题就解决了,下载程序到板子之后,运行就正常了。 此次课程设计让我明白了,想要把所学的东西应用于实践一定要有扎实的基本功,理论和实践是有很大的差别的。十、源程序#include<reg51.h>typedef unsigned char uchar;typedef unsigned int uint;#define led P1/流水灯控制sbit voice=P24;/
5、声音输入 1101 1011uchar code tab1=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/上到下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;/两边到中间uchar he4=0,0,0,0;uchar num=0;uchar counter=0;/定时计数uchar counter1=0;/定时计数bit flag=
6、0;/切换闪烁bit flag1=0;void delay1m(uint x) uint i,j; for(i=0;i<x;i+) /连数x次,约 x ms for(j=0;j<120;j+); /数120 次,约1 msvoid time0_time1_init()TMOD=0x11;TH1=(65535-50000)/256;TL1=(65535-50000)%256;TH0=(65535-50000)/256;TL0=(65535-50000)%256;TR0=0;ET1=ET0=TR1=EA=1;void main()time0_time1_init();delay1m(2
7、000);while(1)if(!flag1)if(!voice)num+;flag1=1;he0=he1=he2=he3=0;if(num>=5)num=0;TR0=1;void time1_interrupt()interrupt 3TH1=(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;/闪烁case 1:led=tab1he0;he0+;if(he0>=8)he0=0;break;/上到下case 2:led=tab2he1;he1+;if(he1>=8)he1=0;break;/下到上case 3:led=tab3he2;he2+;if(he2>=4)he2=0;break;/中间到两边case 4:led=tab4he3;he3+;if(he3>=4)he3=0;break;/两边到中间default:break;void time0_inter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论