关于PIC单片机的模块和功能总结

发布者:快乐微笑最新更新时间:2020-02-28 来源: eefocus关键字:PIC  单片机  模块  存储器 手机看文章 扫描二维码
随时随地手机看文章

PIC 单片机的概述

PIC16F616 是一款 14 引脚、8 位的 CMOS 单片机。采用精简指令集,仅有 35 条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令。这样有利于提高单片机的运行速度和执行效率。

 

PIC16F616 这款单片机供电电压可以在 2V 到 5。5V 之间,内部集成了一个 RC 振荡器,频率可以配置成 8MHZ 或者 4MHZ,也可以用外部晶振提供时钟。内部集成有 AD 转换、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码保护等功能。三个定时器、PWM 发生器等可以由用户编程。下面我来一一介绍关于 PIC 单片机的这些模块和功能。

 

存储器

PIC16F616 分为程序存储其和数据存储器,程序存储器的大小是 2048words,数据存储器的大小是 128bytes。

 

程序存储器中 0000H 的地址为复位地址,当上电或者看门狗计时器等复位的时候,均会导致 PC 指针指向复位地址。地址 0004H 为中断地址,当无论发生什么中断的时候,PC 指针就会指向此地址。在地址 0005H~07FFH 可以移植程序。

 

数据存储器分为两个部分,分别叫做 bank0 和 bank1,其中 bank0 的地址范围为:00H-7FH,Bank1 的地址范围为 80H-FFH。一般的寄存器都放在里面。可以通过寄存器 STATUSL 里面的 RP0 位来选择 bank0 和 bank1。

 

在编程序的时候要注意的是,当你要操作的寄存器在 bank0 的时候,先要选择 bank0(将寄存器 STATUS 的 RP0 位置 0),然后再对你所要操作的寄存器进行操作,当你要操作的寄存器在 bank1 的时候,同理先要选择 bank1。

 

如果想要定义一些变量,可以在数据存储器 20H 开始的地址定义,定义的地址范围为 20H-7FH。一般这么多就够用了。

 

PIC 的输入输出端口

在学习这个部分的时候,曾经遇到过一些问题。PIC 单片机的引脚不多,大多都是复用引脚,例如 AD、IO、比较器、外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要讲的是通用 IO 口的设置问题。

 

PIC16F616 有 12 个 IO 口,但是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,另外,A 口具有电平变化中断的功能,而 C 口没有,在设计的时候要注意。

 

在设置的时候,一般要进行以下几项设置:

(1)设置端口是模拟端口还是数字端口,可以通过寄存器 ANSEL 来设置。例如你想用 AD,就要将相应的引脚设置为模拟输入端口。

 

(2)如果你选择的是数字端口,接下来就要设置端口的方向,是输入还是输出(RA3 除外),可通过寄存器 TRISA(A 口)或 TRISC(C 口)来设置。

 

(3)设置端口的输出电平,可以通过寄存器 PORTA(A 口)或 PORTC(C 口)来设置。

 

这是对 IO 口的通用设置,但是这不是全部的设置,接下来的设置要看时 A 口还是 C 口了。对于 A 口,它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT 引脚的沿中断。如果想要这些功能,就要对相应的寄存器进行设置。

 

弱上拉的设置:只有当引脚为输出的时候弱上拉才有效,可以通过寄存器 WPUA 来设置相应引脚的弱上拉,值得一提的如果开启了弱上拉,会有多余的电流浪费,这样对于低功耗的设计是不可取的,但是如果在进行一些例如键盘电路设计的候,可以开启弱上拉功能,这样就不需要在键盘电路中加上拉电阻了。

 

电平变化中断的设置:可以通过寄存器 IOCA 来设置,但是首先要将相应引脚设置为数字端口且为输入状态。同时要将寄存器 INTCON 的 REIE 位设置为 1,总中断要允许(置寄存器 INTCON 的 GIE 位),如果设置相应引脚有这个功能,当此引脚电平发生的时候,就会产生一个中断,同时一些中断标志位被置上(INTCON 的 RAIF 位被置 1),且总中断 GIE 被置为 0。在中断服务程序中,要软件清除 RAIF 位和重新置 GIE 位才能继续开启此中断。

 

