ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:841.89KB ,
资源ID:25800727      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25800727.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课设报告211.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课设报告211.docx

1、单片机课设报告211 目录1整体结构 1.1 设计目的 .1 1.2 方案选择及构想.1 1.3 最终要达到的试验结果.1 1.4 整体连接图.12 硬件结构 2.1 结构图.22.2 音频功放电路.22.3 LM286芯片图.32.4 存储芯片AT24c16.32.5电路连接原理.43 软件结构 3.1 电子琴的软件系统总设计.6 3.2 电子琴存储音符.6 3.3 红外遥控输入的解码处理.7 3.4 音符处理以及以扬声器的驱动.94调试 4.1仪器仪表.11 4.2系统调试.11 4.3硬件调试.12 4.4软件调试.12 4.5硬件软件联调.13 4.6测试结果 .14 4.心得体会.1

2、46.附件.161.整体方案 1.1 设计目的1、加强对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。2、用单片机模拟,使实现具体应用个人设计能够真正使用。3、把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼自己。4、提高实践动手能力,学习使用红外遥控器控制单片机。1.2 方案选择及构想按键方案:方案:红外遥控上的按键1和2分别对应不同的歌曲。构想:1 通过按红外遥控器的按键控制达到要求。 2 用控制扬声器来发出对应的音符3 把单片机、24c16芯片、音频驱动连接起来,完成试验要求1.3 最终要达到的试验结果 成果:当按下红外遥

3、控器数字1时喇叭播放第一首歌,按下键2时播放第二首歌。1.4 整体连接图2.硬件结构本次课程设计的硬件电路比较简单,主要有51单片机一块、红外遥控及接收器、音频功放和扬声器构成。21结构框图22音频功放电路图23 LM386芯23 LM386芯片图 GAIN GAIN -IN Bypass +IN Vs GND Vout 其引脚功能说明如下: GAIN(1脚,8脚):增益控制引脚,如果此两脚悬空,则增益为20V,如果两脚之间接一个大的极性电容,则增益可以达到200V,如果在和电容串联一个电阻,增益可设置为20200V之间。-IN(2脚):负极性输入脚,在单极性输入时,此引脚接地。+IN(3脚)

4、:正极性输入脚,在单极性输入时,此引脚接输入信号。GND(4脚):接地端。Vout(5脚):电压输出端。此引脚为音频功放电路的输出。Vs(6脚):电源脚,供电范围412V。BYPASS(7脚):旁路端。此引脚可悬空或者接一个大电容到地。24存储芯片AT24c16: A0 VCC A1 WP A2 SCL GND SDA SDA(5脚):串行地址数据管脚:这个双向引脚用来传送地址和输入输出数据。这是一个开漏输出,以便与其它器件通过“线或”并接在双线总线上。输入缓冲区集成施密特触发器用以提高抗干扰性能,输出驱动具有下降沿斜率控制。次端口必须外加上拉电阻。SCL(6脚):串行时钟:两线制总线的串行时

5、钟输入。数据在时钟的下降沿移出器件,在时钟上升沿移入器件,时钟端口同样具有施密特触发器用以提高抗干扰性。WP(7脚):写保护:当WP为高电平时,存储器处于写保护状态,数据禁止写入,当WP为低电平时所有地址都能写入,这个管脚已经被内部下拉。VCC(8脚):电源电压:5V。GND(4脚):地。A0、A1、A2():空脚。25电路连接原理 存储芯片的引脚 SDA 与单片机的P3.2口相连,引脚SCL与单片机的P3.3口相连,VCC口接高电平,其他引脚都接地。在VCC口接高电平的情况下,单片机通过这两个口的连接可以通过时钟的控制对AT24c16芯片进行读和写的操作。功放板与单片机的链接:单片机的电源引

6、脚VCC与功放板的电源引脚VCC相连,地与功放板的地相连,单片机上的音频输出口P1.6与功放板上的音频输入口(J4的1口)相连,扬声器连接到功放板上从而发声。红外接收器的连接:一端连单片机的P3.3口,一端接地,一端接一个上拉电阻再接电源。通过单片机的控制来实现红外的接收,信息的存储,以及音乐的播放工作。 实连图如下:其程序如下: if(a1=1) Ir_work(); if (flag=1) EX1=0; i=0; k=0; while(i83) k=music1i+7*music1i+1-1; /第i个是音符, 第i+1个是第几个八度 timer0h=ak; /从数据表中读出频率数值 ti

7、mer0l=bk; /从数据表中读出频率数值 time=music1i+2; /读出时间长度数值 i=i+3; song(timer0h,timer0l,time); s=1; flag=0; EX1=1; if(flag=2) i=0; k=0; EX1=0; while(i99) k=music2i+7*music2i+1-1; timer0h=ak; timer0l=bk; time=music2i+2; i=i+3; song(timer0h,timer0l,time); s=1; flag=0; EX1=1; 4.调试4.1仪器仪表 单片机仿真器 KEILC 蜂鸣器 扩音器 LS14

