单片机多功能电子钟课程设计报告doc.docx
- 文档编号:29172027
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:28
- 大小:470.25KB
单片机多功能电子钟课程设计报告doc.docx
《单片机多功能电子钟课程设计报告doc.docx》由会员分享,可在线阅读,更多相关《单片机多功能电子钟课程设计报告doc.docx(28页珍藏版)》请在冰豆网上搜索。
单片机多功能电子钟课程设计报告doc
《单片机原理及应用课程设计报告》
课题:
以电子钟为主的多功能设计
班级车辆3101学号3102117107
学生姓名秦延力
指导教师段卫平
淮阴工学院
电子与电气工程学院
1课程设计概述…………………………………………………………………………4
1.1设计课题任务……………………………………………………………………4
1.2功能要求说明……………………………………………………………………4
1.3设计课题总体方案及工作原理…………………………………………………4
2设计课题硬件系统的设计……………………………………………………………6
2.1硬件系统各模块功能简要介绍…………………………………………………6
2.2原理电路图………………………………………………………………………7
2.3设计PCB图,元器件布局图与与器件清单……………………………………7
3软件系统的设计………………………………………………………………………8
3.1软件系统各功能模块简要介绍…………………………………………………8
3.2设计课题软件系统程序流程框图………………………………………………8
3.3设计课题软件系统程序清单…………………………………………………11
4仿真与误差分析……………………………………………………………………12
4.1设计课题的设计结论及使用说明……………………………………………12
4.2设计课题的仿真结果…………………………………………………………12
4.3设计课题的误差分析…………………………………………………………12
4.4设计体会………………………………………………………………………13
4.5教学建议………………………………………………………………………13
参考文献………………………………………………………………………………14
致谢……………………………………………………………………………………15
附录……………………………………………………………………………………16
一、设计目的
1总体要求
(1)独立完成设计任务
(2)绘制系统硬件总框图
(3)绘制系统原理电路图
(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;
(5)制定编写调试方案,编写用户操作使用说明书
(6)写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
2具体要求
本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。
软件编程是本次工程实践的重要环节。
在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:
1)、熟悉KeilC51编程平台及相关编程软件
2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调
3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调
4)、编写、调试键盘扫描子程序并进行软硬件联调
5)、编写、调试数码管动态扫描程序并进行软硬件联调
6)、电子钟设计(包括键盘、时钟、显示等)
7)、温度测量控制系统设计(包括键盘、显示、控制、报警等)
其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础。
电子钟设计一个简单的单片机编程设计,要求电子钟软件程序必须具备键盘扫描、数码管显示、时钟以及日历、秒表和闹钟功能。
温度测量与控制系统设计是一种非常简单而又应用普遍的温度控制系统、他包括温度采集、信号转换、单片机处理以及控制、报警等部分。
要求学生采用声光报警方式。
二、总体设计
2.1系统硬件总框图
图1系统设计总框图
此次课程设计,AT89C52是一种带2K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
此次课程设计的电子钟就是由AT89C52单片机、时钟电路、报警电路,LED流水灯电路,动态数码管显示电路、音乐电路等组成。
运用汇编语言来控制单片机AT89C52来实现LED流水灯、报警器、动态数码显示、电子音乐等功能,并在此基础上综合运用上述功能,实现电子钟的设计(包括键盘、时钟、显示等),温度测量控制系统(包括键盘、显示、控制、报警等)。
且本设计中的AT89C52单片机是整个工作过程的核心,是整个设计灵魂,它控制了脉冲时序的产生,显示信号的发送控制显示LED的选择。
同时也考虑到AT89C52单片机来制作电子时钟其最大的好处就是可最大的调整时钟使其准确度更高。
2.2设计原理图
图2时钟电路原理图
三、硬件单元设计
3.1NE555P模块
图3为555定时器管脚分布。
555定时器可构成多谐振荡器,是一种性能较好的时钟源。
调节电位器RW1,使在555输出端3获得频率为50—60Hz的矩形波信号,当基本RS触发器Q为1时,门5开启,此时脉冲信号通过门5作为计数脉冲加于计数器的计数输入端CP。
3.2数码管显示
为了能使电路简单我们采用数码管动态显示方式。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
图4数码管显示图
3.3DS1302模块
DS1302的RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
其管脚图如下:
图5DS1302管脚图
各引脚功能:
Vcc1为后备电源,VCC2为主电源,X1和X2是振荡源,
SCLK为输入端
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
3.4时钟控制
石英晶体振荡器是利用石英晶体的压电效应制成的一种谐振器件,它的基本构成大致是:
从一块石英晶体上按一定方位角切下薄片,在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器。
其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。
HMOS型MCS-51外部时钟源的接发:
在XTLA1和XTLA2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自激振荡器。
其发出的时钟脉冲直接送入片内定时控制部件,其中C电容对频率有微调作用。
图6时钟电路
3.5扬声器
图7扬声器原理图
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的。
因此需要一定的电流才能驱动它,单片机IO口输出的电流较小,其TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
程序中通过改变单片机对应IO口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。
另外,改变其占空比,也可以控制蜂鸣器的声音大小。
可以有两种驱动方式,即用PNP或NPN三极管电流放大电路驱动。
本电路通过一个PNP三极管9012来放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制IO口输出的电平来使蜂鸣器发出声音和关闭,从而实现各种可能音响的产生。
启动报警子程序如下:
停止报警子程序如下:
START:
SETBP1.0STOP:
CLRP1.0
RETRET
3.6LED灯显示
图8LED灯显示电路图
本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,单片机可工作。
要用外加电源和分压电阻来控制低电平驱动点亮,因为单片机不能直接高电平驱动LED灯。
如图D1-D8和R1、R2以及R6-R11连接到单片机IO口,当P1口某脚变低时相应LED发光。
实现LED灯的闪烁,只需利用编程方法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。
3.7键盘
图9键盘电路
在MCS-51系列单片机的指令系统中设有散转指令JMP@A+DPTR,可看成是专门配合键入程序是整个应用程序的核心部分。
键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。
一个电压信号通过机械触点的闭合、断开过程。
由于机械触点的弹性作用,在闭合及断开瞬间均有抖动过程,会出现一系列负脉冲。
抖动时间的长短,与开关的机械特性有关,一般为5—10ms。
一组按键或键盘都要通过I/O口线查询按键的开关状态。
且独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。
3.8AT89C52
AT89C52是此次课程设计的核心部分。
其管脚图如下:
图10AT89C52管脚图
AT89C52是低功耗、高性能的CMOS8位单片机。
片内带有8KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C52的指令系统和引脚与80C52完全兼容。
AT89C52各管脚功能如下:
VCC:
供电电压;GND:
接地;P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
;P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流;P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入;P3口管脚功能:
P3.0是RXD(串行输入口);P3.1是TXD(串行输出口);P3.2是/INT0(外部中断0);P3.3是/INT1(外部中断1);P3.4是T0(记时器0外部输入);P3.5是T1(记时器1外部输入);P3.6是/WR(外部数据存储器写选通);P3.7是/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许输出电平用于锁存地址的地位字节。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
四、软件单元设计
4.1程序流程图
开始
取系统时间
并转二进制
为ACSII码
将时间存入
显示缓冲区
显示时间和界面
调用延时子程序
返回DOS
程序结束
调用清屏子程序
C键按下?
ESC键按下?
否
是
是
否
调用时间
修改程序
读键盘
输入值
4.2程序清单
T_RBitP3.4;实时时钟复位线引脚
T_CBitP3.2;实时时钟时钟线引脚
T_IBitP3.3;实时时钟数据线引脚
SECEQU30H
MINEQU31H
HEQU32H
DEQU33H
MONEQU34H
WEQU35H
YEQU36H
ORG0000H
LJMPstart
ORG001bH
AJMPINTT1
ORG0030H
START:
LCALLKEY
AJMPSTART
;*******蜂鸣器*******
KEY0:
SETBP3.4
LCALLDELAY
LCALLDELAY
CLRP3.4
LCALLDELAY
LCALLDELAY
SETBP3.4
LCALLDELAY
LCALLDELAY
CLRP3.4
LCALLDELAY
LCALLDELAY
SETBP3.4
LCALLDELAY
LCALLDELAY
CLRP3.4
RET
;*******流水灯*******
KEY1:
MOVR2,#2
REB:
MOVR1,#8
MOVA,#0AFH
LOOPB:
MOVP2,A
RLA
LCALLDELAY
DJNZR1,LOOPB
DJNZR2,REB
RET
;*******日期*******
KEY2:
CLRT_R
CLRT_C
MOVSP,#60H;修改堆栈
MOVSEC,#00H;初始时间设为10:
00:
00
MOVMIN,#00H
MOVH,#10H
MOVD,#18h;初始日期设为08年1月18日第一周
MOVMON,#01H
MOVW,#01H
MOVY,#08H
LCALLSETDS1302
LCALLGET1302
LCALLDISPLAY
MOVR3,#25
MOVTMOD,#01H
MOVTH0,#70H;置定时器初值(定时40ms)
MOVTL0,#00H
SETBTR0;启动定时器0
LP1:
JBCTF0,LP2;查询计数溢出
SJMPLP1;未到40ms继续计数
LP2:
MOVTH0,#0B8H;重新置定时器初值
MOVTL0,#00H
LCALLDISPLAY;显示
DJNZR3,LP1;未到1S继续循环
LCALLGET1302;每过1s从DS1302读取一次时间
MOVr3,#25
SJMPLP1
;数码显示子程序
DISPLAY:
MOVDPTR,#DIG_CODE
;显示分钟
MOVP1,#11110111b
MOVA,MIN
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
LCALLDIS_DELAY
MOVP1,#11111011b
MOVA,MIN
SWAPA
ANLA,#07H
MOVCA,@A+DPTR
MOVP0,A
LCALLDIS_DELAY
;显示小时
MOVP1,#11111101b
MOVA,H
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
LCALLDIS_DELAY
MOVP1,#11111110b
MOVA,H
SWAPA
ANLA,#03H
MOVCA,@A+DPTR
MOVP0,A
LCALLDIS_DELAY
RET
;显示延时5ms子程序
DIS_DELAY:
PUSHPSW
MOVR7,#10
D1:
MOVR6,#248
D2:
DJNZR6,$
DJNZR7,D1
POPPSW
RET
;设置DS1302初始时间,并启动计时
SETDS1302:
CLRT_R
NOP
CLRT_C
NOP
SETBT_R
NOP
MOVB,#8EH;写控制命令字
LCALLINPUTBYTE
MOVB,#00H;写保护关闭
LCALLINPUTBYTE
SETBT_C
NOP
CLRT_R
MOVR0,#SECOND;内存中的时间首地址
MOVR1,#80H;DS1302中的时间首地址
MOVR7,#7;字节数
SETLOOP:
CLRT_R
NOP
CLRT_C
NOP
SETBT_R
NOP
MOVB,R1;写命令字
LCALLINPUTBYTE
MOVA,@R0;设置时间
MOVB,A
LCALLINPUTBYTE
INCR0
INCR1
INCR1
SETBT_C
NOP
CLRT_R
NOP
DJNZR7,SETLOOP
CLRT_R
NOP
CLRT_C
NOP
SETBT_R
NOP
MOVB,#8EH
LCALLINPUTBYTE
MOVB,#80H;开写保护
LCALLINPUTBYTE
SETBT_C
NOP
CLRT_R
NOP
RET
;从DS1302读取时间
GET1302:
MOVR0,#SECOND
MOVR1,#81H;DS1302中读时间的首地址
MOVR7,#7
GETLOOP:
CLRT_R
NOP
CLRT_C
NOP
SETBT_R
NOP
MOVB,R1
LCALLINPUTBYTE;写命令字
LCALLOUTPUTBYTE;读时间
MOV@R0,A;将从DS1302中读取的时间从内存中保存
INCR0;修改地址指针
INCR1
INCR1
SETBT_C
NOP
CLRT_R
NOP
DJNZR7,GETLOOP
RET
;向DS1302写一个字节
INPUTBYTE:
MOVR4,#8
INPUTLOOP:
MOVA,B
RRCA
MOVB,A
MOVT_I,C
SETBT_C
NOP
NOP
NOP
CLRT_C
DJNZR4,INPUTLOOP
RET
;从DS1302读一个字节
OUTPUTBYTE:
CLRa
CLRc
MOVR4,#8
OUTPUTLOOP:
NOP
NOP
MOVC,T_I
RRCA
SETBT_C
NOP
NOP
NOP
CLRT_C
DJNZR4,OUTPUTLOOP
RET
KEY:
MOVP1,#0F0H
MOVA,P1
MOVB,A
ACALLDELAY
MOVA,P1
CJNEA,B,DO
CJNEA,#0E0H,K1
AJMPKEY0
K1:
CJNEA,#0D0H,K2
AJMPKEY1
K2:
CJNEA,#0B0H,K3
AJMPKEY2
K3:
CJNEA,#070H,DO
AJMPKEY3
DO:
RET
DELAY:
MOVR6,(#200)
DL1:
MOVR5,#250
DJNZR5,$
DJNZR6,DL1
RET
DEL1:
MOVR7,#02
DL2:
MOVR6,#0FFH
DJNZR6,$
DJNZR7,DL2
RET
DELAYY1:
MOVR7,#02
DELAY10:
MOVR4,#187
DELAY11:
MOVR3,#248
DJNZR3,$
DJNZR4,DELAY11
DJNZR7,DELAY10
DJNZR5,DELAYY1
RET
key3:
MOVSP,#60H
MOVTMOD,#10H
SETBET1
SETBEA
SETBTR1
START0:
clrp3.4
MOV30H,#00H
NEXTT:
MOVA,30H
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVR2,A
JZENDD
ANLA,#0FH
MOVR5,A
MOVA,R2
SWAPA
ANLA,#0FH
JNZSING
CLRTR1
AJMPDD1
SING:
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTH1,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL1,A
MOV20H,A
SETBTR1
DD1:
LCALLDELAYY
INC30H
AJMPNEXTT
ENDD:
CLRTR1
AJMPSTART0
INTT1:
PUSHPSW
PUSHACC
MOVTL1,20H
MOVTH1,21H
CPLp3.4
POPACC
POPPSW
RETI
DELAYY:
MOVR7,#02
DELAY0:
MOVR4,#187
DELAY1:
MOVR3,#248
DJNZR3,$
DJNZR4,DELAY1
DJNZR7,DELAY0
DJNZR5,DELAYY
RET
TABLE:
DB82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H
DB82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H
TABLE1:
DW64260,64400,64524,64580,64684,64777,64820,64898
DW64968,65030,65058,65110,65157,65178,65217
;字符显示码表
DIG_CODE:
DB14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44H
END
五、焊接与调试
(一)软件调试步骤
1、从桌面或【开始】菜单选择【程序】K
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 多功能 电子钟 课程设计 报告 doc