飞思卡尔采样转弯程序

同学,个人觉得你这个思想不好. 我觉得每个传感器状态对应一个舵机转角还有电机速度这样 车跑起来才会考普. 你说的弯道出去可能是PID没有调好导致速度没有减下来. 这方面我以前做过很多也调过很多.也拿过好名次.哈哈

请问飞思卡尔智能车的转弯问题?我们是光电组的,现在不知道怎样处理好一个可以参见以前的技术报告. 前倾角和前束不搭配可能会有飞出去的情况。

飞思卡尔程序~

我这只有舵机,摄像头,和主程序,但是只是框架,要等调试。可以参考哈
#ifndef _WATCH_H_ //头文件保护
#define _WATCH_H_
#ifndef ULONG
#define ULONG unsigned long
#define UCHAR unsigned char
#define UINT unsigned int
#endif
#define ROAD_MAX 10
////////////////代设值
#define MP0 //捕捉象素引脚
#define HREF //捕捉行中断引脚
//////////////////
static unsigned char Colors[10][48]; //象素数组
static unsigned char JudgeMax; //最大象素
static unsigned char JudgeMin; //最小象素
unsigned char Over; //中断函数处理完成
//使用数组后要清零

struct ROADS
{
unsigned char LeftRight; //1 left, 0 right 2 表示没检测到黑线 4表示起始线
unsigned int road; //转向率,0表示直线或则没检测到黑线
}Roads[10]; //没检测到黑线一般为前方有大于90度的弯,
//行驶一会后数组会更新,不会因此丢掉跑道

unsigned long RoadLength; //mm单位
void GetRoads(); //取象素
void ProcessRoads(); //取转向率
void delay(UINT); //延时函数
void ColorToRoads(UINT); //2值化与赋值
#endif //_WATCH_H_
以下为实现文件:
//watch.c
#include /* common defines and macros */
#include /* derivative information */
#include "watch.h"

#pragma CODE_SEG NON_BANKED
#pragma TRAP_PROC
void GetRoads() //场中断服务函数
{
UINT i;
UINT Href= 0;
delay(5);
while(HREF)
{
if(Href>= 270) //点读取完毕,退出循环
break;
if((270-Href)%21!= 0 || Href< 60) //取60-270行中平均间隔的行数,共30行
{
Href++;
while(HREF); //等待此行扫描结束
while(!HREF); //等待新行开始扫描
continue;
}
delay(...); //根据调式结果具体设置
for(i= 0; i< 48; i++)
{
Colors[((270-Href)%21)][i]= MP0; //读取引脚数据,后来会根据串口还是并口读取做相应修改
if(MP0> judgeMax) //取最大最小值
JudgeMax= MP0;
if(MP0< JudgeMin)
JudgeMin= MP0;
delay(...); //具体设置
}
Href++;
while(HREF);
while(!HREF); //等待行中断结束
}
Over= 1; //中断函数处理完成
}

#pragma CODE_SEG DEFAULT

