历史上的今天
今天是:2024年11月14日(星期四)
2019年11月14日 | ds18b20 温度模块串口显示简单代码
2019-11-14 来源:eefocus
今天晚上没事干编了一个极简的一个小程序,虽然简单但是还是很稳定的,连接也很简单,用最小系统板p0.0口接上ds18b20模块就可以了 串口助手显示选9600波特率 实物连接,其实就一根线
#include
#include
#include
#include "DS18B20.h"
#define OSC 11059200 //晶振频率
#define BAUDRATE 9600 //波特率
void main(void)
{
unsigned int i;
unsigned char tmph,tmpl;
Temp t;
unsigned char strTemp[8]; //显示到屏幕的温度数据
//开背光
TMOD = 0x21; //选择方式2作为波特率发生
SCON = 0x50; //串口方式1,允许中断
PCON |= 0x80; //SMOD=1
TL1 = 256 -(OSC/12/16/BAUDRATE);
TH1 = 256 -(OSC/12/16/BAUDRATE);
TR1 = 1; //启动定时器
TI = 1; //TI有效
//检测DS18B20温度传感器是否存在并复位传感器
if(DSReset())
printf("rTemp sensor ResetOK!");
else printf("rTemp Sensor Notready!");
while(1){
DSReset(); //复位传感器
Delay(1);
DSWriteByte(SkipROM); //跳读 省时
DSWriteByte(StartConvert); //温度转换
for(i=0;i<40000;i++);
DSReset();
Delay(1);
DSWriteByte(SkipROM);
DSWriteByte(ReadMemory); //读RAM程序
tmpl = DSReadByte();
tmph = DSReadByte();
printf("rnTemperature code HI=%02bX,LO=%02bX ",tmph,tmpl);
DSReadTemp(&t);
//准备输出到显示屏的数据
strTemp[0]=t.z/10+0x30; //十位
strTemp[1]=t.z%10+0x30; //个位
strTemp[2]='.'; //小数点
strTemp[3]=t.x/1000+0x30; //十分位
strTemp[4]=(t.x/100)%10+0x30; //百分位
strTemp[5]=(t.x/10)%10+0x30;//千分位
strTemp[6]=t.x%10+0x30; //万分位
strTemp[7]='C';
if(t.z>=30)
printf("nWarning!!!Temperature= %d.%04d ",t.z,t.x) ; //大于30度温度警告
else
printf("rnTemperature = %d.%04d",t.z,t.x);
}
}

史海拾趣
|
关于这个移植到问题好像pm了版主好多次,于是我决定还是发帖一记吧,谢谢之前daichen版主的帮助的。但还有问题。 移植完毕后,在测试OSStartHighRdy函数是否成功时,出现很多警告信息: 1)单步调试进入OS_CORE.C中的指令ptcb = OSTCBFreeList;&n ...… 查看全部问答> |
|
很多朋友都在学习单片机或是想学单片机,但在看了一些资料后,要么感到不知道学的什么,要么找不到下一步的学习方法,这都很正常,因为单片机的学习是一项综全性知识的结果。那么怎样学习单片机,怎么样学好单片机是我们关心的,通过我本人的学习过 ...… 查看全部问答> |
|
关于c++ 研发mobile手机outlook电子邮件的研发 关于c++ 研发mobile手机outlook电子邮件的研发 1,如何实现选择mail帐号 2,发送指定邮件的功能 以下是我的代码,能把相关信息插入到邮件,但没有发信人的帐号选择.这个功能如何实现? 代码如下: BOOL LanchSymtemEmailEditor(TCHAR *TP ...… 查看全部问答> |
|
关于ce6下6410平台矩阵式键盘驱动中的几点疑问 目前在看键盘驱动,不过其中有几个地方看的不太明白 希望各位大师帮忙解答一下: 1.在中断处理线程中irq = IRQ_KEYPAD;查了一下#define IRQ_KEYPAD 32,此处是系统规定好的,还是?另外 ...… 查看全部问答> |
|
当EBOOT正常时, 部分显示信息如下: Download BIN file information: ----------------------------------------------------- [0]: Base Address=0x80038000 Length=0x19f40 ------------------------------------------------ ...… 查看全部问答> |
|
1、板子情况: 下面这个帖子是刚收到PCB时发的, https://bbs.eeworld.com.cn/thread-330579-1-1.html 尺寸:10cm x 35mm 2、板上资源: 见下图。 为了尽量使用PCB面积,除了用作IC试验外,加了LCD转接部分,因为好多人做 ...… 查看全部问答> |
|
设计一个秒表,分辨率为0.01s,分三个位,分钟位,秒位,毫秒位,前两个是六十进制,后一个是一百进制,写四个文件,一个分频文件,一个10进制计数器,一个六进制计数器,一个数码管的显示文件,实验要用到两个频率,一个时钟频率,产生0.01s的时钟 ...… 查看全部问答> |




