51开发板定时时钟

定时闹钟基于
51开发板,用到了LCD1602,Delay延迟函数,按键扫描。

定时时钟不能实现声音提示只能实现光标闪烁。并且不能提供实时,

时间设置函数(调时功能将时间调到要定时的时间)

               if (dipl_mode == 1)

               {

                    if (flag == 0) // 时间设置

                    {

                         switch (set_mode)

                         {

                         case 1:

                               hour++; // 时钟+

                               if (hour == 24)

                                   hour = 0;

                               break;

                         case 2:

                               min++; // 分钟+

                               if (min == 60)

                                    min = 0;

                               break;

                         case 3:

                               sec++; // 秒钟+

                               if (sec == 60)

                                    sec = 0;

                               break;

                         }

                    }

                    else if (flag == 1) // 日期设置

                    {

                         switch (set_mode)

                         {

                         case 1:

                               year++; // 年+

                               if (year == 100)

                                    year = 0;

                               break;

                         case 2:

                               month++; // 月+

                               if (month == 13)

                                    month = 1;

                               break;

                         case 3:

                               day++; // 日+

                               if (day > daysInCurrentMonth)

                                    day = 1;

                               break;

                         }

                    }

               }

时钟显示

     if ((flag == 1) && (dipl_mode ==

定时闹钟基于
51开发板,用到了LCD1602,Delay延迟函数,按键扫描。

定时时钟不能实现声音提示只能实现光标闪烁。并且不能提供实时,

时间设置函数(调时功能将时间调到要定时的时间)

               if (dipl_mode == 1)

               {

                    if (flag == 0) // 时间设置

                    {

                         switch (set_mode)

                         {

                         case 1:

                               hour++; // 时钟+

                               if (hour == 24)

                                   hour = 0;

                               break;

                         case 2:

                               min++; // 分钟+

                               if (min == 60)

                                    min = 0;

                               break;

                         case 3:

                               sec++; // 秒钟+

                               if (sec == 60)

                                    sec = 0;

                               break;

                         }

                    }

                    else if (flag == 1) // 日期设置

                    {

                         switch (set_mode)

                         {

                         case 1:

                               year++; // 年+

                               if (year == 100)

                                    year = 0;

                               break;

                         case 2:

                               month++; // 月+

                               if (month == 13)

                                    month = 1;

                               break;

                         case 3:

                               day++; // 日+

                               if (day > daysInCurrentMonth)

                                    day = 1;

                               break;

                         }

                    }

               }

时钟显示

     if ((flag == 1) && (dipl_mode == 1) && (set_mode == 1)) // 设置时钟,做闪烁效果

     {

          if (twinkle)

          {

               lcd1602_show_string(0, y, "  "); // 清空显示

               twinkle = 0;

          }

          else

          {

               lcd1602_show_string(0, y, date_time); // 显示时间

               twinkle = 1;

          };

引脚配置:

sbit LCD_RS=P2^6;

sbit LCD_RW=P2^5;

sbit LCD_EN=P2^7;

void LCD_Init()

{

     LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵

     LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关

     LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动

     LCD_WriteCommand(0x01);//光标复位,清屏

定时闹钟主要是用LCD实现显示,如图所示当到达定时时间右上角会出现#。

 
这个闹钟还有很多地方要完善,代码需要进行多次调试优化,该功能还可以和蜂鸣器结合让该功能更加完善还可以增加计数功能还可以利用DS1302做成实时时钟1) && (set_mode == 1)) // 设置时钟,做闪烁效果

     {

          if (twinkle)

          {

               lcd1602_show_string(0, y, "  "); // 清空显示

               twinkle = 0;

          }

          else

          {

               lcd1602_show_string(0, y, date_time); // 显示时间

               twinkle = 1;

          };

引脚配置:

sbit LCD_RS=P2^6;

sbit LCD_RW=P2^5;

sbit LCD_EN=P2^7;

void LCD_Init()

{

     LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵

     LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关

     LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动

     LCD_WriteCommand(0x01);//光标复位,清屏

定时闹钟主要是用LCD实现显示,如图所示当到达定时时间右上角会出现#。


这个闹钟还有很多地方要完善,代码需要进行多次调试优化,该功能还可以和蜂鸣器结合让该功能更加完善还可以增加计数功能还可以利用DS1302做成实时时钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值