RA2/INT 脚的沿中断设置:同样首先要将相应引脚设置为数字端口且为输入状态,设置 INTCON 的 INTF 位为 1,表示允许 int 引脚外部中断,寄存器 OPTION_REG 的 INTEGD 位可以设置是上升沿中断还是下降沿中断。当发生中断时,INTCON 的 INTF 位被置为 1,GIE 被清零,在中断服务程序中,要软件清除 INTF 位和重新置 GIE 位才能继续开启此中断。

 

对于 C 口,不能产生电平变化中断和沿中断。

 

定时器

定时器是单片机的一个很重要的部分,用它可以产生很多不同的定时时间,来满足程序设计的不同需求。PIC16F616 有三个定时器,分别是 Timer0、Timer1、Timer2。它们的用法不是很相同,下面来分别谈谈这三个定时器的用法和设置问题。

 

(1)Timer0

Timer0 是一个八位的计数器,它有一个八位的计数寄存器 TMR0,八位的预分频器(与看门狗共用),可以选择内部或者是外部时钟源,有计数器溢出中断的功能。

 

Timer0 可以作为一个定时器或者计数器来使用,与 Timer0 有关的寄存器有:TMR0,INTCON,OPTION_REG,TRISA。

 

当 Timer0 作为定时器来使用的时候,要设置 OPTION_REG 的 T0CS 位为 0,表示用的是内部时钟,每一个指令周期 TMR0 的值会增加(当没有预分频的时候),当 TMR0 被赋值的时候,会有两个指令周期的延时。预分频器可以和看门狗共用,可以由 OPTION_REG 的 PSA 位来设置,当 PSA 为 0 的时候分频器选择 Timer0,当 PSA 为 1 的时候分频器选择看门狗。同时,与分频器的分频值可以通过寄存器 OPTION_REG 来设置,设置的值可以由 1:2 到 1:256。当 Timer0 的计数器 TMR0 计数从 FFH 到 00H 的时候会产生溢出,同时溢出标志位(INTCON 寄存器的 T0IF 位)会置位(无论 Timer0 的中断是否开启),如果中断已经开启了(INTCON 寄存器的 T0IE 被置位),那么就会产生溢出中断。T0IF 位需要软件对其进行清零。

 

当 Timer0 作为计数器来使用的时候,就要用外部时钟源(OPTION_REG 的 T0CS 置 1),每次当引脚 T0CK1 的沿到来时 Timer0 的 TMR0 会增加 1,上升沿和下降沿可以由 OPTION_REG 的 T0SE 来设置。中断和 Timer0 作为定时器使用时一样。在我们编程序的时候,可以用 Timer0 进行定时或产生定时信息,下面我来解释定时器的定时时间的计算。假设 Timer0 用的时钟源是内部的 4MHZ,那么每条指令的执行时间就是 1us,设 Timer0 的预分频系数是 1:256,TMR0 的初值是 6,那么定时时间为:

 

256×(256-6)×1us=64ms

 

在编程的时候需要注意的是 Timer0 的中断是不能把单片机从 SLEEP 的状态唤醒的。

 

(2)Timer1

Timer1 是一个十六位的计数器。它有一个计数寄存器对(TMR1H:TMR1L),时钟源也是内外可选的,具有一个 2bit 的预分频器,可以同步或者异步操作,具有中断功能,但是溢出中断只能在外部时钟、异步的模式才能将单片机从 SLEEP 中唤醒,Timer1 具有捕获 / 比较功能,还有被一些特殊事件触发功能(ECCP),比较器的输出可以与 Timer1 的时钟同步。下面来一一介绍这些功能。

 

在编程的时候也可以按照这样的步骤来进行。设置寄存器 T1CON,时钟源可以选择外部或者内部的时钟源,外部时钟源可以选择 LP 晶体。Timer1 在选择内部时钟时,可以运行在定时器的状态,选择外部时钟的时候,可以运行在定时器或者是计数器状态,工作于计数器状态时可以选择门限是高电平还是低电平计数。这些都可以通过寄存器 T1CON 来设置。

 

