《单片机课程设计报告书模板_1.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告书模板_1.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机课程设计报告书模板西南科技大学2020级微机原理与接口技术课程设计报告课题名称微机原理与接口技术姓名学号院、系、部制造科学与工程学院专业指导老师2021年月日一、设计任务及要求:设计任务:1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:年月日:10-06-18时分秒:09-12-35可以自行设定显示格式,两部分可按键切换显示;2、能按键调整日期、时间的数值;3、可设定时间报警,报警的时间至少有2个,报警时应有报警指示。4、要求至少调试出任务的前两项。要求:首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算
2、机上画出硬件电路图,在教师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出具体的操作讲明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制经过中要注意资源的衔接。最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,进而到达设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。最后写出设
3、计报告。指导老师签名:2021年月日三、成绩指导老师签名:年月日目录一、绪言(1)二、系统设计(1)2.1系统整体流程图(1)2.2日历时钟的控制方案论证(1)2.3单片机的选择方案论证(2)2.4键盘选择方案论证(2)2.5显示模块的选择方案论证(2)2.6模块的选择方案论证(2)三、硬件电路设计(2)3.1日历时钟的控制电路图(2)3.2行列式键盘的设计(3)3.3数码管显示电路的设计(3)3.4蜂鸣器驱动电路的设计(4)3.5主要元器件选择(4)四、程序流程图(5)五、c语言程序设计(5)六、日历时钟的控制器仿真(19)6.1Keil调试(19)6.2Proteus调试(19)七、结束语
4、(20)八、参考文献(21)1、绪言近年来随着科技的飞速发展,单片机的应用正在不断地走向深化,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据详细硬件构造,以及针对详细应用对象特点的软件结合,加以完善。电子时钟是当代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采用AT89C51单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公
5、共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。2、系统设计2.1设计任务1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:年月日:10-06-18时分秒:09-12-35可以自行设定显示格式,两部分可按键切换显示;2、能按键调整日期、时间的数值;3、可设定时间报警,报警的时间至少有2个,报警时应有报警指示。4、要求至少调试出任务的前两项。2.2方案比拟与论证2.2.1系统整体流程图2.2.2电子密码锁的控制方案
6、论证人机接口显示电路软件控制程序电源电路单片机控制电路始密码由程序设定,输入完后按确定键开锁,取消键去除所有输入。用8位数码管组成显示电路提示信息,当输入密码时,只显示“-,当密码位输入完毕按下确认键时,对输入的密码与设定的密码进行比拟,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。当密码不正确时,禁止按键输入3秒,同时启动蜂鸣器发出“嘀、嘀报警声。2.2.3单片机的选择方案论证方案一:采用可编程逻辑期间CPLD作为控制器。CPLD能够实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,合适作为大
7、规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案方案二:采用Atmel公司的AT89S52单片机作为控制器。AT89S52是一个低功耗,高性能的51内核的CMOS8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256bytes的随机存取数据存储器RAM,32个IO口,2个16位可编程定时计数器。综合考虑,选择方案二,采用Atmel公司的AT89S52单片机作为控制器。2.2.4键盘选择方案论证方案一:采用独立式键盘。由于各键互相独立,每个按键各接一根输入线,通过检测输入线的电平状态能够
8、很容易的判定哪个按键被按下。此种键盘适用于按键较少或操作速度较高的场合。但此题发挥部分要求12个功能键,按键数目较多,这就需要较多的输入口线,而且电路构造复杂。故此方案不可取。方案二:采用行列式键盘。它由行线和列线组成,按键位于行列的穿插点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法断定按键的位置,此方案适用于按键较多的场合。通过对电子密码锁题目的分析,采用4*3行列式键盘。2.2.5显示模块的选择方案论证方案一:采用带字库LCD模块显示。能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机沟通。但是价格昂贵
9、。方案二:采用LED数码管显示。数码管能显示数字和符号,但是占用IO口资源较多,对于简单的电路能够选用此方案。电子密码锁,电路简单,选用方案二,显示所需信息。2.2.6模块的选择方案论证当输入密码时,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提示。当密码不正确时,禁止按键输入3秒,同时发出“嘀、嘀报警声,为实现此功能我们选用LED发光二极管和蜂鸣器混合使用。3硬件电路设计3.1电子密码锁控制电路图图2电子密码锁控制线路图3.2行列式式键盘的设计键盘电路如图3所示。设计数字键09的键号依次为09,取消键的键号为10,确认键的键号为11,键号可按键值行首键号0、4、8、12列键号0、1
10、、2、3公式计算。3.3数码管显示电路的设计数码管驱动采用8个共阴极数码管显示,由于单片机的驱动能力有限,采用74LC245作为数码管的驱动,在7段码输出线上串联100欧姆电阻起限流作用。其电路如图3所示。图4数码管显示电路3.4蜂鸣器驱动电路的设计蜂鸣器的驱动采用NPN三极管2484来驱动,低电平有效。其电路如图5所示。图5蜂鸣器电路图3.5主要元器件选择主要元器件选用型号和数量如表1所示:表1主要元器件清单序号材料名称规格型号数量元件代号1单片机AT89C511U12晶振12MHz1X13电容22PF2C1、C24键盘4*3126蜂鸣器17发光二极管1D18驱动74LS451U29三级管2
11、4841Q110排阻10k1RP14程序流程图时间程序流程图5C语言程序设计程序清单:设置变量缓冲区SECEQU30HHOUREQU32HDAYEQU33HMONEQU34HYEAREQU35H;*ORG0000HLJMPMAINORG000BHLJMPINT_T0ORG0030HMAIN:LCALLCHUSHIMOVTMOD,#01HMOVTH0,#4CHMOVTL0,#00HMOVIE,#82HSETBTR0;开启定时器T0MOV50h,#00H;启用定时器T0的初始值MOV37H,#0;显示日期和时间的标志MOV38H,#0;12进制和24进制的标志MOV39H,#23;默认时间为24进
12、制CLRF0;日历定时0和1的标志LOOP:MOVA,37HJZSHIJIANMOVR1,#33HLJMPBEGIN1SHIJIAN:MOVR1,#30H;初始化显示BEGIN1:MOVA,38HJZJZ24MOV39H,#11LJMPBEGIN2JZ24:MOV39H,#23BEGIN2:LCALLDISPLAYLCALLKEY;扫描键盘CJNEA,#05H,DINGS;判定键值能否为5号键LCALLDY1MS;若是,则实现调整LCALLTIAOTLCALLTIAOTLCALLDISPLAYLJMPDOWNDINGS:CJNEA,#06H,QIEH;判定键值能否为6号键,定时LCALLDY1
13、MS;若是,则实现调整CPLF0JNBF0,DI0;F0=0,定时器0LCALLDISHI1;F0=1,定时器1LCALLDISPLAYDI0:LCALLDISHI0LCALLDISPLAYLJMPDOWNQIEH:CJNEA,#07H,BIANH;判定键值能否为7号键,切换LCALLDY1MS;若是,则切换显示,年月日与时分秒切换LCALLDISPLAYMOVA,37HCPLAMOV37H,ALJMPDOWNBIANH:CJNEA,#08H,DOWN;判定能否为八号键,变换进制LCALLDY1MSLCALLDISPLAYMOVA,38HCPLAMOV38H,ADOWN:LJMPloop;调整
14、子程序*TIAOT:pushaccCLRPSW.1;初始化标志位TOP1:LCALLKEY;扫描键盘CJNEA,#08H,PANFAN;判定键值能否为8号键,不是8键,则继续判定CPLPSW.1;取反标志位JBPSW.1,TC;标志位为1,调整时间change0LCALLCHG1;标志位为0,调整日期change1LCALLDISPLAYLJMPTOP1TC:CLRTR0LCALLCHG0LCALLDISPLAYPANFAN:CJNEA,#5,TOP1popaccRET;调整时间子程序*CHG0:MOVR1,#30HLCALLDISPLAYLCALLKEYS:CJNEA,#01H,M;判定键值
15、,能否为1号键MOVR0,#SEC;键值为01,即1号键调整秒MOVA,R0;进制CJNEA,#59,L0;判定秒能否为59MOVSEC,#00;若是,秒清零L0:INCAMOVR0,ALCALLDISPLAYLJMPCHG0M:CJNEA,#02H,H;判定键值,能否为02HMOVR0,#MIN;若是,即2号键,则调整分钟MOVA,R0CJNEA,#59,L2;判定分能否为59MOVMIN,#00;若是,分钟清零LCALLDISPLAYLJMPCHG0L2:INCAMOVR0,ALCALLDISPLAYLJMPCHG0H:CJNEA,#03H,K;判定键值,能否为03HMOVR0,#HOUR;键值为03,即3号键调整小时MOVA,R0CJNEA,39H,L4;判定小时能否为23MOVHOUR,#00LCALLDISPLAYLJMPCHG0L4:INCAMOVR0,ALCALLDISPLAYLJMPCHG0K:CJNEA,#04H,CHG0SETBTR0RET;调整日期*CHG1:MOVR1,#33HLCALLDISPLAYLCALLKEYR:CJNEA,#01H,Y;判定键值,能否为1HMOVR0,#DAY;键值为01,调整日期MOVA,R0;进制CJNEA,#31,B0;判定30MOVDAY,#00LCALLDISPLAYLJMPCHG1B0:INCAMOVR0, A
限制150内