单片机课程设计报告书模板.docx

上传人:b****6 文档编号:7997689 上传时间:2023-05-12 格式:DOCX 页数:26 大小:147.24KB
下载 相关 举报
单片机课程设计报告书模板.docx_第1页
第1页 / 共26页
单片机课程设计报告书模板.docx_第2页
第2页 / 共26页
单片机课程设计报告书模板.docx_第3页
第3页 / 共26页
单片机课程设计报告书模板.docx_第4页
第4页 / 共26页
单片机课程设计报告书模板.docx_第5页
第5页 / 共26页
单片机课程设计报告书模板.docx_第6页
第6页 / 共26页
单片机课程设计报告书模板.docx_第7页
第7页 / 共26页
单片机课程设计报告书模板.docx_第8页
第8页 / 共26页
单片机课程设计报告书模板.docx_第9页
第9页 / 共26页
单片机课程设计报告书模板.docx_第10页
第10页 / 共26页
单片机课程设计报告书模板.docx_第11页
第11页 / 共26页
单片机课程设计报告书模板.docx_第12页
第12页 / 共26页
单片机课程设计报告书模板.docx_第13页
第13页 / 共26页
单片机课程设计报告书模板.docx_第14页
第14页 / 共26页
单片机课程设计报告书模板.docx_第15页
第15页 / 共26页
单片机课程设计报告书模板.docx_第16页
第16页 / 共26页
单片机课程设计报告书模板.docx_第17页
第17页 / 共26页
单片机课程设计报告书模板.docx_第18页
第18页 / 共26页
单片机课程设计报告书模板.docx_第19页
第19页 / 共26页
单片机课程设计报告书模板.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计报告书模板.docx

《单片机课程设计报告书模板.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告书模板.docx(26页珍藏版)》请在冰点文库上搜索。

单片机课程设计报告书模板.docx

单片机课程设计报告书模板

西南科技大学

2011级微机原理与接口技术

课程设计报告

 

课题名称

微机原理与接口技术

姓名

程艳明

学号

20116528

院、系、部

制造科学与工程学院

专业

机械设计制造及其自动化

指导教师

廖晓波

 

2014年6月6日

一、设计任务及要求:

设计任务:

1、利用双数码管显示从0~9的变化;

显示格式为:

00…55…99

2、锁存器当LE=0时,允许译码输出。

LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值;

3、按键可实行复位功能。

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、绪言

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。

本设计采用AT89C52单片机作为主要核心部件,附以上电复位电路,锁存电路及数码管显示电路组成。

数字钟已成为人们日常生活中:

必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

2、系统设计

2.1设计任务

1、利用双数码管显示从0~9的变化;

2、锁存器当LE=0时,允许译码输出。

LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值;

3、按键可实行复位功能。

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

;判断是否到定时时间子程序*******************************************************

DFG:

MOVA,SEC;判断是否到第一个定时时间

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2