单片机课程设计报告书模板.docx
- 文档编号:27644297
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:31
- 大小:145.87KB
单片机课程设计报告书模板.docx
《单片机课程设计报告书模板.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告书模板.docx(31页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告书模板
西南科技大学
2011级微机原理与接口技术
课程设计报告
课题名称
微机原理与接口技术
姓名
学号
院、系、部
制造科学与工程学院
专业
指导教师
2014年月日
一、设计任务及要求:
设计任务:
1、利用MCS-51内部定时器定时,编程实现年、月、日、时、分、秒的显示,显示格式为:
年月日:
10-06-18
时分秒:
09-12-35
也可自行设定显示格式,两部分可按键切换显示;
2、能按键调整日期、时间的数值;
3、可设定时间报警,报警的时间至少有2个,报警时应有报警指示。
4、要求至少调试出任务的前两项。
要求:
首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。
在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。
然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。
最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。
最后写出设计报告。
指导教师签名:
2014年月日
三、成绩
指导教师签名:
年月日
一、绪言…………………………………………………………………………………………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
7、结束语………………………………………………………………………………………20
8、参考文献……………………………………………………………………………………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内核的CMOS8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256bytes的随机存取数据存储器(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程序流程图
时间程序流程图
5C语言程序设计
程序清单:
设置变量缓冲区
SECEQU30H
MINEQU31H
HOUREQU32H
DAYEQU33H
MONEQU34H
YEAREQU35H
;*************************************************************************
ORG0000H
LJMPMAIN
ORG000BH
LJMPINT_T0
ORG0030H
MAIN:
LCALLCHUSHI
MOVTMOD,#01H
MOVTH0,#4CH
MOVTL0,#00H
MOVIE,#82H
SETBTR0;开启定时器T0
MOV50h,#00H;启用定时器T0的初始值
MOV37H,#0;显示日期和时间的标志
MOV38H,#0;12进制和24进制的标志
MOV39H,#23;默认时间为24进制
CLRF0;日历定时0和1的标志
LOOP:
MOVA,37H
JZSHIJIAN
MOVR1,#33H
LJMPBEGIN1
SHIJIAN:
MOVR1,#30H;初始化显示
BEGIN1:
MOVA,38H
JZJZ24
MOV39H,#11
LJMPBEGIN2
JZ24:
MOV39H,#23
BEGIN2:
LCALLDISPLAY
LCALLKEY;扫描键盘
CJNEA,#05H,DINGS;判断键值是否为5号键
LCALLDY1MS;若是,则实现调整LCALLTIAOT
LCALLTIAOT
LCALLDISPLAY
LJMPDOWN
DINGS:
CJNEA,#06H,QIEH;判断键值是否为6号键,定时
LCALLDY1MS;若是,则实现调整
CPLF0
JNBF0,DI0;F0=0,定时器0
LCALLDISHI1;F0=1,定时器1
LCALLDISPLAY
LJMPDOWN
DI0:
LCALLDISHI0
LCALLDISPLAY
LJMPDOWN
QIEH:
CJNEA,#07H,BIANH;判断键值是否为7号键,切换
LCALLDY1MS;若是,则切换显示,年月日与时分秒切换
LCALLDISPLAY
MOVA,37H
CPLA
MOV37H,A
LJMPDOWN
BIANH:
CJNEA,#08H,DOWN;判断是否为八号键,变换进制
LCALLDY1MS
LCALLDISPLAY
MOVA,38H
CPLA
MOV38H,A
DOWN:
LJMPloop
;调整子程序**********************************************************************
TIAOT:
pushacc
CLRPSW.1;初始化标志位
TOP1:
LCALLKEY;扫描键盘
CJNEA,#08H,PANFAN;判断键值是否为8号键,不是8键,则继续判断
CPLPSW.1;取反标志位
JBPSW.1,TC;标志位为1,调整时间change0
LCALLCHG1;标志位为0,调整日期change1
LCALLDISPLAY
LJMPTOP1
TC:
CLRTR0
LCALLCHG0
LCALLDISPLAY
PANFAN:
CJNEA,#5,TOP1
popacc
RET
;调整时间子程序******************************************************************
CHG0:
MOVR1,#30H
LCALLDISPLAY
LCALLKEY
S:
CJNEA,#01H,M;判断键值,是否为1号键
MOVR0,#SEC;键值为01,即1号键调整秒
MOVA,@R0;进制
CJNEA,#59,L0;判断秒是否为59
MOVSEC,#00;若是,秒清零
LCALLDISPLAY
LJMPCHG0
L0:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG0
M:
CJNEA,#02H,H;判断键值,是否为02H
MOVR0,#MIN;若是,即2号键,则调整分钟
MOVA,@R0
CJNEA,#59,L2;判断分是否为59
MOVMIN,#00;若是,分钟清零
LCALLDISPLAY
LJMPCHG0
L2:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG0
H:
CJNEA,#03H,K;判断键值,是否为03H
MOVR0,#HOUR;键值为03,即3号键调整小时
MOVA,@R0
CJNEA,39H,L4;判断小时是否为23
MOVHOUR,#00
LCALLDISPLAY
LJMPCHG0
L4:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG0
K:
CJNEA,#04H,CHG0
SETBTR0
RET
;调整日期**********************************************************************
CHG1:
MOVR1,#33H
LCALLDISPLAY
LCALLKEY
R:
CJNEA,#01H,Y;判断键值,是否为1H
MOVR0,#DAY;键值为01,调整日期
MOVA,@R0;进制
CJNEA,#31,B0;判断30
MOVDAY,#00
LCALLDISPLAY
LJMPCHG1
B0:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG1
Y:
CJNEA,#02H,N;判断键值,是否为2
MOVR0,#MON
MOVA,@R0
CJNEA,#12,B1;判断月是否12
MOVMON,#00
LCALLDISPLAY
LJMPCHG1
B1:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG1
N:
CJNEA,#03H,K1;判断键值,是否为FB
MOVR0,#YEAR;键值为3,调整年
MOVA,@R0
CJNEA,#99,B2
MOVYEAR,#0
LCALLDISPLAY
LJMPCHG1
B2:
INCA
MOV@R0,A
LCALLDISPLAY
LJMPCHG1
K1:
CJNEA,#04H,CHG1
RET
;第一次定时子程序*****************************************************************
DISHI0:
MOV40H,SEC;保存原值
MOV41H,MIN
MOV42H,HOUR
LCALLCHG0;调用调整子程序
MOV43H,SEC
MOV44H,MIN
MOV45H,HOUR
LCALLDI
RET
;第二次定时子程序*****************************************************************
DISHI1:
MOV40H,SEC
MOV41H,MIN
MOV42H,HOUR
LCALLCHG0
MOV46H,SEC
MOV47H,MIN
MOV48H,HOUR
LCALLDI
RET
DI:
MOVSEC,40H;恢复原值
MOVMIN,41H
MOVHOUR,42H
LCALLDISPLAY
RET
;定时器T0子程序*******************************************************************
INT_T0:
INC50h
movr5,50h
CJNER5,#20,DUAN11;判断是否到一秒
LJMPDUAN12
DUAN11:
LJMPNEXT0
DUAN12:
MOV50h,#0;若是,则重新初始化循环次数
MOVA,SEC
CJNEA,#59,DUAN21;判断秒是否为59
LJMPDUAN22
DUAN21:
LJMPN0
DUAN22:
MOVSEC,#00;若是则秒清零
lcalldisplay
MOVA,MIN
CJNEA,#59,DUAN31;判断分钟是否为59
LJMPDUAN32
DUAN31:
LJMPN1
DUAN32:
MOVMIN,#00;若是,则分钟清零
lcalldisplay
MOVA,HOUR
CJNEA,39H,DUAN41;判断小时是否23
LJMPDUAN42
DUAN41:
LJMPN2
DUAN42:
MOVHOUR,#00;若是,小时清零
lcalldisplay
MOVA,DAY
PUSHACC
MOVA,MON
CJNEA,#1,YUE3
POPACC
LJMPRR2
YUE3:
CJNEA,#3,YUE5;1,3,5,7,8,10,12月31天
POPACC
LJMPRR2
YUE5:
CJNEA,#5,YUE7
POPACC
LJMPRR2
YUE7:
CJNEA,#7,YUE8
POPACC
LJMPRR2
YUE8:
CJNEA,#8,YUE10
POPACC
LJMPRR2
YUE10:
CJNEA,#10,YUE12
POPACC
LJMPRR2
YUE12:
CJNEA,#12,YUE4
POPACC
LJMPRR2
YUE4:
CJNEA,#4,YUE6;4,6,9,11月30天
POPACC
LJMPRR1
YUE6:
CJNEA,#6,YUE9
POPACC
LJMPRR1
YUE9:
CJNEA,#9,YUE11
POPACC
LJMPRR1
YUE11:
CJNEA,#11,YUE2
POPACC
LJMPRR1
YUE2:
MOVA,YEAR;2月:
是闰年29天,是平年28天
MOVB,#4
DIVAB
MOVA,B
JZRYUE
PYUE:
POPACC
LJMPRR00
RYUE:
POPACC
LJMPRR01
RR00:
CJNEA,#28,N3
MOVDAY,#1
LCALLDISPLAY
LJMPRR3
RR01:
CJNEA,#29,N3
MOVDAY,#1
LCALLDISPLAY
LJMPRR3
RR1:
CJNEA,#30,N3
MOVDAY,#1
LCALLDISPLAY
LJMPRR3
RR2:
CJNEA,#31,N3
MOVDAY,#1
LCALLDISPLAY
LJMPRR3
RR3:
MOVA,MON
CJNEA,#12,N4;判断月份是否为11
MOVMON,#1;若是,则月份清零
lcalldisplay
MOVA,YEAR;年份加一
CJNEA,#99,N5
MOVYEAR,#0
lcalldisplay
LJMPNEXT0
N0:
INCA;否则,秒加一
MOVSEC,A
lcalldisplay
LCALLDFG
LJMPNEXT0
N1:
INCA;分钟加一
MOVMIN,A
lcalldisplay
LCALLDFG
LJMPNEXT0
N2:
INCA;小时加一
MOVHOUR,A
lcalldisplay
LCALLDFG
LJMPNEXT0
N3:
INCA;日期加一
MOVDAY,A
lcalldisplay
LJMPNEXT0
N4:
INCA;月份加一
MOVMON,A
lcalldisplay
LJMPNEXT0
N5:
INCA
MOVYEAR,A
LCALLDISPLAY
NEXT0:
MOVTH0,#4CH
MOVTL0,#00H
RETI
;判断是否到定时时间子程序********
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告书 模板