论坛元老
 
- 积分
- 8645
- 金钱
- 8645
- 注册时间
- 2020-5-11
- 在线时间
- 4102 小时
|
发表于 2021-4-20 20:02:09
|
显示全部楼层
本帖最后由 LcwSwust 于 2021-4-20 20:07 编辑
我这有个用串口的:
- //以下注释内容用于产生正弦表与余弦表,将数组发送到串口,
- //可根据个人需要进行修改.
- //--------------------------------------------------
- //数据转字符串
- //--------------------------------------------------
- void Num2Str(S32 num,U8 *s,U8 size)
- {
- U8 i,n[15]={0};//位数,要显示的数字
- U32 unum=0;
- U8 sign=0;
- //U16 num1;
- if(size<1)size=1;
- if(size>12)size=12;//限制size
- i=0;
- if(num<0)//负数
- {
- unum=-num;//取绝对值
- sign='-';
- }
- else
- {
- unum=num;
- }
- while(unum)//位数为i
- {
- n[i++]=unum%10+'0';
- unum=unum/10;
- }
- if(i<1)//至少有一位0
- {
- n[i++]='0';
- }
- if(sign)n[i++]=sign;
- while(i<size)//不足size 前方加空格
- {
- n[i++]=' ';
- }
- while((i!=0)&&(size--))//数据位、最大长度都有限制
- {
- *(s++)=n[--i];
- }
- *(s++)=0;
- }
- //--------------------------------------------------
- //把S8数据转为4个字符,左方以空格填充
- //--------------------------------------------------
- void SendN10(S8 n)
- {
- U8 buf[10];
- Num2Str(n,buf,4);
- uart1_sendstr(buf);
- }
- //发送16进制字符
- void SendHEX(U8 n)
- {
- code U8 num[]="0123456789ABCDEF";
- uart1_sendstr("0x");
- uart1_sendbyte(num[n>>4]);
- uart1_sendbyte(num[n&0x0f]);
- }
- //--------------------------------------------------
- //生成正弦或余弦表格
- //结果放大127倍,范围为-127~+127.
- //type=0 表示正弦,type=1 表示余弦
- //Cn周期数,Tn总点数,表示以Tn个点形成Cn个周期
- // MakeSinTab(0,2,256);//生成256点正弦表,2周期
- //--------------------------------------------------
- void MakeSinTab(U8 type,U16 Cn,U16 Tn)
- {
- S16 d,i;
- float v=0;
- for(i=0;i<Tn;i++)
- {
- if(type==0)
- v=sin(i*Cn*6.2832/Tn)*127;//sin库函数需包含头文件<MATH.H>
- else if(type==1)
- v=cos(i*Cn*6.2832/Tn)*127;//余弦
- if(v>0)
- d=v+0.5;//四舍五入
- else
- d=v-0.5;
- SendN10(d);//数据转字符
- uart1_sendstr(",");
- if((i%16)==15)//每16个数据换一行
- {
- uart1_sendstr("\r\n");
- }
- }
- }
复制代码
|
|