用于计算定时器初值
This commit is contained in:
		
							
								
								
									
										23
									
								
								other/csv2json.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								other/csv2json.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| #coding=utf-8 | ||||
| import csv | ||||
| import json | ||||
|  | ||||
| # 文件路径 | ||||
| file_path = 'note_data.txt' | ||||
|  | ||||
| # 读取文件并转换为 JSON | ||||
| notes_dict = {} | ||||
| with open(file_path, mode='r', encoding='utf-8') as file: | ||||
|     reader = csv.DictReader(file, delimiter='\t') | ||||
|      | ||||
|     for row in reader: | ||||
|         note, frequency, wave_length = row['note'], row['frequency'], row['wave_length'] | ||||
|         notes_dict[note] = {'frequency': float(frequency), 'wave_length': float(wave_length)} | ||||
|  | ||||
| # 将数据转换为 JSON 并打印 | ||||
| json_data = json.dumps(notes_dict, indent=4) | ||||
| print(json_data) | ||||
|  | ||||
| # 写入 JSON 文件 | ||||
| with open('note_data.json', 'w', encoding='utf-8') as json_file: | ||||
|     json_file.write(json_data) | ||||
							
								
								
									
										66
									
								
								other/note.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								other/note.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| #coding=utf-8 | ||||
| import json | ||||
|  | ||||
| # 常量定义 | ||||
| MCU_CLK = 1000000 # 12MHz,内部时钟12分频 | ||||
| MCU_T =  1000000/MCU_CLK # 单位时间为1us | ||||
| # 音符映射 | ||||
| note_mapping = { | ||||
|     1: 'C4', 2: 'D4', 3: 'E4', 4: 'F4', 5: 'G4', 6: 'A4', 7: 'B4' | ||||
| } | ||||
|  | ||||
| # 根据频率计算计数器初值 | ||||
| def freq_to_num(freq): | ||||
| 	T = 10**6/freq # 单位时间为1us | ||||
| 	time0 = int(2**16 - (T/2) / MCU_T) | ||||
| 	time0H = hex(time0>>8) | ||||
| 	time0L = hex(time0&0xff) | ||||
| 	print("freq = %0.2fHz, T = %dus, time0 = %d, time0H = %s, time0L = %s" % (freq, T, time0, time0H, time0L)) | ||||
| 	return time0H, time0L | ||||
|  | ||||
| # 根据音符名称获取频率 | ||||
| def note_to_freq(note_name): | ||||
|     try: | ||||
|         # 读取 JSON 文件 | ||||
|         with open('note_data.json', 'r') as file: | ||||
|             notes = json.load(file) | ||||
|          | ||||
|         # 获取特定音符的频率 | ||||
|         frequency = notes[note_name]['frequency'] | ||||
|         return frequency | ||||
|      | ||||
|     except KeyError: | ||||
|         return None | ||||
|     except Exception as e: | ||||
|         print(f"An error occurred: {e}") | ||||
|         return None | ||||
|  | ||||
| # 根据音符名称获取计数器初值 | ||||
| def note_to_num(note_name): | ||||
| 	frequency = note_to_freq(note_name.upper()) | ||||
| 	if frequency is not None: | ||||
| 		print(f"{note_name}的频率为{frequency}Hz。") | ||||
| 		freq_to_num(frequency) | ||||
| 	else: | ||||
| 	    print(f"{note_name} 不是有效的音符。") | ||||
|            | ||||
|  | ||||
| # 转换函数 | ||||
| def map_tones_to_notes(tone_array): | ||||
|     notes = [] | ||||
|     for tone in tone_array: | ||||
|         # 将音调映射到相应的音符 | ||||
|         note = note_mapping.get((tone - 1) % 7 + 1 if tone <= 7 else (tone - 1) % 7 + 8) | ||||
|         notes.append(note) | ||||
|     return notes | ||||
|  | ||||
| # 原始数据:小星星歌曲 | ||||
| soundtones = [ | ||||
|     1,1,5,5,6,6,5,4,4,3,3,2,2,1, | ||||
|     5,5,4,4,3,3,2,5,5,4,4,3,3,2, | ||||
|     1,1,5,5,6,6,5,4,4,3,3,2,2,1 | ||||
| ] | ||||
| if __name__ == '__main__': | ||||
| 	mapped_notes = map_tones_to_notes(soundtones) | ||||
| 	for note in mapped_notes: | ||||
| 		note_to_num(note) | ||||
							
								
								
									
										342
									
								
								other/note_data.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										342
									
								
								other/note_data.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,342 @@ | ||||
