单片机生产实习报告电子钟.doc

上传人:仙人指路1688 文档编号:4147438 上传时间:2023-04-07 格式:DOC 页数:12 大小:2.01MB
返回 下载 相关 举报
单片机生产实习报告电子钟.doc_第1页
第1页 / 共12页
单片机生产实习报告电子钟.doc_第2页
第2页 / 共12页
单片机生产实习报告电子钟.doc_第3页
第3页 / 共12页
单片机生产实习报告电子钟.doc_第4页
第4页 / 共12页
单片机生产实习报告电子钟.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《单片机生产实习报告电子钟.doc》由会员分享,可在线阅读,更多相关《单片机生产实习报告电子钟.doc(12页珍藏版)》请在三一办公上搜索。

1、东北石油大学实习总结报告实习类型 生产实习 实习单位 电子科学学院实习基地 实习起止时间 2012年6月25日至2012年7月14日指导教师 所在院(系) 电子科学学院 班 级 学生姓名 学 号 2012年 7月 14日一、实验目的与要求通过单片机开发板安装实习,巩固以前所学理论知识,让学生掌握单片机的硬件知识及设计方法,提高自身的动手能力,通过对单片机硬件和软件的综合训练,增进学生对电子工艺的感性认识,了解电子产品制造过程,熟悉电子产品工艺,掌握锡焊接技术、电子元器件、电子产品设计、装配技术、调试与检测技术以及电子技术文件的制订等操作技能,通过把设计好的程序利用软件将编译文件加载到单片机芯片

