/* * my.c * * Created on: 2022年3月27日 * Author: wuwen */ #include "my.h" #define morse_t1 150 #define morse_t2 (morse_t1*3) #define morse_hz 100 #define morse_play_t1 50 #define morse_play_t2 (morse_play_t1*3) #define morse_play_hz 100 char push_key=0,last_key=1; uint32_t morse_t=0; uint32_t morse_time_out=0; uint16_t morse_temp; #define morse_input_buff_num 64 char morse_input_flag=0; char morse_char_flag=0; char morse_x,morse_y; char morse_flah=0; uint8_t morse_letter_temp=0; uint8_t morse_letter_flag=0; #define morsecodenum 38 const struct morsecode morsecodes[morsecodenum]= { { 2,0b01000000,'A' }, { 4,0b10000000,'B' }, { 4,0b10100000,'C' }, { 3,0b10000000,'D' }, { 1,0b00000000,'E' }, { 4,0b00100000,'F' }, { 3,0b11000000,'G' }, { 4,0b00000000,'H' }, { 2,0b00000000,'I' }, { 4,0b01110000,'J' }, { 3,0b10100000,'K' }, { 4,0b01000000,'L' }, { 2,0b11000000,'M' }, { 2,0b10000000,'N' }, { 3,0b11100000,'O' }, { 4,0b01100000,'P' }, { 4,0b11010000,'Q' }, { 3,0b01000000,'R' }, { 3,0b00000000,'S' }, { 1,0b10000000,'T' }, { 3,0b00100000,'U' }, { 4,0b00010000,'V' }, { 3,0b01100000,'W' }, { 4,0b10010000,'X' }, { 4,0b10110000,'Y' }, { 4,0b11000000,'Z' }, { 5,0b01111000,'1' }, { 5,0b00111000,'2' }, { 5,0b00011000,'3' }, { 5,0b00001000,'4' }, { 5,0b00000000,'5' }, { 5,0b10000000,'6' }, { 5,0b11000000,'7' }, { 5,0b11100000,'8' }, { 5,0b11110000,'9' }, { 5,0b11111000,'0' }, { 6,0b00110000,'?' }, { 5,0b10010000,'/' }, }; char getmorsecode(uint8_t len,uint8_t code) { for(int a=0;amorse_t2) { //time out error }else if(morse_temp>morse_t1) { //- OLED_ShowChar(morse_x,morse_y,'-'); morse_letter_temp|=(0x80>>morse_letter_flag); }else { //. OLED_ShowChar(morse_x,morse_y,'.'); } morse_letter_flag++; morse_x+=8; if(morse_x>=X_WIDTH) { morse_x=0; morse_y+=2; if(morse_y>=Y_WIDTH_) { morse_y=0; OLED_Init_Display_Buffer(0); } } //play_ones(0,0); morse_input_flag=1; } last_key=push_key; morse_time_out=HAL_GetTick(); } if(push_key==1&morse_input_flag==1) { //Get cursor on the screen if((HAL_GetTick()-morse_time_out)>morse_t1) { get_char_temp=getmorsecode(morse_letter_flag,morse_letter_temp); morse_letter_flag=0; morse_letter_temp=0; OLED_ShowChar(0,6,get_char_temp); morse_input_flag=0; } } } }