大工15春《单片机原理与应用》大作业题目与答案.docx

上传人:b****0 文档编号:12870910 上传时间:2023-04-22 格式:DOCX 页数:28 大小:306.30KB
下载 相关 举报
大工15春《单片机原理与应用》大作业题目与答案.docx_第1页
第1页 / 共28页
大工15春《单片机原理与应用》大作业题目与答案.docx_第2页
第2页 / 共28页
大工15春《单片机原理与应用》大作业题目与答案.docx_第3页
第3页 / 共28页
大工15春《单片机原理与应用》大作业题目与答案.docx_第4页
第4页 / 共28页
大工15春《单片机原理与应用》大作业题目与答案.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

大工15春《单片机原理与应用》大作业题目与答案.docx

《大工15春《单片机原理与应用》大作业题目与答案.docx》由会员分享,可在线阅读,更多相关《大工15春《单片机原理与应用》大作业题目与答案.docx(28页珍藏版)》请在冰豆网上搜索。

大工15春《单片机原理与应用》大作业题目与答案.docx

大工15春《单片机原理与应用》大作业题目与答案

 

网络教育学院

《单片机原理及应用》大作业

 

 

题目:

基于51单片机的电子时钟设计

学习中心:

江苏南通海门

层次:

高起专

专业:

机械制造与自动化

年级:

14年春季

学号:

学生姓名:

2015年9月份《单片机原理及应用》大作业具体要求:

1作业内容

从以下五个题目中任选其一作答。

2正文格式

作业正文内容统一采用宋体,字号为小四,字数在2000字以上。

3.作业提交

学生需要以附件形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业,点“上交”即可。

如下图所示。

4.截止时间

2015年9月1日。

在此之前,学生可随时提交离线作业,如需修改,可直接上传新文件,平台会自动覆盖原有文件。

5.注意事项

请同学独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!

 

题目一:

单片机电子时钟设计

准则:

设计一个基于51单片机或STM单片机的电子时钟,并且能够实现时分秒的显示和调节

撰写要求:

(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;

(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;

(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;

(4)总结:

需要说明的问题以及设计的心得体会。

 

 

第一章基于51系列单片机的电子时钟

设计与制作的概述

前言

目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。

下面是单片机的主要发展趋势。

单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。

从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。

这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

经多方查阅资料、反复论证设计出了这款简单实用的单片机电子时钟。

1.设计任务与要求

(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;

(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;

(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;

(4)总结:

需要说明的问题以及设计的心得体会。

2.方案设计选择

根据上述设计要求,结合现有元件,利用集成芯片完成具有以上功能的电路。

1)由于需要准确显示时钟日历(年月日时分秒),这里对于显示的选择比较:

(1)数码管显示,优点价格便宜,但是不能显示复杂的英文,显示出来很大,布线不易,不美观。

(2)LCD1602,价格适中,可以显示复杂的英文,功耗不大,外观较小,计较符合

(3)LCD12864,彩屏,如果用这些,可以显示中文,还用一些图片,但是价格较高,秉着合理利用的原则,不大材小用,决定放弃。

2)由于需要准确显示时钟日历(年月日时分秒),这里对应时钟的选择作出比较:

(1)可以利用单片机自己自带的定时器精确定时,在通过软件控制,这样就减少了硬件的成本,但是这样需要晶振绝对的稳定,而且掉电数据不保存,还没有年月星期的自动调整功能,对程序的要求很高,不易控制.

(2)DS1302它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。

不必在程序上做太多的处理,与单片机的接口简单,掉电有备用电池用来供电保存数据。

所以非常适合要求

3)单片机的选型

(1)DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。

它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。

它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

但是对于我们来说,一个是它需要你熟悉它,会运用,这个我们还没有达到。

就算我们会用,在一个问题是价格贵,买不起,封装不是DIP的,不易实验,所以又是大材小用,很没有必要选择这么高级的。

(2)AT89S82是一款非常流行的单片机了,很适合我们的任务所需,但是他的下载电路并不是那么的简单,再说这个是国外生产的,何必用呢?

(3)STC89C52RC是非常值得推荐的,STC是在深圳的一家8051单片机设计生产公司。

STC系列的单片机现在在中国的51单片机市场上占有较大比例。

宏晶科技现已成长为全球最大的8051单片机设计公司,完完全全的中国制造,它是AT89S52的增强版本,技术成熟,运用稳定,下载电路非常方便,很适合我们选择用

5V电源

STC89C52RC

3.系统主要方框图

按键

液晶显示

时钟芯片

 

第二章硬件单元电路设计与参数计算

1.电源电路

图中J1为电源插座,S5为带锁开关,要特别主意这来个的封装,很容易错。

利用外部电源直接提供5V直流电源接入电源接口,再通过带锁开关控制导通情况。

图中LED起到指示作用,当通电时亮,电阻为限流作用一般接220

~1K

,不接后果很严重,LED只亮一下。

2.单片机最小系统电路

关于最小系统和STC89C52RC单片机的介绍网上有很多,非常容易搜到,这里就不累赘!

这里讨论几个问题:

1)要使STC89C52RC复位需要两个机器周期的高电平,我们用的是12M晶振,那么一个机器周期为1/12M=1uS,当S4按下时,C3迅速导通通电,此时9脚为高电平,松开后电容要电,起到延时的作用,t=C3*(R8+R2)=0.11S>2uS,足够为复位提供搞电平

2)三点式电容震荡是单片机所用到的,这里只是外面接两个电容而已,电容要求小于47P,,一般晶振不大于48M

3)相对余AT的单片机STC下载简单多了,这里只是引出了四条线,分别为VCC,GND,TXD,RXD,只需四根线就可以完成下载,而却可以通过引出的端口对板上供电。

