技术文档

单片机pca 现在主流单片机都有哪些

小编 2024-11-24 技术文档 23 0

现在主流单片机都有哪些

51单片机

应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。

51单片机之所以成为经典,成为易上手的单片机主要有以下特点:

特性:

1. 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。

2. 同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便,

3. 乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。

缺点:(虽然是经典但是缺点还是很明显的)

1. AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担

2. 虽然I/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋

3. 运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利

4. 51保护能力很差,很容易烧坏芯片

应用范围:

目前在教学场合和对性能要求不高的场合大量被采用

使用最多的器件:8051、80C51

了解8051微控制器全系列产品:全面剖析久经验证的8051架构微控制器

MSP430单片机

MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点…

特性:

1. 强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式( 7 种源操作数寻址、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns 。这些特点保证了可编制出高效率的源程序

2. 在运算速度方面,能在 8MHz 晶体的驱动下,实现 125ns 的指令周期。 16 位的数据宽度、 125ns 的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如 FFT 等)

3. 超低功耗方面,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。电源电压采用的是 1.8~3.6V 电压。因而可使其在 1MHz 的时钟条件下运行时, 芯片的电流会在 200~400uA 左右,时钟关断模式的最低功耗只有 0.1uA

缺点:

1. 个人感觉不容易上手,不适合初学者入门,资料也比较少,只能跑官网去找

2. 占的指令空间较大,因为是16位单片机,程序以字为单位,有的指令竟然占6个字节。虽然程序表面上简洁, 但与pic单片机比较空间占用很大

应用范围:

在低功耗及超低功耗的工业场合应用的比较多

使用最多的器件:MSP430F系列(中文资料)、MSP430G2系列、MSP430L09系列

了解MSP430全系类产品:全面直击MSP430微控制器全家族成员

TMS单片机

这里也提一下TMS系列单片机,虽不算主流。由TI推出的8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合。虽然没STM32那么优秀,也没MSP430那么张扬,但是TMS370C系列单片机提供了通过整合先进的外围功能模块及各种芯片的内存配置,具有高性价比的实时系统控制。同时采用高性能硅栅CMOS EPROM和EEPROM技术实现。低工作功耗CMOS技术,宽工作温度范围,噪声抑制,再加上高性能和丰富的片上外设功能,使TMS370C系列单片机在汽车电子,工业电机控制,电脑,通信和消费类具有一定的应用

应用最多的器件:TMS370C256A

STM32单片机

由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…其强大的功能主要表现在:

特性:

1.内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法

2.存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器

3.时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振

4、调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口

使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列

了解STM32全系类产品:沙场点兵STM32微处理器全系列成员。

PIC单片机

PIC单片机系列是美国微芯公司(Microship)的产品,共分三个级别,即基本级、中级、高级,是当前市场份额增长最快的单片机之一,CPU采用RISC结构,分别有33、35、58条指令,属精简指令集,同时采用Harvard双总线结构,运行速度快,它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期,这也是高效率运行的原因之一,此外PIC单片机之所以成为一时非常热的单片机不外乎以下特点:

特点:

1. 具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器,从而解决了51系列I/O脚为高电平时同为输入和输出的状态。

2. 当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点。

3. 它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程(ISP)功能。

不足之处:

其专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现,但是在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。数据的传送和逻辑运算基本上都得通过工作寄存器W(相当于51系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送,因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中的朋友应该深有体会

使用最多的器件:PIC16F873、PIC16F877

AVR单片机

AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故最短指令执行时间为250~125ns。AVR单片机能成为最近仍是比较火热的单片机,主要的特点:

特点:

1. AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行,而在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列出色些

2. AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间为0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。

3. AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。这点虽不如PIC,但比51系列还是要优秀的…

缺点:

1. 是没有位操作,都是以字节形式来控制和判断相关寄存器位的

2. C语言与51的C语言在写法上存在很大的差异,这让从开始学习51单片机的朋友很不习惯

3. 通用寄存器一共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接与立即数打交道,显然要优于前者。

使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515

STC单片机

说到STC单片机有人会说到,STC也能算主流,估计要被喷了~~我们基于它是国内还算是比较不错的单片机来说。STC单片机是宏晶生产的单时钟/机器周期的单片机,说白了STC单片机是51与AVR的结合体,有人说AVR是51的替代单片机,但是AVR单片机在位控制和C语言写法上存在很大的差异。而STC单片机洽洽结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有,同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能…

STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机 的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机…

特性:

1. 下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于杜老师的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)