| { | ||||
|     "C0": { | ||||
|         "frequency": 16.35, | ||||
|         "wave_length": 2109.89 | ||||
|     }, | ||||
|     "C#0": { | ||||
|         "frequency": 17.32, | ||||
|         "wave_length": 1991.47 | ||||
|     }, | ||||
|     "D0": { | ||||
|         "frequency": 18.35, | ||||
|         "wave_length": 1879.69 | ||||
|     }, | ||||
|     "D#0": { | ||||
|         "frequency": 19.45, | ||||
|         "wave_length": 1774.2 | ||||
|     }, | ||||
|     "E0": { | ||||
|         "frequency": 20.6, | ||||
|         "wave_length": 1674.62 | ||||
|     }, | ||||
|     "F0": { | ||||
|         "frequency": 21.83, | ||||
|         "wave_length": 1580.63 | ||||
|     }, | ||||
|     "F#0": { | ||||
|         "frequency": 23.12, | ||||
|         "wave_length": 1491.91 | ||||
|     }, | ||||
|     "G0": { | ||||
|         "frequency": 24.5, | ||||
|         "wave_length": 1408.18 | ||||
|     }, | ||||
|     "G#0": { | ||||
|         "frequency": 25.96, | ||||
|         "wave_length": 1329.14 | ||||
|     }, | ||||
|     "A0": { | ||||
|         "frequency": 27.5, | ||||
|         "wave_length": 1254.55 | ||||
|     }, | ||||
|     "A#0": { | ||||
|         "frequency": 29.14, | ||||
|         "wave_length": 1184.13 | ||||
|     }, | ||||
|     "B0": { | ||||
|         "frequency": 30.87, | ||||
|         "wave_length": 1117.67 | ||||
|     }, | ||||
|     "C1": { | ||||
|         "frequency": 32.7, | ||||
|         "wave_length": 1054.94 | ||||
|     }, | ||||
|     "C#1": { | ||||
|         "frequency": 34.65, | ||||
|         "wave_length": 995.73 | ||||
|     }, | ||||
|     "D1": { | ||||
|         "frequency": 36.71, | ||||
|         "wave_length": 939.85 | ||||
|     }, | ||||
|     "D#1": { | ||||
|         "frequency": 38.89, | ||||
|         "wave_length": 887.1 | ||||
|     }, | ||||
|     "E1": { | ||||
|         "frequency": 41.2, | ||||
|         "wave_length": 837.31 | ||||
|     }, | ||||
|     "F1": { | ||||
|         "frequency": 43.65, | ||||
|         "wave_length": 790.31 | ||||
|     }, | ||||
|     "F#1": { | ||||
|         "frequency": 46.25, | ||||
|         "wave_length": 745.96 | ||||
|     }, | ||||
|     "G1": { | ||||
|         "frequency": 49.0, | ||||
|         "wave_length": 704.09 | ||||
|     }, | ||||
|     "G#1": { | ||||
|         "frequency": 51.91, | ||||
|         "wave_length": 664.57 | ||||
|     }, | ||||
|     "A1": { | ||||
|         "frequency": 55.0, | ||||
|         "wave_length": 627.27 | ||||
|     }, | ||||
|     "A#1": { | ||||
|         "frequency": 58.27, | ||||
|         "wave_length": 592.07 | ||||
|     }, | ||||
|     "B1": { | ||||
|         "frequency": 61.74, | ||||
|         "wave_length": 558.84 | ||||
|     }, | ||||
|     "C2": { | ||||
|         "frequency": 65.41, | ||||
|         "wave_length": 527.47 | ||||
|     }, | ||||
|     "C#2": { | ||||
|         "frequency": 69.3, | ||||
|         "wave_length": 497.87 | ||||
|     }, | ||||
|     "D2": { | ||||
|         "frequency": 73.42, | ||||
|         "wave_length": 469.92 | ||||
|     }, | ||||
|     "D#2": { | ||||
|         "frequency": 77.78, | ||||
|         "wave_length": 443.55 | ||||
|     }, | ||||
|     "E2": { | ||||
|         "frequency": 82.41, | ||||
|         "wave_length": 418.65 | ||||
|     }, | ||||
|     "F2": { | ||||
|         "frequency": 87.31, | ||||
|         "wave_length": 395.16 | ||||
|     }, | ||||
|     "F#2": { | ||||
|         "frequency": 92.5, | ||||
|         "wave_length": 372.98 | ||||
|     }, | ||||
|     "G2": { | ||||
|         "frequency": 98.0, | ||||
|         "wave_length": 352.04 | ||||
|     }, | ||||
|     "G#2": { | ||||
|         "frequency": 103.83, | ||||
|         "wave_length": 332.29 | ||||
|     }, | ||||
|     "A2": { | ||||
|         "frequency": 110.0, | ||||
|         "wave_length": 313.64 | ||||
|     }, | ||||
|     "A#2": { | ||||
|         "frequency": 116.54, | ||||
|         "wave_length": 296.03 | ||||
|     }, | ||||
|     "B2": { | ||||
|         "frequency": 123.47, | ||||
|         "wave_length": 279.42 | ||||
|     }, | ||||
|     "C3": { | ||||
|         "frequency": 130.81, | ||||
|         "wave_length": 263.74 | ||||
|     }, | ||||
|     "C#3": { | ||||
|         "frequency": 138.59, | ||||
|         "wave_length": 248.93 | ||||
|     }, | ||||
|     "D3": { | ||||
|         "frequency": 146.83, | ||||
|         "wave_length": 234.96 | ||||
|     }, | ||||
|     "D#3": { | ||||
|         "frequency": 155.56, | ||||
|         "wave_length": 221.77 | ||||
|     }, | ||||
|     "E3": { | ||||
|         "frequency": 164.81, | ||||
|         "wave_length": 209.33 | ||||
|     }, | ||||
|     "F3": { | ||||
|         "frequency": 174.61, | ||||
|         "wave_length": 197.58 | ||||
|     }, | ||||
|     "F#3": { | ||||
|         "frequency": 185.0, | ||||
|         "wave_length": 186.49 | ||||
|     }, | ||||
|     "G3": { | ||||
|         "frequency": 196.0, | ||||
|         "wave_length": 176.02 | ||||
|     }, | ||||
|     "G#3": { | ||||
|         "frequency": 207.65, | ||||
|         "wave_length": 166.14 | ||||
|     }, | ||||
|     "A3": { | ||||
|         "frequency": 220.0, | ||||
|         "wave_length": 156.82 | ||||
|     }, | ||||
|     "A#3": { | ||||
|         "frequency": 233.08, | ||||
|         "wave_length": 148.02 | ||||
|     }, | ||||
|     "B3": { | ||||
|         "frequency": 246.94, | ||||
|         "wave_length": 139.71 | ||||
|     }, | ||||
|     "C4": { | ||||
|         "frequency": 261.63, | ||||
|         "wave_length": 131.87 | ||||
|     }, | ||||
|     "C#4": { | ||||
|         "frequency": 277.18, | ||||
|         "wave_length": 124.47 | ||||
|     }, | ||||
|     "D4": { | ||||
|         "frequency": 293.66, | ||||
|         "wave_length": 117.48 | ||||
|     }, | ||||
|     "D#4": { | ||||
|         "frequency": 311.13, | ||||
|         "wave_length": 110.89 | ||||
|     }, | ||||
|     "E4": { | ||||
|         "frequency": 329.63, | ||||
|         "wave_length": 104.66 | ||||
|     }, | ||||
|     "F4": { | ||||
|         "frequency": 349.23, | ||||
|         "wave_length": 98.79 | ||||
|     }, | ||||
|     "F#4": { | ||||
|         "frequency": 369.99, | ||||
|         "wave_length": 93.24 | ||||
|     }, | ||||
|     "G4": { | ||||
|         "frequency": 392.0, | ||||
|         "wave_length": 88.01 | ||||
|     }, | ||||
|     "G#4": { | ||||
|         "frequency": 415.3, | ||||
|         "wave_length": 83.07 | ||||
|     }, | ||||
|     "A4": { | ||||
|         "frequency": 440.0, | ||||
|         "wave_length": 78.41 | ||||
|     }, | ||||
|     "A#4": { | ||||
|         "frequency": 466.16, | ||||
|         "wave_length": 74.01 | ||||
|     }, | ||||
|     "B4": { | ||||
|         "frequency": 493.88, | ||||
|         "wave_length": 69.85 | ||||
|     }, | ||||
|     "C5": { | ||||
|         "frequency": 523.25, | ||||
|         "wave_length": 65.93 | ||||
|     }, | ||||
|     "C#5": { | ||||
|         "frequency": 554.37, | ||||
|         "wave_length": 62.23 | ||||
|     }, | ||||
|     "D5": { | ||||
|         "frequency": 587.33, | ||||
|         "wave_length": 58.74 | ||||
|     }, | ||||
|     "D#5": { | ||||
|         "frequency": 622.25, | ||||
|         "wave_length": 55.44 | ||||
|     }, | ||||
|     "E5": { | ||||
|         "frequency": 659.25, | ||||
|         "wave_length": 52.33 | ||||
|     }, | ||||
|     "F5": { | ||||
|         "frequency": 698.46, | ||||
|         "wave_length": 49.39 | ||||
|     }, | ||||
|     "F#5": { | ||||
|         "frequency": 739.99, | ||||
|         "wave_length": 46.62 | ||||
|     }, | ||||
|     "G5": { | ||||
|         "frequency": 783.99, | ||||
|         "wave_length": 44.01 | ||||
|     }, | ||||
|     "G#5": { | ||||
|         "frequency": 830.61, | ||||
|         "wave_length": 41.54 | ||||
|     }, | ||||
|     "A5": { | ||||
|         "frequency": 880.0, | ||||
|         "wave_length": 39.2 | ||||
|     }, | ||||
|     "A#5": { | ||||
|         "frequency": 932.33, | ||||
|         "wave_length": 37.0 | ||||
|     }, | ||||
|     "B5": { | ||||
|         "frequency": 987.77, | ||||
|         "wave_length": 34.93 | ||||
|     }, | ||||
|     "C6": { | ||||
|         "frequency": 1046.5, | ||||
|         "wave_length": 32.97 | ||||
|     }, | ||||
|     "C#6": { | ||||
|         "frequency": 1108.73, | ||||
|         "wave_length": 31.12 | ||||
|     }, | ||||
|     "D6": { | ||||
|         "frequency": 1174.66, | ||||
|         "wave_length": 29.37 | ||||
|     }, | ||||
|     "D#6": { | ||||
|         "frequency": 1244.51, | ||||
|         "wave_length": 27.72 | ||||
|     }, | ||||
|     "E6": { | ||||
|         "frequency": 1318.51, | ||||
|         "wave_length": 26.17 | ||||
|     }, | ||||
|     "F6": { | ||||
|         "frequency": 1396.91, | ||||
|         "wave_length": 24.7 | ||||
|     }, | ||||
|     "F#6": { | ||||
|         "frequency": 1479.98, | ||||
|         "wave_length": 23.31 | ||||
|     }, | ||||
|     "G6": { | ||||
|         "frequency": 1567.98, | ||||
|         "wave_length": 22.0 | ||||
|     }, | ||||
|     "G#6": { | ||||
|         "frequency": 1661.22, | ||||
|         "wave_length": 20.77 | ||||
|     }, | ||||
|     "A6": { | ||||
|         "frequency": 1760.0, | ||||
|         "wave_length": 19.6 | ||||
|     }, | ||||
|     "A#6": { | ||||
|         "frequency": 1864.66, | ||||
|         "wave_length": 18.5 | ||||
|     }, | ||||
|     "B6": { | ||||
|         "frequency": 1975.53, | ||||
|         "wave_length": 17.46 | ||||
|     }, | ||||
|     "C7": { | ||||
|         "frequency": 2093.0, | ||||
|         "wave_length": 1.0 | ||||
|     } | ||||
| } | ||||
							
								
								
									
										86
									
								
								other/note_data.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								other/note_data.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| note	frequency	wave_length | ||||
