大工17春《单片机原理及应用》大作业题目及答案汇编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络教育学院
《单片机原理及应用》大作业
题目:单片机的电子时钟设计
学习中心:浙江龙游奥鹏学习中心
层次:专升本
专业:电气工程及其自动化
年级: 16年春季
学号: 201604451977
学生姓名:李金阳
大工17春《单片机原理及应用》大作业具体要求:
1 作业内容
从以下五个题目中任选其一作答。
2 正文格式
作业正文内容统一采用宋体,字号为小四,字数在2000字以上。
3. 作业提交
学生需要以附件形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业,点“上交”即可。
如下图所示。
4. 截止时间
2017年9月6日。
在此之前,学生可随时提交离线作业,如需修改,可直接上传新文件,平台会自动覆盖原有文件。
5. 注意事项
请同学独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!
题目一:单片机电子时钟设计
准则:设计一个基于51单片机或STM单片机的电子时钟,并且能够实现时
分秒的显示和调节
撰写要求:(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件
功能分配、核心器件的选型等;
(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计
等;
(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软
件开发流程;
(4)总结:需要说明的问题以及设计的心得体会。
目录
第一章基于51系列单片机的电子时钟设计与制作的概述 (5)
1.设计任务与要求 (5)
2.方案设计选择 (5)
3.系统主要方框图 (7)
第二章硬件单元电路设计与参数计算 (7)
1.电源电路 (7)
2.单片机最小系统电路 (7)
3.按键电路 (8)
4.时钟电路 (9)
5.LCD1602显示电路 (10)
6.软件设计流程图 (11)
7.总原理图 (11)
第三章仿真测试 (12)
第四章程序 (19)
第五章心得体会 (19)
第一章基于51系列单片机的电子时钟
设计与制作的概述
前言
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
经多方查阅资料、反复论证设计出了这款简单实用的单片机电子时钟。
1.设计任务与要求
(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功能分配、核心器件的选型等;
(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件开发流程;
(4)总结:需要说明的问题以及设计的心得体会。
2.方案设计选择
根据上述设计要求,结合现有元件,利用集成芯片完成具有以上功能的电路。
1)由于需要准确显示时钟日历(年月日时分秒),这里对于显示的选择比较:
(1)数码管显示,优点价格便宜,但是不能显示复杂的英文,显示出来很大,布线不易,不美观。
(2)LCD1602,价格适中,可以显示复杂的英文,功耗不大,外观较小,计较符合
(3)LCD12864,彩屏,如果用这些,可以显示中文,还用一些图片,但是价格较高,秉着合理利用的原则,不大材小用,决定放弃。
2)由于需要准确显示时钟日历(年月日时分秒),这里对应时钟的选择作出比较:
(1)可以利用单片机自己自带的定时器精确定时,在通过软件控制,这样就减少了硬件的成本,但是这样需要晶振绝对的稳定,而且掉电数据不保存,还没有年月星期的自动调整功能,对程序的要求很高,不易控制.
(2)DS1302它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
不必在程序上做太多的处理,与单片机的接口简单,掉电有备用电池用来供电保存数据。
所以非常适合要求
3)单片机的选型
(1)DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
但是对于我们来说,一个是它需要你熟悉它,会运用,这个我们还没有达到。
就算我们会用,在一个问题是价格贵,买不起,封装不是DIP的,不易实验,所以又是大材小用,很没有必要选择这么高级的。
(2)AT89S82是一款非常流行的单片机了,很适合我们的任务所需,但是他的下载电路并不是那么的简单,再说这个是国外生产的,何必用呢?
(3)STC89C52RC是非常值得推荐的,STC是在深圳的一家8051单片机设计生产公司。
STC系列的单片机现在在中国的51单片机市场上占有较大比例。
宏晶科技现已成长为全球最大的8051单片机设计公司,完完全全的中
国制造,它是AT89S52的增强版本,技术成熟,运用稳定,下载电路非常方便,很适合我们选择用
3
第二章 硬件单元电路设计与参数计算 1.电源电路
图中J1为电源插座,S5为带锁开关,要特别主意这来个的封装,很容易错。
利用外部电源直接提供5V 直流电源接入电源接口,再通过带锁开关控制导通情况。
图中LED 起到指示作用,当通电时亮,电阻为限流作用
一般接220 Ω~1 K Ω,不接后果很严重,LED 只亮一下。
2.单片机最小系统电路
关于最小系统和STC89C52RC 单片机的介绍网上有很多,非常容易搜到,这里就不累赘!
这里讨论几个问题:
1)要使STC89C52RC 复位需要两个机器周期的高电平,我们用的是12M 晶振,那么一个机器周期为1/12M=1uS ,当S4按下时,C3迅速导通通电,此时9脚为高
时钟芯片
STC89C52RC
按键
5V 电源
液晶显示
电平,松开后电容要电,起到延时的作用,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< Vcc1时,
由Vcc1向DS1302供电。
SCLK:串行时钟,输入,控制数据
的输入与输出;
I/O:三线接口时的双向数据线;
CE:输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
5.LCD1602显示电路
LCD1602可以显示16*2=32个字符,也可以用来显示一些汉字图片(利用取模软件提取),原理图中的可调电阻是用来调节字符显示的亮度的,调节是要有耐心,应为用到的是精密可调电阻,这个需要转很多圈,不容易显示出来,注意不能跳到太亮,要不很容易烧掉液晶,下面为接口说明,一般不显示很可能是程序的问题和可调电阻没有调节好,至于介绍网上很容易找到。
6.软件设计流程图
7.总原理图
第三章仿真测试
(1)首先在protues中仿真调好,在程序中要特别注意与硬件中引脚对应上(2)按键的测试比较简单,只要你对应的按键能够实现相应的功能就可以,不可以,那么肯定是硬件或者连接线的问题了。
第四章程序
. ORG 0000H ;程序开始入口
LJMP START
ORG 0003H ;外中断0中断程序入口
RETI
ORG 000BH ;定时器T0中断程序入口
LJMP INTT0 ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI
ORG 001BH ;定时器T1中断程序入口
LJMP INTT1
ORG 0023H ;串行中断程序入口地址
RETI
;---------------主程序----------------------;
START: MOV R0,#70H ;70给R0,清70-7FH显示内存
MOV R7,#0FH
CLEARDISP: MOV @R0,#00H ;0给R0中的数为地址的内存中存放(70H)
INC R0
DJNZ R7,CLEARDISP
MOV 78H,#2 ;默认时间为12:00,闹钟5:00
MOV 79H,#1
MOV 74H,#2 ;防止上电时数码管显示00小时
MOV 75H,#1
MOV 66H,#1 ;中断退出时66H为1时,分、时计时单元数据移入显存标志
MOV 68H,#1 ;上电默认闹钟开状态
MOV 7DH,#6 ;闹钟时十位
MOV 7CH,#3
MOV 69H,#0
MOV 7AH,#0AH ;放入"熄灭符"数据
MOV TMOD,#11H ;设T0、T1为16位定时器
MOV TL0,#0B0H ;50MS定时初值(T0计时用)
MOV TH0,#3CH
SETB EA ;总中断开放
SETB ET0 ;允许T0中断
SETB TR0 ;T0定时器开始计时
MOV R4,#14H ;1秒定时用初值(50MS×20)
START1: LCALL DISPLAY ;显示子程序
LCALL BEEP ;闹钟查询
JNB P1.7,SETTIME ;P1.7口为0时转时间调整程序
JMP START1 ;P1.7口为1时跳回START1
;-----------------------时间闹钟调整系统--------------------------;
NFLAG: MOV A,68H ;设置闹钟开关状态
CJNE A,#1,BEE68
MOV 68H,#0
JMP E6
BEE68: MOV 68H,#1
E6: MOV 66H,#8 ;中断退出66H不为1时分、时计时单元数据移入显存标志MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
LCALL DDL
LCALL DDL
MOV 72H,68H
MOV 73H,69H
MOV 74H,7AH
MOV 75H,7AH
LCALL DDL
LCALL DDL
MOV 66H,#1
LJMP START1
SETTIME: LCALL DDL
JB P1.7,NFLAG ;键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,
确保准确,大于1秒调时
MOV TL1,#0B0H ;T1闪烁定时初值
MOV TH1,#3CH
MOV R2,#06H ;进入调时状态,赋闪烁定时初值
MOV 66H,#8 ;调闹钟时保持走时,关闭时钟显示数据
SETB ET1 ;允许T1中断
SETB TR1 ;开启定时器T1
SET1: LCALL DISPLAY ;调用显示,防止键按下无显示
JNB P1.7,SET1 ;P1.7口为0等待键释放
MOV R5,#00H ;清设置类型闪烁标志
SETN1: INC R5 ;闹钟分调整
SET5: LCALL DISPLAY
JB P1.7,SET5
SEETN1: LCALL DDL ;有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态JB P1.7,SET6 ;键释放查询,键释放自动转调时
MOV R0,#7CH
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,HHN1
HHN1: JC SEETN1
LCALL CLR0
JMP SEETN1
SET6: INC R5 ;闹钟时调整
SEET6: LCALL DISPLAY
JB P1.7,SEET6
SEETNH1: LCALL DDL
JB P1.7,SETF
MOV R0,#7EH
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUU1
HOUU1: JC SEETNH1
LCALL CLR0
JMP SEETNH1
SETF: LCALL DISPLAY
JB P1.7,SETF
LCALL DDL
JNB P1.7,SETOUT ;短按调时,长按退出
CLR ET0
CLR TR0
MOV 70H,#00H ;设定后的时间从00秒开始走时
MOV 71H,#00H
INC R5
SET3: LCALL DISPLAY
JB P1.7,SET3
SETMM: LCALL DDL
JB P1.7,SET4
MOV R0,#77H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,MMH
MMH: JC SETMM
LCALL CLR0
AJMP SETMM
SET4: INC R5
SEET4: LCALL DISPLAY
JB P1.7,SEET4
SETHH: LCALL DDL
JB P1.7,SETOUT1
MOV R0,#79H
LCALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUU
HOUU: JC SETHH
LCALL CLR0
AJMP SETHH
SETOUT1: SETB ET0
SETB TR0 ;计时开始
SETOUT: MOV R5,#00H ;清设置类型闪烁标志
CLR TR1 ;关闭T1
CLR ET1 ;关T1中断
MOV 66H,#1
SETOUT2: LCALL DISPLAY
JNB P1.7,SETOUT2
LJMP START1
;--------------------------延时1秒钟-----------------------; DDL: MOV 18H,#36
DDL0: MOV 17H,#239
DDL1: LCALL DISPLAY
DJNZ 17H,DDL1
DJNZ 18H,DDL0
RET
;----------------------------T0中断程序------------------------; INTT0: PUSH ACC ;打包
PUSH PSW
CLR ET0
CLR TR0
MOV A,#0B7H
ADD A,TL0
MOV TL0,A
MOV A,#3CH
ADDC A,TH0
MOV TH0,A
SETB TR0
DJNZ R4, OUTT0 ;20次中断未到中断退出
ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值
MOV R0,#71H ;指向秒计时单元(70-71H)
ACALL ADD1 ;调用加1程序(加1秒操作)
MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)
CLR C ;清进位标志
CJNE A,#60H,ADDMM
ADDMM: JC OUTT01 ;小于60秒退出
ACALL CLR0 ;等于或大于60秒清0
MOV R0,#77H ;指向分计时单元(76H-77H)
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,ADDHH
ADDHH: JC OUTT0
ACALL CLR0
MOV R0,#79H ;指向小时计时单元(78H-79H)
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUR
HOUR: JC OUTT0
ACALL CLR0
OUTT0: MOV A,66H ;查询标志
CJNE A,#1,OUTT01
MOV 72H,76H ;中断退出时将分、时计时单元数据移入对应显示单元MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
OUTT01:POP PSW ;出栈
POP ACC
SETB ET0 ;开放T0
RETI ;中断返回
;---------------------------加1程序--------------------------;
ADD1: MOV A,@R0 ;取当前计时单元数据到A
DEC R0 ;指向前一地址
SWAP A ;A中数据高四位与低四位交换
ORL A,@R0 ;前一地址中数据放入A中低四位
ADD A,#01H ;A加1操作
DA A ;十进制调整
MOV R3,A ;移入R3寄存器
ANL A,#0FH ;高四位变0
MOV @R0,A ;放回前一地址单元
MOV A,R3 ;取回R3中暂存数据
INC R0 ;指向当前地址单元
SWAP A ;A中数据高四位与低四位交换
ANL A,#0FH ;高四位变0
MOV @R0,A ;数据放入当削地址单元中
RET
CLR0: CLR C
CLR A ;清累加器
MOV @R0,A ;清当前地址单元
DEC R0 ;指向前一地址
MOV @R0,A ;前一地址单元清0
RET ;子程序返回
;-------------------------调时闪烁程序----------------------;
INTT1: PUSH ACC
PUSH PSW
MOV TL1,#0B0H
MOV TH1,#3CH
DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值
CPL 02H ;0.3秒定时到对闪烁标志取反
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
MOV A,R5
CJNE A,#01H,NL
JMP NNN1
NL:CJNE A,#02H,NL1
LJMP NNN1
NL1:CJNE A,#03H,NL2
LJMP NLL
NL2:CJNE A,#04H,INTT1OUT
LJMP NLL
NLL:MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
NNN1:MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
INTT1OUT:POP PSW ;恢复现场
POP ACC
RETI ;中断退出
FLASH1:MOV A,R5
CJNE A,#01H,ML
LJMP MNN1
ML:CJNE A,#02H,ML1
LJMP MNN2
ML1:CJNE A,#03H,MN
LJMP MLL
MN:CJNE A,#04H,INTT1OUT
LJMP MHL
MLL:MOV 72H,7AH
MOV 73H,7AH ;显示单元(72-73H),将不显示分数据
MOV 74H,78H
MOV 75H,79H
AJMP INTT1OUT
MHL:MOV 72H,76H
MOV 73H,77H
MOV 74H,7AH ;显示单元(74-75H),小时数据将不显示MOV 75H,7AH
AJMP INTT1OUT
MNN1:MOV 72H,7AH
MOV 73H,7AH ;显示单元(72-73H),将不显示闹钟分数据MOV 74H,7DH
MOV 75H,7EH
AJMP INTT1OUT
MNN2:MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7AH
MOV 75H,7AH ;显示单元(74-75H),闹钟小时数据将不显示AJMP INTT1OUT
;-------------------------显示-------------------------------; DISPLAY:MOV DPTR,#DISDATA
MOV A,70H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.0
NOP
NOP
NOP
SETB P1.0
MOV A,71H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.1
NOP
NOP
NOP
SETB P1.1
MOV A,72H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.2
NOP
NOP
NOP
SETB P1.2
MOV A,73H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.3
NOP
NOP
NOP
SETB P1.3
MOV A,74H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.4
NOP
NOP
NOP
SETB P1.4
MOV A,75H
MOVC A,@A+DPTR
MOV P3,A
CLR P1.5
NOP
NOP
NOP
SETB P1.5
RET
BEEP:MOV A,68H ;查询标志
CJNE A,#1,BEERE
MOV A,78H ;查询闹钟时个位
CJNE A,7DH,BEERE
MOV A,79H ;查询闹钟时十位
CJNE A,7EH,BEERE
MOV A,76H ;查询闹钟分个位
CJNE A,7BH,BEERE
MOV A,77H ;查询闹钟分十位
CJNE A,7CH,BEERE
BB:CLR P1.6
LCALL DDL
SETB P1.6
LCALL DDL
JNB P1.7,BEERR
BEERE:RET
BEERR:SETB P1.6
MOV 68H,#0
LCALL DISPLAY
JNB P1.7,BEERR
JMP BEERE
DISDATA:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH ;0123456789空白
END
第五章心得体会
经过这次理工的大作业设计训练让我受益匪浅。
下面是这次我对大作业进行的总结,总结收获与不足,以便在今后的学习工作中能有所受用。
一、通过这次的大作业,让我更加明白了其重要性,也是通过这次的大作业,我去探索一些未知的或是尚未深刻理解的东西。
二、思想的转变,、这次大作业给了我们很大的发挥空间,可以自己来设计电路,自己来仿真测试,至此知道了以后做事做东西都不能老靠着前面人,要做到能自己解决的就自己解决,这样才能提高自学能力,这是很有必要的。
三、发现理论知识的不足,之前自己总觉得学这个没有用,学那个没处用,现在做过自己的小设计就发现其实我们所上课程,所学知识都用的上,还不够呢。
做设计就是需要建立在扎实的理论知识基础上,这样才不会脱离实际,也更加的有目的,以后上课可得认真听讲,做好随堂笔记。
总之,这次大作业让我收获颇丰,同时也让我发现了自身的诸多不足。
我将通过学习、实践等方式不断提高,努力改善,克服那些在学习、获得知识的前进道路上的障碍。
在今后的学习、工作中有更大的收获,在不断学习,探索中,实现自己的人身价值!。