收藏 分销(赏)

单片机优秀课程设计优质报告书模板.doc

上传人:精*** 文档编号:2864568 上传时间:2024-06-07 格式:DOC 页数:28 大小:236.04KB 下载积分:10 金币
下载 相关 举报
单片机优秀课程设计优质报告书模板.doc_第1页
第1页 / 共28页
单片机优秀课程设计优质报告书模板.doc_第2页
第2页 / 共28页


点击查看更多>>
资源描述
西南科技大学 级微机原理和接口技术 课程设计汇报 课题名称 微机原理和接口技术 姓 名 学 号 院、系、部 制造科学和工程学院 专 业 指导老师 月 日 一、设计任务及要求: 设计任务: 1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒显示,显示格式为: 年月日: 10-06-18 时分秒: 09-12-35 也可自行设定显示格式,两部分可按键切换显示; 2、能按键调整日期、时间数值; 3、可设定时间报警,报警时间最少有2个,报警时应有报警指示。 4、要求最少调试出任务前两项。 要 求: 首优异行预设计,依据设计任务要求,先确定设计硬件电路方案,然后进行硬件电路初步设计,在计算机上画出硬件电路图,在老师指导下进行修正硬件电路图,并对所包含参数进行计算。 在确定硬件基础上,要进行软件总体设计,包含软件主步骤设计和各子程序设计,同时,要写出具体操作说明,如时间调整方法,显示窗口时间切换等,以配合软件设计。 然后进入硬件调试及编程工作,设计组内同学可依据任务分工,有调试硬件各功效模块,如键盘子程序、显示子程序等,有进行整体程序编制,各模块编制过程中要注意资源衔接。 最终进入联机调试,联机调试标准也要采取分步走标准,各个功效模块要逐步套入,经过一个再增加一项功效,从而达成设计总体要求,不要上来编制个最大程序,最终无法查找错误。 最终写出设计汇报。 指导老师署名: 月 日 三、成绩 指导老师署名: 年 月 日 目 录 一、 绪 言…………………………………………………………………………………………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.1 Keil调试………………………………………………………………………………19 6.2 Proteus调试……………………………………………………………………………19 七、 结束语………………………………………………………………………………………20 八、 参考文件……………………………………………………………………………………21 1、绪 言 多年来伴随科技飞速发展,单片机应用正在不停地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制单片机应用系统中,单片机往往是作为一个关键部件来使用,仅单片机方面知识是不够,还应依据具体硬件结构,和针对具体应用对象特点软件结合,加以完善。 电子时钟是现代社会中关键计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要各个方面,及对时间有要求场所。本设计采取AT89C51单片机作为关键关键部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为大家日常生活中: 必不可少必需品, 广泛用于个人家庭和车站、 码头、剧场、办公室等公共场所,给大家生活、学习、工作、娱乐带来极大方便。 因为数字集成电路技术发展和采取了优异石英技术,使数字钟含有走时正确、性 能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。 2、系统设计 2.1 设计任务 1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒显示,显示格式为: 年月日: 10-06-18 时分秒: 09-12-35 也可自行设定显示格式,两部分可按键切换显示; 2、能按键调整日期、时间数值; 3、可设定时间报警,报警时间最少有2个,报警时应有报警指示。 4、要求最少调试出任务前两项。 2.2 方案比较和论证 2.2.1 系统整体步骤图 人机接口 显示电路 软件控制程序 电源电路 单片机控制电路 2.2.2 电子密码锁控制方案论证 用4*3行列式键盘组成0-9数字键及确定键、删除键,从矩阵键盘输入8位数密码,起始密码由程序设定,输入完后按确定键开锁,取消键清除全部输入。用8位数码管组成显示电路提醒信息,当输入密码时,只显示“-”,当密码位输入完成按下确定键时,对输入密码和设定密码进行比较,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提醒。当密码不正确时,严禁按键输入3秒,同时开启蜂鸣器发出“嘀、嘀”报警声。 2.2.3 单片机选择方案论证 方案一:采取可编程逻辑期间CPLD 作为控制器。CPLD能够实现多种复杂逻辑功效、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功效扩展。采取并行输入输出方法,提升了系统处理速度,适合作为大规模控制系统控制关键。但本系统不需要复杂逻辑功效,对数据处理速度要求也不是很高,且从使用及经济角度考虑我们放弃了此方案 方案二:采取Atmel企业AT89S52单片机作为控制器。AT89S52是一个低功耗,高性能51内核CMOS 8位单片机,片内含8k空间可反复擦些1000次Flash只读存放器,含有256 bytes随机存取数据存放器(RAM),32个IO口,2个16位可编程定时计数器。 综合考虑,选择方案二,采取Atmel企业AT89S52单片机作为控制器。 2.2.4 键盘选择方案论证 方案一:采取独立式键盘。因为各键相互独立,每个按键各接一根输入线,经过检测输入线电平状态能够很轻易判定哪个按键被按下。此种键盘适适用于按键较少或操作速度较高场所。但本题发挥部分要求12个功效键,按键数目较多,这就需要较多输入口线,而且电路结构复杂。故此方案不可取。 方案二:采取行列式键盘。它由行线和列线组成,按键在行列交叉点上,行线信号和列线信号分别经过两个接口和CPU相连,经过行列扫描法判定按键位置,此方案适适用于按键较多场所。 经过对电子密码锁题目标分析,采取4*3行列式键盘。 2.2.5 显示模块选择方案论证 方案一:采取带字库LCD模块显示。能显示复杂信息,含有质量轻,体积小,功耗低,指令功效强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。不过价格昂贵。 方案二:采取LED数码管显示。数码管能显示数字和符号,不过占用IO口资源较多,对于简单电路能够选择此方案。 电子密码锁,电路简单,选择方案二,显示所需信息。 2.2.6 模块选择方案论证 当输入密码时,若密码正确,则开锁,此处用LED发光二极管亮一秒钟做为提醒。当密码不正确时,严禁按键输入3秒,同时发出“嘀、嘀”报警声,为实现此功效我们选择LED发光二极管和蜂鸣器混合使用。 3 硬件电路设计 3.1 电子密码锁控制电路图 图2 电子密码锁控制线路图 3.2 行列式式键盘设计 键盘电路图3所表示。设计数字键0~9 键号依次为0~9,取消键键号为10,确定键键号为11,键号可按键值=行首键号(0、4、8、12)+列键号(0、1、2、3)公式计算。 图3 键盘电路 3.3 数码管显示电路设计 数码管驱动采取8 个共阴极数码管显示, 因为单片机驱动能力有限,采取74LC245 作为数码管驱动,在7 段码输出线上串联100 欧姆电阻起限流作用。其电路图3所表示。 图4 数码管显示电路 3.4 蜂鸣器驱动电路设计 蜂鸣器驱动采取NPN 三极管2484 来驱动,低电平有效。其电路图5 所表示。 图5 蜂鸣器电路图 3.5 关键元器件选择 关键元器件选择型号和数量如表1所表示: 表1 关键元器件清单 序号 材料名称 规格型号 数量 元件代号 1 单片机 AT89C51 1 U1 2 晶振 12MHz 1 X1 3 电容 22PF 2 C1、C2 4 键盘 4*3 12 5 数码管 MPX8 1 6 蜂鸣器 1 7 发光二极管 1 D1 8 驱动 74LS45 1 U2 9 三级管 2484 1 Q1 10 排阻 10k 1 RP1 4 程序步骤图 时间程序步骤图 5 C语言程序设计 程序清单: 设置变量缓冲区 SEC EQU 30H MIN EQU 31H HOUR EQU 32H DAY EQU 33H MON EQU 34H YEAR EQU 35H ;************************************************************************* ORG 0000H LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0030H MAIN: LCALL CHUSHI MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H MOV IE,#82H SETB TR0 ;开启定时器T0 MOV 50h,#00H ;启用定时器T0初始值 MOV 37H,#0 ;显示日期和时间标志 MOV 38H,#0 ;12进制和24进制标志 MOV 39H,#23 ;默认时间为24进制 CLR F0 ;日历定时0和1标志 LOOP: MOV A,37H JZ SHIJIAN MOV R1,#33H LJMP BEGIN1 SHIJIAN:MOV R1,#30H ;初始化显示 BEGIN1: MOV A,38H JZ JZ24 MOV 39H,#11 LJMP BEGIN2 JZ24: MOV 39H,#23 BEGIN2: LCALL DISPLAY LCALL KEY ;扫描键盘 CJNE A,#05H,DINGS ;判定键值是否为5号键 LCALL DY1MS ;若是,则实现调整LCALL TIAOT LCALL TIAOT LCALL DISPLAY LJMP DOWN DINGS: CJNE A,#06H,QIEH ;判定键值是否为6号键,定时 LCALL DY1MS ;若是,则实现调整 CPL F0 JNB F0,DI0 ;F0=0,定时器0 LCALL DISHI1 ;F0=1,定时器1 LCALL DISPLAY LJMP DOWN DI0: LCALL DISHI0 LCALL DISPLAY LJMP DOWN QIEH: CJNE A,#07H,BIANH ;判定键值是否为7号键,切换 LCALL DY1MS ;若是,则切换显示,年月日和时分秒切换 LCALL DISPLAY MOV A,37H CPL A MOV 37H,A LJMP DOWN BIANH: CJNE A,#08H,DOWN ;判定是否为八号键,变换进制 LCALL DY1MS LCALL DISPLAY MOV A,38H CPL A MOV 38H,A DOWN: LJMP loop ;调整子程序********************************************************************** TIAOT: push acc CLR PSW.1 ;初始化标志位 TOP1: LCALL KEY ;扫描键盘 CJNE A,#08H,PANFAN ;判定键值是否为8号键,不是8键,则继续判定 CPL PSW.1 ;取反标志位 JB PSW.1,TC ;标志位为1,调整时间change0 LCALL CHG1 ;标志位为0,调整日期change1 LCALL DISPLAY LJMP TOP1 TC: CLR TR0 LCALL CHG0 LCALL DISPLAY PANFAN: CJNE A,#5,TOP1 pop acc RET ;调整时间子程序****************************************************************** CHG0: MOV R1,#30H LCALL DISPLAY LCALL KEY S: CJNE A,#01H,M ;判定键值,是否为1号键 MOV R0,#SEC ;键值为01,即1号键调整秒 MOV A,@R0 ;进制 CJNE A,#59,L0 ;判定秒是否为59 MOV SEC,#00 ;若是,秒清零 LCALL DISPLAY LJMP CHG0 L0: INC A MOV @R0,A LCALL DISPLAY LJMP CHG0 M: CJNE A,#02H,H ;判定键值,是否为02H MOV R0,#MIN ;若是,即2号键,则调整分钟 MOV A,@R0 CJNE A,#59,L2 ;判定分是否为59 MOV MIN,#00 ;若是,分钟清零 LCALL DISPLAY LJMP CHG0 L2: INC A MOV @R0,A LCALL DISPLAY LJMP CHG0 H: CJNE A,#03H,K ;判定键值,是否为03H MOV R0,#HOUR ;键值为03,即3号键调整小时 MOV A,@R0 CJNE A,39H,L4 ;判定小时是否为23 MOV HOUR,#00 LCALL DISPLAY LJMP CHG0 L4: INC A MOV @R0,A LCALL DISPLAY LJMP CHG0 K: CJNE A,#04H,CHG0 SETB TR0 RET ;调整日期********************************************************************** CHG1: MOV R1,#33H LCALL DISPLAY LCALL KEY R: CJNE A,#01H,Y ;判定键值,是否为1H MOV R0,#DAY ;键值为01,调整日期 MOV A,@R0 ;进制 CJNE A,#31,B0 ;判定30 MOV DAY,#00 LCALL DISPLAY LJMP CHG1 B0: INC A MOV @R0,A LCALL DISPLAY LJMP CHG1 Y: CJNE A,#02H,N ;判定键值,是否为2 MOV R0,#MON MOV A,@R0 CJNE A,#12,B1 ;判定月是否12 MOV MON,#00 LCALL DISPLAY LJMP CHG1 B1: INC A MOV @R0,A LCALL DISPLAY LJMP CHG1 N: CJNE A,#03H,K1 ;判定键值,是否为FB MOV R0,#YEAR ;键值为3,调整年 MOV A,@R0 CJNE A,#99,B2 MOV YEAR,#0 LCALL DISPLAY LJMP CHG1 B2: INC A MOV @R0,A LCALL DISPLAY LJMP CHG1 K1: CJNE A,#04H,CHG1 RET ;第一次定时子程序***************************************************************** DISHI0: MOV 40H,SEC ;保留原值 MOV 41H,MIN MOV 42H,HOUR LCALL CHG0 ;调用调整子程序 MOV 43H,SEC MOV 44H,MIN MOV 45H,HOUR LCALL DI RET ;第二次定时子程序***************************************************************** DISHI1: MOV 40H,SEC MOV 41H,MIN MOV 42H,HOUR LCALL CHG0 MOV 46H,SEC MOV 47H,MIN MOV 48H,HOUR LCALL DI RET DI: MOV SEC,40H ;恢复原值 MOV MIN,41H MOV HOUR,42H LCALL DISPLAY RET ;定时器T0子程序******************************************************************* INT_T0: INC 50h mov r5,50h CJNE R5,#20,DUAN11 ;判定是否到一秒 LJMP DUAN12 DUAN11: LJMP NEXT0 DUAN12: MOV 50h,#0 ;若是,则重新初始化循环次数 MOV A,SEC CJNE A,#59,DUAN21 ;判定秒是否为59 LJMP DUAN22 DUAN21: LJMP N0 DUAN22: MOV SEC,#00 ;若是则秒清零 lcall display MOV A,MIN CJNE A,#59,DUAN31 ;判定分钟是否为59 LJMP DUAN32 DUAN31: LJMP N1 DUAN32: MOV MIN,#00 ;若是,则分钟清零 lcall display MOV A,HOUR CJNE A,39H,DUAN41 ;判定小时是否23 LJMP DUAN42 DUAN41: LJMP N2 DUAN42: MOV HOUR,#00 ;若是,小时清零 lcall display MOV A,DAY PUSH ACC MOV A,MON CJNE A,#1,YUE3 POP ACC LJMP RR2 YUE3: CJNE A,#3,YUE5 ;1,3,5,7,8,10,12月31天 POP ACC LJMP RR2 YUE5: CJNE A,#5,YUE7 POP ACC LJMP RR2 YUE7: CJNE A,#7,YUE8 POP ACC LJMP RR2 YUE8: CJNE A,#8,YUE10 POP ACC LJMP RR2 YUE10: CJNE A,#10,YUE12 POP ACC LJMP RR2 YUE12: CJNE A,#12,YUE4 POP ACC LJMP RR2 YUE4: CJNE A,#4,YUE6 ;4,6,9,11月30天 POP ACC LJMP RR1 YUE6: CJNE A,#6,YUE9 POP ACC LJMP RR1 YUE9: CJNE A,#9,YUE11 POP ACC LJMP RR1 YUE11: CJNE A,#11,YUE2 POP ACC LJMP RR1 YUE2: MOV A,YEAR ;2月:是闰年29天,是平年28天 MOV B,#4 DIV AB MOV A,B JZ RYUE PYUE: POP ACC LJMP RR00 RYUE: POP ACC LJMP RR01 RR00: CJNE A,#28,N3 MOV DAY,#1 LCALL DISPLAY LJMP RR3 RR01: CJNE A,#29,N3 MOV DAY,#1 LCALL DISPLAY LJMP RR3 RR1: CJNE A,#30,N3 MOV DAY,#1 LCALL DISPLAY LJMP RR3 RR2: CJNE A,#31,N3 MOV DAY,#1 LCALL DISPLAY LJMP RR3 RR3: MOV A,MON CJNE A,#12,N4 ;判定月份是否为11 MOV MON,#1 ;若是,则月份清零 lcall display MOV A,YEAR ;年份加一 CJNE A,#99,N5 MOV YEAR,#0 lcall display LJMP NEXT0 N0: INC A ;不然,秒加一 MOV SEC,A lcall display LCALL DFG LJMP NEXT0 N1: INC A ;分钟加一 MOV MIN,A lcall display LCALL DFG LJMP NEXT0 N2: INC A ;小时加一 MOV HOUR,A lcall display LCALL DFG LJMP NEXT0 N3: INC A ;日期加一 MOV DAY,A lcall display LJMP NEXT0 N4: INC A ;月份加一 MOV MON,A lcall display LJMP NEXT0 N5: INC A MOV YEAR,A LCALL DISPLAY NEXT0: MOV TH0,#4CH MOV TL0,#00H RETI ;判定是否到定时时间子程序******************************************************* DFG: MOV A,SEC ;判定是否到第一个定时时间 CJNE A,43H,DOWN1 MOV A,MIN CJNE A,44H,DOWN1 MOV A,HOUR CJNE A,45H,DOWN1 CLR P3.6 ;若到第一个定时时间,则亮灯 DOWN1: MOV A,SEC ;判定是否到第二个定时时间 CJNE A,46H,DOWN2 MOV A,MIN CJNE A,47H,DOWN2 MOV A,HOUR CJNE A,48H,DOWN2 CLR P3.6 ;若到第二个定时时间,则亮灯 DOWN2: LCALL KEY LCALL DY1MS ;扫描键盘 CJNE A,#04H,DO ;若键值为4号键,则灭灯 setb p3.6 DO: LCALL DISPLAY RET ;延时1ms ********************************************************************** DY1MS: MOV R5,#0FAH LOOP7: NOP NOP DJNZ R5,LOOP7 RET ;初始化CHUSHI****************************************************************** CHUSHI: MOV SEC,#0 MOV MIN,#0 MOV HOUR,#0 MOV DAY,#26 MOV MON,#1 MOV YEAR,#11 RET ;子程序 KSI :判定有没有闭合键************************************************* KSI: MOV A, #00H MOV P1, A ;P2口送00H LCALL DY1MS MOV A,P3 CPL A ANL A, #03H ;屏蔽高6位 RET ;键盘扫描********************************************************************** key: LCALL KSI ;检验是否有键闭合 JNZ LK1 LJMP END1 LK1: LCALL DY1MS LCALL KSI ;再检验是否有键闭合 JNZ LK2 ;有键闭合转移到LK2 LJMP END1 ;无键闭合,延时12ms后转KEY1 LK2: MOV A,#0FEH MOV P1,A MOV R3,A MOV R4,#00H LK4: MOV A,P3 JB ACC.0, LONE ;ACC.3=1,第一列无键闭合,转LONE MOV A, #01H lJMP LKP LONE: JB ACC.1, NEXT ;ACC.2=1,第二列无键闭合,转LTWO MOV A, #05H lJMP LKP LKP: ADD A, R4 ;计算键码 PUSH ACC ;保护键码 LK3: lCALL DY1MS ;延时1ms lCALL KSI ;检验是否继续闭合,若闭合再延时 JNZ LK3 POP ACC ;若键起,则键码送A RET NEXT: INC R4 MOV A,R3 JNB ACC.3,END1 RL A MOV R3,A MOV P1,A lJMP LK4 ;进行下一列扫描 END1: RET ;显示子程序******************************************************************** DISPLAY: push acc MOV R3,#03H MOV R2,#0FEH DISLOOP: MOV A,R2 MOV P2,A MOV A,@R1 MOV B,#10 DIV AB MOV 36h,A MOV A,B MOV DPTR,#KEYBOARD MOVC A,@A+DPTR MOV P0,A ;显示低位 LCALL DY1MS MOV A,R2 RL A MOV R2,A MOV P2,A MOV A,36h MOV DPTR,#KEYBOARD MOVC A,@A+DPTR MOV P0,A ;显示高位 LCALL DY1MS MOV A,R2 RL A JNB ACC.0,EXIT MOV R2,A MOV P2,A MOV A,#10 MOV DPTR,#KEYBOARD MOVC A,@A+DPTR MOV P0,A LCALL DY1MS MOV A,R2 RL A MOV R2,A INC R1 DJNZ R3,DISLOOP EXIT: pop acc RET ;断码值*********************************************************************** KEYBOARD: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH END } 6 电子密码锁控制器仿真 在完成了电子密码锁硬件设计和软件设计以后,便进入系统调试阶段。系统调试步骤和方法基础上是相同,但具体细节和所采取开发系统和用户系统选择单片机型号相关,如可选择Keil软件进行软件调试,用Proteus软件完成硬件调试。 6.1 Keil调试 6.2 Proteus调试 7 结束语 经过这次课程设计,使我得到了一次用专业知识和专业技能去分析问题、处理问题全方面系统锻炼。使我在单片机基础原理、单片机应用系统开发过程,和用c语言设计程序思绪技巧等方面全部能向前迈了一大步,为以后成为合格应用型人才打下良好基础。 8 参考文件 1.期刊类 【格式】[序号]作者.篇名[J].刊名,出版年份,卷号(期号):起止页码. 【举例】 [1] 王海粟.浅议会计信息披露模式[J].财政研究,,21(1):56-58. [2] 夏鲁惠.高等学校毕业论文教学情况调研汇报[J].高等理科教育,(1):46-52. [3] Heider, E.R.& D.C.Oliver. The structure of color space in naming and memory of two languages [J]. Foreign Language Teaching and Research, 1999, (3): 62 – 67. 2.专著类 【格式】[序号]作者.书名[M].出版地:出版社,出版年份:起止页码. 【举例】[4] 葛家澍,林志军.现代西方财务会计理论[M].厦门:厦门大学出版社,:42. [5] Gill, R. Mastering English Literature [M]. London: Macmillan, 1985: 42-45. 3.报纸类 【格式】[序号]作者.篇名[N].报纸名,出版日期(版次). 【举例】 [6] 李大伦.经济全球化关键性[N]. 光明日报,1998-12-27(3). [7] French, W. Between Silences: A Voice from China[N]. Atlantic Weekly, 1987-8-15(33). 4.论文集 【格式】[序号]作者.篇名[C].出版地:出版者,出版年份:起始页码. 【举例】 [8] 伍蠡甫.西方文论选[C]. 上海:上海译文出版社,1979:12-17. [9] Spivak,G. “Can the Subaltern Speak?”[A]. In C.Nelson & L. Grossberg(eds.). Victory in Limbo: Imigism [C]. Urbana: University of Illinois Press, 1988, pp.271-313. [10] Almarza, G.G. Student foreign language teacher’s knowledge growth [A]. In D.Freeman and J.C.Richards (eds.). Teacher Learning in La
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服