📄 temperature.c
字号:
#include "emot.h"
#include "iocc1110.h"
#include "hal.h"
#define CS_TC77 P1_4
#define MISO P1_7
#define SCK P1_5
#define COUNT_NUM 40 //采样次数设置
extern char aa[4]; //显示缓冲
extern uchar LEDPOINT; //小数点在该位后显示
/*********************************************************************
*函数功能 :初始化TC77
*入口参数 :无
*返 回 值 :无
*说 明 :无
*********************************************************************/
void senor_temperature_int(void)
{
IO_DIR_PORT_PIN(1,4,IO_OUT);
IO_DIR_PORT_PIN(1,5,IO_OUT);
IO_DIR_PORT_PIN(1,7,IO_IN);
CS_TC77 = 1;
}
/*********************************************************************
*函数功能 :读TC77温度值高8位,精度为1度
*入口参数 :无
*返 回 值 :温度值(10进制)
*说 明 :无
*********************************************************************/
unsigned char read_tempterature(void)
{
unsigned int temp=0;
unsigned char i;
IO_DIR_PORT_PIN(1,7,IO_IN); //因为TC77和数码管引用共用,在读温度时设为输入 ,在显示时设为输出
SCK = 0; //上升沿取数
CS_TC77 = 0; //开始读数
for(i=0; i<16; i++)
{
temp <<= 1;
SCK = 1;
asm("nop");
if(MISO)temp++;
SCK = 0;
asm("nop");
}
CS_TC77 = 1;
IO_DIR_PORT_PIN(1,7,IO_OUT); //P1_7改回显示用输出引脚
i = temp >> 7;
return i;
}
/*********************************************************************
*函数功能 :读温度并将生成显示字串
*入口参数 :无
*返 回 值 :无
*说 明 :在主函数中直接调用
*********************************************************************/
void temp_main(void)
{
UINT8 tt;
while(1)
{
senor_temperature_int(); //初始TC77读写引脚
IO_DIR_PORT_PIN(1,7,IO_OUT);//将I/O用于显示
halWait(50); //等待温度传感器转换完成
EA = 0; //读数时关中断
tt = read_tempterature(); //读温度
EA = 1; //开中断,中断用于显示
if(tt<10) //生成显示数据
{
aa[0] = 11; //8段全灭
aa[1] = 11;
aa[2] = 11;
aa[3] = tt%10;
LEDPOINT = 0xff; //小数点灭
}
else if(tt<100)
{
aa[0] = 11;
aa[1] = 11;
aa[2] = tt/10;
aa[3] = tt%10;
LEDPOINT = 0xff;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -