PIC单片机内部SPI通信接口的使用方法

发布者:平静心境最新更新时间:2016-11-03 来源: eefocus关键字:PIC单片机  内部SPI  通信接口 手机看文章 扫描二维码
随时随地手机看文章
#include

#define uchar unsigned char
#define uint  unsigned int
#define cs RC2
#define dout RC4
#define nop() asm("nop")
__CONFIG(0x3B31);
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar data_temp;
void delay(uint x);
void init();
void didi(uchar num);
void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6);
void comm(uchar data);
uchar read(uchar add);
void write(uchar add,uchar wdata);
void write_enable();
void main()
{
 uchar a1,a2,a3,a4,a5,a6,i;
 init();
// write_enable();
// for(i=6;i>0;i--)
// {
 // write_enable();
//  write(i,i);
// }
 a1=read(1);
 a2=read(2);
 a3=read(3);
 a4=read(4);
 a5=read(5);
 a6=read(6);
 while(1)
 {
  disp(a1,a2,a3,a4,a5,a6);
 } 
}
void delay(uint x)
{
 uint a,b;
 for(a=x;a>0;a--)
  for(b=110;b>0;b--);
}
void init()
{
 TRISD=0;
 TRISA=0;
 TRISC=0x10;//00010000
 TRISE0=0;
 SSPSTAT=0x80;
 SSPCON=0x32;
 cs=0;
}

void write_enable()
{
 cs=1;
 nop();
 comm(0x02);
 comm(0x60);
 cs=0; nop(); nop();
}

void write(uchar add,uchar wdata)
{
 cs=1;
 nop();
 comm(0x02);
 comm(add|0x80);
 comm(wdata);
 cs=0;
 nop(); nop();
 cs=1; nop(); nop();
 while(!dout);
 cs=0; nop(); nop();
}

uchar read(uchar add)
{
 uchar rtemp;
 cs=1;
 nop();
 comm(0x03);
 comm(add);
 comm(0);
 cs=0;
 rtemp=data_temp;
 return (rtemp);
}
void comm(uchar data)
{
 SSPBUF=data;
 while(!SSPIF);
 SSPIF=0;
 data_temp=SSPBUF;
}

void didi(uchar num)
{
 uchar di_num;
 for(di_num=num;di_num>0;di_num--)
 {
  RE0=1;
  delay(50);
  RE0=0;
  delay(20);
 }
}

void disp(uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6)
{
 PORTD=table[num1];//显示第一个数码管
 PORTA=0x20;//0010 0000
 delay(2);
 PORTD=table[num2];//显示第二个数码管
 PORTA=0x10;//0001 0000
 delay(2);
 PORTD=table[num3];//显示第三个数码管
 PORTA=0x08;//0000 1000
 delay(2);
 PORTD=table[num4];//显示第四个数码管
 PORTA=0x04;//0000 0100
 delay(2);
 PORTD=table[num5];//显示第五个数码管
 PORTA=0x02;//0000 0010
 delay(2);
 PORTD=table[num6];//显示第六个数码管
 PORTA=0x01;//0000 0001
 delay(2);
}

关键字:PIC单片机  内部SPI  通信接口 引用地址:PIC单片机内部SPI通信接口的使用方法

上一篇:PIC单片机内部IIC通信接口的使用方法
下一篇:PIC单片机内部模数转换器AD的使用方法

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