以下是 T1CON 每个位的具体功能:bit1:Timer1 是否开启位,当此位设为 1 时,Timer1 开启,设为 0 时,Timer1 关闭;bit2:时钟源选择位,置 1 时,选择外部时钟(T1CK1 引脚的上升沿),此位置 0 时,选择的是内部时钟,并且和 T1ACS(寄存器 CM2CON1 中)配合,当 T1ACS 位为 0 时,时钟为 FOSC/4,当 T1ACS 位为 1 时,时钟为 FOSC。bit2:T1SYNC:定时器 1 的外部时钟输入同步位,当 TMR1CS 位为 1、T1SYNC 位为 1,定时器 1 被设置成与外部时钟不同步,T1SYNC 位为 0 时,定时器 1 被设置成与外部时钟同步模式。Bit3:T1OSCEN:此位为 1 时 Timer1 的时钟选择 LP,为 0 时 LP 晶体被关闭。Bit5-4:T1CKPS:Timer1 时钟的预分频系数设置,通过这两位的是指,可以讲 Timer1 设置成 1:1、1:2、1:4、1:8 几种分频值。Bit6:TMR1GE:只有当 TMR1ON 位为 1 时才有效,当此位为 1 时,Timer1 计数被 Timer1 的门限控制,此位为 0 时,Timer1 正常计数。Bit7:T1GINV:此位为 1 时,Timer1 在门限为高时计数,此位为 0 时,Timer1 在门限为低时计数。

 

Timer1 的中断编程:当 Timer1 的计数产生溢出的时候,如果 Timer1 中断允许的话,就会产生中断。中断可以这样设置,Timer1 的中断允许位 TMR1IE(在 PIE1 寄存器中)置 1,寄存器 INTCON 的 PEIE 位置 1,同时总中断位 GIE(位于寄存器 INTCON 中)要置为 1。当定时器产生中断的时候,会把中断标志 T1IF 置为 1(位于寄存器 PIR1 中),然后 PC 指针指向 0004H 地址。T1IF 位必须软件清除。

 

(3)Timer2

Timer2 的功能于 Timer1 有些不同,Timer2 时一个八位的计数器,有一个八位的计数寄存器 TMR2,Timer2 具有以下功能:有两个分频器,一个是前分频器,一个是后分频器。分频可以软件进行设置,另外,Timer2 的时钟源是指令时间(FOSC/4),Timer2 有一个寄存器 PR2,此寄存器的功能是当 TMR2 增加到 PR2 的值时,将产生中断,当然,中断必须允许,然后 PR2 的值会重新变为 00H。下面来介绍 Timer2 的编程:

 

Timer2 的控制寄存器 T2CON 作用是设置 Timer2 的开启关闭和前后分频的分频系数,寄存器 T2CON 的 TOUTPS<3:0>位设置后分频系数,可以被设置成 1:1~1:16;位 TMR2ON 为 1 时,Timer2 开启,为 0 时,Timer2 关闭;位 T2CKPS<1:0>可以设置前分频系数,可以被设置成 1、4、16。

 

Timer2 的中断可以这样控制,允许 Timer2 中断位 TMR2IE(位于 PIE1 寄存器内)被置 1 时,Timer2 中断被允许,被置 0 时,Timer2 中断禁止。寄存器 INTCON 的 PEIE 位置 1,同时总中断位 GIE(位于寄存器 INTCON 中)置为 1。通过上面的设置,Timer2 就可以产生中断了。当定时器产生中断的时候,会把中断标志 T2IF 置为 1(位于寄存器 PIR1 中),然后 PC 指针指向 0004H 地址。中断标志位 T2IF 必须软件清除。

 

下面是三个定时器的比较:

唤醒功能

 

其他功能

 

定时器 Timer0

 

内部或外部时钟源,有一个预分频器。

 

定时器、醒功能。

 

计数器值溢出时发生中断预分频器与看门狗共用。

 

定时器 Timer1

 

内部或外部时钟源,有一个预分频器

 

定时器、计数器

 

外部时钟、异步模式时可唤醒 CPU

 

计数器值溢出时发生中断

 

与比较器模块、

 

捕获 / 比较模块共用

 

定时器 Timer2

 

有前分频器和后分频器

 

醒功能。

 

计数器值与预置值相等时发生中断

 

PWM 的产生需要此定时器

 

AD 模块

 

