PIC 通过SPI串口控制TC77温度传感器
2010-05-08 21:15
573 查看
/****PIC单片机通过SPI串口可以读取TC77传感器的温度数值****/
/****通过串口与上位机连接在串口调试工具中可显示温度的数字值**/
/*****************主程序************************/
#include "p18f4620.h"
#define TC77_CS LATAbits.LATA2 //片选信号,低电平有效
//初始化
void initial()
{
INTCON = 0x00;
ADCON1 = 0x07;
PIE1 = 0;
PIE2 = 0;
}
//串口初始化
void EUSART_Init()
{
TXSTA = 0xA4;
RCSTA = 0x90;
BAUDCON =0x00;
TRISC = TRISC|0x80;
TRISC = TRISC&0xBF;
SPBRG = 25;
}
//发送数据到串口
void send_ch(int d)
{
PIR1bits.TXIF = 0;
TXREG = d;
while(TXSTAbits.TRMT == 0);
}
//SPI配置TC77
void TC77_init(void)
{
TRISCbits.TRISC3 = 0;
TRISCbits.TRISC4 = 1;
TRISAbits.TRISA2 = 0;
SSPSTAT = 0xC0;
SSPCON1 = 0x20;
PIR1bits.SSPIF = 0;
}
//读TC77温度传感器
unsigned int Read_TC77(void)
{
unsigned char temh,teml;
unsigned int temp;
TC77_CS = 0; //片选TC77
PIR1bits.SSPIF = 0;
SSPBUF = 0; // 读高8位
while(!PIR1bits.SSPIF);
if(SSPSTATbits.BF)
temh=SSPBUF;
PIR1bits.SSPIF = 0;
SSPBUF = 0; //读低八位
while(!PIR1bits.SSPIF);
if(SSPSTATbits.BF)
teml=SSPBUF;
TC77_CS = 1;
temp = temh;
temp = (temp << 6)+(teml >> 2); //换算为十六位数据
return temp;
}
//延时函数
void wait(unsigned char t)
{
unsigned char i;
unsigned int j;
for(i=0;i<t;i++)
for(j=0;j<10000;j++);
}
//主函数
void main()
{
unsigned int T;
initial();
EUSART_Init();
TC77_init();
while(1)
{
T = Read_TC77();
send_ch(0xFF);
send_ch(T);
send_ch(T >> 8);
Nop();
Nop();
wait(10);
}
}
/****通过串口与上位机连接在串口调试工具中可显示温度的数字值**/
/*****************主程序************************/
#include "p18f4620.h"
#define TC77_CS LATAbits.LATA2 //片选信号,低电平有效
//初始化
void initial()
{
INTCON = 0x00;
ADCON1 = 0x07;
PIE1 = 0;
PIE2 = 0;
}
//串口初始化
void EUSART_Init()
{
TXSTA = 0xA4;
RCSTA = 0x90;
BAUDCON =0x00;
TRISC = TRISC|0x80;
TRISC = TRISC&0xBF;
SPBRG = 25;
}
//发送数据到串口
void send_ch(int d)
{
PIR1bits.TXIF = 0;
TXREG = d;
while(TXSTAbits.TRMT == 0);
}
//SPI配置TC77
void TC77_init(void)
{
TRISCbits.TRISC3 = 0;
TRISCbits.TRISC4 = 1;
TRISAbits.TRISA2 = 0;
SSPSTAT = 0xC0;
SSPCON1 = 0x20;
PIR1bits.SSPIF = 0;
}
//读TC77温度传感器
unsigned int Read_TC77(void)
{
unsigned char temh,teml;
unsigned int temp;
TC77_CS = 0; //片选TC77
PIR1bits.SSPIF = 0;
SSPBUF = 0; // 读高8位
while(!PIR1bits.SSPIF);
if(SSPSTATbits.BF)
temh=SSPBUF;
PIR1bits.SSPIF = 0;
SSPBUF = 0; //读低八位
while(!PIR1bits.SSPIF);
if(SSPSTATbits.BF)
teml=SSPBUF;
TC77_CS = 1;
temp = temh;
temp = (temp << 6)+(teml >> 2); //换算为十六位数据
return temp;
}
//延时函数
void wait(unsigned char t)
{
unsigned char i;
unsigned int j;
for(i=0;i<t;i++)
for(j=0;j<10000;j++);
}
//主函数
void main()
{
unsigned int T;
initial();
EUSART_Init();
TC77_init();
while(1)
{
T = Read_TC77();
send_ch(0xFF);
send_ch(T);
send_ch(T >> 8);
Nop();
Nop();
wait(10);
}
}
相关文章推荐
- 温度传感器温度控制
- STC89C52通过串口控制流水灯亮灭
- 通过串口传值给Arduino,再通过Arduino控制小车(直流电机)移动与二自由度云台转动角度
- Arduino 通过串口字符串控制LED开关
- 联发科Linkit 7688 DUO(三): 通过 Arduino 控制外设和传感器
- 通过android传感器控制ROV云台转动
- 通过串口连接控制树莓派
- IIC读写AT24C02代码1——通过串口命令控制R/W
- Python通过pyserial控制串口操作
- Pixhawk---通过串口方式添加一个自定义传感器(超声波为例)
- 单片机控制单总线协议湿度温度传感器DHT11之模块化编程(持续更新中)
- PIXHAWK源码分析之三---通过串口方式添加一个自定义传感器(1)
- 通过RS232串口控制LG电视
- 通过串口编程控制打印机
- tiny6410温度传感器驱动学习1(测试通过)
- 树莓派进阶之路 (022) - 串口篇 - 通过串口连接控制树莓派
- 树莓派通过GPIO口获取温度以及控制LED灯
- CC2530 ADC实验1(读取片内温度并通过串口显示)
- 树莓派+串口墨水电子屏幕+温度湿度传感器打造专属时钟
- 安卓通过串口控制zigbee