设计与开发

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

小编 2024-10-13 设计与开发 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秒

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

相关问答

单片机数字钟 毕业中期检查表中的一个问题 - 沈禾欣子 的回答...

电子钟相关毕2113业设计·数字电子钟的电5261路设计(字数:9242,页数4102:22)·数字电子钟的设计与制作1653(字数:8017,页数:22)·数字钟的设计(字数...

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

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

EDA 数字钟 设计电路图显示时分秒日期星期能整点报...- 汇财吧...

[回答]『数字电路』课程设计指导书一、教学目标(一)课程性质课程设计。(二)课程目的训练学生综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电...

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

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

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

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

老表们,谁清楚,用51 单片机 做电子钟,自动校时方面最简单的...

[回答]你的校时只的是调时间还是调时钟的准确度?如果是调时间用个2个按钮就好了。校时的话51就是走不准的一天有误差难免的。这个晶振有关系的,当然你觉...

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

[回答]电子钟表中AL是闹钟英文名称的缩写。电子钟表的时钟功能:具有可选的24h(小时)或12h(小时)的计时方式,显示时、分、秒;具有快速校准时、分、秒的功能...

用C语言写51 单片机 闹钟程序 - 156****1626 的回答 - 懂得

汇编做的可以不.有秒表.有闹钟.//*********************************************************//实现2113功能:本程序实现在P1口模拟一个...

铷钟原理?

铷钟又被称为铷原子钟,铷原子钟由铷量子部分和压控晶体振荡器组成。压控晶体振荡器的频率经过倍频和频率合成,送到量子系统与铷原子跃迁频率进行比较。误差信...

不要一直滴滴滴的响(做钟报时用的)-ZOL问答

用无源蜂鸣器,通过单片机控制频率可能是某个地方磕得松动了内存之类的你打开看看额...是不是你线没连接好啊键盘上有很多组合键一起按电脑就会滴滴滴...

猜你喜欢