PIC16F616 有一个十位、八路的 AD 转换器。其参考电压可以为电源电压 VDD,也可以是外部参考电压(VREF 引脚),当 AD 转换完成后可以产生一个中断,此中断可以把单片机从睡眠状态中唤醒。下面来介绍一下关于 AD 转换的编程方法。

 

要使用一个 ADC,要做的有一下几件事情:

(1)设置端口,需要采样模拟信号的端口必须设置为模拟输入状态,如果设置为数字端口,将使转换结果不正确,端口的模拟输入可以由寄存器 ANSEL 来配置,在讲 RA 口的时候已经说到了如何配置了。

 

(2)通道的选择,有八路外部通道和三路内部通道,可以通过 ADCON0 寄存器的 CHS<3:0>位来设置通道的选择。

 

(3)参考电压的选择,参考电压可以是 VDD,也可以是外部参考电压,可以通过 ADCON0 寄存器的 VCFG 位来设置,当 VCFG=0 时,参考电压为 VDD,当 VCFG=1 时,参考电压为外部参考电压(来自 VREF 引脚)

 

(4)ADC 的转换格式,AD 转换后的结果保存在一个寄存器对里面:ADRESH 和 ADRESL,但是 AD 转换结果只有十位,设置 AD 转换格式可以通过设置 ADCON0 的 ADFM 位来选择,当 ADFM=1 时 10 位的 AD 结果的低八位保存在 ADRESL 内,高两位保存在 ADRESH 内;当 ADFM=0 时 10 位的 AD 结果的高八位保存在 ADRESH 内,低两位保存在 ADRESL 内。

 

(5)AD 时钟源的选择,寄存器 ADCON1 专门来设置 AD 的时钟源,ADCS<2:0>不同组合,可以将 AD 的时钟源设置为不同的频率,可以为 FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64 和 FRC(内部 RC)。

 

(6)AD 中断的配置,要使用 AD 的中断功能,可以先把 AD 中断使能,ADIE 位设置为 1(在寄存器 PIE1 中),PEIE 位置 1(在 INTCON 寄存器中),总中断 GIE 位置 1(INTCON 寄存器中)。

 

要开始一个 AD 转换,首先要使能 ADC 模块,即把寄存器 ADCON0 的 ADON 位置 1 即可,然后将 GO/DONE 位(ADCON0 中)置 1 就可以启动 AD 转换了。

 

AD 转换需要时间,转换 1bit 需要 Tad 的时间,Tad 与 AD 转换的时钟源和 VDD 有关,转换十位就需要 11 个 Tad 时间,如果第一个 AD 转换完成了,要进行第二个 AD 转换,必须还要等待 2*Tad 的时间才能开始。一个 AD 完成了,GO/DONE 位会被置为 0,如果中断允许的话,就会产生中断,且中断标志位 ADIF(寄存器 PIR1 内)会被置 1,在 AD 中断程序中就可以把 AD 转换结果读取出来(读 ADRESH 和 ADRESL),需要时把 AD 中断标志位清零。

 

AD 中断可以把单片机从睡眠中唤醒,但是要注意,使用这个功能的时候,时钟源必须设置为 FRC,否则的话在睡眠的时候就不会产生 AD 中断了。

 

看门狗

PIC16F616 的看门狗 WDT 其定时计数的脉冲序列由片内独立的 RC 振荡器产生,所以它不需要外接任何器件就可以工作。而且这个片内 RC 振荡器与引脚 OSC1/CLKIN 上的振荡电路无关,即使 OSC1 和 OSC2 上的时钟不工作,WDT 照样可以监视定时。例如:当 PIC16F616 在执行 SLEEP 指令后,芯片进入休眠状态,CPU 不工作,主振荡器也停止工作,但是,WDT 照样可监视定时。当 WDT 超时溢出后,可唤醒芯片继续正常的操作。而在正常操作期间,WDT 超时溢出将产生一个复位信号。如果不需要这种监视定时功能,在编程时,可关闭这个功能。

 

WDT 的定时周期在不加分频器的情况下,其基本定时时间是 18ms,这个定时时间还受温度、VDD 和不同元器件的工艺参数等的影响。如果需要更长的定时周期,还可以通过软件控制 OPTION 寄存器(PSA 位置 1)把预分频器配置给 WDT,这个预分频器的最大分频比可达到 1∶128。这样就可把定时周期扩大 128 倍,即达到 2。3 秒。

 

