PIC16F877A-SPI-TC77(温度传感器)

发布者:二进制心灵最新更新时间:2016-09-05 来源: eefocus关键字:PIC16F877A  SPI  TC77  温度传感器 手机看文章 扫描二维码
随时随地手机看文章
---------------------------------借鉴,TCK(0-1024℃)分辨率:0.25℃
 
TC77:分辨率0.0625℃
 
 
【】PIC16F877A-SPI-TC77(温度传感器) - 眼波横 - 眼波横
 
 
#include
#define CS RC2
void initPORT();
void initMSSP();
void delay(unsigned char time);
void display(float data);
float ReadTC77();
const unsigned char disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
 
void main()
{
float temp;
initPORT();
initMSSP();
while(1)
{
temp=ReadTC77();
display(temp);
}
}
 
/*初始化PIC单片机端口*/
void initPORT()
{
TRISB=0x00; //控制段选
PORTB=0x00;
TRISC=0xf0; //与温度传感器连接
PORTC=0x00;
TRISA=0x00; //控制位选
PORTA=0xff;
}
 
/*初始化MSSP模块的SPI模式*/
void initMSSP()
{
SSPSTAT=0x00;
SSPCON=0x30;
SSPIF=0;
}
 
/*读取温度传感器的13位数值并且转换成浮点类型*/
float ReadTC77()
{
float result,PowerTwo=1;
unsigned char count,HighByte,LowByte;
CS=0;
 
SSPBUF=0;
while(!SSPIF){}
HighByte=SSPBUF; //获取温度寄存器的高字节
SSPIF=0;
SSPBUF=0;
while(!SSPIF){}
LowByte=SSPBUF; //获取温度寄存器的低字节
SSPIF=0;
CS=1;
 
for(count=0;count<8;count++) //转换整数部分
{
PowerTwo*=2;
if(HighByte&(0x01<
}
PowerTwo=1;
for(count=0;count<5;count++) //转换个位及小数部分
{
if(LowByte&(0x80>>count)) result+=PowerTwo;
PowerTwo=PowerTwo/2.; //注意,不能换成.2,否则会出错
}
 
return result; //返回转换浮点结果
}
 
/*液晶显示*/
void display(float data)
{
unsigned int conver,First,Second,Third,Fourth;
conver=data*100;
First=conver/1000;
Second=conver/100%10;
Third=conver/10%10;
Fourth=conver%10;
 
PORTA=0xfe; //显示十位
PORTB=disp[First];
delay(2);
PORTB=0x00;
 
PORTA=0xfd; //显示个位
PORTB=0x80+disp[Second]; //加上0x80即可带点
delay(2);
PORTB=0x00;
 
PORTA=0xfb; //显示十分位
PORTB=disp[Third];
delay(2);
PORTB=0x00;
 
PORTA=0xf7; //显示百分位
PORTB=disp[Fourth];
delay(2);
PORTB=0x00;
}
 
void delay(unsigned char time)
{
unsigned char i,j;
for(i=time;i>0;i--)
for(j=255;j>0;j--);
}

关键字:PIC16F877A  SPI  TC77  温度传感器 引用地址:PIC16F877A-SPI-TC77(温度传感器)

上一篇:PIC16F877A-定时器0
下一篇:PIC单片机C语言延时程序和循环子程序

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

AVR-SPI总线控制
设置为从模式: void spi_init_s() { DDRB.6=1; //PB6 - output DDRB.4=0; DDRB.5=0; DDRB.7=0; SPCR=0XC0; } 设置为主模式: void spi_init_m() { DDRB.6=0; DDRB.4=1; DDRB.5=1; DDRB.7=1; SPCR=0x52; SPSR=0X01; } spi发送数据: void send_spi(uchar ss) { uchar i; //uchar j; while(PI
[单片机]
uart,spi,i2c总线的区别
I2C的数据输入输出用的是一根线,SPI则分为dataIN和dataOUT。由于这个原因,采用I2C时CPU的端口占用少,SPI多一根。但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。但是I2C和SPI都不适合长距离传输。长距离时就要用485了。 第一:         SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS);UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上:
[嵌入式]
stm32之SPI通信协议实例详解
  之前一直对SPI通信一知半解,所以想抽空把它搞得明白一些。考虑到之前是结合Flash芯片来学的,十分不直观,而且主要把时间和精力都花在Flash芯片的datasheet和驱动上了,SPI通信也没学好。所以这次就考虑用4位数码管显示模块,模块是直接买的现成的,这样可以简化操作,把精力聚焦到学习的核心–SPI通信本身上来。   本次采用的模块是用2片74HC595串联驱动的,一片用来控制数码管的位选(U1),一片用来控制数码管的段选(U2)。 接口比较简单,总共5个引脚,2个引脚分别接VCC和GND,DIO用来接收串行数据的输入,SCLK用来接收同步时钟,每个SCLK上升沿74HC595内部的移位寄存器会移一位,RCLK用
[单片机]
stm32之<font color='red'>SPI</font>通信协议实例详解
浅谈温度传感器
温度是一个基本的物理量,自然界中的一切过程无不与温度密切相关。温度传感器是最早开发,应用最广的一类传感器。温度传感器的市场份额大大超过了其他的传感器。从17世纪初人们开始利用温度进行测量。在半导体技术的支持下,本世纪相继开发了半导体热电偶传感器、PN结温度传感器和集成温度传感器。与之相应,根据波与物质的相互作用规律,相继开发了声学温度传感器、红外传感器和微波传感器。 两种不同材质的导体,如在某点互相连接在一起,对这个连接点加热,在它们不加热的部位就会出现电位差。这个电位差的数值与不加热部位测量点的温度有关,和这两种导体的材质有关。这种现象可以在很宽的温度范围内出现,如果精确测量这个电位差,再测出不加热部位的环境温度,就可
[工业控制]
理解温度传感器的多点地址分配
传统上,大多数采用Philips I2C I/O协议的IC具有固定(工厂设置)的从机地址用于通信。然而,许多温度应用中,可能希望在不同的位置使用多个温度传感器,在系统预定义的”区域”内监视工作温度。为支持这种应用,同时将用于通信功能的CPU资源降至最低,许多温度传感器提供用户定义从机地址的灵活性。这种用户自定义功能使用一个(或多个)附加引脚,允许将特定传感器映射为电路定义的从机地址。 按照温度传感器的I/O多点能力,用户定义的从机地址可分为三种基本类型: 1) 输入电平定义。地址输入引脚的状态可由简单的硬件(例如安装电阻)或动态CPU资源控制。可将SCL和SDA上使用的标准数字逻辑输入电平(VIH/VIL)应用至地址输入引脚。 图1
[嵌入式]
SPI接口说明及原理
1简介 SPI:Serial Peripheral Interface,是串行外设接口。 SPI是由摩托罗拉于 1985 年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。 从那时起,这种接口就已成为许多半导体制造商,特别是微控制器(MCU)和微处理器(MPU)采用的事实标准。 2SPI接口 SPI总线是一种4线总线,通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以。 MOSI:Master Output Slave Input,主设备数据输出,从设备数据输入; MISO:Master Input Slave Output,主设备数据输入,从设备数据输出; SCLK:Serial Clock,时
[单片机]
<font color='red'>SPI</font>接口说明及原理
基于ARM9芯片的S3C2440和Linux操作系统设计SPI驱动程序
  在嵌入式开发过程中,许多系统通常使用串口驱动来满足通信要求,但在实际应用中,使用SPI通信方式会更加高效和快捷[2]。SPI接口是一种高速、高效的串行接口技术,因而SPI设备在数据通信应用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系统,设计了一种SPI驱动程序,该驱动程序功能可靠灵活、易于移植,可应用于多种嵌入式平台,实现ARM与设备之间的通信。   1 硬件说明   1.1 S3C2440开发平台   采用三星公司的SoC芯片S3C2440[4]作为核心处理器,主频为400 MHz,并与64 MB SDRAM和64 MB NAND Flash共同组成核心部分。此外,该平台也为用户提供了大量的通
[单片机]
基于ARM9芯片的S3C2440和Linux操作系统设计<font color='red'>SPI</font>驱动程序
玩转STM32CubeMX | 内部温度传感器
1.内部温度传感器简介 STM32F1有一个内部的温度传感器,可以用来测量CPU及周围的温度。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值,温度传感器模拟输入推荐采样时间是17.1us,内部温度传感器支持的温度范围为:-40~125℃,精度为±1.5℃左右 通过读取ADC通道16的值,通过如下计算公式即可算出当前温度: T = { (V25 - Vsense) / Avg_Slope } + 25 上式中: V25 = Vsense在25℃时的数值(典型值为:1.43) Avg_Slope = 温度与Vsense曲线的平均斜率(典型值为:4.3 mV/℃) 以上典型值请参考
[单片机]
玩转STM32CubeMX | 内部<font color='red'>温度传感器</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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