#include "C8051F410.h"
#include
#define uint unsigned int
#define uchar unsigned char
sbit DQ = P2^4 ;
void delay(unsigned int i)
{
while(i--);
}
Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay(176); //稍做延时
DQ = 0; //单片机将DQ拉低
delay(1760); //精确延时 大于 480us
DQ = 1; //拉高总线
delay(308);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay(440);
}
uchar ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay(88);
}
return(dat);
}
WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay(110);
DQ = 1;
dat>>=1;
}
}
uint ReadTemperature(void) //温度*10
{
uchar a=0;
uchar b=0;
uint temp=0;
uint t=0;
int temple; /*存放读取的温度值 将其除以16即为得到的值*/
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar(); //低8位
b=ReadOneChar(); //高8位
temp=b;
temp<<=8;
temp=temp|a;
temp&=0x07ff;
if( (b&0x08))
{
temple=~temp+1; //如果为负温则去除其补码
FWD=0; /*表示温度为负数*/
}
else
{
temple=temp;
FWD=1; /*表示温度为正数*/
}
t=temple*10/16;
//t = temp;
//t= t*625;
//t = t/1000;
return(t);
}
关键字:C8051F 18B20程序
引用地址:
基于C8051F的18B20程序
推荐阅读最新更新时间:2024-03-16 14:02
基于C8051F040多路浸水时刻记录电路模块化设计
针对某型航行器自沉系统中,需要掌握某合金材料在海水中因不同温度条件下的受腐蚀时间长短。采用模块化硬件设计,使用浸水传感器为检测单元、时钟芯片DS12887为计时模块;以C8051F040为微处理器和串行M25P80为存储模块设计浸水时间记录系统。外部数据通信采用CAN总线。通过实践证明,DS12887时钟能在掉电后正常运行,但时间长,需要新设定时间,以便准时记录。 在某型水下航行器自沉系统中,某合金材料在海水中一定时间内能正常工作,但正常时间过后会被海水腐蚀;从而实现该航行器的自沉功能。为此设计了该电路,用以测试铝铬合金材料在不同温度的多组时间信息。 1 系统硬件结构 基于C8051F040多路浸水时刻记录电路硬件部分由6
[单片机]
51单片机 8255 18b20 数码管显示温度C程序
#include reg52.h #include absacc.h #include intrins.h #define uint unsigned int #define uchar unsigned char #define PA 0x7cff //PA口 #define PB 0x7dff //PB口 #define con 0x7fff //控制字 sbit A8=P2^0; //地址线A0 sbit A9=P2^1; //地址线A1 sbit cs=P2^7; //片选 sbit wr=P3^6; //读端口 uint temp; uchar tplsb
[单片机]
基于C8051F020的假肢控制系统设计
假肢是人体缺损肢体的替代物,用以弥补缺损肢体的形状和功能。本文针对失去整个手臂的情况,设计出一种仿人手臂形假肢的控制系统。使用者可以补偿部分缺失的功能,达到生活自理甚至于可以从事基本劳动,减少身心痛苦,同时也相应地解放了护理工作用。在设计中,采用C8051F020 单片机作为主控制器,并通过CPLD(Complex Programmable Logic Device)完成对各个关节控制量的检测以及凌阳61单片机实现语音控制功能。 1 机器人假肢结构 多自由度机器人型假肢(上肢)拥有6个自由度,其结构原理图如图1所示。 2 假肢控制系统的硬件设计 2.1 控制器的工作原理 控制系统原理框图如图2所示,主要由控制、驱动、被
[工业控制]
高速误码测试系统中的C8051F005运用
引 言 随着通信技术的不断发展,通信系统信号处理越来越快。在这种情况下,对于高速通信系统性能的检验,就需要高速误码测试仪。目前市而上已有多种误码测试仪。国内产品的信号处理速度较低,而国外产品的功能虽然比较完善,处理速度很高,但其价格也相对较高。本文根据Vitesse公司的VSC8228芯片特点,利用C8051F005单片机设计出一种价廉的高速误码测试仪。下面将对其软硬件设计,特别是C8051F005与上位机的串口通信以及与VSC8228的SPI通信进行详细探讨。 1 误码测试系统概述 Cygnal公司的单片机C8051F005具有高速8051微控制器内核,速度可达25 MIPS,指令为流水线指令结构,70%的指
[测试测量]
基于C8051F020单片机的数据采集电路设计
数据采集是为了对温度、压力、流量、速度、位移、光强度、声音等物理量进行在线测量和控制,通过传感器把上述物理量转换成模拟物理量的电信号。然后将模拟电信号经过处理并转换成计算机能识别的数字量,送入计算机处理、存储、传输和显示。 在操纵杆控制器的工作过程中,需要对操纵杆X轴和Y轴输出的2路电压信号进行A/D转换,转换后的数据范围要求在-1 500~1 500,采样精度为12位。另外还需要对采集后的数据进行计算,并通过串口与两自由度光电稳定平台进行通信,实现对稳定平台的功能控制,通信周期为80 ms。出于成本的考虑,没有采用传统专用A/D芯片+单片机的设计模式,只用了一片C8051F020单片机实现了上述功能。 1 芯片简介 C
[单片机]
基于C8051F的无线网络的汽车测试系统设计
汽车试验是发现汽车设计开发中各种问题的重要手段,依据试验结果能对汽车各种性能做出客观的评价。作为汽车工业的基础工程之一,汽车试验在汽车工业的整体发展中发挥了重要作用。汽车性能测试系统是汽车试验工程的关键组成部分,它是由若干相互联系、相互作用的传感器和仪器设备等元件,为实现对汽车各项性能的测试而组成的有机整体,汽车测试系统的性能往往对整个汽车试验的效用产生重要影响。现有的汽车测试系统多采用有线连接,该方式存在2个弊端:1)汽车试验需在大型专用试验场或典型地域等恶劣环境中进行,现场布线任务繁琐且易出错;2)一些汽车试验如蛇形试验具有高危险性,对能够减少试验损失的测试系统更为重要。该系统以Cygnal公司的C8051F020单片机为控制核
[单片机]
基于nRF905模块和C8051F单片机的无线收发系统设计
前言 在闭环钻井系统中,要求实时地把井下的信息传递到地面,以实施人工监控。通常情况下该任务由MWD中泥浆压力脉冲发生器来完成。当使用井下动力钻具组合时,近钻头传感器和MWD被动力钻具隔开。传感器无法用线缆与MWD连接,因此要把传感器的信息传送给MWD只能通过无线通信的方法。 本文设计了由C8051F0606单片机和nRF905无线射频器收发组成的一种无线数据传输系统的方案。该系统由发射和接收模块组成,发射模块主要将要发送的数据经单片机处理后,通过nRF905发送出去;在接收模块中,nRF905则将数据正确接收后通过上位机界面显示出来,从而实现短距离井下的无线通信。 无线收发系统硬件设计 nRF905模
[单片机]
C8051FXXX单片机FLASH程序的自动升级
作者Email: wolfman6353@sina.com
引言:
C8051FXXX系列高速SOC单片机是由美国Cygnal公司开发的完全集成的混合信号系统级芯片,具有与8051兼容的微处理器内核,内部集成FLASH程序存储器,具有在系统重新编程能力,以C8051F020为例,内部集成64K的FLASH程序存储器。在系统控制软件的开发调试阶段,可用集成开发环境来下载及测试系统,但当将C8051F020目标系统集成到产品后,则由于操作系统及软硬件接口不一样等等原因,不能在最终产品中用集成开发环境来下载FLASH程序,故产品到了用户处之后,如要再进行FLASH程序的更新,则必须更换相应的集成电路印刷板,造成很多麻烦及不可靠因素。
[嵌入式]