单片机课程设计报告书模板_第1页
单片机课程设计报告书模板_第2页
单片机课程设计报告书模板_第3页
单片机课程设计报告书模板_第4页
单片机课程设计报告书模板_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、西南科技大学2011级微机原理与接口技术课程设计报告课题名称微机原理与接口技术姓 名学 号院、系、部制造科学与工程学院专 业指导教师2014年 月 日一、设计任务及要求: 设计任务:1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:年月日: 10-06-18时分秒:09-12-35也可自行设定显示格式,两部分可按键切换显示;2、能按键调整日期、时间的数值;3、可设定时间报警,报警的时间至少有 2个,报警时应有报警指示。4、要求至少调试出任务的前两项。要求:首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进 行硬件电路的初步设计,在计算机上画

2、出硬件电路图,在老师的指导下进行修正硬 件电路图,并对所涉及的参数进行计算。在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各 子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时 间切换等,以配合软件的设计。然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬 件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模 块的编制过程中要注意资源的衔接。最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要 逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个 最大的程序,最后无法查找错误。最

3、后写出设计报告。指导教师签名:2014年 月 日、成绩指导教师签名:年 月曰一、绪言1二、系统设计12.1系统整体流程图12.2日历时钟的控制方案论证12.3 单片机的选择方案论证22.4键盘选择方案论证22.5 显示模块的选择方案论证22.6 模块的选择方案论证2三、硬件电路设计23.1日历时钟的控制电路图23.2行列式键盘的设计33.3数码管显示电路的设计33.4蜂鸣器驱动电路的设计43.5主要元器件选择4四、 程序流程图5五、c语言程序设计5六、 日历时钟的控制器仿真 196.1 Keil 调试 196.2 Proteus 调试 197、 结束语 208、 参考文献 211、绪言近年来随

4、着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制 检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个 核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应 用对象特点的软件结合,加以完善。电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采 用AT89C51单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。 数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、

5、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。2、系统设计2.1设计任务1、利用MCS-5呐部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:年月日: 10-06-18时分秒: 09-12-35也可自行设定显示格式,两部分可按键切换显示;2、能按键调整日期、时间的数值;3、可设定时间报警,报警的时间至少有 2个,报警时应有报警指示。4、要求至少调试出任务的前两项。2.2方案比较与论证2.2.1系统整体流程图222电子密码锁的控制方案论证用4*3的行列式键盘组成0-9

6、数字键及确认键、删除键,从矩阵键盘输入 8位数密码, 起始密码由程序设定,输入完后按确定键开锁,取消键清除所有输入。用8位数码管组成显示电路提示信息,当输入密码时,只显示“-”,当密码位输入完毕按下确认键时,对输 入的密码与设定的密码进行比较,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。当密码不正确时,禁止按键输入 3秒,同时启动蜂鸣器发出“嘀、嘀”报警声。2.2.3单片机的选择方案论证方案一:采用可编程逻辑期间 CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、 规模大、密度高、体积小、稳定性高、10资源丰富、易于进行功能扩展。采用并行的输入 输出方式,提高了系统的处理

