📄 digtask.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 + -