3.按键电路

 

 

按键电路主要是别忘了加上拉电阻,要不就不稳定了,这里用了四个按键作为功能键,一个按键作为复位键对应分别为:

S0功能选择,S1减,S2加,S3确认,S4复位。

4.时钟电路

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。

DS1302的外部引脚分配如图1所示及内部结构如图2所示。

DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

1.各引脚的功能为:

Vcc1:

主电源;Vcc2:

备份电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2

SCLK:

串行时钟,输入,控制数据的输入与输出;

I/O:

三线接口时的双向数据线;

CE:

输入信号,在读、写数据期间,必须为高。

该引脚有两个功能:

第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。

5.LCD1602显示电路

LCD1602可以显示16*2=32个字符,也可以用来显示一些汉字图片(利用取模软件提取),原理图中的可调电阻是用来调节字符显示的亮度的,调节是要有耐心,应为用到的是精密可调电阻,这个需要转很多圈,不容易显示出来,注意不能跳到太亮,要不很容易烧掉液晶,下面为接口说明,一般不显示很可能是程序的问题和可调电阻没有调节好,至于介绍网上很容易找到。

 

 

6.软件设计流程图

N

 

Y

 

7.总原理图

 

第三章仿真测试

(1)首先在protues中仿真调好,在程序中要特别注意与硬件中引脚对应上

(2)按键的测试比较简单,只要你对应的按键能够实现相应的功能就可以,不可以,那么肯定是硬件或者连接线的问题了。

(3)元件清单

原件名称

数量

原件名称

数量

STC89C52RC

1

103可调电阻

1

DS1302

1

102排阻(9脚)

1

DS1302

1

4.7KΩ电阻

1

LCD1602

1

10KΩ电阻

2

32.768K晶振

30P电容

2

12M晶振

1

4.7Ω电阻

1

小按键

1

10uF电容

2

470Ω电阻

1

104电容

3

100uF电容

2

470uF电容

2

1KΩ电阻

1

2

第四章程序

.ORG0000H;程序开始入口

LJMPSTART

ORG0003H;外中断0中断程序入口

RETI

ORG000BH;定时器T0中断程序入口

LJMPINTT0;跳至INTTO执行

ORG0013H;外中断1中断程序入口

RETI

ORG001BH;定时器T1中断程序入口

LJMPINTT1

ORG0023H;串行中断程序入口地址

RETI

;---------------主程序----------------------;

START:

MOVR0,#70H;70给R0,清70-7FH显示内存

MOVR7,#0FH

CLEARDISP:

MOV@R0,#00H;0给R0中的数为地址的内存中存放(70H)

INCR0

DJNZR7,CLEARDISP

MOV78H,#2;默认时间为12:

00,闹钟5:

00

MOV79H,#1

MOV74H,#2;防止上电时数码管显示00小时

MOV75H,#1

MOV66H,#1;中断退出时66H为1时,分、时计时单元数据移入显存标志

MOV68H,#1;上电默认闹钟开状态

MOV7DH,#6;闹钟时十位

MOV7CH,#3

MOV69H,#0

MOV7AH,#0AH;放入"熄灭符"数据

MOVTMOD,#11H;设T0、T1为16位定时器

MOVTL0,#0B0H;50MS定时初值(T0计时用)

MOVTH0,#3CH

SETBEA;总中断开放

SETBET0;允许T0中断

SETBTR0;T0定时器开始计时

MOVR4,#14H;1秒定时用初值(50MS×20)

START1:

LCALLDISPLAY;显示子程序

LCALLBEEP;闹钟查询

JNBP1.7,SETTIME;P1.7口为0时转时间调整程序

JMPSTART1;P1.7口为1时跳回START1

;-----------------------时间闹钟调整系统--------------------------;

NFLAG:

MOVA,68H;设置闹钟开关状态

CJNEA,#1,BEE68

MOV68H,#0

JMPE6

BEE68:

MOV68H,#1

E6:

MOV66H,#8;中断退出66H不为1时分、时计时单元数据移入显存标志

MOV72H,7BH

MOV73H,7CH

MOV74H,7DH

MOV75H,7EH

LCALLDDL

LCALLDDL

MOV72H,68H

MOV73H,69H

MOV74H,7AH

MOV75H,7AH

LCALLDDL

LCALLDDL

MOV66H,#1

LJMPSTART1

SETTIME:

LCALLDDL

JBP1.7,NFLAG;键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,确保准确,大于1秒调时

MOVTL1,#0B0H;T1闪烁定时初值

MOVTH1,#3CH

MOVR2,#06H;进入调时状态,赋闪烁定时初值

MOV66H,#8;调闹钟时保持走时,关闭时钟显示数据

SETBET1;允许T1中断

SETBTR1;开启定时器T1

SET1:

LCALLDISPLAY;调用显示,防止键按下无显示

JNBP1.7,SET1;P1.7口为0等待键释放

MOVR5,#00H;清设置类型闪烁标志

SETN1:

INCR5;闹钟分调整

SET5:

LCALLDISPLAY

JBP1.7,SET5

SEETN1:

LCALLDDL;有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态

JBP1.7,SET6;键释放查询,键释放自动转调时

MOVR0,#7CH

LCALLADD1

MOVA,R3

CLRC

CJNEA,#60H,HHN1

HHN1:

JCSEETN1

LCALLCLR0

JMPSEETN1

SET6:

INCR5;闹钟时调整

SEET6:

LCALLDISPLAY

JBP1.7,SEET6

SEETNH1:

LCALLDDL

JBP1.7,SETF

MOVR0,#7EH

LCALLADD1

MOVA,R3

CLRC

CJNEA,#24H,HOUU1

HOUU1:

JCSEETNH1

LCALLCLR0

JMPSEETNH1

SETF:

LCALLDISPLAY

JBP1.7,SETF

LCALLDDL

JNBP1.7,SETOUT;短按调时,长按退出

CLRET0

CLRTR0

MOV70H,#00H;设定后的时间从00秒开始走时

MOV71H,#00H

INCR5

SET3:

LCALLDISPLAY

JBP1.7,SET3

SETMM:

LCALLDDL

JBP1.7,SET4

MOVR0,#77H

LCALLADD1

MOVA,R3

CLRC

CJNEA,#60H,MMH

MMH:

JCSETMM

LCALLCLR0

AJMPSETMM

SET4:

INCR5

SEET4:

LCALLDISPLAY

JBP1.7,SEET4

SETHH:

LCALLDDL

JBP1.7,SETOUT1

MOVR0,#79H

LCALLADD1

MOVA,R3

CLRC

CJNEA,#24H,HOUU

HOUU:

JCSETHH

LCALLCLR0

AJMPSETHH

SETOUT1:

SETBET0

SETBTR0;计时开始

SETOUT:

MOVR5,#00H;清设置类型闪烁标志

CLRTR1;关闭T1

CLRET1;关T1中断

MOV66H,#1

SETOUT2:

LCALLDISPLAY

JNBP1.7,SETOUT2

LJMPSTART1

;--------------------------延时1秒钟-----------------------;

DDL:

MOV18H,#36

DDL0:

MOV17H,#239

DDL1:

LCALLDISPLAY

DJNZ17H,DDL1

DJNZ18H,DDL0

RET

;----------------------------T0中断程序------------------------;

INTT0:

PUSHACC;打包

PUSHPSW

CLRET0

CLRTR0

MOVA,#0B7H

ADDA,TL0

MOVTL0,A

MOVA,#3CH

ADDCA,TH0

MOVTH0,A

SETBTR0

DJNZR4,OUTT0;20次中断未到中断退出

ADDSS:

MOVR4,#14H;20次中断到(1秒)重赋初值

MOVR0,#71H;指向秒计时单元(70-71H)

ACALLADD1;调用加1程序(加1秒操作)

MOVA,R3;秒数据放入A(R3为2位十进制数组合)

CLRC;清进位标志

CJNEA,#60H,ADDMM

ADDMM:

JCOUTT01;小于60秒退出

ACALLCLR0;等于或大于60秒清0

MOVR0,#77H;指向分计时单元(76H-77H)

ACALLADD1

MOVA,R3

CLRC

CJNEA,#60H,ADDHH

ADDHH:

JCOUTT0

ACALLCLR0

MOVR0,#79H;指向小时计时单元(78H-79H)

ACALLADD1

MOVA,R3

CLRC

CJNEA,#24H,HOUR

HOUR:

JCOUTT0

ACALLCLR0

