代码:
- #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();
- }
- }
效果图
|