2、中,实现仿真电路,得到结果,为进一步学习和应用奠定基础,全面提高学生的实践动手能力和分析问题、解决实际问题的能力,培养其创新精神。二、单片机开发板原理及各部分功能说明1.设计原理5l系列单片机中典型芯片(AT89S51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时计数器TO和T1,4个8 b的IO端口:P0,P1,P2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(EPROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。5l系列单片机提供以下功

3、能:4 kB存储器;256 BRAM;32条IO线;2个16b定时计数器;5个2级中断源;1个全双向的串行口以及时钟电路。空闲方式:CPU停止工作,而让RAM、定时计数器、串行口和中断系统继续工作。掉电方式:保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。5l系列单片机为许多控制提供了高度灵活和低成本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。ATMEL的AT89S51是一种高效微控制器,AT89S2051是它的一种精简版本。AT89S单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。单片机编程,用单片机设计电路,调

4、节时间时,按动调节按钮,六位数码管显示实时时间。2.时钟电路工作原理STC89C52单片机片内的Flash可允许在线重新编程,也可用通用非易失性存储编程器编程;片内数据存储器内含128字节的RAM;有40个引脚,32个外部双向输入/输出(I/O)端口;具有两个16位可编程定时器;中断系统是具有6个中断源、5个中断矢量、2级中断优先级的中断结构。在STC89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为

5、单片机的时钟脉冲信号。3. 共阴极数码管LED数码管是由7个发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从09的系列数字。LED显示器多采用动态显示方式, LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。数码管的八个位控口接在AT89S52单片机的P1口线上,从左到右顺序连接,段控制线接在AT89S52单片机的P0口线上,从低位到高位对应连接。它亮度高、单色性好、发光响应的时间短,能与TTL、

6、CMOS电路兼容等的数显器件。+、-分别表示公共阳极和公共阴极。ag是7个笔段电极,DP为小数点。另有一种字高为76mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。本系统利用4位LED数码管显示时间,共阴极结构。显示模块要具有显示时分秒和间隔闪烁符(至于每两级单位之间)的功能,共需要八位数码管。并排使用的多位数码管称为LED显示器。显示模块要具有显示时分秒和间隔闪烁符(至于每两级单位之间)的功能,共需要八位数码管。并排使用的多位数码管称为LED显示器。LED显示器多采用动态显示方式, LED显示器动态显示需要为各位提供段码以及相应的位控制,此即通常所说的段控和位控。数码管的八个

7、位控口接在AT89S52单片机的P1口线上,从左到右顺序连接,段控制线接在AT89S52单片机的P0口线上,从低位到高位对应连接。把LED显示器段码表预先存放在存储器中,使用时通过查表就可以得到段码。段码输出后送到公共段码线上,也可称为段控信号。而通过并行口输出的相互独立的位码则是起选通作用的,也称位控或扫描信号,用于选择显示位。图1 共阴极数码管以八段数码管为例,显示十六进制的段码值如表1数字共阳极段码共阴极段码数字共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE8

8、6H79H682H7DHF8EH71H7F8H07H灭FFH00H880H7FH表1十六进制段码表4. 按键本设计中主要有三个控制按键,P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态;按P3.3进入设定闹时状态: 12:00: ,可进行分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟结束.在闹铃时可按P3.2停闹,不按闹铃1分钟;按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时

9、钟状态。图2控制按键5.蜂鸣器电路 图3蜂鸣器电路图因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。6.单片机系统电路 图4单片机系统电路图此部分是电路的核心部分,系统的控制采用了单片机STC89C52。单片机STC89C52内部集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。因此系统不必扩展外部程

10、序存储器和数据存储器这样大大的减少了系统硬件部分。图5单片机开发板总电路图三、硬件调试首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线是否存在相互之间短路或与其它信号线路短路。硬件电路调试的一般顺序是:对接地和接电源进行检查,看是否接通;插上芯片和接上电源看复位开关是否正常使用;数码管未插上芯片检查管各段LED灯是否按要求接入。元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及

11、其逻辑关系。将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。测试数码管:把万用表调到测二极管的档,用红表笔触行输入端,用黑表笔触列输入端.注意观察256个点是否正常亮.(2) 测试按键:直接连接按键到单个可用LED发光二极管(这里采用实验板上发光二极管),按下每个按键看LED是否可亮,若亮,说明按键可用.(3)调试:建立一个新工程,输入源程序,最后编译得到一个目标文件,用编程器把程序写入单片机STC89C52中,插到实验板,把电路板与+5V稳压电源连接,把芯片插入电路板,打开电源,六个数码管分别显示时、分和秒的十位和个位,通过电路把六个数码管调为零,通过两个开关分别调时分的十位

12、,个位。调时调为23,把分调59,秒调为59,然后等一秒钟,如果显象管的时分的十位、个位和秒位都显示为0,那就说明调试成功,在测试工程中,不但要认真观察和检测,还要认真记录,包括记录观察的现象,测量的数据,通过数据才能把实际观察的现象和理论预计的结果加以定量比较,从中发现问题,加以改进,最终完成设计。在这个设计中主要测试时间是否正确,是否能符合设计的要求。四、软件开发此程序是用定时器0,1实现电子钟的时分秒的输出分别用按键k1,k2来改变时和分的数值,再用扫描按键,键处理来实现按键的数字扫描,先关闭所有数码管,定时器0, 1工作模式1, 16位定时方式,装入10ms定时初值,用th1和tl1中

13、的数控制定时器1定时多少再进入中断,再实现秒进分,分进时的完成。#include #include unsigned char DATA; /数据端口unsigned char DIS_DIGIT; /位选通值unsigned char KEY_S; /定义按键unsigned char KEY_V; /定义按键unsigned char code DIS_CODE11=0xc0,0xf9,0xa4,0xb0, / 0, 1, 2, 30x99,0x92,0x82,0xf8,0x80,0x90, 0xff;/ 4, 5, 6, 7, 8, 9, OFFunsigned char data DI

14、S_BUF8; /缓冲区数组可访问数值unsigned char data DIS_INDEX; /表示数码管、缓冲区偏移量unsigned char HOUR,MIN,SEC; /定义时分秒unsigned char SEC100; /定义百分之一秒sbit K1 = P32; /用k1表示P3.2sbit K2 = P33; /用k2表示P3.1bit SCAN_KEY();/扫描按键void PROC_KEY();/键处理void INC_SEC();/秒void INC_MIN();/分void INC_HOUR();/时void DISPLAY();/显示void DELAYMS(u

15、nsigned char MS); /延时子程序void MAIN()P0 = 0x00; /先关闭所有数码管P1 = 0x00;TMOD = 0x11; / 定时器0, 1工作模式1, 16位定时方式TH1 = 0xdc; /装入10ms定时初值TL1 = 0; /用th1和tl1中的数控制定时器1定时多少再进入中断TH0 = 0xfc;TL0 = 0x17;HOUR =00; /时初值MIN = 00; /分初值SEC = 00; /秒初值SEC100 = 0; /百分之一秒初值DIS_BUF7 = DIS_CODEHOUR / 10; / 时十位DIS_BUF6 = DIS_CODEHO

16、UR % 10; / 时个位DIS_BUF4 = DIS_CODEMIN / 10; / 分十位DIS_BUF3 = DIS_CODEMIN % 10; / 分个位DIS_BUF1 = DIS_CODESEC / 10; / 秒十位DIS_BUF0 = DIS_CODESEC % 10; / 秒个位DIS_BUF2 = 0Xbf; / 显示-DIS_BUF5 = 0Xbf; / 显示-DIS_DIGIT = 0XFE; /位选通值初值11111110先亮秒DIS_INDEX = 0; /当前显示的数码管、缓冲区的偏移量为0TCON = 0x01; /让定时器t0工作在01模式下IE = 0x8

17、a; / 使能TIMER0,1 中断TR0 = 1; /启动定时器0TR1 = 1; /启动定时器1KEY_V = 0X03; /两个按键都释放while(1)if(SCAN_KEY()/扫描按键DELAYMS(10); /延时去抖动if(SCAN_KEY()/再次扫描KEY_V = KEY_S; /保存键值PROC_KEY();/键处理bit SCAN_KEY()/扫描按键 KEY_S = 0x00; /将KEY_S值清零KEY_S |= K2; /KEY_S的最低位和k2相或KEY_S 59) /当分大于59时MIN = 0; /分归零DIS_BUF4 = DIS_CODEMIN / 10

18、; / 分十位DIS_BUF3 = DIS_CODEMIN % 10; / 分个位EA = 1; /打开中断void timer0() interrupt 1 / 定时器0中断服务程序, 用于数码管的动态扫描TH0 = 0xfc;TL0 = 0x17;P1 = 0x00; / 先关闭所有数码管P0 = DIS_BUFDIS_INDEX; / 显示代码传送到P0口P1 = DIS_DIGIT; /传送到p1口用于选通当前数码管数值DIS_DIGIT = _crol_(DIS_DIGIT,1); DIS_INDEX+; /位选通值左移, 下次中断时选通下一位数码管DIS_INDEX &= 0x07

19、; / 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描void timer1() interrupt 3/定时器1中断服务程序, 用于数码管的动态扫描TH1 = 0xdc;SEC100+;/百分之一秒加1if(SEC100 = 100) /如果百分之一秒大于100SEC100 = 0; /百分之一秒为0INC_SEC();/输入秒void INC_SEC()/秒函数SEC+;/秒加1if(SEC 59) /如果秒大于59 SEC = 0; /秒为0INC_MIN();/输入分DIS_BUF1 = DIS_CODESEC / 10; / 秒十位DIS_BUF0 = DIS_CODESE

20、C % 10; / 秒个位void INC_MIN()/分函数MIN+;/分加1if(MIN 59) /如果分大于59 MIN = 0; /分为0 INC_HOUR();/输入时DIS_BUF4 = DIS_CODEMIN / 10; / 分十位DIS_BUF3 = DIS_CODEMIN % 10; / 分个位void INC_HOUR()/输入时HOUR+;/时加1if(HOUR 23) /如果时大于23 HOUR = 0; /时为0if(HOUR 9) /如果时大于9DIS_BUF7 = DIS_CODEHOUR / 10; / 时十位elseDIS_BUF7 = 0xff; / 当小时

21、的十位为0时不显示DIS_BUF6 = DIS_CODEHOUR % 10; / 时个位void DELAYMS(unsigned char MS) / 延时子程序unsigned char I;while(MS-)/每一次循环1msfor(I = 0; I 120; I+);/最大循环120次五、心得体会我在这一次数字电子钟的设计过程中,通过对自己学习过的知识的回顾,充分发挥对所学知识的理解和对实习项目的思考,完成了这次生产实习,这为自己今后进一步深化学习积累宝贵的经验。经过二十天的实习,我学到了很多,我知道了STC89C52在整个时钟电路中的作用以及各部分电路的原理。我们主要由两部分内容,

22、首先,由老师讲解单片机各部分的功能及特点,我们将发到手里的元器件组装焊接成完整的单片机开发板。第二部分就是在焊接完成的基础上进行软件编程并实现一定功能以完成一个系统设计。因为有了去年焊接收音机的基础所以焊接对于我来说并不是件难事,轻而易举就解决了。撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。随着社会发展,我们的生活对数字电子产品的需求日趋强烈。通过这次对单片机发展前景的展望,充分认识到单片机在我们生活和工业领域应用的重要性。特别是对单片机实验板的亲手焊接,认识到理论与实践之间的差距,也知道了理论和实际想结合的重要性,也从中学到了很多的书本上无法学到的知识。学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。这次生产实习中,感谢老师的悉心指导和严格要求,让我们获得了丰富的电子工艺理论知识,极大地提高了实践动手能力。指导教师评语及成绩评定: 成绩: 指导教师签字: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号