WDT 的预分频器是和 Timer0 所共用的,如果把预分频器配置给 WDT,用 CLRWDT 和 SLEEP 指令可以同时对 WDT 和预分频器清零,从而防止计时溢出引起芯片复位。所以在正常情况下,必须在每次计时溢出之前执行一条 CLRWDT 指令喂一次狗,以避免引起芯片复位。当系统受到严重干扰处于失控状态时,就不可能在每次计时溢出之前执行一条 CLRWDT 指令,WDT 就产生计时溢出,从而引起芯片复位,从失控状态又重新进入正常运行状态。

 

当 WDT 计时溢出时,还会同时清除状态寄存器中的 D4 位 T0,检测 T0 位即可知道复位是否由于 WDT 计时溢出引起的。

 

比较器

PIC16F616 有两个比较器:C1 和 C2,C1 的结构比 C2 的结构要简单,下面我分别对这两个比较器的用法和特性作简要说明。

 

(4)比较器 C1:它有一个独立的控制寄存器 CM1CON0,通过这个寄存器可以对比较器 C1 进行一些设置。位 C1ON 可以控制 C1 的开启关闭,位 C1OE 可以决定比较器的输出是从引脚输出还是内部输出,位 C1POL 可以选择比较器输出的极性,位 C1R 选择参考电压是链接到引脚 C1IN+还是连接到 C1VREF,C1CH 可以选择比较器负端从哪一个引脚输入的,位 C1OUT 存放了比较器的输出结果。

 

(5)比较器 C2:它的控制寄存器 CM2CON0 的操作跟 C1 一样,但是比较器 C2 比比较其 C1 功能要强,因为它与 Timer1 挂上钩了,C2 可以连接到 Timer1,而 C1 不能。当 C2 与 Timer1 相连接的时候,C2 的输出可以设置成与 Timer1 的下降沿锁定,如果 Timer1 有分频,则比较器的输出与分频后的 Timer1 下降沿锁定,可以通过相关寄存器来进行设置。

 

(6)两个比较还有其它的功能,都能组成滞回比较器,这样就可以对输入电压有一定的滤波功能。两个比较器还可以形成一个 SR 锁存器。

 

由于在本项目中没有选择用比较器这个功能,所以在这里就不详细叙述其细节设置,但要注意的是在不用此模块的时候,要能够保证此模块不能影响其他模块的正常工作,可以把比较器功能关闭(通过寄存器 CM1CON0、CM2CON0 的 CxON 位置 0 来关闭)。

 

捕获 / 比较 /PWM 功能

PIC16F616 具有捕获 / 比较 /PWM 的模块,下面来简单的介绍一下它们的功能。

 

这三个功能需要定时器的支持,捕获和比较功能需要定时器 Timer1 的支持,PWM 功能需要定时器 Timer2 的支持。都有中断的功能,选择这三种功能的某一种功能可以通过寄存器 CCP1CON 来设置。CCP1CON 的低四位 CCP1M<3:0>可以通过不同的组合来开启某项功能和关闭所有功能,当 CCP1M<3:0>=0000 的时候,捕获 / 比较 /PWM 模块的所有功能被禁止。具体其他的不同组合实现的功能,请参考 PIC16F616 的用户手册。

 

当选择捕获功能时,它可以捕获引脚 CCP1 发生的事件,同时把 16 位 Timer1 的计数值拷贝到 CCPR1H:CCPR1L 中来,引脚 CCP1 的发生事件可以指的是下列事件:CCP1 引脚的每个上升沿或者下降沿、第四个上升沿、第十六个上升沿。可以通过寄存器 CCP1CON 的低四位 CCP1M<3:0>来设置是哪一种事件。当事件发生的时候,单片机会置中断标志位 CCP1IF(寄存器 PIR1 上),如果中断被允许(寄存器 PEIE 的位 CCP1IE=1)的话,就会产生中断,中断标志位 CCP1IF 需要软件清零。

 

