• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签:

资源简介

max6675+热电偶的C语言程序,使用SPI通信,该程序经过实践温度测量准确。

资源截图

代码片段和文件信息

#include

#define LCD_RW RD1
#define LCD_RS RD2
#define LCD_E RD3
#define CS RA5
#define uchar unsigned char
#define uint unsigned int

#define    COM  0//定义命令为0
#define    DATA 1//定义数据为1

void interrupt ISR(void);
void CSH(void);
void DISPLAY(uint R3);
char SPI_WRITE(char);
void LCD_BUSY(void);
uchar LCD_READ(void);
void LCD_WRITE(uchar R1uchar FLAG);
void LCD_WRITE_4(uchar R1uchar FLAG);
void LCD_WRITE_STR(uchar R1uchar R2uchar *str);
void DELAY_US(uchar n);
void DELAY(uint n);
unsigned int READ_T();
volatile unsigned int t;
uchar LCD_Buffer2[]=“t=   ‘C“; //显示温度,没有放大



void main(void)
{ CSH();
TRISA5=0;
TRISC=0b00010000;
SSPCON=0b00100001;
SSPSTAT=0b11000000;
CS=1;
while(1);
}

void interrupt ISR(void)
{
if(TMR1IF==1)
{
TMR1IF=0; //清中断标志位
TMR1H=5536>>8;
TMR1L=5536; //重新装载初值
t=READ_T();//温度采样
DISPLAY(t);//把电流值转换成BCD码供显示
LCD_WRITE_STR(10LCD_Buffer2);//显示
}
}

unsigned int READ_T()
{ unsigned int t;
volatile char T_HT_L;
CS=1;
CS=0;
T_H=SPI_WRITE(0);
T_L=SPI_WRITE(0);
CS=1;
t=(T_H<<8)+T_L;
t=t>>5;
return(t);
}

char SPI_WRITE(char A)
{ char BUF;
SSPBUF=A;
while(!SSPIF);
SSPIF=0;
BUF=SSPBUF;
return(BUF);
}

//LCD模块初始化
void LCD_CSH(void)
{
TRISD=0;//设置RD口为输出,控制LCD
DELAY(20); //延时20ms
LCD_WRITE_4(0b0011COM); //发送控制序列
DELAY_US(800); //延时100us
LCD_WRITE_4(0b0011COM); //发送控制序列
DELAY_US(800); //延时100us
LCD_WRITE_4(0b0011COM); //发送控制序列
DELAY_US(800); //延时100us
LCD_WRITE_4(0b0010COM); //4位数据格式
LCD_BUSY(); //LCD忙检测
LCD_WRITE(0b00101000COM); //4位数据格式,4行,5×7点阵
LCD_WRITE(0b00001100COM); //D(d2)=1:打开显示C(d1)=1:光标打开,B(d0)=1:光标闪烁
LCD_WRITE(0b00000001COM); //清除显示
DELAY(2); //延时2ms
LCD_WRITE(0b00000110COM); //输入模式I/D(d1)=1:地址加1S(d0)=1:显示移位关闭
}
//========读LCD状态
uchar LCD_READ(void)
{ uchar R1;
LCD_RS=0; //寄存器选择
LCD_RW=1;NOP(); //读为1
LCD_E=1;NOP(); //使能
R1=0; //短延时
R1=(PORTD<<4) & 0x0F; //读数据的高4位给R1
LCD_E=0;NOP(); //读数据结束
LCD_E=1;N

评论

共有 条评论

相关资源