-
//功能:有负温度显示,高精度格度可以显示-9.99C到99.99C
//带有报警装置
//当温度为正时,显示十位 个位 十分位 百分位
//当温度为负时,显示负号 十位 个位 十分位
//缺点是上下限报警数值不能改变
//注明:数码管是CC—共阴型
//读取温度 -
sbit DQ = P3^0;
//定义通信端口
bit fg=1;
//晶振12MHz
void delay_18B20(unsigned int i)
{
while(i--);
}
//初始化函数
bit Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay_18B20(8); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_18B20(80); //精确延时 大于 480us
DQ = 1; //拉高总线
delay_18B20(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
return(x); //Init_DS18B20(void) 被定义为 bit则要有返回值
delay_18B20(20);
}
//while(DQ);
//while(~DQ); //检测到应答脉冲
//
//读一个字节
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
//写一个字节
WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
delay_18B20(100);//至少750ms -
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
if((b&0xf8)==0xf8) //位为1 时温度是负
{
b=~b;
a=~a+1; //补码转换,取反加一
(a==0)b++;
fg=0; //读取温度为负时fg=0
}
//传感器返回值除16得实际温度值
//技巧处理后先乘25,再除4,除4用右移实现
t=((b*256+a)*25)>>2;
//t=t+(t>0?0.5:-0.5); //四佘五入大于0加0.5, 小于0减0.5 前面要把t定义为float型才可以
return(t);
} -
显示头文件:display()
-
char disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数字0-9和‘-’的共阴段码
char disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};
void display(int tmp)
{
if(fg==0)
{
P2 = 0xff;
P1 = 0x40;//"-"
P2 = 0xEF;
delay_18B20(2000);
}
P2 = 0xff;
P1 = 0x39;//"C" //若先位选再段选, 由于IO口默认输出高电平, 所以当先位选会使数码管出现乱码
P2 = 0xFE;
delay_18B20(200); -
P2 = 0xff;
P1 = disp[tmp/10];
P2 = 0xFD;
delay_18B20(200); -
P2 = 0xff;
P1 =disp_dot[tmp/10];
P2 = 0xFB;
delay_18B20(200); -
if(fg==1) -
{ -
P2 = 0xff;
P1 = disp[tmp/100];
P2 = 0xF7;
delay_18B20(200);
}
}
上一篇:解读PIC和AVR单片机的自身抗干扰性能
下一篇:MSP430设置出错
推荐阅读最新更新时间:2024-03-16 14:35
设计资源 培训 开发板 精华推荐
- 三星 Exynos 2600 芯片前景堪忧:良率挑战严峻,有被取消量产风险
- 苹果搁置反垄断报告的请求遭印度监管机构拒绝,案件将继续推进
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升