选择比较功能时,如果定时器 Timer1 的计数器值与寄存器 CCPR1H:CCPR1L 相等的话,将产生下面的事件:把引脚 CCP1 置 1/0、产生一个中断、触发一个事件(把定时器 Timer1 的技术器 TMR1 清零,并且如果此时 AD 是允许的话,它将触发一次 AD 转换),这些事件可以通过寄存器 CCP1CON 的低四位 CCP1M<3:0>来设置是哪一种事件。

 

当选择 PWM 功能时,通过设置 PR2、T2CON、CCPR1L、CCP1CON 这四个寄存器,模块可以产生不同占空比的 PWM 波形。具体的设置和占空比的计算请参考手册。

 

如果我们不需要这些功能,可以把这个模块关闭掉(设置 CCP1M<3:0>=0000 即可)。

 

复位、中断和睡眠

(1)复位

PIC16F616 包括这样的几个复位功能,上电复位(Power-on)、硬件复位、欠压复位(Brown-out)、看门狗复位。

 

关于上电复位 POR,大家都不陌生,单片机在上电的时候保持复位直到电压能够满足其正常的工作电压,同时你可以通过对 CONNFIG(编译器上即可设置)的设置,来开启 Power-upTime,这个时间一般为 64ms。

 

硬件复位可以通过 MCLR 引脚外界复位电路,即可实现硬件复位(将此引脚接低电平)。

 

欠压复位这个功能是可选的,也可以直接在编译环境中配置 CONFIG 寄存器来开启此功能。当此功能开启时,如果单片机在运行的时候,供电电压不足就会引起欠压复位,复位后单片机如果发现供电电压已经达到正常值的时候,会有一个 64ms 的延时,然后再运行程序。

 

关于看门狗的复位在看门狗部分已经说了。这里的一些复位还涉及到一些标志位。这些标志位分布在 STATUS 和 PCON 上面。STATUS 上有两个位 TO、PD,当标志位 TO=1 时,表示表示已经操作了上电复位或者是执行了 CLRWDT 或者 SLEEP 指令,当 TO=0 时,表示发生了看门狗复位。当标志位 PD=1 时表示操作了上电复位或者是执行了 CLRWDT 指令,当 PD=0 时,表示执行了 SLEEP 指令。PCON 上有两个标志位是 POR 和 BOR,分别表示的是上电复位和欠压复位标志。具体的可以参看手册。

 

(2)中断

PIC16F616 包括这样的几个中断源:RA2/INT 引脚外部中断、RA 端口电平变化中断、定时器 Timer0、Timer1、Timer2 溢出中断、比较器中断、AD 转换中断、捕获 / 比较 /PWM 中断。

 

这些中断的允许位和中断标志位分别位于 INTCON、PIE1、PIR1、IOCA 这些寄存器里面,如果要开启相应的中断,就要置相应的中断允许位,开启总中断位(INTCON 寄存器的 GIE 位),还要开启 INTCON 上的 PEIE 位(定时器 0 溢出中断、INT 引脚沿中断和 RA 端口的电平变化中断除外)。

[1] [2]
关键字:PIC  单片机  模块  存储器 引用地址:关于PIC单片机的模块和功能总结

上一篇:PIC单片机使LCD面板产生闪烁效果的设计
下一篇:pic单片机汇编语言讲解(上)

推荐阅读最新更新时间:2024-11-04 20:42

