制作51单片机小闹钟 20
我想制作一个51单片机小闹钟,时钟芯片用ds1302,在每天的固定时刻,点亮led灯。不需要显示时间,硬件只有单片机模块和ds1302模块...
我想制作一个51单片机小闹钟,时钟芯片用ds1302,在每天的固定时刻,点亮led灯。不需要显示时间,硬件只有单片机模块和ds1302模块
展开
6个回答
展开全部
不用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==20)
{
s++;
i=0;
}
if(s==60)
{
n++;
s=0;
}
if(n==a)
{
led=0;
s=0;
n=0;
b=0;
}
i++;
TH0=(65536-52800)/256;
TL0=(65536-52800)%256;
}
void init(void)
{
EA=1;
TMOD=0x01;
ET0=1;
TH0=(65536-52800)/256;
TL0=(65536-52800)%256;
TR0=1;
}
void main()
{
init();
while(1)
{
if(n==a)
{
led=0;
}
if(key==0)
{
delay10ms();
if(key==0)a++;
}
}
}
//用keil4通过编译了默认定时1小时按一下key就加一最大定时24小时
#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==20)
{
s++;
i=0;
}
if(s==60)
{
n++;
s=0;
}
if(n==a)
{
led=0;
s=0;
n=0;
b=0;
}
i++;
TH0=(65536-52800)/256;
TL0=(65536-52800)%256;
}
void init(void)
{
EA=1;
TMOD=0x01;
ET0=1;
TH0=(65536-52800)/256;
TL0=(65536-52800)%256;
TR0=1;
}
void main()
{
init();
while(1)
{
if(n==a)
{
led=0;
}
if(key==0)
{
delay10ms();
if(key==0)a++;
}
}
}
//用keil4通过编译了默认定时1小时按一下key就加一最大定时24小时
参考资料: 我自己
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单的,上网搜时钟程序,再找找DS1302的使用说明,改改程序,焊焊板子就搞定了。自己动手,丰衣足食。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然时间控制都由ds1302完成了,单片机只要读入ds1302的数据,然后和定时时间比较下就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很简单,不过没人愿意帮你改,
自己搜索就行了
自己搜索就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询