PIC单片机(PIC16F877A)外部中断程序
正常运行为流水灯,发生中断则灯全亮。 #include pic.h __CONFIG(0x3B31); //4M #define uchar unsigned char #define uint unsigned int #define DELAY 500 uint j=50000; void delay(uint x) //1ms { uint y,z; for(y=x;y 0;y--) for(z=25;z 0;z--); } void init(void) { TRISB0=0; RB0=1; //为下降沿创造高电平的初始条件 TRISB0=1; //输入
[单片机]
<font color='red'>PIC单片机</font>(PIC16F877A)外部中断程序
基于PIC单片机的教室照明系统节能控制器设计
0 引言 教学楼照明用电的管理一般有三种模式:一是无专人管理,由学生自行控制开启与关闭;二是利用定时开关,根据作息时间开启和关闭整个教学楼的照明电源;三是由专人负责,即管理人员根据作息时间和天气情况分层送电。但在大多数高校,照明用电管理采用的是第一种模式,由于大多数人的节能意识淡薄,并且强光下人的眼睛对弱光不敏感,在自然光照大于灯具光照的情况下,难以觉察到灯光的存在,因此,在白天自然光很强的情况下,教室内的长明灯仍到处可见。根据不完全统计:80%的教学楼存在着在白天光照良好以上的情况下和在 午休时间出现长明灯的现象。一个教室的长明灯,看起来耗能不大,但是从整个学校来看,却是一个不小的数字,这是一种极大的浪费。造成电能浪费的现象
[单片机]
基于<font color='red'>PIC单片机</font>的教室照明系统节能控制器设计
PIC单片机实用教程基础篇
PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。 PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。如果是同样的体系结构,时钟频
[单片机]
AVR和PIC单片机学习心得总结
一、两种单片机工程文件编译成功的关键是工程文件名和存储目录必须是英文字母,绝对不能是汉字目录! 否则就会出现编译错误。我就是使用了汉字目录“我的文档”在工程文件编译文件过程产生错误,百思不得其解,浪费了许多时间。 二、学AVR单片机感觉还是用AVR STUDIO自带的GCC比较爽。一是因为AVR STUDIO 自带(不过还要自己安装WinAVR);二是因为 WinAVR是自由软件不需要破解;三是现在用起来比以前要爽多了,以前还要自己编写makefile文件,现在只需在project的configuration中设置一下单片机使用晶振频率 ,剩下的就交给编译器;四是GCC 函数库比较丰富,拿来直接用省的自己编写代码了。 三、
[单片机]
PIC单片机多中断处理技术的应用与研究
   引言   PIC系列单片机中断源已经达到14个.可谓相当丰富;但同时也带来了一些难题:在处理多中断时不具备处理“高级优先处理”能力的问题,如此多的中断源在处理时很容易产生中断冲突,如何有效的处理中断到达时的时序,其算法应该如何实现成了首先需要解决的问题。    1 中断处理技术   对于PIC系列单片机,其设计上虽然有很多中断,但是并没有规定中断的优先级。当遇到中断的时候,不做任何判断,而是先把指针指向0004H(中断起始地址),至于接下来如何操作则完全交给用户“软处理”完成。其中断时序图如下: 图1 INT引脚中断时序图   中断现场的保护是中断技术中一个很重要的环节。对于PICl6F87X单片机,在进人中断
[单片机]
<font color='red'>PIC单片机</font>多中断处理技术的应用与研究
基于PIC单片机的电能表时钟误差分析仪的研究
1引 言 随着社会的发展,用电量增大,为提高用电效率,改善用电量不均衡的现象,国内各省市的电力部门己开始全面推出了复费率电能表,计量单位对复费率电能表检定的任务越来越繁重[1-2]。时钟的准确性是分时计量最重要的一部分。目前的计量单位对复费率电能表时钟检定的方法已经逐渐不能满足需要。为了解决目前复费率电能表时钟检定存在的问题,本文设计了一种基于PIC单片机的复费率电能表时钟误差分析仪的系统。该系统是一种便携式时钟误差检定装置,集计时检定,数据处理,数据传送等功能于一体,具有快捷、准确、有效的特点。 l频率测量原理 系统测量频率采用的是多周期同步测量方法,这种方法是在直接测频的基础上发展测量方法,在目前的测频系统中得到越来越广泛的
[单片机]
基于<font color='red'>PIC单片机</font>的电能表时钟误差分析仪的研究
DSP与PC机串行通信接口设计及应用
tms320f24x 是美国 ti 公司tms320系列定点数字信号处理器(dsp)之一,tms320f240是f24x系列面向数字控制芯片的典型代表。由于tms320f240并不具备人机界面,在实际使用过程中,需要为它提供一个人机接口或上层控制接口,以便于观察控制效果或传递必要的控制信息。因此,实现tms320f240与pc之间串行通信接口的设计方法,具有较高的实用价值。 串行通信接口的硬件设计 f240芯片内部集成了一个串行通信接口(sci)模块,该模块是一个标准的通用异步接收/发送(uart)通信接口,通信接口有scitxd(sci发送输出引脚)和scirxd(sci接收输入引脚)两个外部引脚,引脚的信号电平为ttl类型。
[嵌入式]
DSP与PC机串行<font color='red'>通信接口</font>设计及应用
PIC单片机降低电池供电系统功耗问题解析方案
引言 20世纪90年代以来,随着集成电路特征线宽的持续缩小以及芯片密度和工作频率的相应增加,降低功耗已经成为亚微米和深亚微米超大规模集成电路设计中的一个主要考虑因素。功耗的增加会带来一系列问题,例如电路参数漂移、可靠性下降、芯片封装成本增加等。因此,系统的功耗在整个系统设计中,尤其是在采用电池供电的系统中显得十分重要。 Microchip公司PIC系列的单片机为设计高性能、低功耗的单片机系统提供了很好的解决方案。下面从低功耗设计方法及具体例子来介绍PIC单片机低功耗应用。 1 低功耗设计方法 为使系统工作在低功耗状态,必须正确设置单片机的配置及工作方式。下面结合最常用的PIC12、PIC16等单片机介绍低功耗系统的设计方法
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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