/*
本程序使用STC15WXXX,晶振无特殊声明使用12MHz
数码管4位共阴,带负温度显示。
温度传感器是使用DS18B20。温度显示范围参见DS18B20的产品规格介绍。
*/
#include<stdio.h>
#include <STC15F2K60S2.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit duan=P5^4;//申明U2锁存器的锁存端(数码段),P3^3改为P5^4
sbit ds=P3^4;//温度传感器数据端口
//四八译码选择数码管
sbit LSA=P3^5;//数码管第2位 A
sbit LSB=P3^6;//数码管第3位 B
sbit LSC=P3^7;//数码管第4位 C
sbit LSD=P5^5;//符号位,数码管第1位, D ,P3^2改为P5^5
//数码显示表
uchar code out[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴
//数码显示表带DP小数点
uchar code out_dp[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//共阴
//数码显示负号
uchar code out_minus[2]={0x00,0x40};
//数码显示初始化
uchar code out_initc[3]={0x08,0x48,0x49};
uchar temp0,temp1,temp2,temp3;
uchar data1;
uint temp;//定义整数型温度数据
float f_temp;//定义浮点型温度数据
void delay518us() //@12.000MHz
{
uchar i,j;
i = 7;
j = 8;
do
{
while (--j);
} while (--i);
}
void delay205us() //@12.000MHz
{
uchar i,j;
i = 3;
j = 97;
do
{
while (--j);
} while (--i);
}
void delay25us() //@12.000MHz
{
uchar i;
// _nop_();
// _nop_();
i = 72;
while (--i);
}
void delay7us()