这个实验利用avr来读取ds18b20,实现温度计的功能.详情见附件.
平台:FDRAVR开发板
主代码:
#include "ds18b20.h"
//num,要显示的数据(0~9);pos,要显示的位置(从右到左)
void display(uchar num,uchar pos)
{
DDRA="0XFF";//定义PORTA口输出
PORTA="0XFF";//输出高电平
switch(pos)
{
case 3:PORTA=0X01;break;
case 2:PORTA=0X02;break;
case 1:PORTA=0X04;break;
case 0:PORTA=0X08;break;
default:PORTA=0X00;
}
num<<=4;//取数字,送CD4511
PORTA|=num;
}
void main()
{
uint tem="0";
uchar t="0";
while(1)
{
//display(tem%10,0);delay_ms(5);
//display((tem/10)%10,1);delay_ms(5);
display((tem/10)%10,2);delay_ms(5);//显示温度(摄氏度)
display((tem/100),3);delay_ms(5);
t++;
if(t==100){tem=get1820data();t=0;}//大概两秒钟读一次
}
}
文章评论(0条评论)
登录后参与讨论