基于单片机数字温度计(17)

时间:2025-05-05

这是本人在大学期间其中之一的课程设计希望对大家有用。

附录3 系统程序

/******************************************************************************************* #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit DQ =P3^6; sbit BEEP =P3^7; sbit HI_LED =P1^4; sbit LO_LED =P1^5; uchar code DSY_CODE[] = {

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x00 };

char Alarm_Temp_HL[1] ={30}; uchar CurrentT =0;

uchar Temp_Value[] ={0x00,0x00}; uchar Display_Digit[] ={0,0,0,0}; bit HI_Alarm =0; bit DS18B20_IS_OK =1; uint Time0_Count =0; void Delay(uint x) { while(--x); } uchar Init_DS18B20() { uchar status ; DQ =1;Delay(8); DQ =0;Delay(90); DQ =1;Delay(8); status =DQ; Delay(100); DQ =1;

return status; } uchar ReadOneByte() { uchar i,dat =0;

DQ =1;_nop_(); for (i=0;i<8;i++) {

DQ=0;dat>>=1;DQ=1;_nop_();_nop_(); if(DQ) dat|=0x80; Delay(30);DQ=1;

}

return dat; } void WriteOneByte(uchar dat)

{ uchar i; for (i=0;i<8;i++) {

DQ=0;DQ=dat

0x01;Delay(5);DQ=1;dat>>=1;

} }

void Read_Temperature() { if (Init_DS18B20()==1)

DS18B20_IS_OK=0; else

{ WriteOneByte(0xCC);

WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(0xCC);

WriteOneByte(0xBE);

Temp_Value[0]=ReadOneByte(); Temp_Value[1]= ReadOneByte(); Alarm_Temp_HL[0]= ReadOneByte(); Alarm_Temp_HL[1]= ReadOneByte();

DS18B20_IS_OK=1;

} }

void Set_Alarm_Temp_Value() {

Init_DS18B20(); WriteOneByte(0xCC); WriteOneByte(0x4E);

WriteOneByte(Alarm_Temp_HL[0]); WriteOneByte(Alarm_Temp_HL[1]); WriteOneByte(0x7F); Init_DS18B20(); WriteOneByte(0xCC); WriteOneByte(0x48); }

void Display_Temperature() { uchar i;

uchar t=150; uchar ng=0,np=0;

char Signed_Current_Temp; if ((Temp_Value[1]&0xF8)==0xF8) &

基于单片机数字温度计(17).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219