lzth.net
当前位置:首页 >> 51单片机闹钟 >>

51单片机闹钟

问题不是很清晰!首先,定时器溢出时间较短,需要在定时器中断外另设计数单元; 其次,什么叫“检验对准时间”?我的理解是:使用一段程序来检验当前时间与设定时间(闹钟的定时值)的差值,差值为零时报时.基于该理解,有两种方式(根据你自己的情况自选):1)先设计出一个时钟,然后将时钟值与设定值比对,具体语句可以使用“异或”(两时间相同时,异或值为零),或CJNE指令;本人倾向于后者(如:万一出现干扰在两值相同时没有比较,前者就失效了,而后者还能继续比较).2) 预置一个变量,每个固定时间间隔(使用定时中断)减一,到零时报时;但要注意,直接在定时中断程序中减一时一定要在中断中判断到零否,否可能则会出现不报时的问题.

很简单的,上网搜时钟程序,再找找DS1302的使用说明,改改程序,焊焊板子就搞定了.自己动手,丰衣足食.

简单啊,你肯定是用定时中断来做实时时钟的吧,每次中断计数到了秒之后,判断一下当前的时间是否等于闹钟时间,相等的话就驱动蜂鸣器响一定时间就可以了,不相等的话什么都不做

51单片机有两个16位的定时器,若果采用方式1的话,计时16位,最大计时时间65536*1us=65.36ms,一个定时器 计时,一个定时器计数,完成一次的时间65.36ms*65536大于一个小时的时间,去适当的值,定时一周期一个小时,然后循环,在定时的过程中,把定时的秒数分别转化成小时,分钟和秒用led显示,就行了.编程也很简单,书上第五,六章有定时器的用法.

我来发一个C语言51单片机时钟程序,希望能帮到你 /* 程序功能:带定时闹铃时钟 */ /*---------------------------------------------------------------*/ #include /*包含器件配置文件*/ #define uchar unsigned char #define uint unsigned int char DATA_7SEG[10]={0

振荡周期为频率的到数1/12us,一个状态周期等于2个振荡周期,1/6us

用KEIL C51编译通过 CODE_SEG SEGMENT CODE DATA_SEG SEGMENT DATA STACK_SEG SEGMENT IDATA K1 BIT P1.4 K2 BIT P1.5 RSEG DATA_SEG KEY_S: DS 1 KEY_V: DS 1 DIS_DIGIT: DS 1 SEC: DS 1 DIS_INDEX: DS 1

定义显示缓冲区 unsigned char dispbitcnt;显示位加1 if(dispbitcnt==8) /秒满60?{ second=0; ///累加器清零 P1=dispcode[dispbuf[dispbitcnt]]; //分钟满60 { minite=0; // dispbuf[7]=hour/ if(hour==24) { hour=0;//p01的按键按下,设置分钟; } dispbuf[

1.液晶屏选串口控制的 显示 2-3IO 2.蜂鸣器 闹钟 1IO 3.按钮 移位+增减调整 2IO 共计5-6IO

不用ds1302#include <reg52.h>sbit led=P1^0;sbit key=P1^1; int s=0;int n=0;int b=0;int a=1;void delay10ms(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--);} void timer(void) interrupt 1 using 1{ int i; if(i==

xaairways.com | 5615.net | qyhf.net | artgba.com | sbsy.net | 网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com