单片机AD采样程序及其寄存器讲解

ad采样的步骤:首先将外部的信号,通过电路或者已有的ad芯片转换成 主cpu能接受的电压 信号。但是此电压信号必须转换成8、10 、12位或更高位数的数字才能进一步做计算。另外转换成位数多少表明了ad转换的精度。所以需要采样,为了将电压信号转换为8、10 、12位或更高位数的数字。
单片机ad采样工作原理 一般来说,ad有积分型的和逐次逼近型的,后都更多的被使用,所以我们一般也都是使用的这一种。说的简单点,它就像我们用天平来称东西一样;ad收到一个电压信号,先将ad内部的一个寄存器里的最高位置1,然后再把这个数据转换成电压信号与输入的比较,如果大了,那么把最高位清0,次高位置位,就这样比较;如果小了,次高位再置位,再次比较。和称东西的一样吧,你一边放上东西,另一边先放最大的砝码,如果大了再换小的,如果不够,再加次大的,这样比较进行的。
stc12c5a60s2单片机ad采样程序 /*********************************************************************************************************************************************************
*程序说明:本程序使用stc12c5a60s2 adc转换功能,adc采样使用查询方式
*芯片供电:5v
*采样通道:p1^0
*********************************************************************************************************************************************************/
#include “stc12c5a60s2.h”
#include “stdio.h”
#include “intrins.h”
#include “math.h”
#define uint unsigned int
#define uchar unsigned char
/*******************************************************************************************************************************************************************
*函数功能:获取adc采样值
*时间:2013、3、27
*相关寄存器讲解: 7 6 5 4 3 2 1 0 reset vale
*:adc_contr://a/d 转换控制寄存器 adc_power speed1 speed0 adc_flag adc_start chs2 chs1 chs0 0000,0000
* adc_res //a/d 转换结果高8位 adcv.9 adcv.8 adcv.7 adcv.6 adcv.5 adcv.4 adcv.3 adcv.2 0000,0000
*adc_resl //a/d 转换结果低2位 adcv.1 adcv.0 0000,0000
*寄存器位控制讲解:
adc_power:adc电源
adc_start:adc转换启动控制位 设置为1时开始转换 转换结束后为0
adc_flag:adc转换结束标志位 转换完成后 adc_flag=1 要由软件一定要清0
speed1|speed0:模数转换器速度控制位 chs2/chs1chs0:模拟输入通道选择
------------------------------------------------ -------------------------------------------------
|speed1 | speed0 | 转换时间 | | chs2 | chs1 | chs0 | 模拟输入通道|
| 1 | 1 | 90个时钟周期 | | 0 | 0 | 0 | | p1^0 |
| 1 | 0 | 180个时钟周期 | | 0 | 0 | 1 | | p1^1 |
| 0 | 1 | 360个时钟周期 | | 0 | 1 | 0 | | p1^2 |
| 0 | 0 | 540个时钟周期 | | 0 | 1 | 1 | | p1^3 |
------------------------------------------------- | 1 | 0 | 0 | | p1^4 |
| 1 | 0 | 1 | | p1^5 |
| 1 | 1 | 0 | | p1^6 |
| 1 | 1 | 1 | | p1^7 |
----------------------------------------------
************************************************************************************************************************************************************************/
uint adc_get(uchar channel)
{
adc_contr=0x88|channel;
_nop_(); _nop_(); _nop_(); _nop_();
while(!(adc_contr&0x10)); //等待转换完成
adc_contr&=0xe7; //关闭ad转换,adc_flag位由软件清0
return(adc_res*4+adc_resl); //返回ad转换完成的10位数据(16进制)
}
/******************************************************************
*函数功能:将adc采样值转换为10进制数据
*时间:2013、3、27
******************************************************************/
float adc_value(uchar channel)
{
float ad_value;
uint i;
for(i=0;i《10;i++) //采样10次取平均值
ad_value+=adc_get(channel); //转换100次求平均值(提高精度)
ad_value/=10;
ad_value=(ad_value*5)/1024;//adrj=0,取10位转换结果adc_res+adc_resl=1024*vin/vcc
return ad_value;
}
/***************************************************************
*funtion name:delay
*time:2013/3/27
author:zhuhao
***************************************************************/
void delay(unsigned int a) //延时约1ms
{
unsigned int i;
while (--a!=0)
for(i=600;i》0;i--); //1t单片机i=600,若是12t单片机i=125
}
/***************************************************************
*funtion name:usart_init
*time:2013/3/27
author:zhuhao
***************************************************************/
void usart_init()
{
tmod=0x20;
th1=0xfd;
tl1=0xfd; //设置9600波特率
scon=0x50; //串口方式1,允许接收
tr1=1;
}
/**********************************************************************
*函数功能:adc初始化配置
*时间:2013、3、27
*寄存器讲解: 7 6 5 4 3 2 1 0 reset value
p1asf:选择模拟功能a/d端口 p1asf p1asf p1asf p1asf p1asf p1asf p1asf p1asf 0000,0000
p1asf相应位置1则p1口的相应位作为模拟功能a/d使用
7 6 5 4 3 2 1 0 reset value
auxr1: pca_p4 spi_p4 s2_p4 gf2 adrj dps 0000,0000
其中adrj位控制a/d转换结果寄存器(adc_res,adc_resl)的数据格式调整
adrj=0:10位a/d转换结果的高8位存放在adc_res中,低2位存放在adc_resl的低2位中
adrj=1:10位a/d转换结果的高8位存放在adc_resl中,低2位存放在adc_res的低2位中
***********************************************************************/
void adc_init()
{
p1asf=0x01;//adc i/o选择 p1^0;
auxr1=0x00;//adrj=0
adc_res=0;//10位adc采样结果的高8位存放在adc_res中,低二位存放在adc_res_l的低二位中
adc_resl=0;
adc_contr=0x80;//开启adc电源
delay(2);//必要的延时
}
void main()
{
usart_init();
adc_init();
while(1)
{
ti=1;
printf(“转化:%.2f v\n”,adc_value(0));//将adc采样的实际电压值发送给串口助手
ti=0;
}
}
/*******************************************************************************************************************************************************************
* stc12c5a60s2.h 文件
******************************************************************************************************************************************************************/
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机内核特殊功能寄存器 c51 core sfrs
// 7 6 5 4 3 2 1 0 reset value
sfr acc = 0xe0; //accumulator 0000,0000
sfr b = 0xf0; //b register 0000,0000
sfr psw = 0xd0; //program status word cy ac f0 rs1 rs0 ov f1 p 0000,0000
//-----------------------------------
sbit cy = psw^7;
sbit ac = psw^6;
sbit f0 = psw^5;
sbit rs1 = psw^4;
sbit rs0 = psw^3;
sbit ov = psw^2;
sbit p = psw^0;
//-----------------------------------
sfr sp = 0x81; //stack pointer 0000,0111
sfr dpl = 0x82; //data pointer low byte 0000,0000
sfr dph = 0x83; //data pointer high byte 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机系统管理特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr pcon = 0x87; //power control smod smod0 lvdf pof gf1 gf0 pd idl 0001,0000
// 7 6 5 4 3 2 1 0 reset value
sfr auxr = 0x8e; //auxiliary register t0x12 t1x12 uart_m0x6 brtr s2smod brtx12 extram s1brs 0000,0000
//-----------------------------------
sfr auxr1 = 0xa2; //auxiliary register 1 - pca_p4 spi_p4 s2_p4 gf2 adrj - dps 0000,0000
/*
pca_p4:
0, 缺省pca 在p1 口
1,pca/pwm 从p1 口切换到p4 口: eci 从p1.2 切换到p4.1 口,
pca0/pwm0 从p1.3 切换到p4.2 口
pca1/pwm1 从p1.4 切换到p4.3 口
spi_p4:
0, 缺省spi 在p1 口
1,spi 从p1 口切换到p4 口: spiclk 从p1.7 切换到p4.3 口
miso 从p1.6 切换到p4.2 口
mosi 从p1.5 切换到p4.1 口
ss 从p1.4 切换到p4.0 口
s2_p4:
0, 缺省uart2 在p1 口
1,uart2 从p1 口切换到p4 口: txd2 从p1.3 切换到p4.3 口
rxd2 从p1.2 切换到p4.2 口
gf2: 通用标志位
adrj:
0, 10 位a/d 转换结果的高8 位放在adc_res 寄存器, 低2 位放在adc_resl 寄存器
1,10 位a/d 转换结果的最高2 位放在adc_res 寄存器的低2 位, 低8 位放在adc_resl 寄存器
dps: 0, 使用缺省数据指针dptr0
1,使用另一个数据指针dptr1
*/
//-----------------------------------
sfr wake_clko = 0x8f; //附加的 sfr wak1_clko
/*
7 6 5 4 3 2 1 0 reset value
pcawakeup rxd_pin_ie t1_pin_ie t0_pin_ie lvd_wake _ t1clko t0clko 0000,0000b
b7 - pcawakeup : pca 中断可唤醒 powerdown。
b6 - rxd_pin_ie : 当 p3.0(rxd) 下降沿置位 ri 时可唤醒 powerdown(必须打开相应中断)。
b5 - t1_pin_ie : 当 t1 脚下降沿置位 t1 中断标志时可唤醒 powerdown(必须打开相应中断)。
b4 - t0_pin_ie : 当 t0 脚下降沿置位 t0 中断标志时可唤醒 powerdown(必须打开相应中断)。
b3 - lvd_wake : 当 cmpin 脚低电平置位 lvd 中断标志时可唤醒 powerdown(必须打开相应中断)。
b2 -
b1 - t1clko : 允许 t1cko(p3.5) 脚输出 t1 溢出脉冲,fck1 = 1/2 t1 溢出率
b0 - t0clko : 允许 t0cko(p3.4) 脚输出 t0 溢出脉冲,fck0 = 1/2 t1 溢出率
*/
//-----------------------------------
sfr clk_div = 0x97; //clock divder - - - - - clks2 clks1 clks0 xxxx,x000
//-----------------------------------
sfr bus_speed = 0xa1; //stretch register - - ales1 ales0 - rws2 rws1 rws0 xx10,x011
/*
ales1 and ales0:
00 : the p0 address setup time and hold time to ale negative edge is one clock cycle
01 : the p0 address setup time and hold time to ale negative edge is two clock cycles.
10 : the p0 address setup time and hold time to ale negative edge is three clock cycles. (default)
11 : the p0 address setup time and hold time to ale negative edge is four clock cycles.
rws2,rws1,rws0:
000 : the movx read/write pulse is 1 clock cycle.
001 : the movx read/write pulse is 2 clock cycles.
010 : the movx read/write pulse is 3 clock cycles.
011 : the movx read/write pulse is 4 clock cycles. (default)
100 : the movx read/write pulse is 5 clock cycles.
101 : the movx read/write pulse is 6 clock cycles.
110 : the movx read/write pulse is 7 clock cycles.
111 : the movx read/write pulse is 8 clock cycles.
*/
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机中断特殊功能寄存器
//有的中断控制、中断标志位散布在其它特殊功能寄存器中,这些位在位地址中定义
//其中有的位无位寻址能力,请参阅 新一代 1t 8051系列 单片机中文指南
// 7 6 5 4 3 2 1 0 reset value
sfr ie = 0xa8; //中断控制寄存器 ea elvd eadc es et1 ex1 et0 ex0 0x00,0000
//-----------------------
sbit ea = ie^7;
sbit elvd = ie^6; //低压监测中断允许位
sbit eadc = ie^5; //adc 中断允许位
sbit es = ie^4;
sbit et1 = ie^3;
sbit ex1 = ie^2;
sbit et0 = ie^1;
sbit ex0 = ie^0;
//-----------------------
sfr ie2 = 0xaf; //auxiliary interrupt - - - - - - espi es2 0000,0000b
//-----------------------
// 7 6 5 4 3 2 1 0 reset value
sfr ip = 0xb8; //中断优先级低位 ppca plvd padc ps pt1 px1 pt0 px0 0000,0000
//--------
sbit ppca = ip^7; //pca 模块中断优先级
sbit plvd = ip^6; //低压监测中断优先级
sbit padc = ip^5; //adc 中断优先级
sbit ps = ip^4;
sbit pt1 = ip^3;
sbit px1 = ip^2;
sbit pt0 = ip^1;
sbit px0 = ip^0;
//-----------------------
// 7 6 5 4 3 2 1 0 reset value
sfr iph = 0xb7; //中断优先级高位 ppcah plvdh padch psh pt1h px1h pt0h px0h 0000,0000
sfr ip2 = 0xb5; // - - - - - - pspi ps2 xxxx,xx00
sfr iph2 = 0xb6; // - - - - - - pspih ps2h xxxx,xx00
//-----------------------
//新一代 1t 8051系列 单片机i/o 口特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr p0 = 0x80; //8 bitport0 p0.7 p0.6 p0.5 p0.4 p0.3 p0.2 p0.1 p0.0 1111,1111
sfr p0m0 = 0x94; // 0000,0000
sfr p0m1 = 0x93; // 0000,0000
sfr p1 = 0x90; //8 bitport1 p1.7 p1.6 p1.5 p1.4 p1.3 p1.2 p1.1 p1.0 1111,1111
sfr p1m0 = 0x92; // 0000,0000
sfr p1m1 = 0x91; // 0000,0000
sfr p1asf = 0x9d; //p1 analog special function
sfr p2 = 0xa0; //8 bitport2 p2.7 p2.6 p2.5 p2.4 p2.3 p2.2 p2.1 p2.0 1111,1111
sfr p2m0 = 0x96; // 0000,0000
sfr p2m1 = 0x95; // 0000,0000
sfr p3 = 0xb0; //8 bitport3 p3.7 p3.6 p3.5 p3.4 p3.3 p3.2 p3.1 p3.0 1111,1111
sfr p3m0 = 0xb2; // 0000,0000
sfr p3m1 = 0xb1; // 0000,0000
sfr p4 = 0xc0; //8 bitport4 p4.7 p4.6 p4.5 p4.4 p4.3 p4.2 p4.1 p4.0 1111,1111
sfr p4m0 = 0xb4; // 0000,0000
sfr p4m1 = 0xb3; // 0000,0000
// 7 6 5 4 3 2 1 0 reset value
sfr p4sw = 0xbb; //port-4 switch - lvd_p4.6 ale_p4.5 na_p4.4 - - - - x000,xxxx
sfr p5 = 0xc8; //8 bitport5 - - - - p5.3 p5.2 p5.1 p5.0 xxxx,1111
sfr p5m0 = 0xca; // 0000,0000
sfr p5m1 = 0xc9; // 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机定时器特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr tcon = 0x88; //t0/t1 control tf1 tr1 tf0 tr0 ie1 it1 ie0 it0 0000,0000
//-----------------------------------
sbit tf1 = tcon^7;
sbit tr1 = tcon^6;
sbit tf0 = tcon^5;
sbit tr0 = tcon^4;
sbit ie1 = tcon^3;
sbit it1 = tcon^2;
sbit ie0 = tcon^1;
sbit it0 = tcon^0;
//-----------------------------------
sfr tmod = 0x89; //t0/t1 modes gate1 c/t1 m1_1 m1_0 gate0 c/t0 m0_1 m0_0 0000,0000
sfr tl0 = 0x8a; //t0 low byte 0000,0000
sfr th0 = 0x8c; //t0 high byte 0000,0000
sfr tl1 = 0x8b; //t1 low byte 0000,0000
sfr th1 = 0x8d; //t1 high byte 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机串行口特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr scon = 0x98; //serial control sm0/fe sm1 sm2 ren tb8 rb8 ti ri 0000,0000
//-----------------------------------
sbit sm0 = scon^7; //sm0/fe
sbit sm1 = scon^6;
sbit sm2 = scon^5;
sbit ren = scon^4;
sbit tb8 = scon^3;
sbit rb8 = scon^2;
sbit ti = scon^1;
sbit ri = scon^0;
//-----------------------------------
sfr sbuf = 0x99; //serial data buffer xxxx,xxxx
sfr saden = 0xb9; //slave address mask 0000,0000
sfr saddr = 0xa9; //slave address 0000,0000
//-----------------------------------
// 7 6 5 4 3 2 1 0 reset value
sfr s2con = 0x9a; //s2 control s2sm0 s2sm1 s2sm2 s2ren s2tb8 s2rb8 s2ti s2ri 00000000b
sfr s2buf = 0x9b; //s2 serial buffer xxxx,xxxx
sfr brt = 0x9c; //s2 baud-rate timer 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机看门狗定时器特殊功能寄存器
sfr wdt_contr = 0xc1; //watch-dog-timer control register
// 7 6 5 4 3 2 1 0 reset value
// wdt_flag - en_wdt clr_wdt idle_wdt ps2 ps1 ps0 xx00,0000
//-----------------------
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机pca/pwm 特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr ccon = 0xd8; //pca 控制寄存器。 cf cr - - - - ccf1 ccf0 00xx,xx00
//-----------------------
sbit cf = ccon^7; //pca计数器溢出标志,由硬件或软件置位,必须由软件清0。
sbit cr = ccon^6; //1:允许 pca 计数器计数, 必须由软件清0。
//-
//-
sbit ccf1 = ccon^1; //pca 模块1 中断标志, 由硬件置位, 必须由软件清0。
sbit ccf0 = ccon^0; //pca 模块0 中断标志, 由硬件置位, 必须由软件清0。
//-----------------------
sfr cmod = 0xd9; //pca 工作模式寄存器。 cidl - - - cps2 cps1 cps0 ecf 0xxx,x000
/*
cidl: idle 状态时 pca 计数器是否继续计数, 0: 继续计数, 1: 停止计数。
cps2: pca 计数器脉冲源选择位 2。
cps1: pca 计数器脉冲源选择位 1。
cps0: pca 计数器脉冲源选择位 0。
cps2 cps1 cps0
0 0 0 系统时钟频率 fosc/12。
0 0 1 系统时钟频率 fosc/2。
0 1 0 timer0 溢出。
0 1 1 由 eci/p3.4 脚输入的外部时钟,最大 fosc/2。
1 0 0 系统时钟频率, fosc/1
1 0 1 系统时钟频率/4,fosc/4
1 1 0 系统时钟频率/6,fosc/6
1 1 1 系统时钟频率/8,fosc/8
ecf: pca计数器溢出中断允许位, 1--允许 cf(ccon.7) 产生中断。
*/
//-----------------------
sfr cl = 0xe9; //pca 计数器低位 0000,0000
sfr ch = 0xf9; //pca 计数器高位 0000,0000
//-----------------------
// 7 6 5 4 3 2 1 0 reset value
sfr ccapm0 = 0xda; //pca 模块0 pwm 寄存器 - ecom0 capp0 capn0 mat0 tog0 pwm0 eccf0 x000,0000
sfr ccapm1 = 0xdb; //pca 模块1 pwm 寄存器 - ecom1 capp1 capn1 mat1 tog1 pwm1 eccf1 x000,0000
//ecomn = 1:允许比较功能。
//cappn = 1:允许上升沿触发捕捉功能。
//capnn = 1:允许下降沿触发捕捉功能。
//matn = 1:当匹配情况发生时, 允许 ccon 中的 ccfn 置位。
//togn = 1:当匹配情况发生时, cexn 将翻转。
//pwmn = 1:将 cexn 设置为 pwm 输出。
//eccfn = 1:允许 ccon 中的 ccfn 触发中断。
//ecomn cappn capnn matn togn pwmn eccfn
// 0 0 0 0 0 0 0 0x00 未启用任何功能。
// x 1 0 0 0 0 x 0x21 16位cexn上升沿触发捕捉功能。
// x 0 1 0 0 0 x 0x11 16位cexn下降沿触发捕捉功能。
// x 1 1 0 0 0 x 0x31 16位cexn边沿(上、下沿)触发捕捉功能。
// 1 0 0 1 0 0 x 0x49 16位软件定时器。
// 1 0 0 1 1 0 x 0x4d 16位高速脉冲输出。
// 1 0 0 0 0 1 0 0x42 8位 pwm。
//ecomn cappn capnn matn togn pwmn eccfn
// 0 0 0 0 0 0 0 0x00 无此操作
// 1 0 0 0 0 1 0 0x42 普通8位pwm, 无中断
// 1 1 0 0 0 1 1 0x63 pwm输出由低变高可产生中断
// 1 0 1 0 0 1 1 0x53 pwm输出由高变低可产生中断
// 1 1 1 0 0 1 1 0x73 pwm输出由低变高或由高变低都可产生中断
//-----------------------
sfr ccap0l = 0xea; //pca 模块 0 的捕捉/比较寄存器低 8 位。 0000,0000
sfr ccap0h = 0xfa; //pca 模块 0 的捕捉/比较寄存器高 8 位。 0000,0000
sfr ccap1l = 0xeb; //pca 模块 1 的捕捉/比较寄存器低 8 位。 0000,0000
sfr ccap1h = 0xfb; //pca 模块 1 的捕捉/比较寄存器高 8 位。 0000,0000
//-----------------------
// 7 6 5 4 3 2 1 0 reset value
sfr pca_pwm0 = 0xf2; //pca 模块0 pwm 寄存器。 - - - - - - epc0h epc0l xxxx,xx00
sfr pca_pwm1 = 0xf3; //pca 模块1 pwm 寄存器。 - - - - - - epc1h epc1l xxxx,xx00
//pca_pwmn: 7 6 5 4 3 2 1 0
// - - - - - - epcnh epcnl
//b7-b2: 保留
//b1(epcnh): 在 pwm 模式下,与 ccapnh 组成 9 位数。
//b0(epcnl): 在 pwm 模式下,与 ccapnl 组成 9 位数。
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机 adc 特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr adc_contr = 0xbc; //a/d 转换控制寄存器 adc_power speed1 speed0 adc_flag adc_start chs2 chs1 chs0 0000,0000
sfr adc_res = 0xbd; //a/d 转换结果高8位 adcv.9 adcv.8 adcv.7 adcv.6 adcv.5 adcv.4 adcv.3 adcv.2 0000,0000
sfr adc_resl = 0xbe; //a/d 转换结果低2位 adcv.1 adcv.0 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机 spi 特殊功能寄存器
// 7 6 5 4 3 2 1 0 reset value
sfr spctl = 0xce; //spi control register ssig spen dord mstr cpol cpha spr1 spr0 0000,0100
sfr spstat = 0xcd; //spi status register spif wcol - - - - - - 00xx,xxxx
sfr spdat = 0xcf; //spi data register 0000,0000
//--------------------------------------------------------------------------------
//新一代 1t 8051系列 单片机 iap/isp 特殊功能寄存器
sfr iap_data = 0xc2;
sfr iap_addrh = 0xc3;
sfr iap_addrl = 0xc4;
// 7 6 5 4 3 2 1 0 reset value
sfr iap_cmd = 0xc5; //iap mode table 0 - - - - - ms1 ms0 0xxx,xx00
sfr iap_trig = 0xc6;
sfr iap_contr = 0xc7; //iap control register iapen swbs swrst cfail - wt2 wt1 wt0 0000,x000
//--------------------------------------------------------------------------------

