同步串口spi的c语言编程

发布者:纯真年代最新更新时间:2016-10-25 来源: eefocus关键字:同步串口  spi  c语言编程 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
#define uchar unsigned char
#define uint unsigned int

uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar Data[4]={0,0,0,0};

void DelayMs(uint i) 
{uchar j;
for(;i!=0;i--)
{for(j=2000;j!=0;j--) {;}}
}

void Display(uchar *p)
{uchar i,sel=0x01;
for(i=0;i<4;i++)
{PORTA=sel;
   PORTC=0xff-Table[p[i]];
   DelayMs(10);
   sel=sel<<1;
}
}

void DelayNOP(uchar i)
{for(;i!=0;i--) 
    { NOP();}
}

void Convert(uchar *p,uchar i)
{p[0]=0;
p[1]=i/100;
p[2]=(i-p[1]*100)/10;
p[3]=i-p[1]*100-p[2]*10;
}

void Write_Byte(uchar Address,uchar Data)
{uchar clear;
PORTB=PORTB|0x10; //使能SPI器件
SPDR=Address;
while(!(SPSR&0x80)) {;}
clear=SPSR;
clear=SPDR;
SPDR=Data;
while(!(SPSR&0x80)) {;}
clear=SPSR;
clear=SPDR;
PORTB=PORTB&0xef;
}

uchar Read_Byte(uchar Address)
{uchar clear;
uchar Data;
PORTB=PORTB|0x10;
SPDR=Address;
while(!(SPSR&0x80)) {;}
clear=SPSR;
clear=SPDR;
SPDR=Address;//发空数据
while(!(SPSR&0x80)) {;}
clear=SPSR;
Data=SPDR;
PORTB=PORTB&0xef;
return(Data);
}

void main(void)
{uchar value;
DDRA=0xff;
DDRC=0xff;
DDRB=0xbf;
PORTA=0xff;
PORTC=0x00;
DelayMs(3000);
PORTC=0xff;
SPCR=0x5c;//0101 1100
Write_Byte(0x80,0xf0);//8位,自由转换模式
while(1)
{value=Read_Byte(0x01);
   value=Read_Byte(0x02);
   Convert(Data,value);
   Display(Data);}
}

关键字:同步串口  spi  c语言编程 引用地址:同步串口spi的c语言编程

上一篇:基于tc2的实时时钟设计 AVR
下一篇:模拟比较器的c语言编程

推荐阅读最新更新时间:2024-03-16 15:17