OUTT0:

MOVA,66H;查询标志

CJNEA,#1,OUTT01

MOV72H,76H;中断退出时将分、时计时单元数据移入对应显示单元

MOV73H,77H

MOV74H,78H

MOV75H,79H

OUTT01:

POPPSW;出栈

POPACC

SETBET0;开放T0

RETI;中断返回

;---------------------------加1程序--------------------------;

ADD1:

MOVA,@R0;取当前计时单元数据到A

DECR0;指向前一地址

SWAPA;A中数据高四位与低四位交换

ORLA,@R0;前一地址中数据放入A中低四位

ADDA,#01H;A加1操作

DAA;十进制调整

MOVR3,A;移入R3寄存器

ANLA,#0FH;高四位变0

MOV@R0,A;放回前一地址单元

MOVA,R3;取回R3中暂存数据

INCR0;指向当前地址单元

SWAPA;A中数据高四位与低四位交换

ANLA,#0FH;高四位变0

MOV@R0,A;数据放入当削地址单元中

RET

CLR0:

CLRC

CLRA;清累加器

MOV@R0,A;清当前地址单元

DECR0;指向前一地址

MOV@R0,A;前一地址单元清0

RET;子程序返回

;-------------------------调时闪烁程序----------------------;

INTT1:

PUSHACC

PUSHPSW

MOVTL1,#0B0H

MOVTH1,#3CH

DJNZR2,INTT1OUT;0.3秒未到退出中断(50MS中断6次)

MOVR2,#06H;重装0.3秒定时用初值

CPL02H;0.3秒定时到对闪烁标志取反

JB02H,FLASH1;02H位为1时显示单元"熄灭"

MOVA,R5

CJNEA,#01H,NL

JMPNNN1

NL:

CJNEA,#02H,NL1

LJMPNNN1

NL1:

CJNEA,#03H,NL2

LJMPNLL

NL2:

CJNEA,#04H,INTT1OUT

LJMPNLL

NLL:

MOV72H,76H

MOV73H,77H

MOV74H,78H

MOV75H,79H

AJMPINTT1OUT

NNN1:

MOV72H,7BH

MOV73H,7CH

MOV74H,7DH

MOV75H,7EH

INTT1OUT:

POPPSW;恢复现场

POPACC

RETI;中断退出

FLASH1:

MOVA,R5

CJNEA,#01H,ML

LJMPMNN1

ML:

CJNEA,#02H,ML1

LJMPMNN2

ML1:

CJNEA,#03H,MN

LJMPMLL

MN:

CJNEA,#04H,INTT1OUT

LJMPMHL

MLL:

MOV72H,7AH

MOV73H,7AH;显示单元(72-73H),将不显示分数据

MOV74H,78H

MOV75H,79H

AJMPINTT1OUT

MHL:

MOV72H,76H

MOV73H,77H

MOV74H,7AH;显示单元(74-75H),小时数据将不显示

MOV75H,7AH

AJMPINTT1OUT

MNN1:

MOV72H,7AH

MOV73H,7AH;显示单元(72-73H),将不显示闹钟分数据

MOV74H,7DH

MOV75H,7EH

AJMPINTT1OUT

MNN2:

MOV72H,7BH

MOV73H,7CH

MOV74H,7AH

MOV75H,7AH;显示单元(74-75H),闹钟小时数据将不显示

AJMPINTT1OUT

;-------------------------显示-------------------------------;

DISPLAY:

MOVDPTR,#DISDATA

MOVA,70H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.0

NOP

NOP

NOP

SETBP1.0

MOVA,71H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.1

NOP

NOP

NOP

SETBP1.1

MOVA,72H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.2

NOP

NOP

NOP

SETBP1.2

MOVA,73H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.3

NOP

NOP

NOP

SETBP1.3

MOVA,74H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.4

NOP

NOP

NOP

SETBP1.4

MOVA,75H

MOVCA,@A+DPTR

MOVP3,A

CLRP1.5

NOP

NOP

NOP

SETBP1.5

RET

BEEP:

MOVA,68H;查询标志

CJNEA,#1,BEERE

MOVA,78H;查询闹钟时个位

CJNEA,7DH,BEERE

MOVA,79H;查询闹钟时十位

CJNEA,7EH,BEERE

MOVA,76H;查询闹钟分个位

CJNEA,7BH,BEERE

MOVA,77H;查询闹钟分十位

CJNEA,7CH,BEERE

BB:

CLRP1.6

LCALLDDL

SETBP1.6

LCALLDDL

JNBP1.7,BEERR

BEERE:

RET

BEERR:

SETBP1.6

MOV68H,#0

LCALLDISPLAY

JNBP1.7,BEERR

JMPBEERE

DISDATA:

DB0C0H,0F9H,64H,70H,59H

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1