⑴ 单片机培训班多少费用
一般市场上的单片机培训班价格都在1.5-2万元左右,超过2万以上就偏贵了。学习周期通常为4-6个月左右,具体的时间得看具体的培训班安排。不仅单片机培训班价格偏高,IT行业其他专业的培训价格也很高,比如java、 python等等。
⑵ 现在stm32就10几块钱一片了,批发连10块都不到,那为什么单片机还卖得相对那么贵
看什么型号的,性能,资源都有关系的,不能以简单以价格论,那单片机还有几毛钱的呢
⑶ 单片机相关的认证考试
单片机开发与设计应用工程师认证考试,具体详情如下:该证书反映广大电子信息类在校学生和工程技术人员从事该领域的技术研究、开 发等工作的水平,是对持证人员单片机的专业知识、技术、能力的认可和评价,更是 电子信息行业求职、任职、单位录用的重要依据。
该认证考试的适用对象是:
(1)电子、通信、自动化、信息工程、计算机等专业从业人员及大专院校学生;
(2)从事电信、数码、自控、仪器仪表、家电、汽车电子等行业的工程技术人员和技术销售人员。
(3)大中专院校教师及各类培训机构任教人员。
(4)广大单片机业余爱好者。
该认证考试的具体流程如图所示:
⑷ 为什么台湾的单片机的烧录器都很贵
这只是他们的市场定位不同而已,像义隆这些单片机是仿制PIC单片机的,和PIC单片机一样都直接面向工业厂商,而不是面向初学者。ATMEL 的51单片机和STC这些都属于51系列单片机,51单片机在和PIC义隆这些单片机竞争中技术上处于劣势(而ATMEL的AVR单片机在工业市场上比不过PIC,他们的产品太单一还差点被PIC的生产商收购了)。
所以他们的经营策略就是希望占领初学者,让初学者可以方便地使用他们的单片机而无需买太贵的编程器仿真器,等初学者成长后可以继续用他们的单片机。一个很简单的例子就是日本的NEC单片机基本没多少人听说过,但它却是世界上出货量第三的8位单片机(都直接卖给大厂家,普通的工程师都玩不到,所以它的开发工具超级贵,但如果你以单位名义去订一万颗或更多的芯片,他们会免费送你仿真器编程器),另外排名第一的是PIC、第二是飞思卡尔(08年排名)
像义隆、松翰这种芯片多数用于玩具小家电什么的,所以他们基本上是直接对玩具家电生产商直接销售。
网上有人破解这东西的(义隆合泰好像听说过),但多数他们的编程器都是基于这样的原理:程序通过计算机的串口或者USB送到编程器上的一个监控芯片(多数是他们自己的单片机做的),再由这个监控芯片吧数据写到程序ROM里。所以这里存在一个问题,自制的话,这个监控芯片依然需要写程序进去才能做成烧写器,但你本来就没有烧写器要做的,如何写这个芯片呢?这就像是先有鸡还是先有蛋的逻辑问题了。
⑸ 关于单片机工程师证
全称叫单片机开发工程师。
目前单片机已渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。据统计,我国的单片机年需求量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%,这说明单片机应用在我国才刚刚起步,有着广阔的前景!只要你对嵌入式底层开发感兴趣!你只需掌握单片机硬件MCU、指令系统、软件编程、接口芯片等的原理及应用,你就可以成为一位单片机开发工程师。
考试内容很简单,只需要以下:
设计单片机电路;
负责单片机工作所需的外围电路设备的驱动;
编写单片机软件,并对软件进行仿真调试。
有一定基础的单片开发技能的人都可以报考,不限年轻,学历等。
⑹ 请单片机高手速速回答
10.串口通讯
单片机的结构和特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?
SBUF 数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?而不是收发各用一个寄存器。”实际上SBUF 包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。操作SBUF寄存器的方法则很简单,只要把这个99H 地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfr SBUF = 0x99;当然你也可以用其它的名称。通常在标准的reg51.h 或at89x51.h 等头文件中已对其做了定义,只要用#include 引用就可以了。
SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51 芯片串行口的工作状态。51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。
SM0 SM1 模式 功能 波特率
0 0 0 同步移位寄存器 fosc/12
0 1 1 8位UART 可变
1 0 2 9位UART fosc/32 或fosc/64
1 1 3 9位UART 可变
在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。表中的fosc 代表振荡器的频率,也就是晶振的频率。UART 为(Universal Asynchronous Receiver)的英文缩写。
SM2 在模式2、模式3 中为多处理机通信使能位。在模式0 中要求该位为0。
REM 为允许接收位,REM 置1 时串口允许接收,置0 时禁止接收。REM 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1 都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0 来禁止接收,在子程序结束处加入REM=1 再次打开串口接收。大家也可以用上面的实际源码加入REM=0 来进行实验。
TB8 发送数据位8,在模式2 和3 是要发送的第9 位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。
RB8 接收数据位8,在模式2 和3 是已接收数据的第9 位。该位可能是奇偶位,地址/数据标识位。在模式0 中,RB8 为保留位没有被使用。在模式1 中,当SM2=0,RB8 是已接收数据的停止位。
TI 发送中断标识位。在模式0,发送完第8 位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI 置位后,申请中断,CPU 响应中断后,发送下一帧数据。在任何模式下,TI 都必须由软件来清除,也就是说在数据写入到SBUF 后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI 不会由硬件清除,所以这时必须用软件对其清零。
RI 接收中断标识位。在模式0,接收第8 位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU 取走数据。但在模式1 中,SM2=1时,当未收到有效的停止位,则不会对RI 置位。同样RI 也必须要靠软件清除。常用的串口模式1 是传输10 个位的,1 位起始位为0,8 位数据位,低位在先,1 位停止位为1。它的波特率是可变的,其速率是取决于定时器1 或定时器2 的定时值(溢出速率)。AT89C51 和AT89C2051 等51 系列芯片只有两个定时器,定时器0 和定时器1,而定时器2是89C52 系列芯片才有的。
波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600 会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960 字节。51 芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M 的晶振来计算,那么它的波特率可以达到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32。模式1 和模式3 的波特率是可变的,取决于定时器1 或2(52 芯片)的溢出速率。那么我们怎么去计算这两个模
式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。
波特率=(2SMOD÷32)×定时器1 溢出速率
上式中如设置了PCON 寄存器中的SMOD 位为1 时就可以把波特率提升2 倍。通常会使用定时器1 工作在定时器工作模式2 下,这时定时值中的TL1 做为计数,TH1 做为自动重装值 ,这个定时模式下,定时器溢出后,TH1 的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2 下定时器1 溢出速率的计算公式如下:
溢出速率=(计数速率)/(256-TH1)
上式中的“计数速率”与所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51 芯片的计数速率为晶体振荡器频率的1/12,一个12M 的晶振用在51 芯片上,那么51 的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到9600 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式:
11.0592M
9600=(2÷32)×((11.0592M/12)/(256-TH1))
TH1=250
12M
9600=(2÷32)×((12M/12)/(256-TH1))
TH1≈249.49
上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M 的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。
11.定时器1的溢出率,也叫定时器1的溢出频率,从设定初值开始计数,当计数到0FFH再一个计数脉冲到来时刻就溢出,初值越大溢出率也越高,我们使用这个溢出率确定通信波特率。
在使用11.0592MHz晶体时,SMOD=0,C/T=0,方式=2,波特率=9600,则定时器重装载数值是0FDH。
13. 0.125s