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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实训报告Word文档格式.docx

1、(二)、显示方案方案一、使用数码管显示数码管自身的优点是价格比较低廉,而且目前使用数码管的实现电子时钟设计比较成熟,实现起来比较方便,但是,由于单片机的实验板资源有限,只有六个数码管,虽然可以实现时分秒的显示,但是并不能满足我们的要求,同时显示时分秒和年月日。方案二、使用液晶显示液晶显示更加人性化,给用户更友好的感觉,并且可以同时显示时分秒和年月日,在用键盘调节的时候也比较方便,让用户可以清楚的看到,键盘如何调节实现时间的校准。但液晶显示的费用相对会高些。我们采用液晶显示方案。(三)、时钟的年、月、日、时、分、秒的调节采用独立键盘。四、具体实现项目组人数2,两人共同负责硬件和软件在项目中我们两

2、个人通过商议沟通,一起了解单片机的功能并完成程序所要实现的功能。程序要求设置、连接单片机各个管脚,以及单片机外扩晶振电路,复位电路扩展电路;单片机各个引脚的置位情况(一)硬件设计(原理图、工作原理);本项目采用89c52单片机芯片,在单片机外围扩展复位电路、晶振电路;采用1602液晶显示屏;使用有源蜂鸣器器件。单片机管脚及原理图40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端; 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/片内EP

3、ROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外ROM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信

4、号(属控制总线)。单片机复位电路如下图所示:因为单片机RST管脚给单片机复位的条件是:给这个管脚两个机械周期的高电平,所以取c17=22u,R22=100,所以时间常数=RC,可以保证给RST管脚两个机械周期以上的高电平,便可以达到单片机复位要求。此外,R22与R23组成分压电路,R22也作为管脚的限流电阻,保护管脚电流过大。1602液晶显示原理图如下所示:管脚设计及扩展:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选

5、择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。蜂鸣器的电路如下图所示:本项目中是用有源晶振,因为的内置电阻较小,所以串联21100欧做为限流电阻,保护U6。采用有源晶振的好处是不需要外接起振电路,只要到达U6的电压,电流要求即可蜂鸣。若是无源蜂鸣器,因其内部无振荡源,必须通过外部电路输入一个KHZ5KHZ的方波信号。,增加了外围电路。单片机外围晶振电路如下图所示:为了达到正

6、确的串行口波特率,使单片机与计算机可以正常工作,就必须用11.0952M的晶振频率,这样计算出来的波特率才刚好匹配。C18、C19两个负载电容的值是根据晶振频率而定的,因为晶振频率10M,所以电容相对选择;一般单片机的晶振工作于并联谐振状态,也可以理解为谐振电容的一部分,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差。也能保证温漂等误差。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振。单片机液晶显示部分是由项目组另一个硬件成员完成的,这里我只是简单介绍(二)、软件设计(程序及流程图)程序流程图程序如下:#incl

7、ude /头文件#define uchar unsigned char /无符号字符型#define uint unsigned int /无符号整型sbit dula=P26; /段选sbit wela=P27; /位选sbit rs=P35; /数据命令选择端sbit lcden=P34; /使能端sbit s1=P30; /键盘按键sbit s2=P31;sbit s3=P32;sbit rd=P37; /读写选择端sbit beep=P23;uchar count,s1num;char miao,shi,fen,nian,yue,ri;uchar code table= 2012-12

8、-21 ; /年月日数组uchar code table1= 12:12:21 /时间数组void delay(uint z) /延时子程序 uint x,y;for(x=z;x0;x-) for(y=110;yy-);void write_com(uchar com) /写地址 rs=0; /定义写指令函数 lcden=0; P0=com; /给数据口赋值 delay(5); /延时5ms lcden=1;void write_date(uchar date) /写数据 rs=1; /定义写数据函数 P0=date;void write_sfm(uchar add,uchar date) /

9、写时分秒 uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void write_nyr(uchar add,uchar date)/写年月日 char shi,ge; write_com(0x80+0x00+add);/设置显示位/送去液晶显示十位/耸起液晶显示个位void init()/初始化 uchar num; dula=0;/关闭锁存端wela=0; beep=0; miao=21; fen=12; shi=12; wri

