如何做一个单片机电子时钟

作者&投稿:壤征 (若有异议请与网页底部的电邮联系)
如何用51单片机制作简易电子钟~

我自己做的一个课程设计,程序运行已经成功了:
汇编程序如下:
ORG 0000H
AJMP main
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处
ORG 30H
main:
mov dptr,#k1;
start:
MOV P0,#00H ;中断预处理程序
MOV P1,#00H
MOV P3,#00H ;关所有灯
MOV R0,#00H ;软件计数器预清0
MOV R7,#00H
MOV R6,#00H
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许
SETB TR0 ;定时/计数器0开始运行
LOOP: ;判断时钟进位程序

MOV A,R1
CJNE A,#60,LOOP1 ;R1等于60吗?
MOV R1,#0
INC R2 ;R1等于60那么R2加一,R1清0
MOV A,R2
CJNE A,#60,LOOP1 ;R2等于60吗?
MOV R2,#0
INC R3 ;R2等于60那么R3加一,R2清0
MOV A,R3
CJNE A,#24,LOOP1 ;R3等于24吗?
MOV R3,#0
;R3等于24那么R3清0
LOOP1:
mov a,r2 ;如果分钟显示为0,报警
cjne a,#01H,LOOP2
mov a,r1
cjne a,#00H,LOOP3
clr p2.0
LOOP3:
mov a,r1 ;如果秒钟显示为1,取消报警
cjne a,#05H,LOOP2
setb p2.0
LOOP2: ;显示数据处理
MOV A, R1 ;取来8位二进制数
MOV B, #100
DIV AB ;除以100
MOV A, B ;取回余数
MOV B, #10
DIV AB ;再除以10
MOV R4, A ;商是十位数,存放到R4
MOV R5, B ;余数是个位,存放到R5
MOV 42H,R4
mOV 41H,R5
;R1的BCD码放入41-42H单元
MOV A, R2 ;取来8位二进制数
MOV B, #100
DIV AB ;除以100
MOV A, B ;取回余数
MOV B, #10
DIV AB ;再除以10
MOV R4, A ;商是十位数,存放到R4
MOV R5, B ;余数是个位,存放到R5
MOV 44H,R4
MOV 43H,R5
;R2的BCD码放入43-44H单元
MOV A, R3 ;取来8位二进制数
MOV B, #100
DIV AB ;除以100
MOV A, B ;取回余数
MOV B, #10
DIV AB ;再除以10
MOV R4, A ;商是十位数,存放到R4
MOV R5, B ;余数是个位,存放到R5
MOV 46H,R4
mov 45H,R5
;R3的BCD码放入45-46H单元
L1:
mov a,41h
movc a,@a+dptr
mov 51h,a
mov a,42h
movc a,@a+dptr
mov 52h,a
mov a,43h
movc a,@a+dptr
mov 53h,a
mov a,44h
movc a,@a+dptr
mov 54h,a
mov a,45h
movc a,@a+dptr
mov 55h,a
mov a,46h
movc a,@a+dptr
mov 56h,a ;将显示代码送入51H--56H
display: ;显示程序
mov p0,#0ffH;一
mov p0,51H
mov P1,#0feH
acall delay1S
mov p1,#0ffH
mov p0,#0ffH;二
mov p0,52h
mov P1,#0fdH
acall delay1S
mov p1,#0ffH
mov p0,#0ffH;三
mov p0,53h
mov P1,#0fbH
acall delay1S
mov p1,#0ffH
mov p0,#0ffH;四
mov p0,54h
mov P1,#0f7H
acall delay1S
mov p1,#0ffH
mov p0,#0ffH;五
mov p0,55h
mov P1,#0efH
acall delay1S
mov p1,#0ffH
mov p0,#0ffH;六
mov p0,56h
mov P1,#0dfH
acall delay1S
mov p1,#0ffH
;将51H-56H数据显示,
AJMP LOOP ;工作处理程序
TIME0: ;定时器0的中断处理程序
INC R7
MOV A,R7
CJNE A,#20,T_RET ;R7单元中的值到了20了吗?
T_L1:
INC R1 ;到了20那么R1+1
MOV R7,#0 ;清软件计数器
T_RET:;二十分之一秒时的程序
inc r6
mov a,r6
cjne r6,#3,T_over ;调节时间的延迟时间
mov r6,#0
jb p2.1,T_over1
mov a,r2
add a,#1
cjne a,#60,T_tiao1
mov a,#0
T_tiao1:
mov r2,a

T_over1:
jb p2.2,T_over
mov a,r3
add a,#1
cjne a,#24,T_tiao2
mov a,#0
T_tiao2:
mov r3,a
T_over:
MOV TH0,#3CH
MOV TL0,#0B0H ;如果没到一秒重置定时常数
reti
delay1s: MOV 31H,#100
D1: MOV 32H,#30
D2: DJNZ 32H,D2
DJNZ 31H,D1
RET
delay2s: MOV 33H,#255
D3: MOV 34H,#255
D4: DJNZ 34H,D4
DJNZ 33H,D3
RET
K1:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
END