IO口模拟SPI通信C51程序
/************************** 文件所用资源 1.端口:P0.4,P0.5,P0.6,P0.7 2.调用delay_ms函数 **************************/ /************************* 模拟SPI接口I/O定义 *************************/ sbit spi_cs=P0^1; sbit spi_di=P0^2; sbit spi_clk=P0^3; sbit spi_do=P0^4; /******************************* 向SPI器件写入一个字节数据 *****************
[单片机]
AVR单片机SPI口读写AT45DB161D接口程序设计
本程序为AVR单片机SPI口访问AT45DB161D提供一组接口函数,通过这一组接口函数可非常容易的完成对AT45DB161D的读写操作 AT45DB161D按页组织和操作(读写擦等等)内部的FLASH存储器,每页为528字节(特殊用途时可通过命令配置成512字节),其内部共集成4096页, 即4096*528=2162688字节。本程序将为您提供读写这2162688字节存储区的线性操作方法。使用这些函数,用户可不必考虑AT45DB161D内部的存储 器组织结构,如同读写一个文件一样进行读写操作。 void df_init(void); 这是SPI口初始化函数,它必须在所有这些接口函数调用之前得到调用 void df_re
[单片机]
AVR单片机<font color='red'>SPI</font>口读写AT45DB161D接口程序设计
兆易创新推出突破性1.2V超低功耗SPI NOR Flash产品系列
应需而生!兆易创新推出突破性1.2V超低功耗SPI NOR Flash产品系列 中国北京(2022年8月19日) — 业界领先的半导体器件供应商兆易创新GigaDevice宣布,推出突破性的 1.2V超低功耗SPI NOR Flash产品——GD25UF系列 。该系列在数据传输速度、供电电压、读写功耗等关键性能指标上均达到国际领先水平,在针对智能可穿戴设备、健康监测、物联网设备或其它单电池供电的应用中,能显著降低运行功耗,有效延长设备的续航时间。 随着物联网技术的发展,新一代智能可穿戴设备需要拥有更丰富的功能来满足消费者的需求,这种空间敏感型产品对系统功耗提出了更严苛的要求,希望进一步提升产品的续航能力。从系统设计层
[嵌入式]
兆易创新推出突破性1.2V超低功耗<font color='red'>SPI</font> NOR Flash产品系列
单片机软件模拟SPI接口
SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准,目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/A转换器、LED/LED显示驱动器、I/O接口芯片、实时时钟、UART收发器等等,为用户的外围扩展提供了极其灵活而价廉的选择。由于SPI总线接口只占用微处理器四个I/O口线,采用SPI总线接口可以简化电路没计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。 现以 AT89C205l单片机模拟SP
[单片机]
单片机软件模拟<font color='red'>SPI</font>接口
msp430F149与cc2500通讯启用USART1,SPI初始化
刚开始接触这个SPI,又是与cc2500,看着英文手册,弄了老半天,才把读写寄存器给弄清,分享一下: //========================================================= //本模块为spi通讯模块,程序启用USART1,针对与cc2500的相互通讯 //========================================================= #include msp430x14x.h #include spi.h #include cc2500_def.h #define SPI_SEL P5SEL #define SPI_DIR
[单片机]
STM32-24位AD7799驱动之手册代码详解,支持模拟SPI和硬件SPI
1.AD7799介绍 AD7799结构图如下所示: 其中REFIN参考电压建议为2.5V, REFIN电压低于0.1V时,则差分输入ad值就无法检测了,如下图所示: 注意: 如果REG_CONFIG的REF_DET开启的话,那么输入AD值电压低于0.5V时,则差分输入ad值就无法检测了,如下图所示: 2.AD7799差分信号的输入模式 如下图所示,差分输入电压有3种模式: 注意: 单端输入电压(AIN-接地,只有正电压)则支持任意范围,比如In-Amp模式下,单端输入如果为10mv的话,也能检测到. 2.1 Unbuffered Mode非缓冲模式 该模式可测的AD值可以在 -30mV ~ (AVDD+30
[单片机]
STM32-24位AD7799驱动之手册代码详解,支持模拟<font color='red'>SPI</font>和硬件<font color='red'>SPI</font>
基于一种通用SPI总线接口的FPGA设计与实现
  一、引言   SPI串行通信接口是一种常用的标准接口,由于其使用简单方便且节省系统资源,很多芯片都支持该接口,应用相当广泛。SPI接口的扩展有硬件和软件两种方法, 软件模拟 SPI接口方法虽然简单方便, 但是速度受到限制,在高速且日益复杂的数字系统中,这种方法显然无法满足系统要求,所以采用硬件的方法实现最为切实可行。当前,基于主从处理器结构的系统架构已经成为一种主流(如 DSP+FPGA,MCU+FPGA等),FPGA是在 ASIC的基础发展出来的,它克服了专用 ASIC不够灵活的缺点。与其他中小规模集成电路相比,其优点主要在于它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便。目前, FPGA的
[嵌入式]
STM32F103RB 实作笔记(九)- PWM + SPI +MAX6675 整合试验
个人工作上的关系,需要做一款温度控制风扇速度的控制器,还需要能够看到温度和PWM的值。于是我用这个不熟悉的 STM32F103 试试,顺便把 PWM 和 SPI 也了解一番。 一开始当然也是跌跌撞撞,搞了很久才弄清楚。这篇笔记记录怎么做好的过程。 实验的过程是以正点原子 STM32F103 nano开发板和他附上的练习程式开始。 参考 NANO 的程式 依照正点原子的教材,跑了一下 nano 程式,执行了 OK!原来的程式里面 PWM 用 TIM3 的 channel_1 控制 PC6 的 LED 闪烁。SPI 是用 SPI2 控制 W25Q16 进行读写。 由于 PWM 和 SPI2 都被开发板占有,我选了另外一组 TI
[单片机]
STM32F103RB 实作笔记(九)- PWM + <font color='red'>SPI</font> +MAX6675 整合试验
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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