代码:
#include "at32l021_board.h"
#include "at32l021_clock.h"
/** @addtogroup AT32L021_periph_examples
* @{
*/
#define uchar unsigned char
uchar const Table[] =
{ // 0 1 2 3 4 5 6 7 8 9 A b C d E F -
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,0x8C,0xBF,0xC6,0xA1,0x86,0x00,0x40
};
void _nop_(void)
{
u8 i;
for(i=0;i<20;i++);
}
/** @addtogroup 021_GPIO_led_toggle GPIO_led_toggle
* @{
*/
void SMG_Int(uchar Dat) //通过8次循环将8位数据移入74HC595
{
uchar i;
for(i=8;i>=1;i--)
{
if (Dat & 0x80)
{
at32_hc595_on(SER );
}
else
{
at32_hc595_off(SER );
}
Dat <<= 1;
at32_hc595_off(SHCP );
_nop_();
_nop_();
at32_hc595_on(SHCP);
}
}
void delay(void)
{
int i;
for(i=0;i<200;i++);
}
void delay1(void)
{
int i;
for(i=0;i<1000;i++);
}
void Display (void)
{
uchar i;
//显示第1位 小时10位
i = Table[1];
SMG_Int(i);
SMG_Int(~0x01);
at32_hc595_off(STCP); //数据并行输出,(借助上升沿)
_nop_();
_nop_();
at32_hc595_on(STCP);
delay();
//显示第2位 小时个位
i = Table[2];
SMG_Int(i);
SMG_Int(~0x02);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第3位 -
//if(shan<10) //"-" 闪烁
i = Table[3];
//else
//i = Table[15];
SMG_Int(i);
SMG_Int(~0x04);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第4位 分钟10位
i = Table[4];
SMG_Int(i);
SMG_Int(~0x08);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第5位 分钟个位
i = Table[5];
SMG_Int(i);
SMG_Int(~0x10);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第6位 -
//if(shan<10) //"-" 闪烁
i = Table[6];
//else
//i = Table[15];
SMG_Int(i);
SMG_Int(~0x20);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第7位 秒10位
i = Table[7];
SMG_Int(i);
SMG_Int(~0x40);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
//显示第8位 秒个位
i = Table[8];
SMG_Int(i);
SMG_Int(0x7f);
at32_hc595_off(STCP);
_nop_();
_nop_();
at32_hc595_on(STCP);
delay1();
}
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] main function.
* @param none
* @retval none
*/
int main(void)
{
system_clock_config();
at32_board_init();
while(1)
{
Display();
}
}
效果图
|