历史上的今天
返回首页

历史上的今天

今天是:2024年11月20日(星期三)

正在发生

2019年11月20日 | AVR单片机测温基于DS18B20

2019-11-20 来源:51hei

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define dula_set PORTA |=BIT(3) //数码管段选

#define dula_clr PORTA &=~BIT(3)

#define wale_set PORTA |=BIT(4)//数码管位选

#define wale_clr PORTA &=~BIT(4) 

#define DQ_IN DDRA&=~BIT(5)

#define DQ_OUT DDRA|=BIT(5)

#define DQ_SET PORTA|=BIT(5)

#define DQ_CLR PORTA&=~BIT(5)

#define DQ_R PINA&BIT(5)//读第2位

uchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//数码管段码

uchar smg_wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//        数码管位码

uchar table[8]={0,0,0,0,0,0,0,0};//存放转换后的数

void delay()

{

uint a;

for(a=0;a<300;a++);

/////////

void display(uchar *p)//显示函数

{

uchar i;

for( i=0; i<8; i++)  //实现8位动态扫描循环

         {        

         dula_set;

          PORTB=smg_du[*p];  //将字模送到P0口显示

          p++;

          if(i==1)//为1是在第2个数码管显示小数点

         {

         PORTB|=BIT(7);

         }

         else

         {

          PORTB&=~BIT(7);

         

         }

          dula_clr;

          wale_set;        

         PORTB=smg_wei[i];

         

         wale_clr;

                 

                delay();

          }

}

//////


uchar ds18b20_reset(void)//复位

{

uchar i;

DQ_OUT;

DQ_CLR;

delay_n100us(5);

DQ_SET;

delay_100us();

DQ_IN;

i=DQ_R;

delay_n100us(5);

return i;

}


//////


void ds18b20_write_byte(uchar value)//写一个字节

{

uchar i;

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

{

DQ_OUT;

DQ_CLR;

delay_10us();

if(value&0x01)//判断最低位是否为1

{

DQ_SET;

}

delay_n100us(1);

DQ_SET;

value=value>>1;

}

}

///////

uchar ds18b20_read_byte(void)//读一个字节

{

uchar i;

uchar value;

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

{

value=value>>1;

DQ_OUT;

DQ_CLR;

delay_10us();

DQ_SET;

DQ_IN;

if(DQ_R)

{

value|=0x80;

}

delay_50us();

}


return value;

}

//////

void data_pro(uint temp)//数据处理

{

table[0]=temp/1000;

table[1]=(temp%1000)/100;

table[2]=(temp%100)/10;

table[3]=temp%10;


}

//////

void main(void)

{

uchar i,j,k;

uint temp;

DDRB=0xff;

PORTB=0xff;

DDRA|=BIT(3);

PORTA|=BIT(3);

DDRA|=BIT(4);

PORTA|=BIT(4);

while(1)

{

ds18b20_reset();

ds18b20_write_byte(0xcc);//跳过ROM

ds18b20_write_byte(0x44);//启动转换

delay_n100us(20);

ds18b20_reset();

ds18b20_write_byte(0xcc);

ds18b20_write_byte(0xbe);//读取温度

i=ds18b20_read_byte();//lsb

j=ds18b20_read_byte();//msb

temp=j*256+i;

temp=temp*6.25;

data_pro(temp);

for(k=0;k<20;k++)

{

display(table);


}

}


}


推荐阅读

史海拾趣

Chino-Excel公司的发展小趣事

面对日益严峻的环境问题,Chino-Excel公司积极倡导环保理念,将绿色生产贯穿于整个产业链。公司采用环保材料和节能技术,降低产品生产和运营过程中的能耗和排放。同时,公司还积极参与环保公益活动,推动整个行业向更加环保、可持续的方向发展。

ebm-papst公司的发展小趣事

为了更好地服务中国市场,ebm-papst在中国不断推进本地化生产。公司在上海和西安设立了研发中心和生产基地,配备了与德国同样先进的实验设备。这些本地化生产和研发设施使得ebm-papst能够更快地响应中国市场的需求,提供更符合当地市场特点的产品和解决方案。同时,本地化生产也降低了公司的生产成本,提高了产品的竞争力。

Greenray Industries Inc公司的发展小趣事

GreenTech自成立以来,便专注于绿色能源技术的研发。公司早期投入大量资源于太阳能光伏技术的研发,成功开发出高效能的太阳能电池板。这一技术不仅提高了能源转换效率,还显著降低了生产成本,使得太阳能发电更加普及和经济。随着技术的不断成熟,GreenTech的太阳能产品逐渐进入国际市场,为全球能源转型贡献了一份力量。

Defense Supply Center Columbus公司的发展小趣事

在电子行业,供应链管理对于企业的运营效率至关重要。Defense Supply Center Columbus公司深知这一点,不断优化供应链管理流程。公司建立起一套高效的供应链管理系统,实现了从原材料采购、生产制造到产品销售的全程监控和管理。同时,公司还与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量的可靠性。这些措施的实施,使得公司的运营效率得到了显著提升,降低了运营成本,提高了企业的竞争力。

Cypress Industries公司的发展小趣事

2020年,Cypress迎来了其发展历程中的一个重要时刻——与德国半导体巨头英飞凌(Infineon)的合并。这次合并使Cypress成为英飞凌的一部分,双方在技术、市场和资源等方面实现了互补和整合。这次合并不仅增强了Cypress在全球半导体市场的竞争力,也为其未来的发展提供了更广阔的空间。

以上故事均基于Cypress Semiconductor(赛普拉斯半导体)的发展历史而创作,旨在客观描述公司在电子行业中的发展历程和成就。

Cressall Power Resistors公司的发展小趣事

为了确保产品质量和稳定供应,Cressall投入大量资源建设质量管理体系。公司引入了先进的质量管理方法和工具,对生产过程中的每一个环节进行严格把控。同时,公司还建立了完善的质量检测体系,确保出厂产品的合格率。这些措施有效提升了公司的产品质量和客户满意度,为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

几个自制心电图的网络资源集锦

电子产品在发展的过程中,大多数都是跟人类活动相关的,为人类服务,或者代替人类从事某些活动,医疗电子因为与人的健康甚至生命息息相关,所以获得众多技术人员浸淫其中,乐此不疲。 混在医疗电子的工程师很不好过,因为这是一个可以救人也可以杀 ...…

查看全部问答>

基于市场的产品开发

“突然之间,生意不那么好做了”,哈墨博士的这句话经典的概括了目前市场的残酷、竞争的激烈。外部环境的变化,竞争对手的此消彼长,客户需求的多变,使得产品生命周期越来越短,甚至产品刚上市就需要更新换代,企业在争夺客户、抢占市场方面显得日 ...…

查看全部问答>

PROTEL 99se 中走线的问题

大家好:我的protel 99se中画pcb走线时可以走15度,30度等等好像是任意角度,我不想这样改怎么设置? 正常的是可以走45度,90度,135度 谢谢大家哦!…

查看全部问答>

简单问题:如何获取进程空间虚拟地址的实际的物理地址?

反之,如果把一个物理地址映射到进程空间虚拟地址?不是MMU那个虚拟地址…

查看全部问答>

有电力项目方面经验的朋友请进!

哪位有电力方面课题或是中小型的项目,可以谈谈想法,现成的项目也可以,我公司需要购买或者开发。希望我们能合作。我的QQ号31721739 …

查看全部问答>

高分求高手相助, 无法连通电信WAP网关

{                 }else                 {                         ConnMgrSetCon…

查看全部问答>

各位同仁,我还要继续下去吗

本人是做单片机工作的,08年金融危机被公司CUT了…

查看全部问答>

关于系统初始化

系统初始化时,怎么根据实际使用振荡器?如内部振荡器1和2。…

查看全部问答>

Verilog+HDL数字设计与综合(第二版)

设计前端的设计很不错的一本书…

查看全部问答>

你对LED恒流芯片了解多少?三代非隔离LED恒流芯片介绍

第一代LED恒流芯片:此类芯片主要的技术特点是基于固定频率的PWM芯片(如UC384X等),通过降低电感纹波电流,固定电感峰值电流来实现恒流。但由于开关频率固定,为避免次谐振荡,它的最大占空比只能用到50%,其应用范围就很受限了;再者由于电感纹 ...…

查看全部问答>