1、单片机数字时钟课程设计课 程 设 计 (报 告)课 程 设 计 题 目: 数字时钟 学 院 名 称: 电子与信息工程学院 专 业: 电气工程及其自动化 班 级: 姓 名: 学 号 指 导 教 师: 日 期: 2012.12.292013.01.1121单片机数字时钟课程设计一 课程设计任务 1.用80C51设计一个数字时钟 2.可显示时、分、秒 3.按键实现时、分、秒人工校准 二总体方案本次课程设计选用通用的80C51芯片,显示单元为实验箱的液晶1602显示单元,选用DS1302时钟芯片,利用矩阵键盘进行调时。1.80C51简介虽然目前单片机的品种很多,但其中最具代表性的当属Intel公司的M
2、CS-51单片机系列。MCS-51以其典型的结构、完善的总线、SFR的集中管理模式、位操作系统和面向控制功能的丰富的指令系统,为单片机的发展奠定了良好的基础。MCS-51系列的典型芯片是80C51(CHMOS型的8051)。为此,众多的厂商都介入了以80C51为代表的8位单片机的发展,如Philips、Siemens(Infineon)、Dallas、ATMEL等公司,我们把这些公司生产的与80C51兼容的单片机统称为80C51系列。特别是在近年来,80C51系列又有了许多发展,推出了一些新产品,主要是改善单片机的控制功能,如内部集成了高速I/O口、ADC、PWM、WDT等,以及低电压、微功耗
3、、电磁兼容、串行扩展总线和控制网络总线性能等。 单片机内部结构图为如图所示 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口被外部下拉为低电平时,将输出
4、电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8
5、个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为80C51的一些特殊功能口,如下所示: 口管脚备选功能P3.0 RXD串行输入口P3.1 TXD串行输出口P3.2 /INT0外部中断0P3.3 /INT1外部中断1P3.4 T0记时器0外部输入P3.5 T1记时器1外部输入P3.6 /WR外部数据存储器写选通P3.7 /RD外部数据存储器读选通2. 时钟芯片DS1302简介:DS13021是美国DALLAS公司推出的一种高性能、低功
6、耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。2.1. DS1302引脚功能与内部结构DS1302的引脚功能如表1所示,外形及内部
7、结构如图1所示2:引脚号引脚名称功能1VCC2主电源2、3X1、X2振荡源,外接32768Hz晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行时钟输入端8VCC1后备电源表1 DS1302引脚功能表图1 DS1302管脚图及内部结2.2 DS1302的控制字DS1302的控制字节如图2所示: 7 6 5 4 3 2 1 01RAMA4A3A2A1A0RAM 图2 DS1302控制字节的含义控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单
8、元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。2.3 DS1302的复位引脚通过把输入驱动置高电平来启动所有的数据传送。 输入有两种功能:首先,接通控制逻辑,允许地址命令序列送入移位寄存器;其次,提供了终止单字节或多字节数据的传送手段。当为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。2.4 DS1302的数据输入输出在控制指令字输入后的下一个SCL
9、K时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3所示:图3 数据读写时序2.5 DS1302的寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字见表2。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。 DS1302与RAM相关的寄存器分为两类,一类是单个RAM单
10、元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)DS1302内部寄存器列表如表所示:寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMON
11、TH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR3.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. 实验原理图:四 软
12、件设计部 1.软件设计流程图:开始 液晶初始化DS1302初始化 调整模块检测按键液晶显示DS18B20初始化YN实验程序代码:RWBITP2.1RSBITP2.0EBITP2.7SCLKBITP0.1SIOBITP0.0RSTBITP0.2YHEQU80HEHEQU0C0HORG 0000HJMP MAINORG 0040HMAIN:MOV30H,#00H;30H36H存放 时分秒日月星期年MOV31H,#00HMOV32H,#00HMOV33H,#01HMOV34H,#01HMOV35H,#02HMOV36H,#13H MOV 37H,#00H;37H存放 设置键按了几下 CALL LCD
13、INIT;调用1602初始化 CALL DSINIT;调用1302初始化ST1:MOVA,37HJNZST2;查看设置有没有被按CALL READ;读1302内容对应存入30H36H CALL XS;读30H36H在1602中显示ST2:CALL KEYHN;查看有没有按下的 JZ ST1HAVE:CALLD100MS;延迟 去抖动 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 ST1K1: INC37H;增加按的次数
14、MOV R4,37HCJNER4,#1,L2L1: MOVA,#YH+3;按1下对应年的位置CALLWRCMOVA,#0FH;1602的光标设置为闪烁CALLWRCJMPST1L2:CJNER4,#2,L3;2下月的位置MOVA,#YH+6CALLWRCJMPST1L3:CJNER4,#3,L4;日期的MOVA,#YH+9CALLWRCJMPST1L4:CJNER4,#4,L5;星期的MOVA,#YH+0DHCALLWRCJMPST1L5:CJNER4,#5,L6;时MOVA,#EH+3CALLWRCJMPST1L6:CJNER4,#6,L7;分MOVA,#EH+6CALLWRCJMPST1L
15、7:CJNER4,#7,L8;秒MOVA,#EH+9CALLWRCJMPST1L8:MOVA,#0CH;返回CALLWRCMOV37H,#00H;光标去闪烁CALLDSINIT;1302初始化 JMP ST1K2:MOV R4,37H CALL JIA;调用加1的子程序 CALL XS;1602显示 CALL GB;把光标显示位 确定在设置位上 JMP ST1K3:MOV R4,37H CALL JIAN;减的 以下同理 CALL XS CALL GB JMP ST1K4:MOV 37H,#00H;37H内容归零返回 MOV A,#0CH;去光标 CALL WRC CALL DSINIT;13
16、02初始化 JMPST1D100MS:MOVR5,#100;延迟子程序D1MS:MOVR4,#249DL:NOPNOPDJNZR4,DLDJNZR5,D1MSRETKEYHN:MOVP3,#78H;按键查看子程序 MOV A,P3 CPL A ANL A,#78H RETLCDINIT:;1602初始化子程序MOVA,#01H;清屏CALLWRCMOVA,#38H;设置液晶工作模式16*2行显示5*7点阵8位数据CALLWRCMOVA,#0CH;开显示不显示光标CALLWRCMOVA,#06H;整屏不移动,光标自动右移CALLWRCMOVA,#YH;显示位置 在1602第一行首 YH80HCA
17、LLWRC 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
18、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 RETXS: CALLWRITEYEAR CALL WRITEWEEK CALL WRITEY CALL WRITER CALL WRITES CALL WRITEF CALL WRITEMCBUSY:PUSHACC;检查忙PUSHDPHPUSHDPLPUSHPSWWEIT:CLRRSSETBRWCLRESETBEMOVA,P1CLREJBACC.7,WEITPO
19、PPSWPOPDPLPOPDPHPOPACCCALLDELAYRETWRC:CALLCBUSY;写命令字CLRECLRRSCLRRWSETBEMOVP1,ACLRECALLDELAYRETWRD:CALLCBUSY;写数据CLRESETBRSCLRRWSETBEMOVP1,ACLRECALLDELAYRETDELAY:MOVR7,#5LP1:MOVR6,#0F8HDJNZR6,$DJNZR7,LP1RETWRB:MOV40H,#8H;1302写命令字LPW:MOVA,BRRCAMOVB,AMOVSIO,CSETBSCLKCLRSCLKDJNZ40H,LPWRETRDB:MOV40H,#8;读数
20、据LPR:MOVC,SIORRCASETBSCLKCLRSCLKDJNZ40H,LPRRETREAD:MOVR0,#30H;读数据 存放在30H36HMOVR7,#7MOVR1,#81HLOOP2: CLRRSTCLRSCLKSETBRSTMOVB,R1CALLWRBCALLRDBMOVR0,AINCR0INCR1INCR1SETBSCLKCLRRSTDJNZR7,LOOP2RETDSINIT:CLRRST;1302初始化子程序CLRSCLKSETBRSTMOVB,#8EHCALLWRBMOVB,#00HCALLWRBSETBSCLKCLRRST MOV R0,#30H MOV R7,#7 M
21、OV R1,#80HLOOP: 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,LOOPRETWRITES: MOVA,#EH+2;1602显示写时CALLWRCMOVA,32HMOVB,#10HDIVAB ADD A,#30HCALLWRDMOVA,B ADD A,#30HCALLWRD RETWRITEF: MOVA,#EH+5;1602显示写分CALLWRCMOVA,31HMOVB,#10HDIVAB A
22、DD A,#30HCALLWRDMOVA,B ADD A,#30HCALLWRD RETWRITEM: MOVA,#EH+8;1602显示写秒CALLWRCMOVA,30HMOVB,#10HDIVAB ADD A,#30HCALLWRDMOVA,B ADD A,#30HCALLWRD RETWRITEY: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 RETWRITER:MOV A,#YH+8;1602显示写日 CALL WRC M
23、OV A,33H MOV B,#10H DIV AB ADD A,#30H CALL WRD MOV A,B ADD A,#30H CALL WRD RETWRITEYEAR:;1602显示写年MOVA,#YH+2CALLWRCMOVA,36H MOV B,#10H DIV AB ADD A,#30HCALLWRD MOV A,B ADD A,#30H CALL WRDRETWRITEWEEK:;写星期MOVA,#YH+0DHCALLWRCMOVA,35HMON:CJNEA,#1,TUEMOVA,#4DHCALLWRDMOVA,#4FHCALLWRDMOVA,#4EHCALLWRDMOVA,3
24、5HTUE:CJNE A,#2,WEDMOVA,#54HCALLWRDMOVA,#55HCALLWRDMOVA,#45HCALLWRDMOVA,35HWED:CJNEA,#3,THUMOVA,#57HCALLWRDMOVA,#45HCALLWRDMOVA,#44HCALLWRDMOVA,35HTHU:CJNEA,#4,FRIMOVA,#54HCALLWRDMOVA,#48HCALLWRDMOVA,#55HCALLWRDMOVA,35HFRI:CJNEA,#5,SATMOVA,#46HCALLWRDMOVA,#52HCALLWRDMOVA,#49HCALLWRDMOVA,35HSAT:CJNEA
25、,#6,SUNMOVA,#53HCALLWRDMOVA,#41HCALLWRDMOVA,#54HCALLWRDMOVA,35HSUN: MOVA,#53HCALLWRDMOVA,#55HCALLWRDMOVA,#4EHCALLWRDRETJIA: CJNE R4,#0,J1;设置内容+1子程序 没有按就返回扫描键盘 RETJ1: 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 RETJW1: INC
26、36HRETJ2: CJNE R4,#2,J3 MOV A,34H CJNE A,#12H,JWW1 MOV 34H,#01H RETJWW1: ANL A,#0FH CJNE A,#9,JW2 MOV A,#07H ADD A,34H MOV 34H,A RETJW2: INC 34H RETJ3: CJNE R4,#3,J4 MOV A,33H CJNE A,#31H,JWW2 MOV 33H,#01H RETJWW2: ANL A,#0FH CJNE A,#9,JW3 MOV A,#07H ADD A,33H MOV 33H,A RETJW3: INC 33H RETJ4: CJNE R
27、4,#4,J5 MOV A,35H CJNE A,#7,JWW3 MOV 35H,#01H RETJWW3: INC 35H RETJ5: CJNE R4,#5,J6 MOV A,32H CJNE A,#23H,JWW4 MOV 32H,#00H RETJWW4: ANL A,#0FH CJNE A,#9,JW4 MOV A,#07H ADD A,32H MOV 32H,A RETJW4: INC 32H RETJ6: CJNE R4,#6,J7 MOV A,31H CJNE A,#59H,JWW5 MOV 31H,#00H RETJWW5: ANL A,#0FH CJNE A,#9,JW5
28、MOV A,#07H ADD A,31H MOV 31H,A RETJW5: INC 31H RETJ7: MOV A,30H CJNE A,#59H,JWW6 MOV 30H,#00H RETJWW6: ANL A,#0FH CJNE A,#9,JW6 MOV A,#07H ADD A,30H MOV 30H,A RETJW6: INC 30H RETJIAN: CJNE R4,#0,D1;设置位减1的子程程序 原理同上 RETD1: CJNE R4,#1,D2 MOV A,36H CJNE A,#0,DW1 MOV 36H,#99H RETDW1: ANL A,#0FH JZ DWW1 D
29、EC 36H RETDWW1: MOV A,36H SUBB A,#07H MOV 36H,A RETD2: CJNE R4,#2,D3 MOV A,34H CJNE A,#1,DW2 MOV 34H,#12H RETDW2: ANL A,#0FH JZ DWW2 DEC 34H RETDWW2: MOV A,34H SUBB A,#07H MOV 34H,A RETD3: CJNE R4,#3,D4 MOV A,33H CJNE A,#01H,DW3 MOV 33H,#31H RETDW3: ANL A,#0FH JZ DWW3 DEC 33H RETDWW3: MOV A,33H SUBB
30、 A,#07H MOV 33H,A RETD4: CJNE R4,#4,D5 MOV A,35H CJNE A,#1,DWW4 MOV 35H,#07H RETDWW4: DEC 35H RETD5: CJNE R4,#5,D6 MOV A,32H CJNE A,#00H,DW5 MOV 32H,#23H RETDW5: ANL A,#0FH JZ DWW5 DEC 32H RETDWW5: MOV A,32H SUBB A,#07H MOV 32H,A RETD6: CJNE R4,#6,D7 MOV A,31H CJNE A,#00H,DW6 MOV 31H,#59H RETDW6: ANL A,#0FH JZ DWW6 DEC 31H RETDWW6: MOV A,31H SUBB A,#07H MOV 31H,A RETD7: MOV A,30H CJNE A,#00H,DW7 MOV 30H,#59H RETDW7: ANL A,#0FH JZ DWW7 DEC 30H RETDWW7: MOV A,30H SUBB A,#07
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100