void ColorToRoads(UINT Href)
{
UINT i;
UINT temp; //用于起始线判断
UINT temp2;
UINT temp3;
UCHAR Judge; //平均厥值
UINT j= 0;
UINT m_nCount= 0;

Judge= (JudgeMax+ JydgeMin)/2;
Roads[Href].road= 0;
Roads[Href].LeftRight= 0;
for(i= 0; i<48; i+= 3)
{
if(Colors[i]<= Judge||
Colors[i+ 1]<= Judge||
Colors[i+ 2]<= Judge)
{
Roads[Href].road&= (0x8000>> (UCHAR)j); //相应位赋值为1
m_nCount++;
}
j++;
}
if(Roads[Href].road== 0x00)
{
Roads[Href].LeftRight= 0x02; //没有捕捉到黑线设置2
}
if(m_nCount> 1) //若黑点数大于1,从左向右数出连续的点中的中间点
{
j= 0;
i= 0;
while(!(Roads[Href].road& (0x8000>>(UCHAR)i)))
{
i++;
}
j= i;
while((Roads[Href].road& (0x8000>>(UCHAR)i))
{
i++;
if(i> 15)
break;
}
if(i< 15) //起始线判断
{
temp= i;
while(!(Roads[Href].road& (0x8000>>(UCHAR)temp)))
{
temp++;
temp2= temp;
}
if(temp< 15)
{
while((Roads[Href].road& (0x8000>>(UCHAR)temp))
{
temp++;
temp3= temp;
if(temp> 15)
break;
}
if(temp< 15)
{
while(!(Roads[Href].road& (0x8000>>(UCHAR)temp)))
{
temp++;
}
if(temp< 15)
{
Roads[Href].LeftRight= 0x04;
Roads[Href].road&= 0x8000>>(UCHAR)((temp2+ temp3)/2);
return;
}
}
}
}
Roads[Href].road&= 0x8000>>(UCHAR)((i+j)/2);
}
}

void ProcessRoads() //路径处理函数,在主函数中调用
{
int i;
for (i= 0;i< 10; i++)
{
ColorToRoads(i);
}
}

void delay(UINT m) //延时函数根据调试结果相应做改动
{
UINT i;
UINT j;
for(i= 0; i< m; i++)
{
for(j= 0; j< 200; j++)
}
}

再下面就是主函数实现文件:

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

#include "watch.h" //摄像头
#include "TurnAround.h" //舵机
//#include "..." //直流电机
//#include "..." //测速模块

#ifndef TRUE
#define TRUE 1
#define FLASE 0
#endif

#define ULONG unsigned long
#define UCHAR unsigned char
#define UINT unsigned int

#define LITTLE
#define LARGE
//////////////////////全局变量
UCHAR m_nCount; //圈数计算
UCHAR m_nCount2;

////////////////////////////////函数定义
void init(); //初始化函数 待修改
UCHAR CheckRoad(UCHAR*,UCHAR*); //第1参数返回第几个元素开始
//第2个参数返回第几个元素结束
//0 直线, 0x11有小弯道, 0x21大弯道, 0x31终点

void CarRun(UCHAR, UCHAR, UCHAR); //小车行驶函数

#pragma CODE_SEG NON_BANKED
#pragma TRAP_PROC
void Int_TimerOverFlow(void) //32MHz TCNT 50000--200ms
{
static int m= 0;
if(m== 15) //3秒
{
m_nCount2= 0;
TSCR1_TEN= 0; //关定时器
TFLG2_TOF = 1;
}
m++;
}

#pragma CODE_SEG DEFAULT


void TimerInit()
{
TIOS= 0x00;
TSCR2_PR= 7; //默认情况下是32MHz bus clock,所以分频后主时钟为 0.25MHz
TSCR2_TOI= 1; //OverFlow方式
TCNT= 65535- 50000;
TSCR1_TEN= 1; //开定时器
}

////////////////////////////////
void main() //主程序
{
UCHAR ret;
UCHAR number1= 0;
UCAHR number2= 0;
init();
while(1)
{
while(over); //等待扫描完毕
over= 0;
IRQCR_IRQEN= 0; //关外部中断IRQ
ProcessRoads(); //interface of watch.h
ret= CheckRoad(&number1, &number2); //检测路径
if(ret== 0x31)
break;
CarRun(number1, number2, ret);
}
PWME_PWME1= 0; //关闭PWM
while(1);
}

void init()
{
IRQCR_IRQE= 1; //下降沿触发IRQ
PE1= 1;
EnableInterrupts; //开总中断
INTCR_IRQEN= 1;
PWMInit(); //舵机初始化
Speed(MAX);
}

UCHAR CheckRoad(UCHAR* number1, UCHAR number2)
{
int i;
int sub= 0;
int psub= 0;
int temp;
bool flag;
UCHAR ret;
i= 0;
m_nCount2++;
while(!Roads[i].road)
{
i++;
}
*number1= i;
if(Roads[i].road>= Roads[i+ 1].road)
{
flag= TRUE;
psub= Roads[0].road- Roads[1].road;
}
else
{
flag= FALSE;
psub= Roads[1].road- Roads[0].road;
}
for(; i< 9; i++)
{
if(Roads[i].LeftRight== 0x04)
{
if(m_nCount2== 0)
{
m_nCount2= 1;
m_nCount++;
TimerInit();
}
}
if(m_nCount== 3)
{
Speed(0);
ret= 0x31;
goto _RET;
}
if(Roads[i+ 1].road== 0)
{
break;
}
if(flag)
{
sub= Roads[i].road- Roads[i+ 1].road;
}
else
{
sub= Roads[i+ 1].road- Roads[i].road;
}
sub>>= (UCHAR)i;
if(sub>= psub) //取差值
temp= sub- psub;
else
temp= psub- sub;
if(temp> LARGE) //大弯道
{
ret= 0x21;
while(Roads[i].road!= 0)
{
i++;
*number2= i;
if(i> 9)
break;
}
goto _RET;
}
if(temp> LITTLE) //小弯道
{
ret= 0x11;
while(Roads[i].road!= 0)
{
i++;
*number2= i;
if(i> 9)
break;
}
goto _RET;
}
*number2= i;
psub= sub;
}
_RET:
return ret;
}

void CarRun(UCHAR number1, UCHAR number2, UCHAR ret)
{
int end= Roads[number2].road;
Turn(number2- number1, end- 0x100, Roads[number2].LeftRight, ret); //舵机函数
IRQCR_IRQEN= 1; //开IRQ
}
下面为舵机头文件:
//TurnAround.h
#ifndef _TURNAROUND_H_ //头文件保护
#define _TURNAROUND_H_

void Turn(unsigned char, unsigned int, unsigned char, unsigned char); //转角函数
void PWMInit(); //优先初始化

#endif

再以下为实现文件:(表内容待实验后求得)
//TurnAround.c
#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#include "TurnAround.h"
#include "..." //直流电机

#ifndef ULONG
#define ULONG unsigned long
#define UCHAR unsigned char
#define UINT unsigned int
#endif

/////////////////////////转角定义
#define RIGHT60 1083
#define RIGHT45 1000
#define RIGHT30 917
#define RIGHT15 833
#define RIGHT5 778

#define MIDDLE 750

#define LEFT5 722
#define LEFT15 667
#define LEFT30 583
#define LEFT45 500
#define LEFT60 417

/////////////////////////速度定义
#define SPEED0 //直线速度
#define SPEED5
#define SPEED15
#define SPEED30
#define SPEED45
#define SPEED60

//PWM查询表 7*10*2
static UINT PWMTable[]=
{
//Left
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60, LEFT60,
//Right
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60,
RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60, RIGHT60
};

//延时查询表 6*6
static UNIT DelayTable[]=
{
0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0,
0,0,0,0,0,0
}

void PWMInit() //32HHz
{
PWMCTL_CON01= 1; //0, 1合为16bit
PWMCAE_CAE1= 1; //Center mode
PWMCLK_PLCK1= 0; //Clock A
PWMPRCLK_PCKA= 5; //Clock A= 32MHz/32= 1MHz
PWMPOL_PPOL1= 0; //开始为低电压
PWMPER0,1= 10000; //50Hz PWM输出
PWMDTY0,1= MIDDLE; //(10000- 750)* 100%= 92。5%占空比,1.5ms高电压时间
PWME_PWME1= 1; //enable
}

static void delay(int ms)
{
int ii,jj;
if (ms<1) ms=1;
for(ii=0;ii<ms;ii++)
for(jj=0;jj<2770;jj++); //32MHz--1ms
}

static void SetPWM(UINT m_nPWM) //PWM设置
{
PWMDTY0,1= m_nPWM;
}

//number 9种情况,sub 7种情况,LeftRight 2中情况
//共128种情况,采用模糊控制暂时归纳为11种情况
//11种情况将填入表中提供查询,11中情况分别为:
//左右5, 15, 30, 45, 60度
//和正中间0度
static UINT GetPWM(UCHAR number, UINT sub, UCHAR LeftRight)
{
switch(sub) //通过sub算出索引值
{
case 0x8000- 0x0100:
case 0x0100- 0x0001;
case 0x0100- 0x0002;
sub= 0;
break;
case 0x4000- 0x0100:
case 0x0100- 0x0004:
sub= 1;
break;
case 0x2000- 0x0100:
case 0x0100- 0x0008:
sub= 2;
break;
case 0x1000- 0x0100:
case 0x0100- 0x0010:
sub= 3;
break;
case 0x0800- 0x0100:
case 0x0100- 0x0020:
sub= 4;
break;
case 0x0400- 0x0100:
case 0x0100- 0x0040:
sub= 5;
break;
case 0x0200- 0x0100:
case 0x0100- 0x0100:
case 0x0100- 0x0080:
sub= 6;
break;

}
return PWMTable[number+ sub* 10+ LeftRight* 70];
}


//通过m_nPWM来改变速度,并返回改变的值
static UINT ChangeSpeed(UINT m_nPWM)
{
UINT m_nSpeed;
switch(m_nPWM) //根据m_nPWM 调节速度
{
case LEFT60:
Speed(SPEED60);
m_nSpeed= SPEED60;
break;
case LEFT45:
Speed(SPEED45);
m_nSpeed= SPEED45;
break;
case LEFT30:
Speed(SPEED30);
m_nSpeed= SPEED30;
break;
case LEFT15:
Speed(SPEED15);
m_nSpeed= SPEED15;
break;
case LEFT5:
Speed(SPEED5);
m_nSpeed= SPEED5;
break;
case MIDDLE:
Speed(SPEED0);
m_nSpeed= SPEED0;
break;
case RIGHT60:
Speed(SPEED60);
m_nSpeed= SPEED60;
break;
case RIGHT45:
Speed(SPEED45);
m_nSpeed= SPEED45;
break;
case RIGHT30:
Speed(SPEED30);
m_nSpeed= SPEED30;
break;
case RIGHT15:
Speed(SPEED15);
m_nSpeed= SPEED15;
break;
case RIGHT5:
Speed(SPEED5);
m_nSpeed= SPEED5;
break;
}
return m_nSpeed;
}


//获得查表时的索引值
UINT GetIndex(UINT m_nSpeed)
{
if(m_nSpeed<= SPEED60)
{
m_nSpeed= 0;
}
else if(m_nSpeed<= SPEED45)
{
m_nSpeed= 1;
}
else if(m_nSpeed<= SPEED30)
{
m_nSpeed= 2;
}
else if(m_nSpeed<= SPEED15)
{
m_nSpeed= 3;
}
else if(m_nSpeed<= SPEED5)
{
m_nSpeed= 4;
}
else
{
m_nSpeed= 5;
}
return m_nSpeed;
}

//m_nSpeed2为欲设值
//m_nSpeed为当前速度
UINT GetDelay(UINT m_nSpeed, UINT m_nSpeed2)
{
m_nSpeed= GetIndex(m_nSpeed);
m_nSpeed2= GetIndex(m_nSpeed2);
return DelayTable[m_nSpeed* 6+ m_nSpeed2];
}

void Turn(UCHAR number, UINT sub, UCHAR LeftRight, UCHAR ret)//ret not be used now
{
UINT m_nPWM;
UINT m_nSpeed;
UINT m_nSpeed2;
UINT m_nDelay; //延时参数
m_nPWM= GetPWM(number, sub, LeftRight);
m_nSpeed= GetSpeed() //测速模块
m_nSpeed2= ChangeSpeed(m_nPWM);
if(m_nSpeed2> m_nSpeed)
m_nSpeed= m_nSpeed2- m_nSpeed;
else
m_nSpeed= m_nSpeed- m_nSpeed2;
SetPWM(m_nPWM); //转角
m_nDelay= GetDelay(m_nSpeed, m_nSpeed2);
delay(m_nDelay); //根据速度和角度延时
SetPWM(MIDDLE); //舵机摆正
}
最后说哈,程序只差调试就可以,筐架就是这。我是湖北赛区的,7月就要比赛了,他们车还没做好啊。

关注这个问题

#19510084350# 求飞思卡尔测频的程序,就是简单的测量频率的程序!高分! - ******
#印洪# 我用了2年多MC9S12系列,比较熟悉,建议你看孙同景编的《FREESCALE S12十六位单片机原理及嵌入式开发技术》,直接从后面的IO接口看起,多练习例程 很快就会熟练的

#19510084350# 怎么开始学飞思卡尔?都需要什么软件?这些软件是怎么用的干什么的? - ******
#印洪# 到图书馆找几本书看看就会了 protel99se 画电路图 multisim10电路仿真 codewarrior编程、在线调试

#19510084350# 在MSP430平台上来使用MPL3115A2(飞思卡尔) 气压传感器的测试程序?来测试该芯片能否正常采集气压值? - ******
#印洪# 可以这样的 但程序不能白给哦 传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求.传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化.它是实现自动检测和自动控制的首要环节.传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来.通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类.

#19510084350# 初学飞思卡尔单片机,需要程序以及视频讲解(尤其是程序详解),哪个大神能够提供下 - ******
#印洪# Freescale单片机编程要用Codewarrior,仍属于C语言环境,先从网上搜下吧.

#19510084350# 飞思卡尔mc9s12xs128单片机与AVR的ATmega16单片机就有哪些区别呀?大体说下关键的区别就行,谢谢了 - ******
#印洪# 寄存器数量多了,比如PWM在AVR里面用两三个寄存器来设置,但在freescale里面要八九个寄存器,它能详细设置PWM的周期、占空比、极性、对齐方式、二次分频等,比AVR详细很多.AD、TIMER、SCI等模块也是,功能加强,总之相比AVR就是,你可以更加精确、更加详细地控制外围设备

#19510084350# 16位飞思卡尔单片机 能直接采集0 - 5v 电压吗 - ******
#印洪# 虽然没用过飞思卡尔的单片机zhidao,一般单片机的电源为5V与3.3V. 如果是回5V单片机,不要采集0--5V的电压.因为没法判断过压值.答 如果是3.3V的单片机,那就更不用说了. 建议用5V单片机,采样电压为0---3.3V . 3.3V--5V 为电压余量. 知胜电气 为您解答!

#19510084350# 飞思卡尔光电组程序解读 - ******
#印洪# 电磁组多用电感和电容谐振;光电组多用激光二极管;摄像头组多用数字式摄像头. 摄像头组:摄像头(光学传感器),信号收发模块(收发芯片),图像显示

#19510084350# 飞思卡尔xs128 的AD 编程时我用的是通道2,为什么他还是采集通道0呢,AD启动程序如下 - ******
#印洪# 你自己的读的就是通道0的数据,应该是AD_data = ATD0DR2

#19510084350# 求单片机课题制作,智能小车控制器,完成直行,转弯,检测显示,寻光4项功能. - ******
#印洪# 你这个制作就和我当年读大学时参加的全国智能车大赛----飞思卡尔杯智能车.你可以到以下这些电子技术网站的论坛逛逛啦!里面就有很多大虾分享这些技术资料的,包括:软件部分、硬件部分.或者你可以上这个电子技术导航网站的----电子世家网址导航,它就分类收录了这些优秀的电子技术网站,应该会对你有帮助的啦!

#19510084350# 飞思卡尔单片机MC9S12XE系列ATD模块的多通道采集疑问 - ******
#印洪#我也是困惑了好几天,仔细看datasheet才知道答案,仔细看蓝色字体的内容,它的意思是说在non-FIFO mode下,AD采样后的第一个结果存放在ATDDR0中,第二个存放在ATDDR1中,以此类推.按照你的问题,就是第5个通道的采样结果放在ATDDR0中,第6个放在ATDDR1中,后面的依次类推.

  • 飞思卡尔MC9S12DT128 CAN通讯问题
  • 答:总线错误,没有接收节点,或者总线时钟不匹配

  • 16位飞思卡尔单片机 能直接采集0-5v 电压吗
  • 答:虽然没用过飞思卡尔的单片机,一般单片机的电源为5V与3.3V。如果是5V单片机,不要采集0--5V的电压。因为没法判断过压值。如果是3.3V的单片机,那就更不用说了。建议用5V单片机,采样电压为0---3.3V 。 3.3V--5V ...

  • 寻求家庭无线医疗物联网解决方案
  • 答:飞思卡尔的医疗模拟前端参考平台采样数据通过无线网络上传到家庭健康中心参考平台。具体信息可以通过飞思卡尔官网搜索 [医疗模拟前端参考设计] 或 [家庭健康中心参考平台]获取。完整的参考设计可以联系飞思卡尔代理商或者直接联系飞思...

  • ...这个问题你弄懂了 能给我看看你的程序么 我研究很久没有搞懂...
  • 答:原理:分别用脉冲的上升沿和下降沿出发单片机,下降沿给出中断2停止计数,最后换算出高电平宽度=计数周期数×一个计数的时间。脉冲有间隔性的特征,因此我们可以把脉冲作为一种信号。脉冲信号的定义由此产生:相对于连续信号(...

  • QQ语音通讯软件采用的语音压缩标准
  • 答:因此音频数字压缩编码在语音通信中占有很重要的地位。目前常用的压缩方法有很多种,不同的方法具有不同的压缩比和还原音质,编码的格式和算法也各不相同,其中某些压缩算法相当复杂,普通程序不可能去实现其编解码算法。所幸的...

  • 组装一个雷蛇炼狱蝰蛇鼠标需要那些零件?
  • 答:主要部件有:PCB板:采样芯片S3988 MCU 飞思卡尔MC9S08 EEPROM 电阻电容之类小电子元件 按照图纸设计好PCB板 设计MCU程序.其他:外壳 微动 滚轮 诸如此类.组装鼠标我也试过,是因为我没什么钱,以前想组一个罗技的G700,因为它...

  • freescale单片机中有个AD转换序列长度的设置,请问一下这是指什么啊...
  • 答:多通道转换也不是同时的,可以看AD的系统框图,只有一个采样保持电路,前面通过8通道选择器来选择通道,所以不能同时,只是多通道一次采集过程可以连续连续采集多个通道。每个通道的结果都保存在各自的结果寄存器reslut registers...

  • 联想emc联想存储产品和EMC存储产品的比较
  • 答:此款程序是在联想电脑自带的应用程序,它用于帮助用户在internet上连接Lenovo...早年间,苏姿丰曾在飞思卡尔、IBM、德州仪器工作。2012年,43岁的她加入AMD后...在光线追踪和深度学习超级采样等新技术上领先于AMD,并在之后不久推出基于图灵...

  • 竞技鼠标的性能提升
  • 答:竞技游戏鼠标,我个人觉得重要的就是两点:1、手感。竞技的鼠标符合人体工程学设计,一般都是右手设计。玩游戏一般高速移动鼠标1-2个小时,如果不是人体工程学的鼠标,想想自己的 手也是够累的。2、性能。说道鼠标的性能,...

  • 有12位采样精度的ADC 单片机有哪些?
  • 答:C8051F020,集成了一个12bit的ADC和8bit的ADC,飞思卡尔十六位的单片机MSP430F5系列单片机;stm32f系列单片机;picf18系列单片机;等等,在使用的时候注意基准源的稳定,使用高精度基准源,不要直接使用3.3v的vcc,那样的话,...

    为传递更多家电数码信息,若有事情请联系
    数码大全网