2. STC单片机具有在应用编程,调试起来比较方便;带有10位AD、内部EEPROM、可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜

3. 4 通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集

【STC8A8K64D4开发板】第2-17讲:PCA实现数模转换(DAC)

学习目的

了解DAC数模转换原理及RC积分电路原理。掌握STC8A8K64D4系列单片机实现DAC功能的硬件和软件设计。

DAC简介

DAC (全称是Digital to Analog Convertor)数模转换器是一种将数字信号转换为模拟信号(以电流、电压或)的设备或电路。在很多数字系统中(例如计算机、单片机),信号以数字方式(0或者1)存储和传输,而数模转换器DAC可以将这样的信号转换为模拟信号,从而使得他们能够被外界(人或其他非数字系统)识别。数模转换器DAC的常见用法是在音乐播放器中将数字形式存储的音频信号输出为模拟的声音。

T型电阻网络方式是一种常见的DAC实现方法,由T型电阻网络和运算放大器组成,下图是8位DAC的原理示意图。输入数字量中的每位都按其权值分别转换为模拟量,之后通过运算放大器求和相加。

图1:T型电阻网络示意图

上图中,由于运算放大器的反相输入端为“虚地”,所以无论模拟开关连接到“0”还是 “1”,从T形电阻网络节点对“地”往右看的等效电阻均为R,由此可计算出基准电流I=VREF/R。再根据电流可计算出流过各个分支的电流从右向左(I0~I7)依次是I/2、I/4、I/8、I/16、I/32、I/64、I/128和、I/256。

由此,每一位数字量都发挥了有效的位权,流向运算放大器反相输入端的总电流如下:

该电流经过运算放大器换成模拟电压输出,从而实现由数字信号到模拟信号的转换。这里以8位DAC示例,输出电压有256种变化,当然,这种T形电阻网络的转换原理可以推广到n位,实现n位DAC。

市面上很多单片机片内集成了DAC外设,并且也有专用独立DAC芯片供用户选择使用,那为什么还需要使用PWM实现DAC?

这是因为虽然市面上很多集成了DAC的单片机和独立DAC芯片,他们使用起来更方便,并且精度也高,但是很多时候,我们并不需要很高的精度,我们选择使用的单片机可能没有DAC外设,但是一般都有PWM,因此,出于对成本的考虑,我们会使用PWM实现DAC,从而节省成本。

硬件电路设计

STC8A8K64D4系列单片机片内没有集成DAC外设,因此,IK-64D4开发板通过PCA工作于PWM模式输出高速PWM脉冲配合RC滤波电路实现DAC功能。

实现DAC转换是基于将高速PWM信号通过RC电路整合成比较平缓的电压信号作为模拟输出,通过改变高速PWM信号的占空比达到改变输出电平信号幅度的目的。为了达到比较理想的电压信号输出,P7.0口输出的PWM信号经二阶RC滤波电路整合,如下图所示。

图2:PWM实现DAC电路

注:开发板J27端子需使用短路帽短接P06和DAC_O以及P70和DAC_I,并且将J27端子的P06和ADC以及P70和DHT11的短路帽去掉。

软件设计

PWM实现DAC实验

注:本节的实验是在“实验2-11-1:ADC采样电位器电压(查询方式)”的基础上修改,本节对应的实验源码是:“实验2-17-1: PWM实现DAC实验”。关于PWM的内容,读者可以参阅《第2-16讲:可编程计数器阵列PCA》中的PCA实现PWM部分的内容。

实验内容

配置PCA模块0工作于PWM模式, PCA配置如下:

系统时钟:24MHz。PCA时钟源:系统时钟= 24Mhz。功能引脚:P7.0。中断:不开启中断。PWM位数:8位。

