教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 外语考试 >

单片机课程设计基于数字温度传感器的数字温度计报告(4)

来源:网络收集 时间:2026-08-09
导读: unchar code dis6[]={Ltemp:}; bit flag_1820_1; bit flag_1820_2; void delay_ms(unsigned char time); void ledshow(void); void keypress(void); void init(void); void gettemp(); void init1820(void); void w

unchar code dis6[]={"Ltemp:"};
bit flag_1820_1;
bit flag_1820_2;
void delay_ms(unsigned char time);
void ledshow(void);
void keypress(void);
void init(void);
void gettemp();
void init1820(void);
void write1820(unchar);
unsigned char read1820(void);
void delay_us(unchar);
void delay3(unchar);


/* 延时*/
void delay(uint t)
{ uint i;
while(t--)
{ for(i=0;i<125;i++)
{}
}
}

//LCD显示函数
23 void delay1(unchar time)
{ unchar n;
n=0;
while(n<time)
{n++;}
return;
}

void delay3(unchar x)
{ for(y=x;y>0;y--)
for(z=x;z>0;z--);

}

unchar testBF()
{ bit result;
rs=0;rw=1;e=1;
_nop_();_nop_();_nop_();_nop_();
result=bf;e=0;
return result;
}
void writecmd(unchar ZL)
{ while(testBF()==1);
rs=0;rw=0;e=0;
_nop_();_nop_();
P0=ZL;e=1;
_nop_();_nop_();_nop_();_nop_();
e=0;
}

void pos(unchar pos)
{ writecmd(pos|0x80);
}
void writedate(unchar date)
{while(testBF()==1);
rs=1;rw=0;e=0;
_nop_();_nop_();
P0=date;e=1;
_nop_();_nop_();_nop_();_nop_();
e=0;
}
24 void init()
{ delay3(20);
writecmd(0x38);
delay3(30);
writecmd(0x0d);
delay3(30);
writecmd(0x06);
delay3(30);
writecmd(0x01);
delay3(30);
}

//键盘程序

//主程序
void main(void)
{
TMOD=0x01;
TH0=50000/256;
TL0=50000%256;
Htemp=124;Ltemp=-24;
P3=0xFF;
init();
i

f(sign==0)
{EA=1;TR0=1;ET0=1;
EX0=0; //关闭外部中断0
EX1=0; //关闭外部中断1
while(1)
{
if(read==0)
{
delay3(2000);
if(read==0)
{sign++;}
}
}
}
if(sign==1)
{
BUZZER=1; //关闭蜂鸣器
EX0=1; //开启外部中断0
EX1=1; //开启外部中断1
25 init();
pos(0);
for(i=0;i<6;)
{ writedate(dis4[i]);i++;
}
D6=Htemp%10;
D7=Htemp%100/10;
D8=Htemp/100;
pos(0x6);
writedate(dis1[D8]);
writedate(dis1[D7]); }
if(sign==2)
{BUZZER=1; //关闭蜂鸣器
EX0=1; //开启外部中断0
EX1=1; //开启外部中断1
init();
pos(0);
for(i=0;i<6;)
{ writedate(dis6[i]);i++;}
D6=Htemp%10;
D7=Htemp%100/10;
D8=Htemp/100;
pos(0x6);
writedate(dis1[D8]);
writedate(dis1[D7]);
writedate(dis1[D6]);
}
if(sign>2)
{ sign=0;}
}
//中断程序
void int0(void) interrupt 0
{

EX0=0; //关外部中断0
if(desH==0&&sign==1)
{
Htemp--;
if(Htemp<Ltemp)
Htemp=Ltemp;
}
26 else if(desH==0&&sign==2)
{
Ltemp--;

}
}
/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
EX1=0; //关外部中断1
if(incH==0&&sign==1)
{
Htemp++;
}
else if(incH==0&&sign==2)
{
Ltemp++;
if(Ltemp>Htemp)
Ltemp=Htemp;
}
}

//定时器T0服务程序
void isr_t0(void) interrupt 1
{ TH0=50000/256;
TL0=50000%256;
TMOD=0x10;
TH1=50000/256;
TL1=50000%256;
gettemp();
delay(50);

if (tp<Htemp)
{ BUZZER=1;
pos(0x04);
for(i=0;i<7;)
{
writedate(dis5[i]);
i++;
}
pos(0x40);
27 for(i=0;i<5;)
{writedate(dis2[i]);
i++;}
D1=(unchar)(tp%10);
D2=(unchar)(tp%100/10);
D3=(unchar)(tp/100);
D4=(uint)(tt*10);
D5=((uint)(tt*100))%10;

if(k==1)
{pos(0x46);
writedate('-');}
else
{pos(0x46);
writedate();}

pos(0x47);
writedate(dis1[D3]);
writedate(dis1[D2]);
writedate(dis1[D1]);
writedate('.');
writedate(dis1[D4]);
writedate(dis1[D5]);
writedate(0xdf);
writedate('C');
}
else
{ init();
pos(0x04);
for(i=0;i<4;)
{
writedate(dis3[i]);
i++;}
BUZZER=0;
}
}

//DS18B20读取温度
void gettemp()
{
init1820();
28 write1820(0xcc);
write1820(0x44);
init1820();
write1820(0xcc);
write1820(0xbe);

templ=read1820();//低8位其中的第四位是小数点后的
temph=read1820();//高8位其中前五位是符号值)
z=temph;//把符号位留下判断正负

k=(bit)(z>>7);
if(k==1)

//负数就取反加一
{ templ=~templ;
templ=templ+1;
temph=~temph;
}
else
{templ=templ;
temph=temph;}

n=templ;
y=n&0x01;
t7=y*0.0625;
n>>=1;
y=n&0x01;//小数点最后的数
t4=y* 0.125;
n>>=1;
y=n&0x01;
t5=y* 0.25;
n>>=1;
y=n&0x01;
t6=y*0.5;
tt=t4+t5+t6+t7;

init1820();
tp=temph*256+templ;
temperature=tp;
tp=tp>>4;
}
//1820初始化
void init1820()
{
29 DQ = 1; _nop_();
DQ = 0;
delay_us(125); //延时510us
delay_us(125);

DQ = 1;
delay_us(15);

while(DQ)
{ _nop_(); }
delay_us(60);
DQ = 1;
}

//******write********
void write1820(unchar a)
{
unchar i;
for(i=0;i<8;i++)
{if(a & 0x01) //低位在前
{DQ = 0;
_nop_();_nop_();_nop_();
DQ = 1; }
else
DQ = 0;
_nop_();_nop_();_nop_();
delay_us(30);
DQ = 1;
_ …… 此处隐藏:2231字,全部文档内容请下载后查看。喜欢就下载吧 ……

单片机课程设计基于数字温度传感器的数字温度计报告(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/118263.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)