历史上的今天
返回首页

历史上的今天

今天是:2025年07月29日(星期二)

正在发生

2020年07月29日 | stm32f103战舰v3OLED显示时间源程序

2020-07-29 来源:51hei

(适用正点原子的开发板)主要是在OLED 屏幕上实时时间,如果时间不准时,可以先使用实验15 RTC实验  然后烧写进开发板,在XCOM串口调试助手发送命令如:RTC_Set(2020,06,04,23,25,30)  即可完成RTC校准!!!!


main.c代码如下:


#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "oled.h"

#include "rtc.h"  

        

int main(void)

{        u8 t=0;

        delay_init();                     //延时函数初始化         

        RTC_Init();                                  //RTC初始化

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

         LED_Init();                             //LED端口初始化

        OLED_Init();                        //初始化OLED      

  OLED_ShowString(0,0,"ALIENTEK",24);  


        OLED_Refresh_Gram();                //更新显示到OLED


        while(1)

        {               

                 OLED_Refresh_Gram();

                delay_ms(500);

                LED0=!LED0;

                if(t!=calendar.sec)

                {

                        t=calendar.sec;

                        OLED_ShowNum(0,24,calendar.w_year,4,12);  

                          OLED_ShowString(24,24, "-",12);

                        if(calendar.w_month<10)

                         {        

                                 OLED_ShowNum(30,24,0,1,12);

                           OLED_ShowNum(36,24,calendar.w_month,1,12);

                         }else OLED_ShowNum(36,24,calendar.w_month,2,12);  

                          OLED_ShowString(42,24, "-",12);

                         if(calendar.w_date<10)

                         {

                                 OLED_ShowNum(48,24,0,1,12);

                           OLED_ShowNum(54,24,calendar.w_date,1,12);  

                         }else OLED_ShowNum(48,24,calendar.w_date,2,12);  

                        switch(calendar.week)

                        {

                                case 0:

                                                 OLED_ShowString(64,24,"Sunday",12);  

                                        break;

                                case 1:

                                                OLED_ShowString(64,24,"Monday",12);

                                        break;

                                case 2:

                                                OLED_ShowString(64,24,"Tuesday",12);

                                        break;

                                case 3:

                                         OLED_ShowString(64,24,"Wednesday",12);

                                        break;

                                case 4:

                                        OLED_ShowString(64,24,"Thursday",12);

                                        break;

                                case 5:

                                        OLED_ShowString(64,24,"Friday",12);

                                        break;

                                case 6:

                                        OLED_ShowString(64,24,"Saturday",12);

                                        break;  

                        }

                        if(calendar.hour<10)

                        {

                         OLED_ShowNum(0,36,0,1,16);

                         OLED_ShowNum(8,36,calendar.hour,1,16);

                        }else

                        OLED_ShowNum(0,36,calendar.hour,2,16);

                        

                        OLED_ShowString(16,36,":",16);

                        

                        if(calendar.min<10)

                        {

                         OLED_ShowNum(24,36,0,1,16);

                         OLED_ShowNum(32,36,calendar.min,1,16);

                        }else                        

                  OLED_ShowNum(24,36,calendar.min,2,16);  

                        

            OLED_ShowString(40,36,":",16);

                        

                        if(calendar.sec<10)

                        {

                         OLED_ShowNum(48,36,0,1,16);

                         OLED_ShowNum(56,36,calendar.sec,1,16);

                        }else OLED_ShowNum(48,36,calendar.sec,2,16);  

                        LED0=!LED0;

                }        

                delay_ms(10);                                                                  

推荐阅读

史海拾趣

Anaheim Automation公司的发展小趣事

2003年,AMOTECH的压敏电阻产品被产业资源部评为“世界一流产品”,这是对公司技术实力的再次肯定。同年,公司还在韩国安全商协会进行了自动报价首次公开募股,为公司的发展筹集了更多资金。随着实力的增强,AMOTECH开始将目光投向海外市场。2004年,公司在山东建立了首家海外工厂,专注于全球定位系统天线的生产,这标志着公司国际化战略的正式启动。

ECLIPTEK公司的发展小趣事

随着全球对环保问题的日益关注,ECLIPTEK公司积极响应环保号召,将绿色环保理念融入其产品研发和生产过程中。公司采用环保材料和清洁能源,减少生产过程中的废弃物和污染物排放。同时,ECLIPTEK还积极参与环保公益活动,推动电子行业的可持续发展。

Apex Tool Group公司的发展小趣事

为了进一步扩大市场份额,ECLIPTEK公司决定实施国际扩张战略。公司先后在亚洲、欧洲和北美等地设立了分支机构,并在当地建立了生产基地。为了更好地满足当地客户的需求,ECLIPTEK还实施了本地化战略,根据市场特点调整产品设计和生产流程。这一举措不仅提高了公司的市场覆盖率,还增强了其国际竞争力。

Altech公司的发展小趣事

在电子行业的发展历程中,Altech公司凭借其敏锐的市场洞察力,率先投入研发铝合金汽车线束导体。随着新能源汽车市场的崛起,对高效、轻量化的线束导体需求日益增长。Altech公司成功研发出铝合金汽车线束导体,不仅满足了市场对轻量化的需求,还提高了导电性能,为新能源汽车行业带来了革命性的变革。

Cretex Companies Inc公司的发展小趣事

随着公司实力的增强,Cretex开始将目光投向国际市场。他们积极参与国际电子展会,与全球各地的合作伙伴建立联系。通过引进国外先进的技术和管理经验,Cretex的产品质量和服务水平得到了进一步提升。同时,公司还针对不同国家和地区的市场需求,推出定制化的电子产品,赢得了更多客户的青睐。

中科芯(CKS)公司的发展小趣事

在技术创新方面,中科芯不断推出具有竞争力的新产品。其中,CKS32系列MCU是公司近年来推出的一款高性能微控制器产品。该产品具有高可靠性、高兼容性和高性价比的特点,在市场上广受好评。在苏州先进技术成果交易大会上,CKS32系列MCU以其卓越的性能和广泛的应用领域吸引了众多关注。该产品的推出不仅提升了中科芯在微控制器领域的市场地位,也为中国电子行业的发展注入了新的活力。

问答坊 | AI 解惑

c51编程,读端口,还要不要先输出1?

我怎么看到有的要,有的不要,请高手给讲讲,到底咋回事?谢了…

查看全部问答>

在51上用SST39SF040,掉电后数据改变

先运行39SF040的PP指令,往其中一个字节内存单元写一个字节数据,然后再读出,数据可以读出。 但是程序里面不加PP指令,也不往里面写数据,而是直接读上次写入的内存单元,结果读出的数据变了,而且是每次断电,在给系统上电,读出的数据就变了。 ...…

查看全部问答>

S3C6410能否成为新一轮的领军者?

去年下半年,三星推出S3C6410之后,由于其主频高,视频处理能力强等优势,笼罩在ARM11光环之下,更延续了三星系列一惯的性价比优势,而倍受业界关注。更有成功案例如苹果IPHONE、魅族M8等。不知这颗冉冉升起的新星,能否继2440之后,成为下一轮的领 ...…

查看全部问答>

从今天开始大家都移植一下u-boot吧!

最近我把u-boot移植到了QQ2440中,既然大家都有mini2440 那么就把u-boot移植到mini2440上吧!过程我认为最麻烦的是对NANDFLASH的支持中,其它的时钟等配置只要我们稍加更改就行! 我也没写具体的过程不过我看到几个写的不错的就上传给大家可以参考 ...…

查看全部问答>

大唐LC6311

有谁用过大唐LC6311....我们想打开其他串口。。请问怎么发AT命令…

查看全部问答>

问个奇怪的问题,关于SetLocalTime

我用的是三星arm2440,ce5.0,我发现一个奇怪的问题,机器重启后,第一次调用SetLocalTime设置时间不对,设置的时间是一个默认值2008-1,但是以后再调用SetLocalTime就不会出现这个问题了,请问这是什么原因,是ce的一个bug,SetLocalTime对应的应 ...…

查看全部问答>

菜鸟弱问:关于uart和mclk

在option.h中 mclk=320000000这个值是根据什么确定的呢? 如果对它进行修改,会发生什么影响? 另外,在uart传输数据的时候,收发双方如何保证自己这边的频率与对方差不多? 当我们在ulcon中设定了某种祯格式,对方如何知道?如何检错? 我 ...…

查看全部问答>

关于多个GPRS MODEM同时拨号的问题?

我电脑两个串口上连接两个GPRS MODEM同时拨号上网,默认情况下是使用一个连接.我想在程序中控制两个连接怎么同时使用呀,即有的数据通过一个连接发送出去,另外一些数据通过另外一个连接发送出去呀,应该怎么办呀,请各位帮忙.非常感谢呀!…

查看全部问答>

EE_FPGA_V1.0初学者DIY进展

上图先: 1、拿到板子后,开始查看(貌似没给我发LED,可能是玄空大师装掉了吧,幸好之前的板子上还有,拆了下来 ),率先把EP2C5Q208、SDRAM、FLASH、PL2303焊上,拖了半天,还是给拖上去了,哈哈! 2、把104的电容全焊上,对照位号找了大半天呢 ...…

查看全部问答>

VTI三轴加速度传感器CMA3000手册共享

VTI的这款三轴MEMS加速度传感器是替换SCA3000的,SCA3000已经停产,是专用于消费产品的。手册如下:…

查看全部问答>