7、速度,适合作为大规模控制系统的控制核心。但本系统不需 要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑 我们放弃了此方案方案二:采用Atmel公司的AT89S52单片机作为控制器。AT89S52是一个低功耗,高性 能的51内核的CMO遛位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器, 具有256 bytes的随机存取数据存储器(RAM, 32个IO 口,2个16位可编程定时计数器。综合考虑,选择方案二,采用 Atmel公司的AT89S52单片机作为控制器。2.2.4键盘选择方案论证方案一:采用独立式键盘。由于各键相互独立,每个按键各接一根输入

8、线,通过检测 输入线的电平状态可以很容易的判断哪个按键被按下。此种键盘适用于按键较少或操作速 度较高的场合。但本题发挥部分要求12个功能键,按键数目较多,这就需要较多的输入 口线,而且电路结构复杂。故此方案不可取。方案二:采用行列式键盘。它由行线和列线组成,按键位于行列的交叉点上,行线信 号和列线信号分别通过两个接口和 CPU相连,通过行列扫描法判定按键的位置,此方案适 用于按键较多的场合。通过对电子密码锁题目的分析,采用 4*3行列式键盘。2.2.5显示模块的选择方案论证方案一:采用带字库LCD模块显示。能显示复杂的信息,具有质量轻,体积小,功耗 低,指令功能强,接口简单,可靠性强等优点,显

9、示内容丰富,图形美观,易于人机交流。但是价格昂贵方案二:采用LED数码管显示。数码管能显示数字和符号,但是占用 10 口资源较多, 对于简单的电路可以选用此方案。电子密码锁,电路简单,选用方案二,显示所需信息。226模块的选择方案论证当输入密码时,若密码正确,则开锁,此处用 LED发光二极管亮一秒钟做为提示。当 密码不正确时,禁止按键输入3秒,同时发出“嘀、嘀”报警声,为实现此功能我们选用 LED发光二极管和蜂鸣器混合使用。3硬件电路设计3.1电子密码锁控制电路图I 豔他 * 脅a图2电子密码锁控制线路图3.2行列式式键盘的设计键盘电路如图3所示。设计数字键09的键号依次为09,取消键的键号为

10、10,确认键的键号为11,键号可按键值二行首键号(0、4、8 12)+列键号(0、1、2、3) 公式计算。r- cd图3键盘电路3.3数码管显示电路的设计数码管驱动采用8 个共阴极数码管显示,由于单片机的驱动能力有限,采用74LC245作为数码管的驱动,在7段码输出线上串联100欧姆电阻起限流作用。其电路 如图3所示。t心m:U2Ahj/tflji POHM m in ppiflr hj.: rn-iiiiPt urti rr: rjn kH-.t, r K In图4数码管显示电路3.4蜂鸣器驱动电路的设计蜂鸣器的驱动采用NPN三极管2484来驱动,低电平有效。其电路如图5所示ru.o.LD

11、po.eyoe P0.7WDJ町血朋P2J/F?./A1DP2.S/A11 P2.4tf12 P2.5/A13 P2如聞斗322.一誇%O-LEO,TE,GR2_ Jzcaohm1rvZ Q1涮ET2484 uv m图5蜂鸣器电路图3.5主要元器件选择主要元器件选用型号和数量如表1所示:表1主要元器件清单序号材料名称规格型号数量元件代号1单片机AT89C511U12晶振12MHz1X13电容22PF2C1、C24键盘4*3125数码管MPX816蜂鸣器17发光二极管1D18驱动74LS451U29三级管24841Q110排阻10k1RP14程序流程图时间程序流程图5 C语言程序设计程序清单:

12、设置变量缓冲区SECEQU30HMINEQU31HHOUREQU32HDAYEQU33HMONEQU34HYEAREQU35H.*ORG0OOOHLJMPMAINORGOOOBHLJMPINT_TOORG0O3OH MAIN: LCALLCHUSHIMOVTMOD,#01H MOVTH0,#4CH MOVTL0,#00H MOVE,#82H SETBTR0 MOV50h,#00H MOX37H,#O MOV38H,#0 MOV39H,#23 CLRF0LOOP: MOV,37H JZ SHIJIAN MOVR1,#33H LJMPBEGIN1 SHIJIAN:MOVR1,#30H BEGIN1

13、:MOVA,38HJZ JZ24;开启定时器T0;启用定时器T0的初始值;显示日期和时间的标志;12进制和24进制的标志;默认时间为24进制;日历定时0和1的标志;初始化显示MOV39H,#11LJMPBEGIN2JZ24:MOV39H,#23BEGIN2:LCALL DISPLAYLCALL KEY CJNEA,#05H,DINGS LCALL DY1MS LCALLTIAOT LCALLDISPLAY LJMPDOWNDINGS: CJNEA,#06H,QIEH LCALL DY1MS CPLF0JNBF0,DI0 LCALLDISHI1 LCALLDISPLAY LJMPDOWNDI0:

14、LCALLDISHI0LCALLDISPLAY LJMP DOWNQIEH: CJNEA,#07H,BIANH LCALL DY1MS LCALLDISPLAY;扫描键盘;判断键值是否为5号键;若是,则实现调整LCALLTIAOT;判断键值是否为6号键,定时 ;若是,则实现调整;F0=0,定时器0;F0=1,定时器1;判断键值是否为7号键,切换;若是,则切换显示,年月日与时分秒切换MOV,37HCPLAMOX37H,ALJMPDOWNBIANH: CJNEA,#08H,DOWN ;判断是否为八号键,变换进制LCALL DY1MSLCALLDISPLAYMOVA,38HCPLAMOV38H,AD

15、OWN: LJMPloop;调整子程序*TIAOT: push acc;初始化标志位CLRPSW.1TOP1:LCALL KEY;扫描键盘CJNE A,#08H,PANFAN;判断键值是否为8号键,不是8键,则继续判断CPLPSW.1;取反标志位JB PSW.1,TC;标志位为1,调整时间change0LCALLCHG1 LCALLDISPLAYLJMP TOP1;标志位为0,调整日期change1TC:CLRTR0LCALLCHG0LCALLDISPLAYPANFAN: CJNEA,#5,TOP1pop accRET;调整时间子程序*CHG0:MOVR1,#30HS:LCALLDISPLAY

16、LCALLKEYCJNEA,#01H,M;判断键值,是否为1号键MOVR0,#SEC;键值为01,即1号键调整秒MOVA,R0;进制CJNEA,#59 ,L0;判断秒是否为59MOVSEC,#00;若是,秒清零L0:LCALLDISPLAYLJMPCHG0INC AM:MOVR0,A LCALLDISPLAY LJMPCHG0 CJNEA,#02H,H;判断键值,是否为02HMOVR0,#MIN;若是,即2号键,则调整分钟MOVA,R0CJNEA,#59 ,L2;判断分是否为59MOVMIN,#00;若是,分钟清零LCALLDISPLAYLJMPCHG0L2:INC AMOVR0,A LCAL

17、LDISPLAYLJMPCHG0H:CJNEA,#03H,K;判断键值,是否为03HMOVR0,#HOUR;键值为03,即3号键调整小时MOVA,R0CJNEA,39H,L4;判断小时是否为23MOVHOUR,#00LCALLDISPLAYLJMPCHG0L4:INC AMOVR0,A LCALLDISPLAY LJMPCHG0K:CJNEA,#04H,CHG0SETBTR0RET;调整日期*CHG1:MOVR1,#33H LCALLDISPLAY LCALL KEYR:CJNEA,#01H,Y;判断键值,是否为1HMOVR0,#DAY;键值为01,调整日期MOVA,R0;进制CJNEA,#3

18、1,B0;判断 30MOVDAY,#00LCALLDISPLAYLJMPCHG1B0:INC AMOVR0,ALCALLDISPLAYLJMPCHG1Y:CJNEA,#02H,N;判断键值,是否为2MOVR0,#MONMOVA,R0CJNEA,#12,B1;判断月是否12MOVMON,#00LCALLDISPLAYLJMPCHG1B1:INC AMOVRO,ALCALLDISPLAYLJMPCHG1N:;判断键值,是否为FB;键值为3,调整年CJNEA,#03H,K1MOVR0,#YEARMOVA,R0 CJNEA,#99,B2 MOVYEAR,#0 LCALLDISPLAY LJMPCHG1

19、B2:INC AMOVR0,A LCALLDISPLAY LJMPCHG1K1:CJNEA,#04H,CHG1RET;第一次定时子程序*DISHI0:MOV40H,SEC;保存原值MOV41H,MIN;调用调整子程序MOV42H,HOURLCALLCHG0MOV43H,SEC MOV44H,MIN MOV45H,HOUR LCALLDI RET;第二次定时子程序*DISHI1:MOV40H,SECMOV41H,MINMOV42H,HOURLCALLCHG0MOV46H,SECMOV47H,MINMOV48H,HOURLCALLDIRETDI:MOVSEC,40H;恢复原值MOVMIN,41HM

20、OVHOUR,42HLCALLDISPLAYRET;定时器T0子程序*INT_TO:INC 50hmov r5,50h CJNER5,#20,DUAN11 LJMPDUAN12DUAN11:LJMPNEXT0DUAN12:MOV50h,#0MOVA,SEC CJNEA,#59,DUAN21 LJMPDUAN22DUAN21:LJMPN0DUAN22:MOVSEC,#00Icall display MOVA,MIN CJNEA,#59,DUAN31 LJMPDUAN32DUAN31:LJMPN1DUAN32:MOVMIN,#00lcall display MOVA,HOUR CJNEA,39H,

21、DUAN41 LJMPDUAN42DUAN41:LJMPN2DUAN42:MOVHOUR,#00lcall display MOVAQAY PUSHACC MOVA,MON CJNEA,#1,YUE3 POPACCLJMPRR2YUE3: CJNEA,#3,YUE5 POPACCLJMPRR2YUE5: CJNEA,#5,YUE7 POPACCLJMPRR2YUE7: CJNEA,#7,YUE8 POPACCLJMPRR2YUE8: CJNEA,#8,YUE10 POPACCLJMPRR2YUE10: CJNEA,#10,YUE12 POPACCLJMPRR2;判断是否到一秒;若是,则重新初始

22、化循环次数;判断秒是否为59;若是则秒清零;判断分钟是否为59;若是,则分钟清零;判断小时是否23;若是,小时清零;1,3,5,7,8,10,12 月 31 天POPACCLJMPRR2YUE4:CJNEA,#4,YUE6POPACCLJMPRR1YUE6:CJNEA,#6,YUE9POPACCLJMPRR1YUE9:CJNEA,#9,YUE11POPACCLJMPRR1YUE11:CJNEA,#11,YUE2POPACCLJMPRR1YUE2:MOVA,YEARMOVB,#4 DIV AB MOVA,B JZ RYUEPYUE:POPACCLJMPRR00RYUE:POPACCLJMPRR0

23、1RROO:CJNEA,#28,N3 MOVDAY,#1 LCALLDISPLAY LJMPRR3RR01:CJNEA,#29,N3MOVDAY,#1 LCALLDISPLAY LJMPRR3RR1:CJNEA,#30,N3 MOVDAY,#1 LCALLDISPLAY LJMPRR3RR2:CJNEA,#31,N3MOVDAY,#1 LCALLDISPLAYLJMPRR3RR3:MOVA,MON CJNEA,#12,N4 MOVMON,#1 Icall display MOVA,YEARYUE12: CJNEA,#12,YUE4;4,6,9,11 月 30 天;2月:是闰年29天,是平年28

24、天;判断月份是否为11;若是,则月份清零;年份加一CJNEA,#99,N5 MOVYEAR,#0 Icall display LJMPNEXT0N0:INC AMOVSEC,A lcall display LCALLDFG LJMPNEXT0N1:INC AMOVMIN,A lcall display LCALLDFG LJMPNEXT0N2:INC AMOVHOUR,A lcall display LCALLDFG LJMPNEXT0N3:INC AMOVDAY,A lcall display LJMPNEXT0N4:INC AMOVMON,A lcall display LJMPNEXT0

25、N5:INC AMOVYEAR,A LCALLDISPLAYNEXT0: MOVTH0,#4CHMOVTL0,#00HRETI;判断是否到定时时间子程序;否则,秒加一;分钟加一;小时加一;日期加一;月份加一*DFG:MOVA,SECCJNEA,43H,DOWN1 MOVA,MINCJNEA,44H,DOWN1 MOVA,HOURCJNEA,45H,DOWN1CLRP3.6DOWN1: MOVA,SECCJNEA,46H,DOWN2MOVA,MIN;判断是否到第一个定时时间;若到第一个定时时间,则亮灯;判断是否到第二个定时时间CJNEA,47H,DOWN2 MOVA,HOUR CJNEA,48H

26、,DOWN2 CLRP3.6DOWN2: LCALLKEY LCALLDY1MS CJNEA,#O4H,DO setb p3.6DO:LCALLDISPLAYRET;延时1ms;若到第二个定时时间,则亮灯;扫描键盘;若键值为4号键,则灭灯*DY1MS:MOVR5,#0FAHLOOP7:NOPNOPDJNZR5,LOOP7RET;初始化CHUSHICHUSHI:MOVSEC,#0MOVMIN,#0MOVHOUR,#0MOVDAY,#26MOVMON,#1MOVYEAR,#11RET;子程序KSI:判定有无闭合键的*KSI:MOVA, #00HMOW1, A ;P2 口送 00HLCALLDY1M

27、SMOVA,P3CPLAANLA, #03H;屏蔽高6位RET;键盘扫描*key:LCALL KSI ;检查是否有键闭合JNZLK1LJMP END1LK1:LCALL DY1MSLCALL KSI ;再检查是否有键闭合JNZ LK2;有键闭合转移到LK2LJMP END1 ;无键闭合,延时12ms后转KEY1LK2:MOVA,#0FEHMOVP1,AMOVR3,AMOVR4,#00HLK4:MOVA,P3JB ACC.0, LONE ;ACC.3=1,第一列无键闭合,转 LONEMOV A, #01HlJMP LKPLONE:JB ACC.1, NEXT ;ACC.2=1,第二列无键闭合,转

28、 LTWOMOV A, #05HlJMP LKPLKP:ADD A, R4;计算键码PUSH ACC ;保护键码LK3:lCALL DY1MS;延时 1mslCALL KSI;检查是否继续闭合,若闭合再延时JNZLK3POP ACC ;若键起,则键码送ARETNEXT:INC R4MOVA,R3JNBACC.3,END1RLAMOVR3,AMOVP1,AlJMP LK4;进行下一列扫描END1:RET;显示子程序*DISPLAY: push accMOVR3,#03HMOVR2,#OFEHDISLOOP: MOVA,R2MOVP2,AMOVA,R1MOVB,#10DIV ABMOV36h,AM

29、OVA,BMOVDPTR,#KEYBOARD MOVCA,A+DPTR MOVP0,A ;显示低位 LCALLDY1MS MOVA,R2RLAMOVR2,AMOVP2,AMOVA,36hMOVDPTR,#KEYBOARD MOV(A,A+DPTR MOVP0,A ;显示高位LCALLDY1MSMOVA,R2RLAJNBACC.0,EXITMOVR2,AMOVP2,AMOVA,#10MOVDPTR,#KEYBOARDMOV(A,A+DPTRMOVP0,ALCALLDY1MSMOVA,R2RLAMOVR2,AINC R1DJNZR3QISLOOPEXIT:pop acc RET;断码值 *KEYB

30、OARDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH END6电子密码锁控制器仿真在完成了电子密码锁硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试 步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机 型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。6.1 Keil 调试6.2 Proteus 调试7结束语通过这次课程设计,使我得到了一次用专业知识和专业技能去分析问题、解决问题全 面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及用c语言设计程序的思路技巧

31、等方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基 础。8参考文献1.期刊类【格式】序号作者.篇名J.刊名,出版年份,卷号(期号):起止页码.【举例】1 王海粟.浅议会计信息披露模式J.财政研究,2004,21(1) : 56-58.2 夏鲁惠.高等学校毕业论文教学情况调研报告J.高等理科教育,2004(1):46-52.3 Heider, E.R.& D.C.Oliver. The structure of color space in naming and memory of two Ianguages J. Foreign Language Teaching and Research, 1999, (3):62 - 67.2.专著类【格式】序号作者.书名M.出版地:出版社,出版年份:起止页码.【举例】4葛家澍,林志军.现代西方财务会计理论M.厦门:厦门大学出版社,2001: 42.5 Gill, R. Mastering English Literature M. Lo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论