8、.2系统调试 根据系统设计方案,本系统的调试共分为三大部分:硬件调试软件调试软硬件联调 由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:中心控制模块的调试,音乐播放模块的调试,按键控制模块的调试等,最后将各模块组合后进行整体测试。4.3硬件调试 对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。4.4软件调试 软件调试采用单片机仿真器KEILC及微机,将编好的程序进行调试,主要是检查语法错误。4.5硬件软件联调 将调试好的硬件和软件进行联调,主要调试系统的实现功能。4.6测试结果 系统设计结果,送入音乐程序,按键遥控器上面1键或2键,则会播放歌。5.心得体会 本

9、学期为期一周的单片机课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的趣味,更加清楚地认识到了自己在软件开发及学习上的一些不足之处。这次课设实施方式是团队分组合作,共同完成,让我们体验了一下团队开发项目的氛围。虽说一些些技术我们在课堂上也曾学习过,但是大多停留在理论学习上,实际开发很少,而这次课程设计给了我们一个很好的边学习边实践的机会,对我们深入学习这些技术有很大帮助,深刻体会到了这些技术的实用性。每当自己成功调试一段代码或者通过自己的努力

10、克服一个技术困难,都颇有收获感。这次实训让我们体验了软件开发的全过程,发现自己的不足,增加了一定的项目开发经验。简短的回顾一下这几天我们所学习的:课设之前,我们先明确了一下下周课程设计的要求和目的。然后胡老师给我们详细的讲解了这一周我们要做什么,同时我们也分了小组,模拟体验一下团队开发 ,此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力.因为以前做过关于焊接的电工实习,所以对于我们通信专业的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,第一天开始程序编写还算顺利,本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思

11、维的前提.其实本身程序的思维是正确的,只是步骤中有点小错误,当我们吧各自写好的功能拼在一起的时候出现了不少问题所以导致整个程序的结果很乱,大家都很郁闷,改了很多结果却出不来。于是,到了第二天为了提高效率,我们便集中的调试程序直到成功,其实到最后发现错误其实是一个很小的地方。系统以AT89C51 为核心部件,利用软件编程,通过用软件,将数据写入到EEprom中通过红外遥感控制,利用扬声器唱出歌来。能实现本设计题目的基本要求和发挥部分。充分发挥软件编程的优点,可是当我们把成品做出来却发生了各种各样的问题。首先,要往芯片中写入数据,要安装串口驱动,装了很久,特别是去实验室调一次就要装一次,而且实验室

12、的电脑都装不了,很麻烦。另外程序明明正确,可是通电后,扬声器缺不发声,最后原来是,扬声器的线没搞好混在一起了。并不是什么大的问题。到最后,扬声器能正确唱出歌来,可是蜂鸣器也在响,原来我们用的P15口正好是接了蜂鸣器的引脚,原来一个小问题不注意,也会造成一些不必要的错误。在此次课程设计中给我印象深刻的是在平时我们就需要好好的查阅书籍或者上网搜集相关资料去解决问题。此次实训最大的收获不是我学习到了多少知识而是这几天实训给我的感悟:首先是心态。一定要有一个积极的心态,独立解决问题的意识,培养扎实基础的认识。不要什么东西都感觉跟简单(很多东西可能是看似简单)就不去做了或者不屑一做,以至于网上搜搜就可以

13、了,这样很不好。有自己的东西有自己的付出才会有程序运行成功时的喜悦和小自豪,这样也有助于培养自己的兴趣。要时刻牢记态度决定一切。其次是兴趣,感觉学习工作中兴趣很关键,只是一个引发人积极性的问题,有了兴趣就自觉了,效率自然就高了。再次要敢于尝试和挑战。不要安于现成的程序,而且不要害怕失败,在程序调试的过程中这点尤为重要,“发现出问题然后解决问题”是一个积累经验的过程,而且很高效。最后要不懈追求。对于源代码进行不断的完善,要尽可能的实现课题所要求的功能。对于初学者或者开发较少的人来说,大量大写程序还是有必要的,但同时要注意思考,理解其实现的内在意义。还可以自己添加一些有意义的功能来实现。当看到自己

14、编写的程序正常运行时,兴趣也会随之而来,乐此不疲,形成一个良性循环。踉踉跄跄地忙碌了一周,我们单片机课程设计也终将告一段落。设计实物也基本达到预期的效果,但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙,一首歌放完之后才能换另外一首。但我可以自豪的说,这里面的每一段代码,都有我们的劳动成果。当看着自己的程序,大家成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅.7.附件#include#include#include 红外音乐.huchar iic_writ

15、e_byte(uchar wdata) uchar bit_cnt; for(bit_cnt=0;bit_cnt8;bit_cnt+) if(wdata & 0x80) SDA=1; else SDA=0; wdata=1; delay_10us(); SCL=1; delay_10us(); SCL=0; delay_10us(); SDA=1; SCL=1; delay_10us(); if(SDA=1) bit_cnt=0; else bit_cnt=1; SCL=0; return bit_cnt;uchar iic_read_byte() uchar bit_cnt,rdata; S

