设计与开发

单片机 多功能数字钟 单片机实例:六位显示数码管时钟((附闹钟设置,源码,原理图)

小编 2024-10-12 设计与开发 23 0

单片机实例:六位显示数码管时钟((附闹钟设置,源码,原理图)

从左到右的开关控制分别为:秒设置、分设置、时设置、进入时间设置(设置时间需要按一下这个再按前面3个按键设置)、闹钟设置(通过前面3个按键设置)、保存设置(设置完成后按下保存并退出)。

时钟可以显示到秒位

数码管用的是共阴,共阳的话加三极管闲麻烦,没加。数码管a~g接的P0口,没用10K排阻上拉,试了下觉得亮度太低了,就都换成了2K的作为上拉。

有兴趣的可以给加上温度传感器,可以显示温度(我这里面就没加了)初学单片机没多久,欢迎大佬指导。材料如下:89C52*1 4位数码管*1+2位数码管*1(当然如果有六位的也可以直接用,找不到其他数码管了就这么混搭了) 有源蜂鸣器*1(试过无源,但时间计算过于占用资源导致发声不是很完美,大佬可以改一下) 轻触开关*7(1个用于复位,其余六个用于设置) + 自锁开关*1 电池*1 + 5V稳压*1

单 片 机 时 钟 源 码 程 序--戳可见--->51单片机六位显示数码管时钟实例(带闹钟设置,源码,原理图)

学习笔记单片机的40个经典实验之20:数字钟﹝﹞

一、实验任务

(1. 开机时,显示 12:00:00 的时间开始计时;

(2. P0.0/AD0 控制“秒”的调整,每按一次加 1 秒;

(3. P0.1/AD1 控制“分”的调整,每按一次加 1 分;

(4. P0.2/AD2 控制“时”的调整,每按一次加 1 个小时;

二、电路原理图

图 4.20.1

三、 系统板上硬件连线

(1. 把“单片机系统”区域中的 P1.0-P1.7 端口用 8 芯排线连接到“动态数码显示”区域中的 A-H 端口上;

(2. 把“单片机系统:区域中的 P3.0-P3.7 端口用 8 芯排线连接到“动态数码显示”区域中的 S1-S8 端口上;

(3. 把“单片机系统”区域中的 P0.0/AD0、P0.1/AD1、P0.2/AD2 端口分别用导线连接到“独立式键盘”区域中的 SP3、SP2、SP1 端口上;

四、相关基本知识

(1. 动态数码显示的方法

(2. 独立式按键识别过程

(3. “时”,“分”,“秒”数据送出显示处理方法

五、程序框图

六、汇编源程序

SECOND EQU 30H

MINITE EQU 31H

HOUR EQU 32H

HOURK BIT P0.0

MINITEK BIT P0.1

SECONDK BIT P0.2

DISPBUF EQU 40H

DISPBIT EQU 48H

T2SCNTA EQU 49H

T2SCNTB EQU 4AH

TEMP EQU 4BH

ORG 00H

LJMP START

ORG 0BH

LJMP INT_T0

START: MOV SECOND,#00H

MOV MINITE,#00H

MOV HOUR,#12

MOV DISPBIT,#00H

MOV T2SCNTA,#00H

MOV T2SCNTB,#00H

MOV TEMP,#0FEH

LCALL DISP

MOV TMOD,#01H

MOV TH0,#(65536-2000) / 256

MOV TL0,#(65536-2000) MOD 256

SETB TR0

SETB ET0

SETB EA

WT: JB SECONDK,NK1

LCALL DELY10MS

JB SECONDK,NK1

INC SECOND

MOV A,SECOND

CJNE A,#60,NS60

MOV SECOND,#00H

NS60: LCALL DISP

JNB SECONDK,$

NK1: JB MINITEK,NK2

LCALL DELY10MS

JB MINITEK,NK2

INC MINITE

MOV A,MINITE

CJNE A,#60,NM60

MOV MINITE,#00H

NM60: LCALL DISP

JNB MINITEK,$

NK2: JB HOURK,NK3

LCALL DELY10MS

JB HOURK,NK3

INC HOUR

MOV A,HOUR

CJNE A,#24,NH24

MOV HOUR,#00H

NH24: LCALL DISP

JNB HOURK,$

NK3: LJMP WT

DELY10MS:

MOV R6,#10

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

RET

DISP:

MOV A,#DISPBUF

ADD A,#8

DEC A

MOV R1,A

MOV A,HOUR

MOV B,#10

DIV AB

MOV @R1,A

DEC R1

MOV A,B

MOV A,#10

MOV@R1,A

INT_T0:

ADD A,DISPBIT

MOV R0,A

MOV A,@R0

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P1,A

MOV A,DISPBIT

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV P3,A

INC DISPBIT

MOV A,DISPBIT

CJNE A,#08H,KNA

MOV DISPBIT,#00H

KNA: INC T2SCNTA

MOV A,T2SCNTA

CJNE A,#100,DONE

MOV T2SCNTA,#00H

INC T2SCNTB

MOV A,T2SCNTB

CJNE A,#05H,DONE

CJNE A,#60,NEXT

CJNE A,#24,NEXT

MOV HOUR,#00H

NEXT: LCALL DISP

DONE: RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H

TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

END

七、C 语言源程序

#include <AT89X51.H>

unsigned char code dispcode={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00};

unsigned char dispbitcode={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};

unsigned char dispbitcnt;

unsigned

char second;

char minite;

char hour;

int tcnt;

char mstcnt;

unsigned char i,j;

void main(void)

{

TMOD=0x02;

TH0=0x06;

TL0=0x06;

TR0=1;

ET0=1;

EA=1;

while(1)

{

if(P0_0==0)

{

for(i=5;i>0;i--)

for(j=248;j>0;j--);

second++;

if(second==60)

{

second=0;

}

dispbuf[0]=second%10;

dispbuf[1]=second/10;

while(P0_0==0);

if(P0_1==0)

minite++;

if(minite==60)

{

minite=0;

}

dispbuf[3]=minite%10;

dispbuf[4]=minite/10;

while(P0_1==0);

if(P0_2==0)

hour++;

if(hour==24)

{

hour=0;

}

dispbuf[6]=hour%10;

dispbuf[7]=hour/10;

while(P0_2==0);

void t0(void) interrupt 1 using 0

{

mstcnt++;

if(mstcnt==8)

{

mstcnt=0;

P1=dispcode[dispbuf[dispbitcnt]];

P3=dispbitcode[dispbitcnt];

dispbitcnt++;

if(dispbitcnt==8)

{

dispbitcnt=0;

tcnt++;

if(tcnt==4000)

{

tcnt=0;

阅读本文用了: 秒,转发只需1秒

转载是一种智慧 分享是一种美德❀

相关问答

单片机 做的 数字钟 咋样的?

一般来讲,同样的逻辑,基于fpga要比基于单片机要快很多,因为它们工作的原理是完全不同的。单片机是基于指令工作的,同样的激励到达单片机后,单片机首先要判...

盆友们!问大家一下 led 数字 电子时钟工作原理?

电子钟相关毕业设计·数字电子钟的电路设计·数字电子钟的设计与制作·数字钟的设计·基于8051单片机的数字钟·基于单片机的电子时钟控制系统·数...

led 数字 电子时钟工作原理?

[回答]去购一块“数字时钟集成电路IC”,再搞一块LED显示屏模块,配套的电源变压器,自己组装啦。也可直接买一个全套的散件,回来简单的焊吧焊吧就可用啦。...

电子钟怎么调时间 数字 电子钟有什?

数字电子钟的设计数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路...

用51 单片机 做电子钟,自动校时方面最简单的能用什么方法?

一、数字钟的组成与基本原理一、课程名称:数字电子钟的设计。二、内容:设计并制作一台数字电子钟,完成设计说明书。三、设计内容及要求:设计内容:要...

有没有 用51 单片机 做电子钟,自动校时方面最简单的能用什么方法?

我有一个显示时分秒的,可以调校。至于闹钟和秒表自己改一下就可以了。发给你了。程序只发了c文件,自己编译一下就可以农历转换需要以个数据库,我赠...

51 单片机 电子时钟课程设计程序 急急急急。。。。。。。。。

下面是具体的设计:数字时钟的设计与制作摘要:本系统是采用555构成的多协振荡器、74LS90芯片组合做成的数子时钟系统。其中用555构成的多协振荡器产...

单片机 里面电位器名称?

AND与门ANTENNA天线BATTERY直流电源BELL铃,钟BVC同轴电缆接插件BRIDEG1整流桥(二极管)BRIDEG2整流桥(集成块)BUFFER缓冲器B...

如何看待学生写作业用写字机器人?

有人会说,有可能是教师在作业量上没有控制好。如果不是逼急了,谁会花这么多钱买个设备来替自己写作业啊。不得不说,我觉得这样的可能性还是很大的。最近的减...

挂在墙上电子钟如何调温度.i温度显示很低怎么调节,有没有办法调?

如果是采用DS18B20这种一体化数字式温度传感器的话,没法调节,只能更改单片机的程序来解决这个误差。如果是热敏电阻之类的传感器的话,检查一下周围有没有电位...

猜你喜欢