微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > pic单片机学习教材(一):接口设计

pic单片机学习教材(一):接口设计

时间:07-24 来源:互联网 点击:

PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。现在PIC单片机应用领域已经相当广泛,为了方便广大工程师能够很好的学习 PIC单片机,电子发烧友网整理了PIC单片机的相关知识应用,现在先带您学习下PIC单片机在接口设计中的应用吧。

  一、SPI串行EEPROM与PIC单片机的接口设计
目前市场上有许多种单片机用在嵌入式控制系统设计中,这些嵌入式控制系统中的很大一部分都要用到非易失性存储器。由于串行EEPROM 具有封装尺寸小,存储容量灵活,对I/O 引脚要求低,和低功耗低成本等特点,已成为非易失性存储器的首选。


  二、触摸传感器QST108与PIC单片机的接口设计

QST108是意法半导体公司针对人机界面的触摸按键控制而推出的电容触摸传感器。

其工作原理采用了美国昆腾公司的电荷转移电容专利技术(QProx),支持8个独立按键,且可选择按键状态检测输出或I2C总线控制2种正常工作方 式;同时,通过软件命令可使其进入低功耗模式,当有按键按下时可被唤醒。QST108特有的相邻按键抑制算法使得一个按键在按下未松开时,其他按键处于无 效状态;自校准和自动漂移补偿功能使其无须人工校准,从而进一步降低了QST108的应用难度。引脚配置如图1所示,各引脚功能如表1所列。

三、PIC单片机与串行闪存的SPI接口设计

PIC单片机以性能稳定、品种众多等特点在工业控制、仪器仪表、家电、通信等领域得到广泛应用。虽然很多型号自身集成了存储器,但在很多情况下难以满 足系统对大容量存储的要求,需要外扩非易失性的存储器。与并行Flash存储器相比,串行Flash存储器占用MCU引脚少,体积小,易于扩展,接线简 单,工作可靠,故而越来越多地应用在各类电子产品和工业测控系统中。本文主要讨论PIC16F877A单片机与串行闪存M25P16之间的SPI通信,在 要求大容量数据存储且MCU引脚资源有限的情况下具有实用价值。

1 SPI工作原理

SPI(Serial Peripheral Interface)是一种常用的串行通信协议,用于MCU系统与外围设备的通信,可用来连接存储器、A/D转换器、D/A转换器、实时时钟、LCD驱动 器、传感器,甚至其他处理器。SPI主要使用4个信号:MOSI(主机输出/从机输人)、MISO(主机输入/从机输出)、SCK(串行时钟)和CS(片 选)。其中,SCK由主机产生,作为传输的同步时钟,控制所有数据传输。主机通过触发从设备的CS决定二者之间的SPI传输是否能够进行。主机和外设都包 含1个串行移位寄存器。主机通过向自己的SPI串行寄存器写入1个字节来发起1次传输,然后通过MOSI信号线将数据传给外设,同时外设将自己移位寄存器 中的内容通过MISO信号线返回给主机,如图1所示。这样,两个移位寄存器中的内容就交换了。也就是说,外设的写操作和读操作是同步完成的。在实际应用 中,如果只进行写操作,则主机只需忽略收到的字节即可;如果主机要读外设的数据,必须发送1个字节来引发从机的传输,发送的这个字节可以是任意数据。


  四、数字电位器X9241与PIC单片机的接口及程序设计电路图

X9241概述

X9241是XICOR公司生产的、把4个E2POT数字电位器集成在单片的CMOS集成电路上的一种数字电位器。它包含4个电阻阵列,每个阵列包含 63个电阻单元,在每个单元之间和2个端点之间都有被滑动单元访问的抽头点。滑动单元在阵列中的位置由用户通过2线串行总线接口控制。每个电阻阵列与1个 滑动端计数寄存器(WCR)和4个8位数据寄存器联系在一起。这4个数据寄存器可由用户直接写入和读出。WCR的内容控制滑动端在电阻阵列中的位置,其功 能框图如图1所示。

X9241与PIC16CXX单片机的接口及程序清单

五、PIC单片机的IIC接口程序

InitI2CBusMaster

;************************************************************

TxmtStartBit

bsf Bus_Busy ; on a start condition bus is busy

bsf STATUS, RP0 ; Select page 1

bsf _SDA ; set SDA high

bsf _SCL ; clock is high

call Delay40uSec ; This is necessary for setup time

bcf _SDA ; This gives a falling edge on SDA while clock is high

call Delay47uSec ; Necessary for START HOLD time

return

;************************************************************

TxmtStopBit

bsf STATUS, RP0 ; Select page 1

bcf _SCL ; clock is low

bcf _SDA ; set SDA low

bsf _SCL ; clock is pulled up

call Delay40uSec ; Setup time for STOP condition

bsf _SDA ; rising edge on SDA while CLOCK is high

call Delay47uSec ; makes sure a START isn't sent imme

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top