在网上买的组件自己DIY数码管时钟单片机闹钟

这个很简单啊,两种思路:1,用单片机定时器来做,优点是外围电路简单,只需要一个单片机最小系统,和一个显示模块(1602液晶比较好);缺点是:定时不是很准,跑的时间长了会有误差,而且主要是程序,要写很多,不过程序不是很难。2,用时钟芯片,一般都用DS1302,还需要单片机最小系统和显示模块,优点是:定时准确,误差很小,在有备用电池的情况下,即使单片机掉电,也可以维持很长时间,程序相对简单。缺点是:外围电路比前者相对复杂一点。如果想做个实际的东西拿来用,建议使用第二种方法,如果是想锻炼自己的编程能力的话,选第一种吧。祝成功!

这个很简单啊,两种思路:1,用单片机定时器来做,优点是外围电路简单,只需要一个单片机最小系统,和一个显示模块(1602液晶比较好);缺点是:定时不是很准,跑的时间长了会有误差,而且主要是程序,要写很多,不过程序不是很难。2,用时钟芯片,一般都用DS1302,还需要单片机最小系统和显示模块,优点是:定时准确,误差很小,在有备用电池的情况下,即使单片机掉电,也可以维持很长时间,程序相对简单。缺点是:外围电路比前者相对复杂一点。如果想做个实际的东西拿来用,建议使用第二种方法,如果是想锻炼自己的编程能力的话,选第一种吧。祝成功。

你需要一个单片机最小系统,一个显示模块比如液晶或者数码管,一个时钟芯片比如DS1307,用单片机给时钟芯片初始化,然后用液晶显示就可以了

在网上买的组件自己DIY数码管时钟单片机闹钟



郭天祥的书《十天学会单片机》上,原版的,摆在那,看不看由你


...硬件电路设计、如果用单片机的话需编写软件、PCB?
一、项目评估:出初步技术开发方案,据此出预算,包括可能的开发成本、样机成本、开发耗时、样机制造耗时、利润空间等,然后根据开发项目的性质和细节评估风险,以决定项目是否落实资金上马。二、项目实施:1、设计电原理图:在做这一步时要考虑单片机的资源分配和将来的软件框架、制定好各种通讯协议,尽量避免...

