笔者用AT89C2051单片机和DS18B20写了一个3位的电子温度计,显示范围0-125度,不容易啊,学习了近一个月终于会自己写点程序了!现在写写时钟、流水灯什么的基本上我是没什么问题了,都能在单片机上正常运行!不罗嗦,下面是C程序,附上电路图:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit GW=P3^0;
sbit SW=P3^1;
sbit BW=P3^2;
sbit DQ=P3^3;
code uchar NUM[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint temp_value;
void delay(uchar a)
{
while(a--);
}
void init_DS18B20()
{
uchar b=0;
DQ=1;
delay(8);
DQ=0;
delay(100);
DQ=1;
delay(14);
b=DQ;
delay(20);
}
uchar read(void)
{
uint i, dat=0;
for(i=8;i>0;i--)
{
DQ=1;
_nop_();_nop_();
dat>>=1;
DQ=0;
_nop_();_nop_();_nop_();_nop_();
DQ=1;
_nop_();_nop_();_nop_();_nop_();
if(DQ)
dat|=0x80;
delay(12);
}
DQ=1;
return(dat);
}
void write(uchar dat)
{
uchar d=0;
for(d=8;d>0;d--)
{
DQ=1;
_nop_();_nop_();
DQ=0;
delay(1);
DQ=dat&0x01;
delay(12);
dat=dat/2;
}
DQ=1;
delay(2);
}
void ReadTemp()
{
uint a=0;
uint b=0;
init_DS18B20();
write(0xCC);
write(0x44);
delay(100);
init_DS18B20();
write(0xCC);
write(0xBE);
delay(100);
a=read();
b=read();
temp_value=((b<<8)|a)*0.0625;
}
void display (uchar num0,uchar num1,uchar num2)
{
P1=NUM[num0];
GW=0;
delay(200);
GW=1;
P1=NUM[num1];
SW=0;
delay(200);
SW=1;
P1=NUM[num2];
BW=0;
delay(200);
BW=1;
}
main()
{
uint a ,b,c;
while(1)
{
ReadTemp();
a=temp_value%10;
b=temp_value/10%10;
c=temp_value/100%10;
display(a,b,c);
}
}
完整版本的源代码下载:
http://www.51hei.com/f/ds7865k.rar
下面是硬件原理图:
关键字:AT89C2051 电子温度计
引用地址:
自己写的AT89C2051电子温度计
推荐阅读最新更新时间:2024-03-16 14:24
AT89C2051单片机的晶闸管触发电路设计
自晶闸管被用作开关元件以来,其触发电路经过了晶闸管分离元件阶段和集成电路阶段后进入了 单片机 嵌入阶段。使用以单片机为核心的触发电路虽然避免了前两个阶段元件多、故障率高和低智能化的缺点,但可靠性、迅速性和抗干扰性还存在诸多不足。 本设计详细介绍了一种基于 AT89C2051 单片机 的晶闸管触发电路,具有高集成度、智能化、体积小、安全、迅速、可靠稳定等优点,今后必将被广泛应用。文中以晶闸管投切电容器为例来详细说明触发电路的工作原理。 1 触发电路的硬件设计 硬件电路以ATMEL公司的AT89C2051单片机为核心,包括晶闸管过零检测电路、控制器投切命令电路、脉冲隔离放大电路等几部分组成,硬件框图如图1所示。 2 触发电
[电源管理]
DS18B20和AT89C2051的家用温度测量器设计
一、设计概况
本制作采用USB口作为供电端口,用DS18B20温度传感器进行温度信息采集,用AT89C2051单片机进行控制,采用四位共阳数码管显示,从而实现对温度的测量显示(系统框图如图1所示)。本设计可培养学生对单片机学习的兴趣,提高其制作与编程能力。
图1 系统框图
二、电路原理
采用PROteUS仿真软件进行原理图设计与程序仿真。电路如图2所示。
图2 电路图
1、电源
采用USB口供电,可将USB适配器接人电路板的USB口或直接接计算机USB口。这样,既节省了资源,又能够获得较为理想的工作电压。USB口的外形及电源口定义如图3所示。
[电源管理]
用AT89C2051设计超声波测距仪
摘要: 本文介绍了AT89C2051单片机的性能和特点,并在分析了超声波测距原理的基本上,指出了设计测距仪的思路和所需考虑的问题,给出了实现超声波测距方案的软、硬件设计系统框图。该设计系统经校正后,其测量精度可达0.1米。
关键词: 超声波 换能器 测距 AT89C2051
超声波测距主要应用于倒车雷达、建筑施工工地以及一些工业现场,例如:液位、井深、管道长度等场合。目前国内一般使用专用集成电路设计超声波测距仪,但是专用集成电路的成本很高,并且没有显示,操作使用很不方便。本文介绍一种以AT89C2051或GSM97C2051单片机为核心的低成本、高精度、微型化数字显示超声波
[应用]
浅析基于DS18B20与AT89C2051的温度测量器设计方案
一、设计概况 本制作采用USB口作为供电端口,用DS18B20温度传感器进行温度信息采集,用AT89C2051单片机进行控制,采用四位共阳数码管显示,从而实现对温度的测量显示(系统框图如图1所示)。本设计可培养学生对单片机学习的兴趣,提高其制作与编程能力。 图1 系统框图 二、电路原理 采用PROteUS仿真软件进行原理图设计与程序仿真。电路如图2所示。 图2 电路图 1、电源 采用USB口供电,可将USB适配器接人电路板的USB口或直接接计算机USB口。这样,既节省了资源,又能够获得较为理想的工作电压。USB口的外形及电源口定义如图3所示。 图3 USB口的外形及电源口定义 2、温度
[单片机]
一种无线智能报警系统
随着物质生活的不断改善,人们对人身和财产的安全也更加关注,期盼着能够扮演看家狗作用的智能报警系统的诞生。本文介绍的无线智能报警系统能及时发现监控场所即将发生的紧急情况(盗窃、火灾等)并迅速拨打报警电话,以便及时采取有效措施,最大限度地降低给生命和财产造成的伤害和损失。本系统主要采用了单片机程序控制、无线数据传输、双音多频信号产生、E2PROM读写、电话摘机、红外传感、震动传感、烟雾传感及单片机间串行异步通讯等技术。由于采用无线传输手段,系统隐蔽性好,生存能力强,更重要的是它避免了有线报警系统安装时需要穿墙架线因而装拆麻烦且破坏已有合理结构的弊端,故具有极好的应用前景。 1 系统总体结构 无线智能报警系统由系统告警单元和系统中央处
[单片机]
自制单片机之十二……AT89C2051烧写器的制做与调试
现在都用S52了,还用C2051干嘛!价格也差不多。但是C2051的体积要比S51、S52小很多,而且引脚只有20只,在一些简单的控制中,这些引脚已足够了,小的体积更具有优势些。但目前好像还没有支持在线编程(ISP)的S2051。因此试着做个C2051的编程器,更主要的是与大家分享一下在电路制做过程中硬件、软件的除错技巧,尽量做到一次成功的经验和方法。 在网上找了一番,图很多,大同小异。上一张最通用的图: iframe id="iframe_0.9190095926169306" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://
[单片机]
基于AT89C2051倒车防撞超声波报警系统的设计方案
本方案所设计的倒车防撞报警系统采用软、硬件结合的方法,具有模块化和多用化的特点。设计中介绍了超声波检测的发展及基本原理,阐述了超声波传感器的原理及特性。对于系统的一些主要参数进行了讨论,并且在介绍超声波测距系统功能的基础上,提出了系统设计的总体构成,本方案的提出将对汽车主动防撞乃至自动驾驶产生,给驾驶者提供一个倒车的操作指令。 1.引言 众所周知,要检测两头之间是否有障碍物,一般的做法是一头发射一个信号,在接收处判断是否有信号接收到,若有信号接收到,说明中间没有障碍物;若接收不到,则说明有障碍物。然而在汽车倒车防撞报警系统的设计中,由于汽车是一个移动的物体,不可能在某一具体的位置上安装接收或发射装置,这就决定了系统
[单片机]
一种应用于足浴器的温控器的研制
足浴器的设计难点在于成本控制和温度控制系统的设计。近年来,开关电源技术的逐渐成熟,为小功率电源供电提供了一个高效率且低成本的方案,摒弃了传统的变压器降压、整流、三端稳压的低效率供电方式。而通过软件算法完善,例如PID算法的运用,可减少部分硬件开销,降低成本及系统复杂度,提高系统的稳定性。设计结合以上技术,着眼于成本最小化,性能最大化,实现了LED温度显示,双按键目标温度调节,高精度温控功能。由于主控芯片AT89C2051只有两组共16个IO引脚,2 kB的内存,因此需合理运用IO资源,程序设计简洁,合理分配内存空间。 1 系统结构设计 系统由供电、采样、按键、显示及单片机部分组成。 传感器负责采集温度值,传递给MC
[单片机]