用8051单片机设计一数字式温度计 的电路图有程序的最好谢了

用8051单片机设计一数字式温度计 的电路图有程序的最好谢了,第1张

这个电路很简单,我说一下就可以了。数字式温度传感器用最常用的DS18B20,它只有3个管脚,一个接电源,一个接地,另一个接8051单片机就可以了。温度值用数码管显示。这样整个电路就接好了。如果楼主觉得我回答的可以别忘了给我加分哦,为了你的问题我花费了半天的时间啊。程序如下:

#include<reg52h>

#include <intrinsh>

#define uchar unsigned char

#define uint unsigned int

#define Self_Define_ISP_Download_Command 0x3D

sfr IAP_CONTR=0xE7;

sbit DQ = P3^5; //DS18B20接入口

uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,0x80,0x90} ;

char bai,shi,ge; //定义变量

void Init_Com(void)

{

TMOD = 0x20;

SM0=0;

SM1=1;

REN=1;

TH1 = 0xFd;

TL1 = 0xFd;

TR1 = 1;

EA=1;

ES=1;

}

/延时子函数/

void delay(uint num)

{

while(num--) ;

}

/DS18b20温度传感器函数/

Init_DS18B20(void) //传感器初始化

{

uchar x=0;

DQ = 1; //DQ复位

delay(10); //稍做延时

DQ = 0; //单片机将DQ拉低

delay(80); //精确延时 大于 480us //450

DQ= 1; //拉高总线

delay(20);

x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败

delay(30);

}

//读一个字节

ReadOneChar(void)

{

uchar i=0;

uchar dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; // 给脉冲信号

dat>>=1;

DQ = 1; // 给脉冲信号

if(DQ)

dat|=0x80;

delay(8);

}

return(dat);

}

//写一个字节

WriteOneChar(unsigned char dat)

{

uchar i=0;

for (i=8; i>0; i--)

{

DQ = 0;

DQ = dat&0x01;

delay(10);

DQ = 1;

dat>>=1;

}

delay(8);

}

//读取温度

int ReadTemperature(void)

{

uchar a,b;

uint t;

float tt;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的 *** 作

WriteOneChar(0x44); // 启动温度转换

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的 *** 作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

a=ReadOneChar();//低位

b=ReadOneChar();//高位

tt=(b256+a)00625100;//2个8位合成16位

t=(int)tt;

/t=b;

t<<=8;

t=t|a;

tt=t00625;

t= tt10+05; /

return(t);

}

/显示子函数/

void display(int bai,int shi,int ge)

{

int temp;

temp=ReadTemperature();//读温度

bai=temp/1000;//显示百位

shi=temp%1000/100;//显示十位

ge=temp%100/10;//显示个位

//xiao=temp%10;

P2=0xfd; //位选

P0=0X7f; //显示小数点

delay(500);

P2=0xfe;

P0=table[bai];//显示千位

delay(500);//一小段延时动态显示

P2=0xfd;

P0=table[shi];//显示百位

delay(500);

P2=0xfb;

P0=table[ge];//显示十位

delay(500);

P2=0xf7;// 显示°

P0=0x9c;

// delay(50);

}

void main()

{

Init_Com();

while(1)

{

display(bai,shi,ge);//显示函数

}

}

void UART_Interrupt_Receive(void) interrupt 4

{

unsigned char k=0;

unsigned int a,b;

if(RI==1)

{

RI=0;

k=SBUF;

if(k==Self_Define_ISP_Download_Command)

{

for(a=1000;a>0;a--)

for(b=100;b>0;b--); //延时约1S

IAP_CONTR = 0x60;

}

}

else

{

TI=0;

}

}

前言

第1章绪论

11单片机的发展

1280C51单片机分类

13单片机应用领域和发展趋势

131单片机的应用领域

132单片机的发展趋势

第2章80C51单片机硬件结构和原理

2180C51的基本结构

21180C51的基本结构框图

212芯片的内部结构特点

2280C51的引脚及其功能

221电源引脚V和Vss

222时钟电路引脚XTALl和XTAL2

223控制信号引脚ALE、PSEN、EA和RST

224输入/输出引脚

2380C51CPU结构和时序

231运算器

232控制器

23380C51时钟系统

234CPU时序

24存储器结构和地址空间分配

241程序存储器地址空间分配

242数据存储器地址空间分配

2580C51工作方式

251复位方式

252程序执行方式

253节电工作方式

254掉电保护方式

第3章80C51指令系统

31指令与汇编语言

311指令与程序设计语言

312指令格式及系统中使用的符号意义

32寻址方式

321寻址方式

322寻址空间

33指令系统

331数据传送指令

332算术运算指令

333逻辑运算指令

334程序控制转移指令

335位 *** 作(Bool类型)指令

第4章80C51单片机的功能资源

41并行I/O接口

411P0口

412P1口

413P2口

414P3口

42定时器/计数器

421概述

422定时器T0和T1的结构和功能

423定时器的工作方式及应用

424定时器/计数器T2

425定时器,计数器的编程和使用

43串行接口

431串行口结构和工作模式

432串行口的编程和举例

44中断系统

441中断基本概念

442中断响应及处理过程

443中断程序举例

第5章单片机C51程序设计基础

51程序设计语言概述

511汇编语言

512C51语言

52C51标识符和关键字

521标识符

522关键字

53C51基本数据类型和运算符

531基本数据类型

532运算符

54数组

541一维数组

542多维数组

543字符数组

55指针

551指针与地址

552指针变量的定义

553指针变量引用

554数组的指针

555函数的指针

556指针数组

56结构体和联合体

561结构体概念和定义

562结构体的引用

563联合体概念和定义

564联合体的引用

565枚举

57型定义和预处理

571类型定义

572预处理

58语句和程序设计基本结构

581语句

582顺序结构

583选择结构

584循环结构

59函数

591函数定义

592函数调用

593中断服务函数

594局部变量与全局变量

595变量的存储种类

第6章典型外围接口设计

61键盘与单片机接口设计

611独立式键盘

612行列式键盘

62显示器接口

621LED显示器

622LED显示器接口实例

623LCD显示器

624LCD显示器接口实例

63显示接口芯片MAX8279

6318279内部结构及基本工作原理

6328279引脚功能

6338279工作方式

6348279命令字

6358279状态字

6368279应用举例

64D/A/AD芯片与单片机接口设计

641D/A转换接口电路

642A/D转换接口电路

第7章80C51单片机系统扩展

7180C51系统扩展概述

71180C:51最小应用系统

712片外总线结构

713片选

714地址锁存

715扩展存储器时应考虑的几个问题

72外部存储器扩展

721程序存储器的扩展

722数据存储器的扩展

723多片存储器的扩展

73并行I/O接口的扩展

731简单并行I/O接口扩展

7328255A可编程并行I/0接口扩展

74串行接口的扩展

7418251串行口扩展芯片

742825l应用实例

第8章80C51单片机应用系统的抗干扰技术

81可靠性与抗干扰技术概述

811干扰窜入单片机系统的主要途径

812干扰形成的基本要素

813干扰的耦合方式

82硬件抗干扰技术

821抑制干扰源

822切断干扰传播路径

823提高敏感器件的抗干扰性能

824其他常用抗干扰措施

83软件抗干扰技术

831指令冗余

832软件“陷阱”

833软件“看门狗”技术

834设置程序运行标志,拦截“跑飞”程序

第9章ProteIDXP电路板设计软件

第10章KeilC51单片机开发软件入门

第11章基于80C51的计量泵流量控制系统设计

第12章80C51单片机在电液位置伺服系统上的应用

附录AMCS-51指令表

附录B

TEMP DATA 30H ;定义一个临时数据

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN: MOV DPTR,#NUMB ;将数据存放在表中

MOV R3,#6

MOV R4,#0

LOOP: MOV A,R4

MOVC A,@A+DPTR ;从表中取数

MOV TEMP,A ;将数据放入temp,此时

;第一个数的低位在temp的低三位

INC R4

MOV A,R4

MOVC A,@A+DPTR ;从表中取下一个数据

RR A

RR A

RR A

RR A ;循环移位,将这个数据的

;有效三位放到一个byte的456bit位

ORL A,TEMP ;生成符合数据

MOV P0,A ;将数据放到p0口,其中P00~P02接一个

;译码器,P04~P06接另一个译码器

INC R4

MOV R7,#0FFH

BACK: MOV R6,#0FFH

DJNZ R6,$

DJNZ R7,BACK ;产生延时,具体时间需要

;结合自己单片机的机械周期进行改动

DJNZ R3,LOOP

SJMP MAIN

NUMB:

DB 00H,0AH,00H,0AH,00H,0AH,00H,04H,00H,04H,00H,04H

END

unsigned

char

n;

sbit

gate1=p1^0;

sbit

gate2=p1^1;

main()

{

n=0;

th1=0xff;

tl1=0x05;

//定时器250us产生一次中断

mod

=

0x10;

//定时器1工作于模式1,(用工作于模式2也可以,而且更

简便)

tr1=1;

//使能定时器1

et0=1;

//开中断

ea=1;

//开全局中断

while(1)

{;}

}

void

timer(void)

interrupt

3

{

th1=0xff;

tl1=0x05;

//定时器250us产生一次中断

gate2=!gate2;

//产生500us方波

n++;

if(n==4)

{

n=0;

gate1=!gate1;

//产生2ms方波

}

}

以上就是关于用8051单片机设计一数字式温度计 的电路图 有程序的最好 谢了全部的内容,包括:用8051单片机设计一数字式温度计 的电路图 有程序的最好 谢了、80C51单片机原理、开发与应用实例的目录_80c51单片机内部结构的组成、关于一个8051单片机的编程~求大神指导!!跪求!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9985762.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存