| C0	16.35	2109.89 | ||||
| C#0	17.32	1991.47 | ||||
| D0	18.35	1879.69 | ||||
| D#0	19.45	1774.2 | ||||
| E0	20.60	1674.62 | ||||
| F0	21.83	1580.63 | ||||
| F#0	23.12	1491.91 | ||||
| G0	24.50	1408.18 | ||||
| G#0	25.96	1329.14 | ||||
| A0	27.50	1254.55 | ||||
| A#0	29.14	1184.13 | ||||
| B0	30.87	1117.67 | ||||
| C1	32.70	1054.94 | ||||
| C#1	34.65	995.73 | ||||
| D1	36.71	939.85 | ||||
| D#1	38.89	887.1 | ||||
| E1	41.20	837.31 | ||||
| F1	43.65	790.31 | ||||
| F#1	46.25	745.96 | ||||
| G1	49.00	704.09 | ||||
| G#1	51.91	664.57 | ||||
| A1	55.00	627.27 | ||||
| A#1	58.27	592.07 | ||||
| B1	61.74	558.84 | ||||
| C2	65.41	527.47 | ||||
| C#2	69.30	497.87 | ||||
| D2	73.42	469.92 | ||||
| D#2	77.78	443.55 | ||||
| E2	82.41	418.65 | ||||
| F2	87.31	395.16 | ||||
| F#2	92.50	372.98 | ||||
| G2	98.00	352.04 | ||||
| G#2	103.83	332.29 | ||||
| A2	110.00	313.64 | ||||
| A#2	116.54	296.03 | ||||
| B2	123.47	279.42 | ||||
| C3	130.81	263.74 | ||||
| C#3	138.59	248.93 | ||||
| D3	146.83	234.96 | ||||
| D#3	155.56	221.77 | ||||
| E3	164.81	209.33 | ||||
| F3	174.61	197.58 | ||||
| F#3	185.00	186.49 | ||||
| G3	196.00	176.02 | ||||
| G#3	207.65	166.14 | ||||
| A3	220.00	156.82 | ||||
| A#3	233.08	148.02 | ||||
| B3	246.94	139.71 | ||||
| C4	261.63	131.87 | ||||
| C#4	277.18	124.47 | ||||
| D4	293.66	117.48 | ||||
| D#4	311.13	110.89 | ||||
| E4	329.63	104.66 | ||||
| F4	349.23	98.79 | ||||
| F#4	369.99	93.24 | ||||
| G4	392.00	88.01 | ||||
| G#4	415.30	83.07 | ||||
| A4	440.00	78.41 | ||||
| A#4	466.16	74.01 | ||||
| B4	493.88	69.85 | ||||
| C5	523.25	65.93 | ||||
| C#5	554.37	62.23 | ||||
| D5	587.33	58.74 | ||||
| D#5	622.25	55.44 | ||||
| E5	659.25	52.33 | ||||
| F5	698.46	49.39 | ||||
| F#5	739.99	46.62 | ||||
| G5	783.99	44.01 | ||||
| G#5	830.61	41.54 | ||||
| A5	880.00	39.2 | ||||
| A#5	932.33	37 | ||||
| B5	987.77	34.93 | ||||
| C6	1046.50	32.97 | ||||
| C#6	1108.73	31.12 | ||||
| D6	1174.66	29.37 | ||||
| D#6	1244.51	27.72 | ||||
| E6	1318.51	26.17 | ||||
| F6	1396.91	24.7 | ||||
| F#6	1479.98	23.31 | ||||
| G6	1567.98	22 | ||||
| G#6	1661.22	20.77 | ||||
| A6	1760.00	19.6 | ||||
| A#6	1864.66	18.5 | ||||
| B6	1975.53	17.46 | ||||
| C7	2093.00	1 | ||||
		Reference in New Issue
	
	Block a user