📄 main.c
字号:
//========================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================
//========================================================
// 工程名称: 18B20_Show
// 功能描述: 课程设计实验参考
// 利用DS18B20测量温度,并将温度显示在数码管上
// 涉及的库: CMacro.lib
// 组成文件: main.c
// 硬件连接: IOA15连接DS18B20的数据线DQ
// IOA口的低8位与6位数码管的Segment相连
// IOB口的IOB15、IOB14、IOB13、IOB12、IOB2、IOB1分别控制数码管的位选
// 维护记录: 2005-09-12 v1.0
//
//========================================================
//========================================================
// 文件名称: main.c
// 功能描述: 利用DS18B20测量温度,并将温度显示在数码管上
// 维护记录: 2005-09-29 v1.0
//========================================================
//========================================================
// 语法格式: int main(void)
// 实现功能: 利用DS18B20测量温度,并将温度显示在数码管上
// 参数: 无
// 返回值: 无
//========================================================
#include "DS18B20.h"
#include "ptr.h"
#include "Dig.h"
#define C_IRQ4_4KHz 0x0040
unsigned int Data[8];
unsigned int g_Data_Dot[11] = {0x00bf,0x0086,0x00db,0x00cf,0x00e6,0x00ed,0x00fd,0x0087,0x00ff,0x00ef,0x0000};
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 无
unsigned int g_Data[11] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f,0x0000};
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 无
unsigned int Temp_Data(void);
int main(void)
{
unsigned int uiTemp;
unsigned int uiYushu;
unsigned int uiBaiwei;
unsigned int uiShiwei;
// unsigned int uiGewei;
unsigned int uiXiaoshu;
Delay(1);
*P_SystemClock = 0x0018;
Delay(1);
*P_IOA_Attrib = 0xffff;
*P_IOA_Dir = 0xffff;
*P_IOA_Data = 0x0000;
__asm("int irq");
DIG_Init();
while(1)
{
Read_Temp();
uiTemp = Temp_Data();
uiXiaoshu = uiTemp/1000;
if(uiXiaoshu)
DIG_Set(6,g_Data[5]);
else
DIG_Set(6,g_Data[0]);
uiYushu = uiTemp%1000;
uiTemp = uiYushu;
uiBaiwei = uiTemp/100;
if(uiBaiwei)
DIG_Set(3,g_Data[uiBaiwei]);
else
DIG_Set(3,g_Data[10]);
uiYushu = uiTemp%100;
uiTemp = uiYushu;
uiShiwei = uiTemp/10;
if(uiShiwei)
DIG_Set(4,g_Data[uiShiwei]);
else
DIG_Set(4,g_Data[0]);
uiYushu = uiTemp%10;
if(uiYushu)
DIG_Set(5,g_Data_Dot[uiYushu]);
else
DIG_Set(5,g_Data_Dot[0]);
*P_Watchdog_Clear = 0x0001;
}
}
unsigned int Temp_Data(void)
{
unsigned int uiTemp; //临时变量
// unsigned int uiSignal; //保存符号
unsigned int uiData; //保存温度
uiTemp = Data[0];
uiData = 0;
// if(uiTemp & 0x0080)
// uiSignal = 1;
// else
// uiSignal = 0; //为正
if(uiTemp & 0x0080)
uiData += 64;
if(uiTemp & 0x0040)
uiData += 32;
if(uiTemp & 0x0020)
uiData += 16;
uiTemp = Data[0];
if(uiTemp & 0x0010)
uiData += 8;
if(uiTemp & 0x0008)
uiData += 4;
if(uiTemp & 0x0004)
uiData += 2;
if(uiTemp & 0x0002)
uiData += 1;
if(uiTemp & 0x0001)
uiData += 1000; //0.5
// if(uiSignal == 0)
return uiData;
// else
// return -uiData;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -