整点报时 单片机 c语言,单片机整点报时编程

① 通过加入若干语句,对mg及ms变量进行控制,实现每当一秒钟到来时mg自动加1;当mg=10(即经历10秒钟)时mg自动清零,同时ms自动加1;当ms=2(即经历20秒)时ms自动清零,最终实现标准时间的秒信息显示(mg及ms变量通过串行口送出,经串并转换后至数码管显示)。

② 当秒钟为“20”时清零的同时控制P1.0上的LED点亮3秒钟。

当这个题目时 编程为

#include

//********数码管段代码表(共阴且高位接a,低位接h笔段)**********//

unsigned char code Tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,

0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};

unsigned char mg=0,ms=0,bittime=0;

//串口发送子程序//

void display(void)

{

TI=0; SBUF=Tab[ms]; while(!TI);

TI=0; SBUF=Tab[mg]; while(!TI);

}

//定时中断服务程序

void timer0 (void) interrupt 1 using 0

{

TH0=0x3c; TL0=0xb0; bittime++;

while(bittime==40)

{

bittime=0;

mg++;

if(mg==10)

{mg=0;

ms=ms+1;}

if(ms==2)

{mg=0;ms=0;P1_0=0;}

if(mg==3)

{P1_0=1;}

display();

//每经一秒调用一次显示程序(Fosc=24MHz)

}

}

//主程序

void main(void)

{

TMOD=0x01;SCON=0X00;

TH0=0x3c;TL0=0xb0;

EA=1; ET0=1; TR0=1;

while(1);

}

如果我想在上面题目下 加上 当它20秒时(也就是P1_0灯亮时)停止计数,直到3秒后(也就是灯又亮时) 再继续计数 要怎么改(加)上面的程序

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 单片机C51电子钟整点报时的实现思路如下: 1. 首先,需要连接一个实时时钟模块(RTC)到单片机C51上。实时时钟模块能够提供精确的时间信息。 2. 在C51的程序中,设置一个定时器,用来定时检查当时间,判断是否整点。 3. 在每次定时器中断发生时,读取实时时钟模块的时间,并判断是否整点。如果当时间的分钟和秒数均为0,则表示当整点。 4. 如果判断为整点,将调用相应的函数进行报时操作。可以通过连接扬声器或者蜂鸣器来发出报时声音。 5. 报时函数中,可以使用C51的IO口来控制扬声器或者蜂鸣器的输出,产生报时的声音。 6. 报时函数还可以通过连接LCD显示屏,在屏幕上显示当整点时间。 7. 如果希望报时声音更加清晰、响亮,还可以通过连接放大器等外部电路元件来提升音量。 8. 最后,将以上所有功能整合到C51的程序中,并通过编译和下载,将程序烧录到单片机中。 通过上述步骤,就可以实现单片机C51电子钟的整点报时功能。这样的电子钟不仅可以显示当的时间,还能够在整点时刻精确地发出报时声音,为用户提供准确的时间参考。 ### 回答2: 单片机C51电子钟整点报时是通过设置定时器和中断来实现的。 首先,需要定义一个变量用来记录当时间,可以使用一个结构体来保存时、分、秒的值。 接下来,我们需要初始化定时器和中断。选择一个适当的定时器,设置定时器的计数器初值和工作模式。同时,还需要开启定时器中断,以便定时器溢出时触发中断函数。 在中断函数中,首先判断当时间是否为整点,如果是整点则进行报时操作。报时操作可以通过控制LED灯显示相应的数字,或者通过蜂鸣器发出相应的声音来实现。 接着,需要在主函数中添加一个无限循环,以保持程序能够一直运行。在循环中可以添加一些其他的功能,比如按键检测等。 最后,需要注意编写代码时要考虑到各种情况的处理,比如在整点报时期间如果有按键操作怎么处理等。 总之,单片机C51电子钟整点报时的实现可以通过定时器和中断来完成,通过设置定时器的计数值和工作模式以及中断函数的编写来实现整点报时的功能。 ### 回答3: 单片机C51电子钟整点报时是通过设置一个定时器来实现的。首先,在程序中设置一个定时器,将其定时器中断设为1秒钟一次。然后,编写一个函数来处理定时器中断,并在其中判断是否为整点。 在处理中断函数中,通过获取当的小时值,判断是否为整点。如果是整点,就通过显示屏或喇叭等输出设备输出相应的报时信息。可以将整点时间以字符串的形式存储在程序中,比如每个整点时间对应一个字符数组,通过判断当时间与数组中的时间是否相等,来确定是否整点报时。 另外,为了保证准确性,可以在每个整点报时后,对定时器进行复位,并设置下一个整点时间的定时器中断。这样可以确保整点报时每次都是准确的。 此外,还可以根据需求添加其他功能,比如可以设置闹钟功能,通过编写相应的函数,在设定的时间到来时,触发相应的报警信号。 总结起来,通过单片机C51的定时器和中断处理功能,可以实现整点报时的电子钟。通过编写相应的程序和函数,可以准确地判断整点时间并输出相应的报时信息,使得电子钟具备整点报时的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值