⑴ 想自学嵌入式,求问适合初学者的教材和板子是什么,求推荐
零基础建议先学习C语言。
然后从单片机MCS51入门,初期可以选择用protues仿真,积累到一定程度可以买普中开发板(MCS51和STM32一体的)。初学MCS51不要过分依靠教科书,汇编视个人情况而定,有困难不要死抠。
C51的一些关键知识点:
二进制与16进制换算,KEIL等开发环境,下载等C语言基础就不说了。
流水灯、数码管、独立按键、定时器、16*16键盘、点阵、LCD1602、12864、DS18B20这些都是常用的,开发板也有例子,照着学下来。
如果C51玩的很遛了可以选择完STM32F103C8,熟悉一下ARM内核。C8和MCS51差不多,资源很富一些。需要注意的是STM32采用固件库编程,入门以后配置起来比51更容易。
C8差不多了可以玩STM32F103ZET6这类的板子,这时候玩玩像USB、SD、以太网之类的高级货。熟悉一下各类协议栈、RTOS之类。
如果ZET6也玩的很遛了嵌入式底端应聘个5k~7k以上的岗位不在话下了。
再想深入一下可以试着玩一下linux、ARM9或A8。这时候就可以往系统的概念走了
⑵ 《安富莱嵌入式周报》第212期:2021.05.11--2021.05.17
往期周报汇总地址: armbbs.cn/forum.php?...
1、Arino为STM32H7设计的开源工控底板,原理图公开。该底板旨在与先前推出的H7核心板配合使用,供感兴趣的开发者参考学习。
2、纮康科技推出特色产品,包括万用表前端HY313x、交流阻抗测量HY313x,以及高性能32bit MCU HY16F39。该公司的模拟IC在性能上表现出色。
3、Dialog半导体公司提供定制ASIC业务,专注于工业和自动化技术中的复杂系统解决方案。通过定制设计,提升竞争优势,同时不增加成本或上市时间。
4、ST公司新传感器监测产品STEVAL-STWINKT1B加入边缘AI功能,状态监视对预测性维护系统至关重要,有助于提高生产效率,减少维护成本和停机时间。
5、SEGGER公司推出Linux Studio,为Linux应用程序的创建、开发和调试提供一站式解决方案。它包含源代码编辑器、图形调试器和项目管理器,界面类似Visual Studio。
6、Embedded Wizard V11发布,新增Linux版本上位机支持,全面兼容各种微处理器(MPU),视频教程链接提供。
7、emWin6.18模拟器发布,论坛提供下载,更新内容丰富,具体更新记录公布。
8、V5、V6、V7的第2版DSP和CMSIS-NN神经网络教程更新至第29章,包含针对STM32H7的FFT相频响应和幅频响应与Matlab的计算比较。
9、第3版emWin教程前11章节发布,本周更新了三个章节,下载链接在论坛提供。
10、ThreadX全家桶本周更新了调度器章节,论坛提供下载。
11、H7-TOOL的APP固件升级至V2.05,上位机同步升级,新增支持CAN助手功能,新增华芯微特SWM和杰发科技AC78X脱机烧录功能。
12、串口助手中新增串口示波器功能,lua增加读文件接口API, f_read, f_dir,DS18B20温度表增加数据传送到PC机串口助手的功能。
13、CAN助手功能支持经典CAN和CANFD,提供lua脚本解码和分窗显示,直接输入lua语句控制发送逻辑,支持汽油车ODB解码器。
14、当前支持的脱机型号包括华芯微特SWM0x0、SWM1x0、SWM2x0、SWM3x0系列芯片和AutoChips(杰发科技)AC780x、AC781x系列芯片。
⑶ 单片机开发板是什么啊
单片机开发板呢,顾名思义就是拿来搞开发的板子,而这个板子与其它电路板有所不一样,这个板子拿来搞开发可以实现很多功能,就会留出很多接口给用户,用户自己来开发这些接口的功能,在以后的工作中也会接触到很多开发板,这些开发板是拿来做开发和技术验证的,在开发板上把技术验证成功之后就会做真机开发了,而真机开发就不会像开发板那样留接口了,(嵌入式嘛)只完成产品特定的功能就可以了。而在学习阶段呢,有一块自己的开发板再好不过,学习了理论知识之后除了在实验室,自己就可以用自己的开发板完成很多学习和实际操作。简单明了的说开发板因为留了很多接口给用户可以完成这个领域几乎所有技术的实现和学习,拿来学习搞开发的。
简单的板子可以学学C51单片机,如果你是要搞嵌入式的话51是最基础的也是最最低端的这个现在很少人都只是拿来做入门的东西了很多人玩智能车就用这个,中端一点的可以是STM32的arm-cortex m系列的微控制器,这一类的本人就在用一块stm32 f4 的板子,高端一点的板子一般就是系统级别的了一般都会移植操作系统了,比如嵌入式linux等,而这一类的开发板市面上很多cpu的类型也很多比如我现在就在用入门级别的s3c2440(基于arm9单核)cpu的 也在用高端一点的exsny 4412(基于 arm a9 4核 与三星note2相同的cpu)的板子。
这类东西淘宝一下就会知道很多产品了!!!
⑷ 求一个比较准的延时函数,单位us。不用定时器。晶振12mhz。 因为操作DS18B20时,延时较短。
这个精度太高了吧,你自己去参考下这篇博文
http://blog.sina.com.cn/s/blog_7a77356b0100s9uc.html,虽然是讨论的定时器,希望会对你有帮助。
linux下有usleep单位就是us,windows下的没有这么精确地,只是我没发现
⑸ 微控制器系统版和开发板有什么区别。
一样的只是叫法不同,微控制器叫的多的叫实验板,因为微控制器学校做实验用的多嘛,ARM,DSP等叫开发板比较多,因为用ARM,DSP开发板的公司买来开发板直接开发产品,产品开发出来后,再做硬体并去掉一些不用的模组,缩短开发周期嘛。对我们学习者的角度,都是实验板。如果公司买微控制器的板开发产品,对他们来说单片机板也是开发板。个人理解哦!
学习版简单些,带许多例子;开发板一般都模组化,可拆卸,其实都差不多
模拟机介绍:
51模拟器是为微控制器爱好者学习微控制器和学习使用KEIL C51软体而开发的。 51模拟器使用一片 SST89C58 微控制器来实现模拟功能 ,模拟机通过串行端口与 PC 连线。使用者可以开发小于等于28K的程式。 51模拟器直接插入使用者的应用板MCU的位置。 51模拟器的主要效能: 直接支援 KEIL C51 的 IDE 开发模拟环境。 可单步、断点、全速执行除错程式;可参考变数、RAM变数。 支援汇编、C语言混合除错。 片内 28K 程式空间可以随时进行线上程式更新。 完全模拟 P0、P2 口。 模拟频率 6-33 MHz 晶振可选,系统配置 11.0592 MHz 。 可以模拟标准的 89C51 , 89C52 , 89C58 等全部51核心的微控制器。 51模拟器占用T2定时器、UART口。使用模拟插针可更换结构,模拟插针可以取下,方便断针后更换,即使断针,也能自行处理,不必返修,小功能,大用处,尤其是对一些比较粗心的人而言。可切换晶振电路,一般使用使用者板上的晶振,也可用本机自带,多一种选择,特别是可以判断使用者机上晶振电路工作是否正常,对初学者尤其适用。带有简单的复位按钮(按钮通过一只100ohm电阻接VCC),当用户电路板为简易的RC复位时,这个按钮就能起作用了。如果是用了复位电路,那么电路本身就能保证复位的可靠性,不需用该按钮。超小的体形设计,线路板和40脚积体电路一样大小,全部用贴片元件完成,不记成本的,使用max232贴片的232转换专业晶片,使可靠性更高,配置:包括模拟机主机一台余兄,光盘一张,串行端口线一条,说明一本。
51微控制器开发板:
也称51微控制器实验板、51微控制器学习板。是用于学习51型号的微控制器的实验及学习器件,他是将51微控制器常用的外围。比如流水灯,数码管,矩阵键盘,EEPROM,时钟,蜂鸣器,继电器及整合在一小块电路板上。便于携带及学习,直接插在PC机上面。随时随地的进行学习,另外一些中小型专案也可以直接在此板上面进行二次开发,开发完成后即可以在此基础上面重新画图做板,极大的缩短了公司的开发周期,节省硬体成本。例如电子人微控制器开发板,针对学者需要特别配套VB上位机软体开发,游戏开发等教程学习资料。开发此类微控制器开发板的公司一般提供完善的售后服务与技术支援,高校常用的微控制器开发板为教学需要,常见配雹判套资源有硬体、实验程式原始码、电路原理图、电路PCB图等学习资料。 常见配套资源如下: 1、硬体实验板及期配件如:杜邦线、微控制器晶片、流水灯、点阵显示、ds1302数字钟、ds18b20温度检测、彩色TFT液晶屏,SD卡,超声波测距、收音机、mp3解码、智慧小车等等。 2、实验程式原始码,包含汇编源程式、C语言源程式。 3、电路原理图、PCB图。 4、实验手册、使用手册。 5、附加PCB设计制竖肆袭作、VB软体开发等计算机学习资料。
希望对你有用!
这个只是叫法不同而已,其实是一样的东西。
吴鉴鹰微控制器开发板
用途:
1 可以作为烧写器(即程式设计器),将自己写好的程式写入微控制器中。
但烧写微控制器的种类单一 型号也不会太多。
2 可以利用开发板上的一些硬体 做一些微控制器实验(就不需要自己搭建实验电路了)
有利于初学者使用。
微控制器开发板上集合了多个实验的功能区,能做出不同的实验或者完成不同的任务。但他们都是共用一个电源的,不过有些功能区需要接上短路帽才能将微控制器输出的讯号输入到那个功能区里。基本上要实现上功能都是固定的,也就是你说的只有开发板上有的才能,但不排除扩充套件功能。想要往微控制器里写程式,首先当然是在Keil 或者相关的软体上编写好C或者汇编程式,然后经过编译器编译成微控制器能够识别的机器码,再通过串行端口线或者其他通讯线下载到微控制器里。不同种类的微控制器的烧写过程与下载线也是不一样的。详细情况你可以检视一下你所用的微控制器。通过程式的编写和烧写进微控制器里就可以验正实验的正确或者实现你想要的功能。
微控制器开发板,是供你学习、开发用的,开板自带很多功能如:流水灯、数码管、AD转换、DA转换、步进电机、直流电机、点阵、夜晶、红外、键盘、时钟等,要想达到了什么功能 能,首先通过电脑KEIL软体把程式编好,程式语言分两种C与汇编,把编好的程式通过程式设计器烧录到开发板,开发板就会实现你要想达到的功能,现在开发板都自带烧录功能,不需要另行购买程式设计器,不明白追问
有开发板需不需要模拟板,这个问题要看你需要到达那个程度。
市面上有很多开发板,提供完整的软硬体模组,使得我们能很快的入手,并踏入微控制器的殿堂,是一个非常好的现象。但是,就是由于这类开发板的出现,使得我们有很多路不需要走,也就导致了我们有很多事情不知道,知其然不知其所以然!这对于今后踏入工作领域,碰到新的东西的时候,就会有一种摸不着的感觉。每一个程式的最终完成都离不开模拟器(学校的那种忽略),模拟器的除错方法:断点,单步等等都是很好的除错工具,也可以为我们读程式码提供很大的帮助。
所以我建议,有机会的话尽量使用“可以使用模拟器的开发板和模拟板”,对我们的程式设计思维和除错方法都会有很大的帮助的。负载的系统,没有模拟板和模拟器根本不可能做出来的。
没什么区别,只是叫法不一样罢了!
开发板是用的验证功能性电路板,用以开发实验,验证硬体和软体的功能和效能,是过度产品,如ARM,DSP等CPU的开发板
主机板一般是的是PC的主机板,是PC电脑里的主要组成部件,是成熟的量产产品。
开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器、储存器、输入装置、输出装置、资料通路/汇流排和外部资源接口等一系列硬体元件。开发板一般由嵌入式系统开发者根据开发需求自己订制,也可由使用者自行研究设计。开发板是为初学者了解和学习系统的硬体和软体,同时部分开发板也提供的基础整合开发环境和软体原始码和硬体原理图等。常见的开发板有51、ARM、FPGA、DSP开发板。开发板一般由嵌入式系统开发者根据开发需求自己订制,也可由使用者自行研究设计。开发板是为初学者了解和学习系统的硬体和软体,同时部分开发板也提供的基础整合开发环境和软体原始码和硬体原理图等。常见的开发板有51、ARM、FPGA、DSP开发板。嵌入式系统开发,要先选定满足自己开发所需型号CPU、FPGA、DSP,其次根据选定型号的CPU、FPGA、DSP等选择支援选定晶片的开发板范围。再次,优选开发板提供的开发环境及技术支援的能力和水平。最后还要考虑开发板板子除了整合CPU、FPGA、DSP等之外,还需要较完善输入及输出的接口,如键盘和LCD,程式下载接口、记忆体(RAM)、FlashROM、电源模组等。同时为了开发初期的除错方便,还会引出几个特殊的引脚,如JTAG接口、USB和串行端口等,以供外接的除错模组所使用。
评估办版一般就是测试版,很多软体都是评估版的,因为没有注册,想要注册是需要向软体商交费的,所以评估版软体会有许多的功能限制,还有的是某些硬体的评估版,一般是用来测试用的,里面会有许多不稳定的因素,是需要向厂商反馈的。
树莓派应该算是一个微型桌上型电脑。它用的虽然是arm的CPU,不过支援通用的作业系统,而不是嵌入式的作业系统。当然也可以安装android之类的作业系统。
嵌入式开发板现在主要开发板用的还是自己定制的作业系统。如果你有一个应用需要在arm的CPU上执行,可以试着用它来玩玩。
不过通常开发特定的嵌入式系统,都会自己定制嵌入式开发板。 如果你不会做,可以找一些专门做这种开发板小厂子定。
我10年用的板子基本上都没有作业系统,全部自己写的C。后来用vmware。 现在似乎用android的比较多。 也可以使用嵌入式linux。使用QT作为图形接口。 比如有些导航仪。
手机开发有一段时间用MTK。 现在基本上都android了。
⑹ 学什么单片机好学单片机怎么样能赚钱吗有前途吗
先学51单片机,可以看看学习视频,对于每个人来说,多学习一种技能 可以拓宽 就业渠道,
单片机学习可以先学习一些仿真示例,如
#include<reg51.h>
#define uchar unsigned char
uchar temp;
int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f
unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char ledx[8];
uchar t,j,i;
bit s0,s1;
void scan() //要是按键了,扫描键盘编码值
{
P1=0xF0;
for(j=0;j<250;j++);
temp=P1;
switch(temp)
{
case 0xe0: key1=0; //
break;
case 0xd0: key1=1; //
break;
case 0xb0: key1=2; //
break;
case 0x70: key1=3; //
break;
}
P1=0x0f;
for(j=0;j<250;j++)
temp=P1;
switch(temp)
{
case 0x0E: key=key1+0;
break;
case 0x0D: key=key1+4;
break;
case 0x0B: key=key1+8;
break;
case 0x07: key=key1+12;
break;
default : key=-1;
}
if((key1+1)&&(key+1)) disbuf=key;
}
void ejjc() //判断是否按键
{
P1=0xF0;
if(P1!=0xF0) { scan();s0=1;}
else { s0=0; s1=1;}
}
void main()
{
TMOD=0x51; // T1 外部计数
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
EA=1;
ET0=1; //开定时器0中断
ET1=1; //开定时器1中断
TR0=1; //启动定时器0
TR1=1; //启动定时器1
while(1)
{
ejjc();
if(s0==1 && s1==1)
{
s0=0;s1=0;
for(i=0;i<8;i++)
{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
P0=0xff;
switch(t)
{
case 0: P2=LED7Code[ledx[0]]; P0=0xfe;break;
case 1: P2=LED7Code[ledx[1]]; P0=0xfd;break;
case 2: P2=LED7Code[ledx[2]]; P0=0xfb;break;
case 3: P2=LED7Code[ledx[3]]; P0=0xf7;break;
case 4: P2=LED7Code[ledx[4]]; P0=0xef;break;
case 5: P2=LED7Code[ledx[5]]; P0=0xdf;break;
case 6: P2=LED7Code[ledx[6]]; P0=0xbf;break;
case 7: P2=LED7Code[ledx[7]]; P0=0x7f;break;
}
t++;
if(t==8) t=0;
}