16、DA=1; for(bit_cnt=0;bit_cnt8;bit_cnt+) SCL=0; delay_10us(); SCL=1; delay_10us(); rdata=1; if(SDA=1) rdata|=0x01; delay_10us(); SCL=0; return rdata;uchar iic_write_str(uchar sla,uchar suba,uchar *s,uchar len) uchar i; iic_start(); if(iic_write_byte(sla)=0) return 0; if(iic_write_byte(suba)=0) return

17、0; for(i=0;ilen;i+) if(iic_write_byte(*s+)=0) return 0; iic_stop(); return 1;uchar iic_read_str(uchar sla,uchar suba,uchar *s,uchar len) uchar i; iic_start(); if(iic_write_byte(sla)=0) return 0; if(iic_write_byte(suba)=0) return 0; iic_start(); if(iic_write_byte(sla|0x01)=0) return 0; for(i=0;i0;x-)

18、 for(y=110;y0;y-);void delay(uchar x) /延时x*0.14ms uchar i; while(x-) for (i = 0; i13; i+);void delay1(uchar t) /节拍延迟 unsigned char t1; unsigned long t2; for(t1=0;t1t;t1+) for(t2=0;t27500;t2+) ; TR0=0;/*- 定时器0初始化-*/void TIM0init() /定时器0初始化 (用于音符的频率的控制) TMOD=0x21; /定时器0工作方式2,TH0是重装值,TL0是初值 ET0=1; /开中断

19、 TH1=0X00; TL1=0X00; TR1=1; /*- 外部中断0初始化-*/void EX0init() ET1=1; IT1 = 1; /指定外部中断0下降沿触发,INT0 (P3.2) EX1 = 1; /使能外部中断 EA = 1; /开总中断#define uchar unsigned char#define uint unsigned int #define delay_10us() _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_()#define iic_star

20、t() SDA=1;SCL=1;delay_10us();SDA=0;delay_10us();SCL=0#define iic_stop() SDA=0;SCL=1;delay_10us();SDA=1;delay_10us()#define iic_ack(X) SDA=(X)&0x01;delay_10us();SCL=1;delay_10us();SCL=0 #define AT24C16 0xa0 /sbit s=P37;sbit s=P15;sbit SCL=P33;sbit SDA=P32;/sbit IR=P32; /红外接口标志sbit IR=P33; /红外接口标志void

21、 delay_ms(uint z);void delay1(uchar t);void delay(uchar x);void song(uchar timer0h,uchar timer0l,uchar time);void EX0init();void TIM0init();/void Ir_work();/void Ircordpro();uchar iic_read_str(uchar sla,uchar suba,uchar *s,uchar len);uchar iic_write_str(uchar sla,uchar suba,uchar *s,uchar len);uchar

22、 iic_read_byte();uchar iic_write_byte(uchar wdata);#include#include#include 红外音乐.huchar irtime;/红外用全局变量uchar IRcord4;uchar timer0h,timer0l,time,irpro_ok;uchar flag=0;uchar code music1= 5,2,2, 6,1,2 , 1,2,4, 2,2,2, 3,2,1, 1,2,1, 3,1,2, 2,2,4, 5,2,3, 2,0,2, 2,2,2, 1,1,6, 3,3,3, 0,6,6, 6,6,5, 5,3,3, 2,

23、0,2, 2,2,2, 1,1,5, 3,0,6, 6,6,1, 3,2,2, 3,2,0, 2,2,2 , 2,1,6, 1,1,1, ; / 音阶频率表 高八位uchar code a= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位uchar code b= 0x42,0xC1,0x17

24、,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,;uchar code music2= 5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 3,1,1, 3,1,1, 2,1,1, 2,1,4, 5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 2,1,1, 3,1,1, 3,1,4

25、, 5,0,1, 5,0,1, 5,0,1, 5,0,1, 3,1,1, 2,1,1, 2,1,1, 1,1,1,3,1,1, 3,1,1, 2,1,1, 2,1,4, 2,1,1, 1,1,1, 3,1,1, 2,1,1, 1,1,1, 2,1,1, 1,1,1, 1,1,8, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 1,1,1, 2,1,1, 2,1,6, 3,1,1, 2,1,2, 1,1,1, 1,1,1, 5,0,1, 6,0,1, 5,0,1, 5,0,6, 3,1,1, 2,1,1, 2,1,1, 1,1,1, 1,1,1, 2,1,1, 2,1,6, 5,0,1

26、, 3,1,1, 2,1,2, 3,1,1, 3,1,4,; / 一个音符有三个数字。前为第几个音、中为第几个八度、后为时长(以半拍为单位)。 /6, 2, 3 分别代表:, 中音, 个半拍; /5, 2, 1 分别代表:, 中音, 个半拍; /3, 2, 2 分别代表:, 中音, 个半拍; /5, 2, 2 分别代表:, 中音, 个半拍; /1, 3, 2 分别代表:, 高音, 个半拍; void Ir_work()/红外键值散转程序 switch(IRcord2) /判断第三个数码值 case 0x0c:flag=1;break; /按下遥控器第一个按键CH-,则流水灯启动 case 0x18:flag=2;break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1