DAC,模数转换,使用Python,Matlab生产正弦码表(整型和浮点型)

使用Python生产正弦码表(整型数和浮点数)

我们经常要使用单片机的DAC功能来实现正弦波的输出,最佳的方式就是将正弦码表复制到程序中,通过查表的方式输出。下面给出Python和Matlab生产正弦码表的程序,动动小手点赞!

Python生产正弦码表(浮点数和16进制整型)

python生成码表的特点

  1. 需要在python中按照matplotlib包,详细方法百度。
  2. 生成的数据为16进制大写数据,带尾缀H,带前缀0,格式:“0ADH,0FFH”
  3. 最后在对话框中打印出对应的数据,16列。
# -*- coding: utf-8 -*-
# @Time    : 2021/12/6 22:39
# @Author  : Yang
# @File    : sin_conducter.py
# @Software: PyCharm

import math
import matplotlib.pyplot as plt

widths = 8      #正弦数据位数
lengths =256    #采样点数
floatnum = 4    #浮点数保留位数
sin_intdata = []  #输出16进制整形
sin_floatdata = []  #输出浮点型


for x in range(lengths):
    data = str(hex(round((2**(widths-1)-1)*math.sin(  (2*math.pi/lengths)*x )+(2**(widths-1)))))+'H'
    i = data[2:]
    sin_intdata.append(i.upper())
    data = round((2 ** (widths - 1) - 1) * math.sin((2 * math.pi / lengths) * x) + (2 ** (widths - 1)),floatnum)
    sin_floatdata.append(data)


kk = 0
for data in sin_floatdata:
    kk = kk+1
    print(data,end=", ")
    if kk%16 == 0 :
        print("\n")

kk = 0
for data in sin_intdata:
    kk = kk+1
    print('0'+data+',',end="")
    if kk%16 == 0 :
        print("\n")

plt.plot(sin_floatdata)
plt.show()

Matlab输出正弦波码表

matlab生产码表的特点

  1. 生成10进制整型和浮点型码表
  2. 在matlab项目文件夹下生产两个txt文件
  3. 16列,根据数组大小生产对应行数

depth =256;    %存储器的单元数
widths = 8;    %数据宽 N bit
floatnum = 4 ; %浮点数小数位数


sin_intdata= zeros(1,depth);
sin_floatdata  = zeros(1,depth);
for x = 1 : depth
    data_hex = round((2^widths/2)*sin(2*pi*(x-1)/(depth))+(2^widths/2)) ;
    sin_intdata(x) = data_hex ;
    data_float =round( ((2^widths/2-1)*sin(2*pi*(x-1)/(depth))+(2^widths/2)) , floatnum) ;
    sin_floatdata(x) = data_float ;
end

% 重构矩阵 16列 ,方便显示
sin_int = reshape (sin_intdata ,[depth/16,16]);
sin_float = reshape (sin_floatdata ,[depth/16,16]);

% 输出数据写入txt文件中
writematrix(sin_int,'int.txt','Delimiter',',')
type 'int.txt'
           
writematrix(sin_float,'float.txt','Delimiter',',')
type 'float.txt'
           

Guess you like

Origin blog.csdn.net/jjjjjj12345678/article/details/121762923