收藏 分销(赏)

单片机数字时钟设计大学论文.doc

上传人:丰**** 文档编号:4861133 上传时间:2024-10-15 格式:DOC 页数:22 大小:3.38MB
下载 相关 举报
单片机数字时钟设计大学论文.doc_第1页
第1页 / 共22页
单片机数字时钟设计大学论文.doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述
单片机数字时钟课程设计 课 程 设 计 (报 告) 课 程 设 计 题 目: 数字时钟 学 院 名 称: 电子与信息工程学院 专 业: 电气工程及其自动化 班 级: 姓 名: 学 号 指 导 教 师: 日 期: 2012.12.29~2013.01.11 21 单片机数字时钟课程设计 一. 课程设计任务 1.用80C51设计一个数字时钟 2.可显示时、分、秒 3.按键实现时、分、秒人工校准 二.总体方案 本次课程设计选用通用的80C51芯片,显示单元为实验箱的液晶1602显示单元,选用DS1302时钟芯片,利用矩阵键盘进行调时。 1.80C51简介 虽然目前单片机的品种很多,但其中最具代表性的当属Intel公司的MCS-51单片机系列。MCS-51以其典型的结构、完善的总线、SFR的集中管理模式、位操作系统和面向控制功能的丰富的指令系统,为单片机的发展奠定了良好的基础。MCS-51系列的典型芯片是80C51(CHMOS型的8051)。为此,众多的厂商都介入了以80C51为代表的8位单片机的发展,如Philips、Siemens(Infineon)、Dallas、ATMEL等公司,我们把这些公司生产的与80C51兼容的单片机统称为80C51系列。特别是在近年来,80C51系列又有了许多发展,推出了一些新产品,主要是改善单片机的控制功能,如内部集成了高速I/O口、ADC、PWM、WDT等,以及低电压、微功耗、电磁兼容、串行扩展总线和控制网络总线性能等。 单片机内部结构图为如图所示 80C51单片机管脚说明 VCC:供电电压。 GND:接地。     P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。     P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。     P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。     P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为80C51的一些特殊功能口,如下所示: 口管脚 备选功能 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 外部数据存储器读选通 2. 时钟芯片DS1302简介: DS1302[1]是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 2.1. DS1302引脚功能与内部结构 DS1302的引脚功能如表1所示,外形及内部结构如图1所示[2]: 引脚号 引脚名称 功能 1 VCC2 主电源 2、3 X1、X2 振荡源,外接32768Hz晶振 4 GND 地线 5 RST 复位/片选线 6 I/O 串行数据输入/输出端(双向) 7 SCLK 串行时钟输入端 8 VCC1 后备电源 表1 DS1302引脚功能表 图1 DS1302管脚图及内部结 2.2 DS1302的控制字DS1302的控制字节如图2所示: 7 6 5 4 3 2 1 0 1 RAM A4 A3 A2 A1 A0 RAM 图2 DS1302控制字节的含义控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 2.3 DS1302的复位引脚  通过把输入驱动置高电平来启动所有的数据传送。 输入有两种功能:首先,接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 2.4 DS1302的数据输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3所示: 图3 数据读写时序 2.5 DS1302的寄存器 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。 DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H--FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读) DS1302内部寄存器列表如表所示: 寄存器名称 命令字 取值范围 各位内容 写 读 7 6 5 4 3 2 1 0 秒寄存器 80H 81H 00-59 CH 10SEC SEC 分寄存器 82H 83H 00-59 0 10MIN MIN 小时寄存器 84H 85H 01-12或00-23 12/24 0 A HR HR 日期寄存器 86H 87H 01-28,29,30,31 0 0 10DATE DATE 月份寄存器 88H 89H 01-12 0 0 0 10M MONTH 周寄存器 8AH 8BH 01-07 0 0 0 0 0 DAY 年份寄存器 8CH 8DH 00-99 10YEAR YEAR 3.LCD1602液晶显示简介: LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示: 4. 矩阵键盘 矩阵键盘如实验图所示,H1接地,L1、L2、L3、L4分别控制时钟的调时。其中L1为调设置键,L2为加键,L3为减键,L4为调时确定键。 三.硬件设计部分 1. 硬件设计流程图: 80C51 仿真单元 DS1302 时钟芯片 矩阵键盘 调时控制 液晶显示单元 2. 实验原理图: 四. 软件设计部 1.软件设计流程图: 开始 液晶初始化 DS1302初始化 调整模块 检测按键 液晶显示 DS18B20初始化 Y N 实验程序代码: RW BIT P2.1 RS BIT P2.0 E BIT P2.7 SCLK BIT P0.1 SIO BIT P0.0 RST BIT P0.2 YH EQU 80H EH EQU 0C0H ORG 0000H JMP MAIN ORG 0040H MAIN: MOV 30H,#00H ;30H~36H存放 时分秒日月星期年 MOV 31H,#00H MOV 32H,#00H MOV 33H,#01H MOV 34H,#01H MOV 35H,#02H MOV 36H,#13H MOV 37H,#00H ;37H存放 设置键按了几下 CALL LCDINIT ;调用1602初始化 CALL DSINIT ;调用1302初始化 ST1: MOV A,37H JNZ ST2 ;查看设置有没有被按 CALL READ ;读1302内容对应存入30H~36H CALL XS ;读30H~36H在1602中显示 ST2: CALL KEYHN ;查看有没有按下的 JZ ST1 HAVE: CALL D100MS ;延迟 去抖动 CALL KEYHN ;再查看按键 JNZ TRUE ;真的有按下 TRUE: JB ACC.3,K1 ;跳到k1对应有设置键的内容 JB ACC.4,K2 ;+1 JB ACC.5,K3 ;-1 JB ACC.6,K4 ;确定 JMP ST1 K1: INC 37H ;增加按的次数 MOV R4,37H CJNE R4,#1,L2 L1: MOV A,#YH+3 ;按1下对应年的位置 CALL WRC MOV A,#0FH ;1602的光标设置为闪烁 CALL WRC JMP ST1 L2: CJNE R4,#2,L3 ;2下月的位置 MOV A,#YH+6 CALL WRC JMP ST1 L3: CJNE R4,#3,L4 ;日期的 MOV A,#YH+9 CALL WRC JMP ST1 L4: CJNE R4,#4,L5 ;星期的 MOV A,#YH+0DH CALL WRC JMP ST1 L5: CJNE R4,#5,L6 ;时 MOV A,#EH+3 CALL WRC JMP ST1 L6: CJNE R4,#6,L7 ;分 MOV A,#EH+6 CALL WRC JMP ST1 L7: CJNE R4,#7,L8 ;秒 MOV A,#EH+9 CALL WRC JMP ST1 L8: MOV A,#0CH ;返回 CALL WRC MOV 37H,#00H ;光标去闪烁 CALL DSINIT ;1302初始化 JMP ST1 K2: MOV R4,37H CALL JIA ;调用加1的子程序 CALL XS ;1602显示 CALL GB ;把光标显示位 确定在设置位上 JMP ST1 K3: MOV R4,37H CALL JIAN ;减的 以下同理 CALL XS CALL GB JMP ST1 K4: MOV 37H,#00H ;37H内容归零=返回 MOV A,#0CH ;去光标 CALL WRC CALL DSINIT ;1302初始化 JMP ST1 D100MS: MOV R5,#100 ;延迟子程序 D1MS: MOV R4,#249 DL: NOP NOP DJNZ R4,DL DJNZ R5,D1MS RET KEYHN: MOV P3,#78H ;按键查看子程序 MOV A,P3 CPL A ANL A,#78H RET LCDINIT: ;1602初始化子程序 MOV A,#01H ;清屏 CALL WRC MOV A,#38H ;设置液晶工作模式16*2行显示5*7点阵8位数据 CALL WRC MOV A,#0CH ;开显示不显示光标 CALL WRC MOV A,#06H ;整屏不移动,光标自动右移 CALL WRC MOV A,#YH ;显示位置 在1602第一行首 YH=80H CALL WRC MOV A,#32H ;以下为在第一行显20 — - CALL WRD MOV A,#30H CALL WRD MOV A,#20H CALL WRD MOV A,#20H CALL WRD MOV A,#2DH CALL WRD MOV A,#20H CALL WRD MOV A,#20H CALL WRD MOV A,#2DH CALL WRD MOV A,#20H CALL WRD MOV A,#20H CALL WRD MOV A,#EH+2 ;以下在第二显 : : CALL WRC MOV A,#20H CALL WRD MOV A,#20H CALL WRD MOV A,#3AH CALL WRD MOV A,#20H CALL WRD MOV A,#20H CALL WRD MOV A,#3AH CALL WRD MOV A,#20H CALL WRD MOV A,#20H CALL WRD CALL XS RET XS: CALL WRITEYEAR CALL WRITEWEEK CALL WRITEY CALL WRITER CALL WRITES CALL WRITEF CALL WRITEM CBUSY: PUSH ACC ;检查忙 PUSH DPH PUSH DPL PUSH PSW WEIT: CLR RS SETB RW CLR E SETB E MOV A,P1 CLR E JB ACC.7,WEIT POP PSW POP DPL POP DPH POP ACC CALL DELAY RET WRC: CALL CBUSY ;写命令字 CLR E CLR RS CLR RW SETB E MOV P1,A CLR E CALL DELAY RET WRD: CALL CBUSY ;写数据 CLR E SETB RS CLR RW SETB E MOV P1,A CLR E CALL DELAY RET DELAY: MOV R7,#5 LP1: MOV R6,#0F8H DJNZ R6,$ DJNZ R7,LP1 RET WRB: MOV 40H,#8H ;1302写命令字 LPW: MOV A,B RRC A MOV B,A MOV SIO,C SETB SCLK CLR SCLK DJNZ 40H,LPW RET RDB: MOV 40H,#8 ;读数据 LPR: MOV C,SIO RRC A SETB SCLK CLR SCLK DJNZ 40H,LPR RET READ: MOV R0,#30H ;读数据 存放在30H~36H MOV R7,#7 MOV R1,#81H LOOP2: CLR RST CLR SCLK SETB RST MOV B,R1 CALL WRB CALL RDB MOV @R0,A INC R0 INC R1 INC R1 SETB SCLK CLR RST DJNZ R7,LOOP2 RET DSINIT: CLR RST ;1302初始化子程序 CLR SCLK SETB RST MOV B,#8EH CALL WRB MOV B,#00H CALL WRB SETB SCLK CLR RST MOV R0,#30H MOV R7,#7 MOV R1,#80H LOOP: CLR RST CLR SCLK SETB RST MOV B,R1 CALL WRB MOV A,@R0 MOV B,A CALL WRB INC R0 INC R1 INC R1 SETB SCLK CLR RST DJNZ R7,LOOP RET WRITES: MOV A,#EH+2 ;1602显示写时 CALL WRC MOV A,32H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITEF: MOV A,#EH+5 ;1602显示写分 CALL WRC MOV A,31H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITEM: MOV A,#EH+8 ;1602显示写秒 CALL WRC MOV A,30H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITEY: MOV A,#YH+5 ;1602显示写月 CALL WRC MOV A,34H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITER: MOV A,#YH+8 ;1602显示写日 CALL WRC MOV A,33H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITEYEAR: ;1602显示写年 MOV A,#YH+2 CALL WRC MOV A,36H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RET WRITEWEEK: ;写星期 MOV A,#YH+0DH CALL WRC MOV A,35H MON: CJNE A,#1,TUE MOV A,#4DH CALL WRD MOV A,#4FH CALL WRD MOV A,#4EH CALL WRD MOV A,35H TUE: CJNE A,#2,WED MOV A,#54H CALL WRD MOV A,#55H CALL WRD MOV A,#45H CALL WRD MOV A,35H WED: CJNE A,#3,THU MOV A,#57H CALL WRD MOV A,#45H CALL WRD MOV A,#44H CALL WRD MOV A,35H THU: CJNE A,#4,FRI MOV A,#54H CALL WRD MOV A,#48H CALL WRD MOV A,#55H CALL WRD MOV A,35H FRI: CJNE A,#5,SAT MOV A,#46H CALL WRD MOV A,#52H CALL WRD MOV A,#49H CALL WRD MOV A,35H SAT: CJNE A,#6,SUN MOV A,#53H CALL WRD MOV A,#41H CALL WRD MOV A,#54H CALL WRD MOV A,35H SUN: MOV A,#53H CALL WRD MOV A,#55H CALL WRD MOV A,#4EH CALL WRD RET JIA: CJNE R4,#0,J1 ;设置内容+1子程序 没有按就返回扫描键盘 RET J1: CJNE R4,#1,J2 ;以下分别都是先判断是不是边界数是回到可能的初值 MOV A,36H ;再判断个位是否为9是+7 不是+1 ANL A,#0FH CJNE A,#9,JW1 MOV A,#07H ADD A,36H MOV 36H,A RET JW1: INC 36H RET J2: CJNE R4,#2,J3 MOV A,34H CJNE A,#12H,JWW1 MOV 34H,#01H RET JWW1: ANL A,#0FH CJNE A,#9,JW2 MOV A,#07H ADD A,34H MOV 34H,A RET JW2: INC 34H RET J3: CJNE R4,#3,J4 MOV A,33H CJNE A,#31H,JWW2 MOV 33H,#01H RET JWW2: ANL A,#0FH CJNE A,#9,JW3 MOV A,#07H ADD A,33H MOV 33H,A RET JW3: INC 33H RET J4: CJNE R4,#4,J5 MOV A,35H CJNE A,#7,JWW3 MOV 35H,#01H RET JWW3: INC 35H RET J5: CJNE R4,#5,J6 MOV A,32H CJNE A,#23H,JWW4 MOV 32H,#00H RET JWW4: ANL A,#0FH CJNE A,#9,JW4 MOV A,#07H ADD A,32H MOV 32H,A RET JW4: INC 32H RET J6: CJNE R4,#6,J7 MOV A,31H CJNE A,#59H,JWW5 MOV 31H,#00H RET JWW5: ANL A,#0FH CJNE A,#9,JW5 MOV A,#07H ADD A,31H MOV 31H,A RET JW5: INC 31H RET J7: MOV A,30H CJNE A,#59H,JWW6 MOV 30H,#00H RET JWW6: ANL A,#0FH CJNE A,#9,JW6 MOV A,#07H ADD A,30H MOV 30H,A RET JW6: INC 30H RET JIAN: CJNE R4,#0,D1 ;设置位减—1的子程程序 原理同上 RET D1: CJNE R4,#1,D2 MOV A,36H CJNE A,#0,DW1 MOV 36H,#99H RET DW1: ANL A,#0FH JZ DWW1 DEC 36H RET DWW1: MOV A,36H SUBB A,#07H MOV 36H,A RET D2: CJNE R4,#2,D3 MOV A,34H CJNE A,#1,DW2 MOV 34H,#12H RET DW2: ANL A,#0FH JZ DWW2 DEC 34H RET DWW2: MOV A,34H SUBB A,#07H MOV 34H,A RET D3: CJNE R4,#3,D4 MOV A,33H CJNE A,#01H,DW3 MOV 33H,#31H RET DW3: ANL A,#0FH JZ DWW3 DEC 33H RET DWW3: MOV A,33H SUBB A,#07H MOV 33H,A RET D4: CJNE R4,#4,D5 MOV A,35H CJNE A,#1,DWW4 MOV 35H,#07H RET DWW4: DEC 35H RET D5: CJNE R4,#5,D6 MOV A,32H CJNE A,#00H,DW5 MOV 32H,#23H RET DW5: ANL A,#0FH JZ DWW5 DEC 32H RET DWW5: MOV A,32H SUBB A,#07H MOV 32H,A RET D6: CJNE R4,#6,D7 MOV A,31H CJNE A,#00H,DW6 MOV 31H,#59H RET DW6: ANL A,#0FH JZ DWW6 DEC 31H RET DWW6: MOV A,31H SUBB A,#07H MOV 31H,A RET D7: MOV A,30H CJNE A,#00H,DW7 MOV 30H,#59H RET DW7: ANL A,#0FH JZ DWW7 DEC 30H RET DWW7: MOV A,30H SUBB A,#07
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服