程序运行后,在主循环中不断改变PWM的占空比,从而改变P7.0输出的电压值。实验中为了方便观察实验现象,配置P0.6为ADC功能引脚,并通过跳线帽将其连接到DAC电路的输出端,这样,就可以实时获取DAC输出的电压值并通过串口输出,以便于我们观察实验现象(DAC输出电压值的改变)。

代码编写

新建一个名称为“pca.c”的文件及其头文件“pca.h”并保存到工程的“Source”文件夹,并将“pca.c”加入到Keil工程中的“SOURCE”组。引用头文件

因为在“pca.c”文件中使用了“pca.c”文件中的函数,所以需要引用下面的头文件“pca.h”。

代码清单: 引用头文件

//引用pca的头文件 #include " pca.h" PCA初始化

本例中,我们配置PCA模块0工作于PWM模式,PCA时钟源使用系统时钟(24Mhz),功能引脚为P7.0,代码清单如下。

代码清单: PCA初始化

/*************************************************************************** * 描 述 : PCA初始化 * 入 参 : 无 * 返回值 : 无 **************************************************************************/ void pca_init(void ) { CCON = 0x00; //CF、CR、CCF1、CCF0位均清零 P_SW1 &= 0xEF; //PCA模块0功能引脚选择P7.0 P_SW1 |= 0x20; /*--------------------PCA模式寄存器CMOD配置--------------------------- 位7 位6 位5 位4 位3~位1 位0 CIDL x x x CPS[2~0] BCF 0 x x x 100 0 CIDL=0:空闲模式下仍然计数 CPS[2~0]=100:PCA时钟源选择:系统时钟 BCF=0:禁止PCA计数器溢出中断 -----------------------------END------------------------------------*/ CMOD = 0x08; CL = 0x00; //PCA计数器赋初值 CH = 0x00; //PCA计数器赋初值 IP &= ~0x02; //中断优先级配置为2(较高优先级) IPH |= 0x02; /*------------------PCA模块0模式控制寄存器CCAPM0配置------------------ 位7 位6 位5 位4 位3 位2 位1 位0 x ECOM0 CCAPP0 CCAPN0 MAT0 TOG0 PWM0 ECCF0 x 0 0 0 0 0 1 0 ECOM0=0:关闭PCA模块0的比较功能 CCAPP0=0:关闭PCA模块0的上升沿捕获 CCAPN0=0:关闭PCA模块0的下降沿捕获 MAT0=0:关闭PCA模块0的匹配功能 TOG0=0:关闭PCA模块0的高速脉冲输出功能 PWM0=1:开启PCA模块0的脉宽调制输出功能 ECCF0=0:禁止PCA模块0的匹配/捕获中断 -----------------------------END------------------------------------*/CCAPM0 = 0x02;PCA_PWM0 &= 0x3F; //PCA模块0工作于8位PWM功能 PCA_PWM0 &= 0xFC; //EPC0H位和EPC0L位置0 CCAP0L = 0x00; //PCA比较值寄存器赋初值 CCAP0H = 0x00; //PCA比较值寄存器赋初值 CR = 1; //启动PCA计数器阵列计数 } 主函数

主函数中初始化PCA和ADC,PCA计数启动后,在主循环中不断改变PWM的占空比,使得DAC输出不同的电压。

ADC采样DAC输出的电压值后,通过串口输出采样值及其对应的电压值,代码清单如下。

代码清单 :主函数

/*************************************************************************** * 描 述 : 主函数 * 入 参 : 无 * 返回值 : 无 **************************************************************************/ int main(void ) { u16 adc_value; //存放ADC采样值 float voltage; //存放ADC采样值计算后的电压值 u16 TempData; P2M1 &= 0xBF; P2M0 &= 0xBF; //设置P2.6为准双向口(LED1) P3M1 &= 0xFE; P3M0 &= 0xFE; //设置P3.0为准双向口(串口1的RxD) P3M1 &= 0xFD; P3M0 |= 0x02; //设置P3.1为推挽输出(串口1的TxD) P7M1 &= 0xFE; P7M0 |= 0x01; //设置P7.0为推挽输出 pca_init(); uart1_init(); //串口1初始化 adc_config(); //初始化ADC EA = 1; //使能总中断 while (1) { TempData++; CCAP0H = (u8)(256 - TempData); //P7.0引脚输出频率不变但占空比不断变化的脉冲信号 if (TempData>138)TempData=1; //占空比达到很大时重新设定占空比 delay_ms(5); adc_value = get_adc_value(); //读取ADC采样值 voltage = (2.5*adc_value)/4096; //将ADC采样值转换为电压(单位V) printf("ADC采样值: %d\r\n",adc_value); //串口打印上传的采集的原始值 printf("采样值对应的电压:%.2fV\r\n",voltage);//串口打印ADC采样电压 delay_ms(200); //延时200ms,方便观察数据 led_toggle(LED_1); //翻转指示灯D1状态,指示一次ADC采样完成 } }

硬件连接

本实验通过P7.0输出PWM信号实现DAC输出,P0.6配置为ADC用于采样DAC电路输出的电压,按照下图所示连接跳线帽。

图3:硬件连接

实验步骤

解压“…\第3部分:配套例程源码”目录下的压缩文件“实验2-17-1: PWM实现DAC实验”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。双击“…\pca_dac\project”目录下的工程文件“pca_dac.uvproj”。点击编译按钮编译工程,编译成功后生成的HEX文件“pca_dac.hex”位于工程的“…\pca_dac\Project\Object”目录下。打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。电脑上打开串口调试助手,选择开发板对应的串口号,将波特率设置为9600bps。程序运行后,在串口接收窗口可以看到开发板上报的ADC采样值及其对应的电压值,如下图所示。

图4:串口调试助手中观察电压值

相关问答

stc 单片机pca 做pwm输出时怎么把频率降低12分频还是高?

CMOD=0X02;//使用定时器0溢出率作为PWM时钟设置定时器0工作方式2(8位自动重装载)设置定时器0初值,就是溢出率,改变这个值就可以改变PWM输出频率其他的就...

stc模块是什么?

STC模块是高速、低功耗、超强抗干扰的新一代8051模块51单片机。指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM8路高速10位A...

DSP与 单片机 的区别?

存储器结构不同单片机使用冯。诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。大多数DSP采用...

PLC和 单片机 的区别是什么?

[最佳回答]单片机是一种芯片,在一定场合,配合外围电路,可以用来设计所需要的各种功能,大都用汇编语言、C语言等来开发嵌入式软件,可应用于各种领域。PLC是一...

如何使用arduino控制六个电机。如果难以实现,应当用哪种 单片机 ?

我有个方案。如果使用arduinonano或uno:电机驱动可以用tb6612,298n也可以,再搭配一个pca9685模块。以arduino的d2~d13去控制电机驱动模块的正反转,pwm值通过...

跪求stc12c5a60s2 单片机 PWM程序。50%占空比。P1.3口输出PWM?

#include/******************************************************************************************...

智能车用障碍传感器原理

随着科学技术的进步和发展,对车辆驾驶性能和安全舒适性的要求大为提高,使得车辆上的电子控制单元数量逐步增加。但是,车辆上的电控单元(如,各种...

单片机 STC12C5A60S2不接晶钟和复位能下载程序吗-ZOL问答

至于复位,应该是让单片机停止当前工作,接收上面的程序,这个有点不确定。希望帮...voidPCA_Routine(void)interrupt7;voidUART2_Routine(vo...

can收发器作用_车坛

CAN收发器的作用是:将CAN控制器提供的数据转换成电信号,然后通过数据总线发送出去,同时也接收总线数据,并将数据传送给CAN控制器。车载网络CAN收发...

求关于随机争用仲裁系统设计和开发的论文有么

[回答]MCS51系列的单片机没有那么强大的功能(主要是可扩展的存储器有限),如果真要使用的话,可能要用好几片.2:现在的电梯都是PLC(可编程逻辑控制器)控制...

猜你喜欢