设计与开发

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

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

学习笔记单片机的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秒

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

单片机快速入门:12864液晶屏实现多功能数字时钟

想要快速入门单片机,就要多动手实践。也许你的手上有不止一块的单片机开发板,但是你有没有亲自动手实现自己的想法?单片机实现数字时钟是一个不错的想法。有12864液晶显示屏、有按键、有DS18B20。最关键的,你能从一个小的实验设计中获得设计经验,熟悉产品开发的流程,你会慢慢爱上这一行。

文末会有原理图和hex程序文件的下载方式,可以更好的帮助你学习,感谢杜洋工作室。

器件清单

1.元器件清单

首先来看看所需要的清单:51单片机STC12C5A60S2、12864液晶屏、温度传感器DS18B20、时钟芯片DS1302、光敏电阻、四腿按键等。

STC12C5A60S2

所用单片机为国产51单片机,型号为STC12C5A60S2,DIP40封装。

12864液晶屏

显示器件为12864液晶屏。

时钟芯片DS1302

时钟采用DS1302芯片,配电池、32.768K的晶振。

温度传感器DS18B20

环境温度的检测用DS18B20来实现。

光敏电阻

光敏电阻用于感知白天和晚上。

四腿机械按键实现时钟调整、闹钟设置等功能。

2.实现原理图

这是整体的原理图。

3.整体外观和显示

未来时钟背面

焊接完成后的未来时钟背面。

闹钟调整界面

可以实现时间的显示,闹钟的设置,关键还有重要节气的显示。

正常显示界面

私信回复关键字:未来时钟 。即可获取原理图和hex文件。感谢杜洋工作室。

相关问答

单片机 模拟时钟系统流程分析?

如果是模拟量,这种模拟量一般是用运放电路,把这个信号转换成0-5v的信号。如果是开关量,就简单了,信号驱动能力大的话可以用光耦,驱动能力小就用三极管,都可...

【知道 单片机 的频率,要求时钟周期和机器周期是多少,怎么算啊...

[最佳回答]这得看是什么单片机了:对于精简指令集性能的单片机的工作频率(1/机器周期)=时钟频率(1/时钟周期).普通的51单片机来说:频率是1MHZ,时钟周期是1/12us...

单片机 时钟有哪些产生方式?

单片机时钟产生方式主要有晶振、RC振荡器、DDS、PLL等方式。其中,晶振作为产生单片机时钟信号的主要方式,其具有稳定性高和频率精度高的特点,同时其成本也比较...

单片机 电子时钟详细流程图怎么画?

利用实验平台上的4个LED数码管,设计带有闹铃功能的数字时钟。1、在4位数码管上显示当前时间,计时格式为“时时分分”2、由LED闪烁做秒显示3、利用按键可...

什么是 单片机 数字 时钟信号?

单片机的数字时钟信号是指用于驱动单片机(微控制器)执行各种操作和计算的时钟信号。这些时钟信号通常由外部晶振或内部电路产生,并以固定的频率和周期性脉冲的...

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

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

单片机 时钟频率为6MHZ,机器周期为多少是51 单片机 _作业帮

[最佳回答]■\x09(1)振荡周期:也称时钟周期,是指为单片机提供时钟信号的振荡源的周期,一般实验板上为11.0592MHZ,12MHZ和24MHZ用的也比较多.■\x09(2)状态周期...

单片机 是如何实现自动运行 程序 的?

单片机实现自动运行程序的过程如下:首先,将程序代码编写并存储在单片机的存储器中。然后,通过设置单片机的复位电路,使其在上电或复位时自动开始执行程序。...

51 单片机 时钟信号怎么输入?

若使用有源晶振,51单片机的时钟信号可以XⅠALⅠ引脚输入,此时XlALO引脚悬空;若使用无源晶振,该晶振应跨接在上述两个引脚之间。现在的51单片机大多集成了内...

求一个51 单片机 定时 闹钟程序 。要C语言。能够调时间 - 懂得

我来发一个C语言211351单片机时钟程序,希望5261能帮到你/*程序功能:4102带定时闹铃时钟*//*--P0=d...

猜你喜欢