单片机课程设计基于数字温度传感器的数字温度计报告(4)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [外语考试]管理学 第13章 沟通
- [外语考试]07、中高端客户销售流程--分类、筛选讲
- [外语考试]2015-2020年中国高筋饺子粉市场发展现
- [外语考试]“十三五”重点项目-汽车燃油表生产建
- [外语考试]雅培奶粉培乐系列适用年龄及特点
- [外语考试]九三学社入社申请人调查问卷
- [外语考试]等级薪酬体系职等职级表
- [外语考试]货物买卖合同纠纷起诉状(范本一)
- [外语考试]青海省实施消防法办法
- [外语考试]公交车语音自动报站系统的设计第3稿11
- [外语考试]logistic回归模型在ROC分析中的应用
- [外语考试]2017-2021年中国隔膜泵行业发展研究与
- [外语考试]神经内科下半年专科考试及答案
- [外语考试]园林景观设计规范标准
- [外语考试]2018八年级语文下册第一单元4合欢树习
- [外语考试]分布式发电及微网运行控制技术应用
- [外语考试]三人行历史学笔记:中世纪人文主义思想
- [外语考试]2010届高考复习5年高考3年联考精品历史
- [外语考试]挖掘机驾驶员安全生产责任书
- [外语考试]某211高校MBA硕士毕业论文开题报告(范
- 用三层交换机实现大中型企业VLAN方案
- 斯格配套系种猪饲养管理
- 涂层测厚仪厂家直销
- 研究生学校排行榜
- 鄱阳湖湿地景观格局变化及其驱动力分析
- 医学基础知识试题库
- 2010山西省高考历年语文试卷精选考试技
- 脉冲宽度法测量电容
- 谈高职院校ESP教师的角色调整问题
- 低压配电网电力线载波通信相关技术研究
- 余额宝和城市商业银行的转型研究
- 篮球行进间运球教案
- 气候突变的定义和检测方法
- 财经大学基坑开挖应急预案
- 高大支模架培训演示
- 一种改进的稳健自适应波束形成算法
- 2-3-鼎视通核心人员薪酬股权激励管理手
- 我国电阻焊设备和工艺的应用现状与发展
- MTK手机基本功能覆盖测试案例
- 七年级地理教学课件上册第四章第一节




