资源描述
网络教育学院
《单片机原理及应用》大作业
题 目: 基于51单片机电子时钟设计
学习中心: 江苏南通海门
层 次: 高起专
专 业: 机械制造与自动化
年 级: 春季
学 号:
学生姓名:
9月份《单片机原理及应用》大作业具体要求:
1 作业内容
从以下五个题目中任选其一作答。
2 正文格式
作业正文内容统一采取宋体, 字号为小四, 字数在字以上。
3. 作业提交
学生需要以附件形式上交离线作业(附件大小限制在10M以内), 选择已完成作业, 点“上交”即可。以下图所表示。
4. 截止时间
9月1日。在此之前, 学生可随时提交离线作业, 如需修改, 可直接上传新文件, 平台会自动覆盖原有文件。
5. 注意事项
请同学独立完成作业, 不准剽窃其她人或者请人代做, 如有雷同作业, 成绩以零分计!
题目一: 单片机电子时钟设计
准 则: 设计一个基于51单片机或STM单片机电子时钟, 而且能够实现时分秒显示和调整
撰写要求: (1)首先介绍课题背景, 并进行需求分析及可行性分析, 包含软硬件功效分配、 关键器件选型等;
(2)对系统硬件进行设计, 包含硬件功效模块划分、 电路原理图设计等;
(3)对系统软件进行设计, 选择汇编语言或C语言编写程序, 给出软件开发步骤;
(4)总结: 需要说明问题以及设计心得体会。
目 录
第一章 基于51系列单片机电子时钟设计与制作概述 - 5 -
1.设计任务与要求 - 5-
2.方案设计选择 - 6 -
3.系统关键方框图 -7-
第二章 硬件单元电路设计与参数计算 - 7 -
1.电源电路 - 7 -
2.单片机最小系统电路 - 7 -
3.按键电路 - 8 -
4.时钟电路 - 9 -
5.LCD1602显示电路 - 10 -
6.软件设计步骤图 - 11 -
7.总原理图 - 11 -
第三章 仿真测试 - 12 -
第四章 程序 - 13 -
第五章 心得体会 - 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增强版本, 技术成熟, 利用稳定, 下载电路非常方便, 很适合我们选择用
5V电源
STC89C52RC
3.系统关键方框图
按键
液晶显示
时钟芯片
第二章 硬件单元电路设计与参数计算
1.电源电路
图中J1为电源插座, S5为带锁开关, 要尤其主意这来个封装, 很轻易错。利用外部电源直接提供5V直流电源接入电源接口, 再经过带锁开关控制导通情况。图中LED起到指示作用, 当通电时亮, 电阻为限流作用通常接220 ~1 K, 不接后果很严重, 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< Vcc1时, 由Vcc1向DS1302供电。
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
第四章 程序
. 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 ;空白
END
第五章 心得体会
经过这次大作业设计训练让我受益匪浅。下面对这次大作业进行总结以下, 总结收获与不足, 在以后学习和工作中有所受用。
一、 经过这次大作业, 让我愈加明白其关键性, 经过这次大作业, 去探索部分你未知或是你尚不是深刻了解东西。
二、 思想转变, 、 这次大作业给了我们很大发挥空间, 能够自己设计电路, 自己仿真测试, 发觉以后做东西不能老靠他人, 要能够自己处理就自己处理, 这么提升自学能力很有必需。
三、 发觉理论知识不足, 之前总认为学这个没有用, 那个没有用, 现在做设计就发觉其实我们所上课程几乎都用上, 做设计需要建立在理论知识基础上, 这么才不会脱离实际, 也愈加有目, 以后上课要认真听讲。
总而言之, 这次大作业让我收获颇丰, 同时也让我发觉了本身不足。我将努力改善, 经过学习、 实践等方法不停提升, 克服那些不应成为学习、 取得悉识障碍。在以后学习、 工作中有更大收获, 在不停地探索中、 在无私学习、 奉献中实现自己人身价值!
参考文件(References)
[1]姜治臻.单片机技术及应用.高等教育出版社..7
[2]刘红兵.电工EDA(Proteus).中国劳动社会保障出版社..7
[3]赵全利 肖兴达.单片机原理及应用教程 机械工业出版社..6
[4]各芯片中英文数据手册, 网上资料
展开阅读全文