登录|立即注册|使用QQ帐号登录
论坛 > 51单片机
发帖|
看3011|回3|收藏
楼主 ID:977804 只看他
2022-2-16 22:32
数码管的程序用了之前网友发的代码
说明:上电数码管流水,2秒后显示1307的时间,显示时间时,按键1,切换数码管流水-计时器-显示时间,按键2,切换要调整的时,分值
每5分钟,蜂鸣器响2秒
有一个问题不会,调整1307的值时,是以16进制的方式调,10再往上就出现字母了,下次再解决吧。
单片机代码只上传了C文件的,其他文件在压缩包里

#include<STC15W.H>
#include<LED.h>          //   定义了LED黄灯   定义了 时钟的一个标志位ds1307flag,
#include<SMG.h>           //   
#include<T2.h> //   定时器2   用于数码管  计时
#include<FMQ.h>                 //
#include<KEY.h>                   //
#include<DS1307.h>                 //
//#include<T0.h>  //   定时器0  用于FMQ

void main()
{
        Timer2Init();  // 定时器2初始化
//        Timer0Init();   // 定时器0初始化
        fmqinit();   // 蜂鸣器 初始化
        smgioinit();   // 数码管 位选 推挽
        //write(0xd0,0x01,minute); //  分   手动输入时间
//        write(0xd0,0x02,0x22);        //   时           手动输入时间
        while(1)
        {
                if(xx1==0)          //  上电 数码管动态流动           2秒后,XX1=1;显示时间
                {
                         smginit_2();
                }

                if(xx1==1)          //  
                {
                 ds1307dis();  //显示1307  时间
                         Key_Scan();   // // 按键4 切换     
                        Key_Scan2();  // 按键1 切换  
                        Key_Scan3();  // 按键2
                        Key_Scan4();  // 按键3
                }

                if(xx1==2)          //  
                {
                 SMGdisplay_zjs();  // 数码管 正计时
                }
        

                                                                  
                        Key_Scan();   // // 按键4 切换     
                        Key_Scan2();  // 按键1 切换  
                        Key_Scan3();  // 按键2
                        Key_Scan4();  // 按键3
        
               

        }
}

Honeycam 2022-02-16 23-33-43.gif 51hei.png

Keil代码下载:
1 - 优化-加入有初始化时间 调整 时间仍没有解决进制转换.rar (48.53 KB)
(下载次数: 55, 2022-2-16 22:32 上传)

下载积分: 黑币 -5


沙发 ID:977804 只看他
2022-2-17 17:27
  item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
  write_clock(address,(item/10)*16+item%10);
亲测可用,以上两个函数可以10,16进制互转。修改后即为:
minute=((minute/16)*10 + (minute%16));   //转换为10进制
minute=((minute/10)*16+(minute%10));//转换成16进制写入
板凳 ID:297903 只看他
2022-2-17 20:07
这个开机效果不错!!
地板 ID:430492 只看他
2022-3-20 11:56
这个开机效果不错!!

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版