⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digtask.c

📁 Rabbit 32Bit RTOS源代码
💻 C
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:digtask.c
*描    述:数码管显示时间任务
*当前版本:V1.00
*作    者:李士伟
*创建日期:2012.01.27
**********************************************************************/
#include <os_api.h>
#include <drivers\lpc2103\gpio.h>
#include <drivers\lpc2103\rtc.h>
#include <app\digtask\digtask.h>

#define CLK    GPIO_13
#define DATA   GPIO_26
#define DIG_1  GPIO_17
#define DIG_2  GPIO_19
#define DIG_3  GPIO_20
#define DIG_4  GPIO_21

const INT8U DIGData[] = 
{
    0xFC,  /* 0 */
    0x60,  /* 1 */
    0xDA,  /* 2 */
    0xF2,  /* 3 */
    0x66,  /* 4 */
    0xB6,  /* 5 */
    0xBE,  /* 6 */
    0xE0,  /* 7 */
    0xFE,  /* 8 */
    0xF6,  /* 9 */
};

void DIG_Init(void)
{
    GPIO_Init(GPIO_13 | GPIO_26 | GPIO_17 | GPIO_19 | GPIO_20 | GPIO_21);
    GPIO_Dir(GPIO_13 | GPIO_26 | GPIO_17 | GPIO_19 | GPIO_20 | GPIO_21, 1);

    GPIO_Set(CLK);
    GPIO_Set(DATA);
}

void DIG_ChangeNum(INT32U num)
{
    INT32U i;
    for (i = 0; i < 8; i++)
    {
        GPIO_Clr(CLK);
        if(num & 0x01)
        {
            GPIO_Clr(DATA);
        }
        else
        {
            GPIO_Set(DATA);
        }
        GPIO_Set(CLK);
        num >>= 1;
    }
}
void DIG_ShowNum(INT32U dig_nr, INT32U num)
{
    GPIO_Set(DIG_4);
    GPIO_Set(DIG_3);
    GPIO_Set(DIG_2);
    GPIO_Set(DIG_1);
    switch (dig_nr)
    {
        case 1:
        {

            DIG_ChangeNum(DIGData[num]);
            GPIO_Clr(DIG_1);
            break;
        }
        case 2:
        {

            DIG_ChangeNum(DIGData[num] | 1);
            GPIO_Clr(DIG_2);
            break;
        }
        case 3:
        {

            DIG_ChangeNum(DIGData[num]);
            GPIO_Clr(DIG_3);
            break;
        }
        case 4:
        {

            DIG_ChangeNum(DIGData[num]);
            GPIO_Clr(DIG_4);
            break;
        }
        default:
        {
            break;
        }
    }

}

void digtask(void *pdata)
{
    RTime tm;
    DIG_Init();

    for ( ; ; )
    {
        RTC_GetTime(&tm);
        DIG_ShowNum(4, tm.min % 10);
        API_TimeDlyHMSM(0, 0, 0, 10);
        DIG_ShowNum(3, tm.min / 10);
        API_TimeDlyHMSM(0, 0, 0, 10);
        DIG_ShowNum(2, tm.hour % 10);
        API_TimeDlyHMSM(0, 0, 0, 10);
        DIG_ShowNum(1, tm.hour / 10);
        API_TimeDlyHMSM(0, 0, 0, 10);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -