- #include
- #include
- #include
- // _74HC595_led
- #define _74HC595_led_SCK P0_5
- #define _74HC595_led_RCK P0_6
- #define _74HC595_led_DATA P0_7
- // _74HC595_digit_pipe
- #define _74HC595_digit_pipe_SCK P1_1
- #define _74HC595_digit_pipe_RCK P1_0
- #define _74HC595_digit_pipe_DATA P1_4
- uint8_t ledbits16[][2] = {
- {0x80, 0x00}, // 0x0001
- {0x40, 0x00}, // 0x0002
- {0x20, 0x00}, // 0x0004
- {0x10, 0x00}, // 0x0008
- {0x08, 0x00}, // 0x0010
- {0x04, 0x00}, // 0x0020
- {0x02, 0x00}, // 0x0040
- {0x01, 0x00}, // 0x0080
- {0x00, 0x80}, // 0x0100
- {0x00, 0x40}, // 0x0200
- {0x00, 0x20}, // 0x0400
- {0x00, 0x10}, // 0x0800
- {0x00, 0x08}, // 0x1000
- {0x00, 0x04}, // 0x2000
- {0x00, 0x02}, // 0x4000
- {0x00, 0x01} // 0x8000
- };
- uint8_t digit_pipe_code[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00, 0x73};
- void send_serial_bits16_to_74HC595_led(uint8_t bits16[2])
- {
- int16_t i, j;
- uint8_t bits16_temp[2];
-
- bits16_temp[0] = bits16[0];
- bits16_temp[1] = bits16[1];
-
- _74HC595_led_RCK = 0;
- for(i = 1; i >=0; i--)
- {
- for(j = 0; j < 8; j++)
- {
- _74HC595_led_SCK = 0;
- if((bits16[i] & 0x80) != 0)
- {
- _74HC595_led_DATA = 1;
- }
- else
- {
- _74HC595_led_DATA = 0;
- }
- _74HC595_led_SCK = 1;
-
- bits16[i] <<= 1;
- }
- }
- _74HC595_led_RCK = 1;
- }
- void send_serial_bits16_to_74HC595_digit_pipe(uint8_t bits16[2])
- {
- short i, j;
- uint8_t bits16_temp[2];
-
- bits16_temp[0] = bits16[0];
- bits16_temp[1] = bits16[1];
-
- _74HC595_digit_pipe_RCK = 0;
- for(i = 1; i >= 0; i--)
- {
- for(j = 0; j < 8; j++)
- {
- _74HC595_digit_pipe_SCK = 0;
- if((bits16_temp[i] & 0x80) != 0)
- {
- _74HC595_digit_pipe_DATA = 1;
- }
- else
- {
- _74HC595_digit_pipe_DATA = 0;
- }
- _74HC595_digit_pipe_SCK = 1;
- bits16_temp[i] <<= 1;
- }
- }
- _74HC595_digit_pipe_RCK = 1;
- }
- void lighten_led_by_num(uint8_t num16[2])
- {
- int16_t i, j;
- uint8_t bits16[2];
- uint8_t num16_temp[2];
-
- num16_temp[0] = num16[0];
- num16_temp[1] = num16[1];
-
- for(i = 1; i >=0; i--)
- {
- for(j = 7; j >= 0; j--)
- {
- if((num16_temp[i] & 0x80) != 0)
- {
- bits16[i] |= ledbits16[i * 8 + j][i];
- }
- else
- {
- bits16[i] &= ~ledbits16[i * 8 + j][i];
- }
- num16_temp[i] <<= 1;
- }
- }
-
- send_serial_bits16_to_74HC595_led(bits16);
- }
- void display_num_on_digital_pipe(uint8_t num32[4])
- {
- short i;
- uint8_t bit16[2];
-
- for(i = 0; i < 4; i++)
- {
- bit16[0] = ~(1 << (7 - i * 2));
- bit16[1] = digit_pipe_code[num32[i] & 0x0F];
- send_serial_bits16_to_74HC595_digit_pipe(bit16);
-
- bit16[0] = ~(1 << (6 - i * 2));
- bit16[1] = digit_pipe_code[num32[i] >> 4];
- send_serial_bits16_to_74HC595_digit_pipe(bit16);
- }
- }
- void timer0_init(void)
- {
- TMOD = 0x01;
- TH0 = 0xB8;
- TL0 = 0x00;
- TR0 = 1;
- }
- void main(void)
- {
- short counter = 0;
- uint8_t num32[] = {0x00, 0x00, 0x00, 0x00};
-
- timer0_init();
-
- while(true)
- {
- lighten_led_by_num(num32);
- display_num_on_digital_pipe(num32);
-
- if(TF0 == 1)
- {
- TF0 = 0;
- TH0 = 0xB8;
- TL0 = 0x00;
-
- counter++;
- if(counter % 50 == 0)
- {
- num32[0]++;
- if(num32[0] == 0x00)
- {
- num32[1]++;
- if(num32[1] == 0x00)
- {
- num32[2]++;
- if(num32[2] == 0x00)
- {
- num32[3]++;
- }
- }
- }
- }
- }
- }
- }
复制代码
我想问问,为什么我写的这个代码最左边的数码管比别的都要亮?学习板用的是吴监鹰的,问了学习板技术群里的人,人家说是这一个数码管显示的时间比别的都长,但不知道是为什么。所以想请教大家怎么修改一下代码。
0
|
2018-8-15 20:18:57
评论
淘帖0
|
|
|