| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- #include "display.h"
- #include "gd32e230_libopt.h"
- #include "SysTick.h"
- //voltage
- #define V_COM1 GPIO_PIN_0
- #define V_COM2 GPIO_PIN_1
- #define V_COM3 GPIO_PIN_2
- #define V_COM4 GPIO_PIN_10
- #define I_COM5 GPIO_PIN_14
- #define I_COM6 GPIO_PIN_13
- #define I_COM7 GPIO_PIN_12
- #define I_COM8 GPIO_PIN_11
- #define D_A GPIO_PIN_15
- #define D_B GPIO_PIN_7
- #define D_C GPIO_PIN_9
- #define D_D GPIO_PIN_11
- #define D_E GPIO_PIN_12
- #define D_F GPIO_PIN_15
- #define D_G GPIO_PIN_8
- #define D_DP GPIO_PIN_10
- #define V_C_1_H gpio_bit_set(GPIOB,V_COM1);
- #define V_C_2_H gpio_bit_set(GPIOB,V_COM2);
- #define V_C_3_H gpio_bit_set(GPIOB,V_COM3);
- #define V_C_4_H gpio_bit_set(GPIOB,V_COM4);
- #define I_C_5_H gpio_bit_set(GPIOB,I_COM5);
- #define I_C_6_H gpio_bit_set(GPIOB,I_COM6);
- #define I_C_7_H gpio_bit_set(GPIOB,I_COM7);
- #define I_C_8_H gpio_bit_set(GPIOB,I_COM8);
- #define V_C_1_L gpio_bit_reset(GPIOB,V_COM1);
- #define V_C_2_L gpio_bit_reset(GPIOB,V_COM2);
- #define V_C_3_L gpio_bit_reset(GPIOB,V_COM3);
- #define V_C_4_L gpio_bit_reset(GPIOB,V_COM4);
- #define I_C_5_L gpio_bit_reset(GPIOB,I_COM5);
- #define I_C_6_L gpio_bit_reset(GPIOB,I_COM6);
- #define I_C_7_L gpio_bit_reset(GPIOB,I_COM7);
- #define I_C_8_L gpio_bit_reset(GPIOB,I_COM8);
- #define D_A_H gpio_bit_set(GPIOB,D_A);
- #define D_B_H gpio_bit_set(GPIOA,D_B);
- #define D_C_H gpio_bit_set(GPIOA,D_C);
- #define D_D_H gpio_bit_set(GPIOA,D_D);
- #define D_E_H gpio_bit_set(GPIOA,D_E);
- #define D_F_H gpio_bit_set(GPIOA,D_F);
- #define D_G_H gpio_bit_set(GPIOA,D_G);
- #define D_DP_H gpio_bit_set(GPIOA,D_DP);
- #define D_A_L gpio_bit_reset(GPIOB,D_A);
- #define D_B_L gpio_bit_reset(GPIOA,D_B);
- #define D_C_L gpio_bit_reset(GPIOA,D_C);
- #define D_D_L gpio_bit_reset(GPIOA,D_D);
- #define D_E_L gpio_bit_reset(GPIOA,D_E);
- #define D_F_L gpio_bit_reset(GPIOA,D_F);
- #define D_G_L gpio_bit_reset(GPIOA,D_G);
- #define D_DP_L gpio_bit_reset(GPIOA,D_DP);
- enum{
- CHANNEL_1 = 0,
- CHANNEL_2,
- CHANNEL_3,
- CHANNEL_4,
- CHANNEL_5,
- CHANNEL_6,
- CHANNEL_7,
- CHANNEL_8
- };
- uint8_t table[20][8]={
- {1,1,1,1,1,1,0,0}, // 0
- {0,1,1,0,0,0,0,0}, // 1
- {1,1,0,1,1,0,1,0}, // 2
- {1,1,1,1,0,0,1,0}, // 3
- {0,1,1,0,0,1,1,0}, // 4
- {1,0,1,1,0,1,1,0}, // 5
- {1,0,1,1,1,1,1,0}, // 6
- {1,1,1,0,0,0,0,0}, // 7
- {1,1,1,1,1,1,1,0}, // 8
- {1,1,1,1,0,1,1,0}, // 9
- {1,1,1,1,1,1,0,1}, // 0
- {0,1,1,0,0,0,0,1}, // 1.
- {1,1,0,1,1,0,1,1}, // 2.
- {1,1,1,1,0,0,1,1}, // 3.
- {0,1,1,0,0,1,1,1}, // 4.
- {1,0,1,1,0,1,1,1}, // 5.
- {1,0,1,1,1,1,1,1}, // 6.
- {1,1,1,0,0,0,0,1}, // 7.
- {1,1,1,1,1,1,1,1}, // 8.
- {1,1,1,1,0,1,1,1}, // 9.
- };
- void DisplayInit(void)
- {
- rcu_periph_clock_enable(RCU_GPIOB);
- rcu_periph_clock_enable(RCU_GPIOA);
-
- gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,V_COM1| V_COM2 | V_COM3 | V_COM4 | I_COM5 | I_COM6 | I_COM7 | I_COM8 | D_A);
- gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, V_COM1| V_COM2 | V_COM3 | V_COM4 | I_COM5 | I_COM6 | I_COM7 | I_COM8 | D_A);
- gpio_bit_reset(GPIOB, V_COM1| V_COM2 | V_COM3 | V_COM4 | I_COM5 | I_COM6 | I_COM7 | I_COM8);
- gpio_bit_set(GPIOB, D_A);
- gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,D_B| D_C | D_D | D_E | D_F | D_G | D_DP);
- gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, D_B| D_C | D_D | D_E | D_F | D_DP);
- gpio_bit_set(GPIOA, D_B| D_C | D_D | D_E | D_F |D_G| D_DP);
- }
- static show_num(uint16_t _com,int num)
- {
- //clear chong ying
- V_C_1_H
- V_C_2_H
- V_C_3_H
- V_C_4_H
- I_C_5_H
- I_C_6_H
- I_C_7_H
- I_C_8_H
-
- //
- D_A_L
- D_B_L
- D_C_L
- D_D_L
- D_E_L
- D_F_L
- D_G_L
- D_DP_L
- //
- switch(_com)
- {
- case CHANNEL_1:
- V_C_1_L
- break;
- case CHANNEL_2:
- V_C_2_L
- break;
- case CHANNEL_3:
- V_C_3_L
- break;
- case CHANNEL_4:
- V_C_4_L
- break;
- case CHANNEL_5:
- I_C_5_L
- break;
- case CHANNEL_6:
- I_C_6_L
- break;
- case CHANNEL_7:
- I_C_7_L
- break;
- case CHANNEL_8:
- I_C_8_L
- break;
- default:
- break;
- }
- //
- for(int i = 0; i < 8; i ++)
- {
- if(table[num][i] > 0)
- {
- switch(i)
- {
- case 0:
- D_A_H
- break;
- case 1:
- D_B_H
- break;
- case 2:
- D_C_H
- break;
- case 3:
- D_D_H
- break;
- case 4:
- D_E_H
- break;
- case 5:
- D_F_H
- break;
- case 6:
- D_G_H
- break;
- case 7:
- D_DP_H;
- break;
- default:
- break;
- }
- }else
- {
- switch(i)
- {
- case 0:
- D_A_L
- break;
- case 1:
- D_B_L
- break;
- case 2:
- D_C_L
- break;
- case 3:
- D_D_L
- break;
- case 4:
- D_E_L
- break;
- case 5:
- D_F_L
- break;
- case 6:
- D_G_L
- break;
- case 7:
- D_DP_L
- break;
- default:
- break;
- }
- }
- }
- }
- void num_list(uint8_t *list,uint32_t num)
- {
- int i,temp = 0;
- for(i =0;i <4;i++)
- {
- temp = num % 10;
- num = num / 10;
- list[4-i-1] = temp;
- }
- }
- void display_num_list(uint8_t *list,float num)
- {
- uint32_t n,i;
- if(0 <= num && num <100)
- {
- n = num *100;
- num_list(list,n);
- list[1] += 10;
- }else if(100 <=num < 1000)
- {
- n = num * 10;
- num_list(list,n);
- list[2] += 10;
- }else if(1000 <= num && num < 10000)
- {
- n = num;
- num_list(list,n);
- }else
- {
- for(i = 0; i < 4;i++)
- list[i] = 9;
- }
- }
- void display_voltage(float num_f,float num_i)
- {
- int i, t;
- uint8_t num[9] = {0};
- uint8_t channel[9] = {0};
- display_num_list(num,num_i);
- display_num_list(&num[4],num_f);
- for(i = 0; i < 4;i++)
- {
- if(num[i] == 0)
- {
- channel[i] = 1;
- if(num[i+1] == 0)
- {
- continue;
- }else
- {
- break;
- }
- }else
- {
- break;
- }
- }
- for(i = 4; i < 8;i++)
- {
- if(num[i] == 0)
- {
- channel[i] = 1;
- if(num[i+1] == 0)
- {
- continue;
- }else
- {
- break;
- }
- }else
- {
- break;
- }
- }
-
-
- // for(t=0;t < 10;t++)
- // {
- for(i = 0; i < 9;i++)
- {
- if(channel[i] == 0)
- show_num(i,num[i]);
- for(int j = 0; j <100;j++);
- }
- // }
- }
- void display_current(float num_f)
- {
- int i, t;
- uint8_t num[4] = {0};
- uint8_t channel[4] = {0};
- display_num_list(num,num_f);
- for(i = 0; i < 4;i++)
- {
- if(num[i] == 0)
- {
- channel[i] = 1;
- if(num[i+1] == 0)
- {
- continue;
- }else
- break;
- }
- }
- for(t=0;t < 10000;t++)
- {
- for(i = 0; i < 4;i++)
- {
- if(channel[i] == 0)
- show_num(i,num[i]);
- }
- }
- }
|