信号放大模块电路图
信号放大模块电路图 由AD829模数转换芯片组成。
[模拟电子]
信号放大<font color='red'>模块</font>电路图
AVR单片机IO仿真I2C
#include iom88v.h #define EEP_PORT PORTC //定义是使用PROTC口 #define EEP_DDR DDRC //定义是使用PROTC口 #define SDA 0X10 //定义sda连接的是portd1 #define SCL 0X20 //定义scl连接的是portd0 //#define WP 0X04 //定义wp连接的是portd2 #define EEP_ADD_R 0xa1 //写I2C从器件地址和读方式 a0,a1接地 #define EEP_ADD_W 0xa0 //写I2C从器件地址和写方式 a0,a1接地 void delay(u
[单片机]
基于Microchip PIC32MM开发板的电机控制
一.硬件构成: 1.PIC32MM 开发板 PIC32MM系列是Microchip功耗最低且最具成本效益的32位PIC32微控制器系列,在其内部集成的外设有 12位ADC、5位DAC、比较器、RTCC、WDT和CLC 及灵活的PWM/IC/OC/定时器(MCCP和SCCP)。 图1 PIC32MM 开发板 2. OLED屏 该款OLED显示屏是一个基于SPI接口的0.96寸单色屏,其显示分辨率为128*64,工作电压为2.8~5.5V。 图2 OLED屏 3.电机驱动模块 主芯片为MX1508,模块的供电电压为2~10V,可驱动两路直流电机,IN1、IN2为一路,IN3、IN4为另一路;信号范围是1.8~7
[单片机]
基于Microchip <font color='red'>PIC</font>32MM开发板的电机控制
51单片机lcd1602
{ Uchar i; for (i=0;i 16;i++) { DispOneChar(i,1,dd++); dd &= 0x7f; if (dd 32) dd=32; } } // 显示光标定位 void LocateXY( char posx,char posy) { Uchar temp; temp = posx & 0xf; posy &= 0x1; if ( posy )temp |= 0x40; temp |= 0x80; LcdWriteCommand(temp,0); } // 按指定位置显示数出一个字符 void DispOneChar(Uchar x,Uchar y,Uchar Wd
[单片机]
Vishay拓宽其 SOT-227 封装电源模块产品线
日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,拓宽其SOT-227封装电源模块产品线,将有七款新器件采用ThunderFET® 功率MOSFET和标准、FRED Pt® 和沟槽式MOS势垒肖特基(TMBS®)二极管。Vishay 的这些模块提供双片、单相桥和单开关拓扑结构,并有多种额定电流和额定电压可供选择。 采用ThunderFET功率MOSFET的 VS-FC420SA15 和 VS-FC270SA20 单开关模块是Vishay首款电压分别为150V和200V的产品。这两款器件是高性能DC/DC转换器、电池充电器、AC电机驱动器和UPS的理想选择。提供可达400A的电流,
[电源管理]
如何采用STM32单片机实现SPI的驱动
前言:每学一个新知识,都会出现很多出错的情况,百度也查不出来,耗费很多时间,主要是不理解底层原理,没太多时间去理解,催得紧。SPI嘛,是人都知道干嘛用的,我一时半会也不知道怎么表达,百度最不缺的就是定义。缺的是实现过程,本少爷花了几十个积分搞了n多个实例,终于总结了要成功实现SPI要哪些奇葩的步骤。 正文: ---------------------------------------------配置SPI1的时钟------------------------------------ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE); //SPI1初始化 //RCC_APB
[单片机]
如何采用STM32<font color='red'>单片机</font>实现SPI的驱动
PIC16F72 TIMER0定时器练习程序
要使用PIC的TIMER0,首先需要看数据手册,熟悉寄存器配置 这里需要用到OPTION,INTCON的配置,还有TMR0计数值的预置。 典型应用程序:利用定时中断实现发光管一闪一闪功能。 源程序: #include pic.h #define uchar unsigned char #define uint unsigned int #define LED1 RC0 ///////////////////////初始化设置程序//////////////////////////////// void Init(void) { PORTA = 0B00000000;
[单片机]
<font color='red'>PIC</font>16F72 TIMER0定时器练习程序
简仪计数器/定时器模块满足严格的工业标准和安全要求
应用 在电气开关柜的控制模组中,精确的时延控制对于确保高电压设备的安全运行至关重要。控制模组需要输出固定时延的脉冲信号,以控制外部的高电压设备。这种应用场景要求脉冲信号的时延精度达到10 ns级别,以满足严格的工业标准和安全要求。 挑战 传统的脉冲边沿检测方法通常采用示波器或时间间隔计时器等仪表进行测量,但这些方法存在精度不够高、测量速度慢、操作繁琐等弊端,难以满足高压控制模组测试的苛刻要求。 解决方案 针对这一挑战,简仪提供的PCIe-5211计数器/定时器模块成为了理想的解决方案。该模块具备8通道定时器,每个通道都能独立进行双边沿测量,完美契合了客户的测试需求。内部搭载的100 MHz高精度时钟,确保了每次测量都能达到
[嵌入式]
简仪计数器/定时器<font color='red'>模块</font>满足严格的工业标准和安全要求
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved