让51单片机闹钟响十秒怎样写程序?

让51单片机闹钟响十秒怎样写程序?,第1张

显示格式为“时时分分”。由分位闪动来做秒计数表示。

一旦时间到则发出声响。

程序执行后工作指示灯LED闪动,表示程序开始执行,显示器显示“0000”,按下 *** 作键K1~K4动作如下:

(1) K1—设置现在的时间。

(2) K2—显示闹钟设置的时间。

(3) K3—设置闹铃的时间。

(4) K4—闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。

设置当前时间或闹铃时间如下。

(1) K1—时调整。

(2) K2—分调整。

(3) K3—设置完成。

(4) K4—闹铃时间到时,发出一阵声响,按下本键可以停止声响。

问题不是很清晰!

首先,定时器溢出时间较短,需要在定时器中断外另设计数单元

其次,什么叫“检验对准时间”?我的理解是:使用一段程序来检验当前时间与设定时间(闹钟的定时值)的差值,差值为零时报时。基于该理解,有两种方式(根据你自己的情况自选):

1)先设计出一个时钟,然后将时钟值与设定值比对,具体语句可以使用“异或”(两时间相同时,异或值为零),或cjne指令本人倾向于后者(如:万一出现干扰在两值相同时没有比较,前者就失效了,而后者还能继续比较)。

2)

预置一个变量,每个固定时间间隔(使用定时中断)减一,到零时报时但要注意,直接在定时中断程序中减一时一定要在中断中判断到零否,否可能则会出现不报时的问题。

C语言时间计数从1970-1-1始。

time()

函数返回

time_t

就是这个计数。

你若会

2011年01月10日10点钟

time_t

后面

它作时间

比较

就很简单。

设一个时间标志

flag=0,

当时间等于

2011年01月10日10点钟

flag=1。

如果

关掉按键

按了,则

flag=0

flag==1

beep,

否则

不响。

==============================

time_t

rawtime

struct

tm

*

target_time

time_t

t_end,t_now

/*

get

current

timeinfo

and

modify

it

to

the

user's

choice

*/

time

(

&rawtime

)

target_time

=

localtime

(

&rawtime

)

//

time_t

to

tm

//

time

struc

and

to

time_t

target_time->tm_year

=

2011

-

1900

target_time->tm_mon=

1

-

1

//

month

-

1

target_time->tm_mday

=

10

//

day

target_time->tm_hour

=

10

//

hour

target_time->tm_min

=

1

target_time->tm_sec

=

1

t_end

=

mktime

(target_time)

//

t_end

就是

2011年01月10日10点

时间计数

t_now

=

time(NULL)

//

现在时间计数

=============

若用条件语句:

if

(年

>

2011)

goto

Lab

if

(

(年

==

2011)

&&

(月>

1))

goto

Lab

if

(

(年

==

2011)

&&

(月==

1)

&&

(日

>10))

goto

Lab

if

((年

==

2011)

&&

(月==

1)

&&

(日

==

10)

&&

(时

>

10))

goto

Lab

继续计时

Lab:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11554873.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存