PIC单片机的一个简单的SPI小程序

发布者:DreamBig123最新更新时间:2019-10-30 来源: 51hei关键字:PIC单片机  SPI  DAC 手机看文章 扫描二维码
随时随地手机看文章

这里介绍一个简单的PIC单片机SPI测试小程序,希望大家能够喜欢。

// DAC module connections

sbit Chip_Select at RC0_bit;

sbit Chip_Select_Direction at TRISC0_bit;

// End DAC module connections


unsigned int value;                     


void InitMain() {

  TRISA0_bit = 1;                        // Set RA0 pin as input

  TRISA1_bit = 1;                        // Set RA1 pin as input

  Chip_Select = 1;                       // Deselect DAC

  Chip_Select_Direction = 0;             // Set CS# pin as Output

  SPI1_Init();                           // Initialize SPI module

}


// DAC increments (0..4095) --> output voltage (0..Vref)

void DAC_Output(unsigned int valueDAC) {

  char temp;


  Chip_Select = 0;                       // Select DAC chip

  

  // Send High Byte                                         

  temp = (valueDAC >> 8) & 0x0F;         // Store valueDAC[11..8] to temp[3..0]

  temp |= 0x30;                          // Define DAC setting, see MCP4921 datasheet

  SPI1_Write(temp);                      // Send high byte via SPI

  

  // Send Low Byte

  temp = valueDAC;                       // Store valueDAC[7..0] to temp[7..0]

  SPI1_Write(temp);                      // Send low byte via SPI

  

  Chip_Select = 1;                       // Deselect DAC chip

}


void main() {

  ANSEL = 0;

  ANSELH = 0;

  InitMain();                            // Perform main initialization


  value = 2048;                          // When program starts, DAC gives

                                         //   the output in the mid-range

                                          

while (1) {                             // Endless loop


    if ((RA0_bit) && (value < 4095)) {   // If RA0 button is pressed

      value++;                           //   increment value

      }

    else {

      if ((RA1_bit) && (value > 0)) {    // If RA1 button is pressed

        value--;                         //   decrement value

        }

      }

    DAC_Output(value);                   // Send value to DAC chip

    Delay_ms(1);                         // Slow down key repeat pace

  }

}


 

关键字:PIC单片机  SPI  DAC 引用地址:PIC单片机的一个简单的SPI小程序

上一篇:基于pic16f1503单片机的电源电压不足检测和指示方法
下一篇:PIC12F675电机控制程序案例源码

推荐阅读最新更新时间:2024-11-08 11:03

四路输出D/A转换器DAC8420及其应用
1 DAC8420的主要特点 DAC8420是AD公司生产的四路输出12位DAC。该DAC具有高速串行接口,而且功耗很低,能广泛应用于伺服系统控制、过程自动化控制及ATE中。其主要特点如下: ●可选择单极或双极模式; ●复位后,输出置0或置中间值; ●电源选择广泛,单+5V~%26;#177;15V均可; ●采用16脚PDIP、CERDIP或SOIC封装。 2 DAC8420的引脚功能 DAC8420的引脚排列如图1所示,各引脚功能及使用说明如下: VDD:正电源,范围为+5V~+15V; VSS:负电源,范围为0~15V; GND:数字地。 CLK:系统串行时钟输入,逻辑上与CS信号相或。在时钟上升沿,
[模拟电子]
STM32值SPI的使用及SPI初始化注意事项
在STM32F10x系列芯片中,虽然所拥有的SPI同步串口数量不相同,但是初始化的方法都是一样的。其中使用SPI时候我们回忆GPIO的使用,要注意6点,我们这里主要讲解一点。 根据系统对该不同功能的要求,初始化不同功能外设,初始化GPIO,初始化SPI同步串口设备就会比较复杂。STM32F10x系列芯片的所有SIP同步串口都是和GPIO共用,SPI的初始化分为2大块,就是SPI所使用的I/O口的初始化和SPI功能的初始化。对于SPI同步串口要用到的引脚,根据数据的方向,要设置GPIO_Mode_IN_FLOATING或者GPIO_Mode_AF_PP复用推免输出。其他的和GPIO引脚设置一样。 至于低于SPI同步串口参数的初始化方
[单片机]
STM32 SPI SLAVE
一般使用SPI都用MASTER,但是用SLAVE没有用过.参考了ST的例子,发现不能满足自己的使用.于是,自己修改了一下. 初始化配置SPI /** ****************************************************************************** * @file app.c * @author MCD Application Team * @version V1.1.0 * @date 19-March-2012 * @brief This file provides all the Application firmware functions.
[单片机]
IMX6ULL裸机-3-SPI控制器
1 IMX6ULL SPI控制器 NXP的6ull参考手册第Chapter 20介绍了SPI控制器,Enhanced Configurable SPI (ECSPI) 。 1.1 特点 ①、全双工同步串行接口。 ②、可配置的主/从模式。 ③、四个硬件片选信号,支持多从机。 ④、发送和接收都有一个 32x64 的 FIFO。 ⑤、片选信号 SS/CS,时钟信号 SCLK 的极性相位(CPOL,CPHA)可配置。 ⑥、支持 DMA ⑦、SCK最高可以到输入参考时钟高达60Mhz 1.2 框图 最右边是引脚,SCLK,MISO,MOSI等,上面是外围总线,通过APB总线进行寄存器读写,INTREG,CONREG等等。TXDATA和
[单片机]
PIC入门3,SPI通信和串口调试实验
MSSP模块工作于SPI主控方式,这个可以直接在实验板上执行。 程序: //适合3EPIC实验板,配置PIC单片机的MSSP模块工作于SPI主控方式下, //通过一个并/串行转换移位寄存器(74HC165)将接收的并行数据通过SD0口送出的串行数据, //PIC将串行数据存入寄存器,送给D口,驱动LED亮。 #include pic.h #include pic1687x.h volatile unsigned char data; /*************************************************************************/ /*函数名:SPIINT()
[单片机]
连接SPI接口器件 - 第一部分
LEC2 Workbench系列技术博文主要关注莱迪思产品的应用开发问题。这些文章由莱迪思教育能力中心(LEC2)的FPGA设计专家撰写。LEC2是专门针对莱迪思屡获殊荣的低功耗FPGA和解决方案集合的全球官方培训服务供应商。 莱迪思CrossLink™-NX FPGA拥有丰富的特性,可加速实现高速和低速接口。本文(系列博文的第一篇)描述了使用CrossLink-NX FPGA连接基于SPI的外部组件。第一篇博文介绍了使用两个时钟域实现连接DAC(亚德诺半导体公司的AD7303 DAC)的SPI接口。第二篇博文将介绍使用单个时钟域实现连接ADC(亚德诺半导体公司的 ADC AD7476)的SPI接口。两个案例中呈现了两种
[嵌入式]
连接<font color='red'>SPI</font>接口器件 - 第一部分
STM8S1003 模拟SPI 驱动 SI4432
网上关于stm8s1003 驱动si4432的 驱动不是很多 ,我也是弄了大半天才可以和si4432 spi驱动成功。 接下来要做无线收发和组网。 暂时先贴 spi驱动的 spi模拟方式: main.c #include stm8s.h #include mytype.h #include delay.h #include USART.h //定义CPU内部时钟 #define SYS_CLOCK 16 #define SPIPort GPIOC #define nMOSI 6 #define nMISO 7 #define nSCLK 5 #define nCS 4 #define MI
[单片机]
基于dsPIC30F6011的CAN总线扩展技术
0 引 言     CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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