历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2021年01月20日 | MSP430 F5529 单片机 模拟时钟 万年历 数字时钟 OLED Analog clock

2021-01-20 来源:eefocus

做了一块MSP430 F5529转接板看起来漂亮一点,没有就直接用杜邦线接线。

https://blog.csdn.net/x1131230123/article/details/108772807

Analog clock. Starting with the current time, draw a clock face and the hour, minute and seconds hand.

Use the RTC module in the MSP430, and move the hands to show the correct time.


1、

模拟时钟 OLED

功能:实时显示时钟;按键修改时钟。


2、

最终效果:

3、

硬件:OLED和MSP430 F5529自带的2个按键


OLED接线

//            |             P3.1|<- Data In (UCB0SOMI)

//            |    F5       P3.0|-> Data Out (UCB0SIMO)   --D1(OLED)

//            |             P3.2|-> Serial Clock Out (UCB0CLK)  --D0(OLED)

//            |             P2.0|->RES(OLED)

//            |             P2.2|->DC(OLED)

//            |             P8.1|->CS(OLED)


主函数中初始化时钟为25MHZ,初始化OLED,初始化2个按键。初始化模拟时钟的表盘显示,初始化MSP430 F5529内部的RTC模块,打开总中断。


int main(void)

{


    WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */

    initClock();                //25MHZ

    OLED_Init(); /* 初始化OLED */


    /*按键1 */

    P1DIR &= ~(BIT1);

    P1OUT |= (BIT1);

    P1REN |= (BIT1);

    /*按键2 */

    P2DIR &= ~(BIT1);

    P2OUT |= (BIT1);

    P2REN |= (BIT1);


    init_Point_Clock();

    Display_Pointer(Point_Time[1], 1);


    SetupRTC(); /* set RTC */

    _EINT();


    while (1)

    {

        KEY_Scan();

    }

}


每一秒发生中断,去更新模拟时钟的显示:去掉上次时间的指针显示----->显示这次的时间指针。每一秒发生中断,去更新时钟数字的显示。


        Display_Pointer(Point_Time[1], 0); //去掉上次时间的指针显示

        Point_Time[1].hour = RTCHOUR;

        Point_Time[1].minute = RTCMIN;

        Point_Time[1].second = RTCSEC;

        Display_Pointer(Point_Time[1], 1); //显示这次的时间指针


主函数不断KEY_Scan()循环检测按键,处理按键。

按键1 修改想要更改的项目

按键2 增加数值


推荐阅读

史海拾趣

问答坊 | AI 解惑

请教非门的作用??

请教一下:信号从光耦接收出来,到达两个四个并联的非门再与两个非门串联来驱动三极管,其中这些非门的作用是为了增强驱动能力的作用吗? [ 本帖最后由 qmchen 于 2009-3-18 10:16 编辑 ]…

查看全部问答>

IGBT 损坏后结果情况

IGBT损坏后,有哪些结果情况?比如IGBT开路,但开路后IGBT的续流二极管还继续有用吗?…

查看全部问答>

波特率一高 串口传输就出錯

用串口收发数据,只要提高波特率,传输数据就出错,尤其是接收方,不知道是什么原因。 代码是C写的,查询方式。 比如红外用2400bps是好的,发01,02,03。。。20共20个数,接收都对,收到01,02,03,04,05,06一直到20. 但是改成4800bps之 ...…

查看全部问答>

"已失去对设备的远程连接。请验证设备连接并重新启动调试 "????

PDA上从电脑上pull入一个数据表,然后PDA自己存入数据时出现 \"已失去对设备的远程连接。请验证设备连接并重新启动调试 \",程序会自动退出,没有出现其它异常报告。 PDA重启程序后,再往刚才的数据表里存储数据一切正常。每次都是刚从电脑上pull入 ...…

查看全部问答>

cpu风扇转速

如何设置cpu风扇的转速呢,我的生音太大…

查看全部问答>

将要进入嵌入软件开发 的人

各位大哥们,我还是一个大一的学生,现在听说嵌入开发还可以,所以就有一点想向这一方面发展,但是现在在我面前的一个问题就是 我不知道要学那些东西,我也是一个计算机班的学生,这是不是有很大的优点. 所以就想问一下大哥们的应该出什么方向入手好一 ...…

查看全部问答>

tShell重定向到pty后,一直被PEND(内详)

将shell定向到2个pty上,分别是    数据写--> pty1 -->shell读取    数据读…

查看全部问答>

EE_FPGA 硬件手册 V1.0

部分页面预览   下载链接: …

查看全部问答>

如果有多个c源文件,添加后还需要那些操作?

有多个c源文件,添加文件后编译,对于放在非main的文件中的函数,无法识别,但可以看到对别的c源文件也编译了,请问这种情况如何处理? 所有不在main文件中的函数均在头文件中列出,并加了extern…

查看全部问答>

请教小数的处理,和小数的输出!

我AD采样的范围是0 - 2.5 V , 采样肯定是小数, 其类型应该是 float 型吧? 假如其采样点储存在float型数组内, 经过一系列运算后 如何使其转换成十进制数据 输出? 是有固定程序么? 比如将其转换成BCD码! 还请高手指点!…

查看全部问答>