能给做一个用单片机at89c51的简易电子时钟吗?要有程序,流程图proteus...
我这里有一个是用DS1302的,经过测试的,希望对你有帮助 程序如下:include <reg52.h> include<intrins.h> define uchar unsigned char define uint unsigned int sbit rst=P3^5;sbit sck=P3^4;sbit io=P3^3;uchar i,j;uchar shumaguan[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,...

用单片机设计一个电子时钟
MAIN ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030H PORT EQU 8000H PORTA EQU 8001H PORTB EQU 8002H PORTC EQU 8003H DISP0 EQU 30H DISP1 EQU 31H DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H DISP5 EQU 35H HOUR EQU 3CH MIN EQU 3DH SEC EQU...

51单片机简易电子钟设计。汇编语言编写
#0 CLR PAUSE SETB EA SETB ET1 SETB TR1LOOP: LCALL KEYSEL MOV A,KEYVAL CJNE A,#0FFH,LOOP1 SJMP LOOPLOOP1: CJNE A,#10,LOOP2 ;“ON”启动 SETB TR0 SETB ET0 SETB PAUSE SJMP LOOPLOOP2: CJNE A,#11,LOOP3 ;“=”清零 MOV SEC,#0 MOV MIN,#0 ...

什么是单片机?它的原理是什么?
面对如此情况,作为在校学生,又该从何学起?如何学好这门课程呢?又怎样才能不让自己学了等于没学呢?本文在多年实践的基础上,介绍自已的一些感受和经验。理解单片机的结构 对于一个初学者,最迷糊的就是对单片机芯片里面的结构的理解,小小的一个芯片为何能完成如此神奇的功能。第一次从事电子方面的工作...

基于51单片机的电子设计
只要有兴趣都可以做的,智能车简单的那种,电路模块自己按电路焊接就可以了,至于编程也不是很难,尝试着做一下,我对那些也不是很懂,现在也在尝试做巡游避障智能车,也在学习中,就算失败了,也积累点经验不是什么坏事情,共勉吧

51单片机怎么入门
只要过了第一关,后面的路就好走多了,万事开头难,大家都听过。方法二、你身边如果有单片机方面的高手,向他求助,让他帮你搭个简单的最小系统板。对于高手来说,做个单片机的最小系统板可能只需要几分钟的时间,而对于初学者可就难多了,因为只有对硬件彻底了解了,你才能熟练的驾驭它。而如果你...

我是一个软件工程师,请问要开发一个完整的单片机系统,需要学什么?_百度...
呵呵 我想,要真正什么都可以来的话,你还是多学点电子方面的书。特别是数字电路等方面的。你以前做过软件的,软件方面用以前的知识就可以了,即使是电脑编程的,要移到单片机上也是很容易的,汇编和c都可以用来给单片机编程的。

用单片机设计一个时钟,可显示时和分,可以调时间,也要有闹钟功能,要有设...
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};定义0-9数组 unsigned int tmp;定义变量 void delay(unsigned int xms)定义延时函数 {unsigned int j,i;for(i=0;i<xms;i++)for(j=0;j<100;j++);} void disp()定义子函数 { P1=tmp;delay(1);P2=...

怎么学习做好51单片机的外围设计电路?
在调试的过程中他\/她要组织好软件工程师来一起攻关调试,配合测试工程师一起解决测试中发现的问题,等到产品推出到现场,如果出现问题,还需要做到及时的支持。所以做一个硬件设计人员要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等等。还有细心和认真...

清河县13377527927: 单片机电子钟程序 -
敏哑石斛: 51单片机在数码管上显示的数字钟程序:#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,0...

清河县13377527927: 用单片机实现电子钟?
敏哑石斛: 这个用单片机的时钟中断来实现就可以了,还是比较简单的,更简单的办法,是根据单片机的频率用循环来控制也可以

清河县13377527927: 用单片机设计一个电子时钟 -
敏哑石斛: MAIN ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0030H PORT EQU 8000H PORTA EQU 8001H PORTB EQU 8002H PORTC EQU 8003H DISP0 EQU 30H DISP1 EQU 31H DISP2 EQU 32H DISP3 EQU 33H DISP4 EQU 34H ...

清河县13377527927: 怎么用51单片机做一个时钟 -
敏哑石斛: 一片单片机+一个LED数码模块或LCD液晶模块+一段简单的程序=一个简单的时钟. 一片单片机+一片DS1302或其他的时基芯片+一个LED数码模块或LCD液晶模块+一段简单的程序=一个实用的时钟. 系统构成确定了以后,程序就有现成的了,可以移步到百度网页“百度一下”里搜索,资源多如牛毛.

清河县13377527927: 第一次弄单片机,想实现一个数字时钟 -
敏哑石斛: 做电子时钟,首先要设计电路啊,是用数码管显示,还是用LCD屏显示.要做实物还要焊接板子.这些电路做完了,才开始写程序的.没有电路是不好写程序的. 至于时钟就好写了,用定时器定时20ms,或50ms,采用中断方式,然后对中断计数,中断50次,或20次就是1秒. 有了1秒,就好办了,计60秒,为1分,计计60分,为1小时,计24小时,为1天.计时后再显示出来,就成了.

清河县13377527927: 用单片机制作一个简易的时钟.. -
敏哑石斛: #include<reg52.h> #include"segnumca.h" #define uchar unsigned char sbit _speak=P1^0; //蜂鸣器P1^0 uchar hello_[]={0x89,0x86,0xc7,0xc7,0xc0,0xf7}; //HELLO_ uchar con[]={0x01,0x02,0x04,0x08,0x10,0x20}; //位控制 uchar time0=100; ...

清河县13377527927: 单片机电子时钟编程 -
敏哑石斛: SDA BIT P0.0 SCL BIT P0.1 LED0 EQU 40H LED1 EQU 41H LED2 EQU 42H LED3 EQU 43H LED4 EQU 44H LED5 EQU 45H second equ 50h minute equ 51h hour equ 52hMOV DPTR, #TABLEMOV LED0,#0MOV LED1,#5MOV LED2,#9 ...

清河县13377527927: 基于单片机的数字时钟设计方案 -
敏哑石斛: 数字钟〔★〕这里用了两种编写方法(即汇编语言与C语言) (1. 开机时,显示12:00:00的时间开始计时;(2. P0.0/AD0控制“秒”的调整,每按一次加1秒; (3. P0.1/AD1控制“分”的调整,每按一次加1分; (4. P0.2/AD2控制“时”的调...

清河县13377527927: 如何利用单片机进行电子钟的设计 -
敏哑石斛: 你好!电子钟的种类很多,可以LED显示,可以液晶显示可以采用定时器来做,也可以用时钟芯片来完成可以带有年月日和星期的功能具体要实现什么,还请你详细说明

清河县13377527927: 单片机写一个电子时钟表
敏哑石斛:if(key1==0) { num++; if(num==4) TR0=1; else TR0=0; } if(key2==0) { switch(num) { case 1:second++;break; case 2:minute++;break; case 3:hour++;break; } } if(key3==0) { switch(num) { case 1:second--;break; case 2:minute--;break; case 3:hour--;break; } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网