电缆接头如何做防水处理,有哪些方法可以做出防水接头
双11手机促销战白热化:新一轮5G换机潮有望来临
PN结温度传感器构成的水开报警电路
聊聊接口优化的几个方法
普通空调变为wifi控制方案设计
单片机AD采样程序及其寄存器讲解
围绕经济转型升级、社会民生需求加速科技成果转化
2017全球最佳性能手机,华为荣耀V9是唯一国产手机
谈谈XR关键技术及VR/AR/MR/XR关系
基于3nm支持的A17处理器值得期待吗
优必选服务机器人NLP技术最新研究进展
华为Mate10什么时候上市?华为Mate10最新消息:华为Mate9价格大跳水让路华为Mate10,华为Mate10发布会要来了
Java工程师的任职要求
码垛机器人的系统组成以及它的主要参数
AI新技术:识别笔迹可辨嫌疑人国籍
酷派与腾讯云签署战略合作协议 打造下一代操作系统
BOE拾光纪显示屏:肉眼无法分辨像素痕迹,清晰锐利和细节尽收眼底
国产车规级MCU和国际厂商的MCU相比差距明显?
理想汽车将在2022年使用NVIDIA Orin系统级芯片
AMETEK Sorensen 发布带有触摸显示屏的SGX系列直流程控电源