找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2180|回复: 3
收起左侧

STC15W408AS单片机四位数码管+1307程序

[复制链接]
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, 下载次数: 53)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表