10、te_sfm(4,shi); write_sfm(7,fen); write_sfm(10,miao); nian=12; yue=12; ri=21; write_nyr(10,ri); write_nyr(7,yue); write_nyr(4,nian); write_com(0x38); write_com(0x0c);/不显示光标 write_com(0x06);/光标加一 write_com(0x01);/清零 write_com(0x80); for(num=0;num15;num+) write_date(tablenum); delay(5); write_com(0x80+

11、0x40);/将数据写入第一行和第二行12; write_date(table1num); write_com(0x80+0x00); TMOD=0x01;/定时器函数 假设是12mhz TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;/开总中断 ET0=1;/开定时器0 TR0=1;/启动定时器void keyscan()/ 键盘扫描 rd=0;/将矩阵键盘用作独立键盘 if(s1=0) delay(5); if(s1=0) s1num+; while(!s1); if(s1num=1) TR0=0;/时间停止write_com(0x80

12、+0x40+10); write_com(0x0f); if(s1num=2)write_com(0x80+0x40+7); if(s1num=3) write_com(0x80+0x40+4); if(s1num=4)write_com(0x80+0x00+10); if(s1num=5)write_com(0x80+0x00+7); if(s1num=6)write_com(0x80+0x00+4); if(s1num=7) s1num=0; write_com(0x0c); TR0=1;/开始计时 if(s1num!=0) if(s2=0) delay(5); if(s2=0) whil

13、e(!s2); if(s1num=1) miao+;if(miao=60)miao=0;write_sfm(10,miao);/指针移回 if(s1num=2) fen+;if(fen=60)fen=0;write_sfm(7,fen); if(s1num=3) shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4); if(s1num=4) ri+;if(ri=30) ri=0;write_nyr(10,ri); if(s1num=5) yue+;if(yue=12)yue=0;write_nyr(7,yue); if(s1n

14、um=6) nian+;if(nian=2300)nian=0;write_nyr(4,nian); if(s3=0) if(s3=0)s3); miao-;if(miao=-1)miao=59; fen-;if(fen=-1)fen=59; if(s1num=3) shi-;if(shi=-1)shi=23; ri-;if(ri=-1)ri=29; yue-;if(yue=-1)yue=11; nian-; if(nian=-1)nian=99; void main()/主函数 init(); while(1) beep=0; keyscan(); if(count=18) count=0;

15、 miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; if(shi=24) shi=0; /beep=1;delay(200); ri=1;yue+; yue=1;nian+; write_sfm(7,fen); write_sfm(10,miao); if(miao=10) if(fen=01)if(shi=00) beep=1; delay(200); void timer0() interrupt 1 count+;结论:可以根据要求需显示出时、分、秒,计时误差不超过2秒/小时,时、分、秒能够分别通过按键进行设置调节,具有显示年、月、日的

16、功能,并且同样可以对年、月、日通过键盘进行调节成果:这次设计对我们的知识要求较为综合,我们用到了单片机、数字电路、模拟电路、protel/proteuse、keil-c51等知识,以后应加强这方面的训练。感受及体会通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生

17、活中灵活运用。实训中我知道了项目组成员之间互相帮助、合作的重要性。我学到了更多解决问题的技巧,遇到困难时运用学过的相关知识和恰当的方法尽力去解决各个难题,通过自己不懈的努力与搭档的配合来完成这项团队任务。在实训中我们用到了液晶显示屏,但当程序都没错误和问题的情问题的情况下显示屏不能显示任何东西,我们向老师求救才找到原因,最后还是老师帮助我们调节可调电阻的阻值才成功的显示了数字。在这个过程中我深刻的感觉到自己对于单片机的了解太过浅薄,同时深刻的认识到理论与实际的差别。这次实训不仅学到了更多专业知识,还训练了与别人协作、沟通的能力,从中找到了自己的缺点和不足并丰富了自己的知识开阔得视野,很高兴能有这样的实训经历,希望在今后可以多接触多学习。

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

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