我现在写了DS18B20的c程序还有用定时器输出的PWM波程序,用数码管显示温度的,但是把它们组合在一起不行

把他们组合到一起的时候就不能正常显示温度,哪位大侠知道是怎么回事。。。

我告诉你为什么:
因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。要解决此问题建议你采用带硬件PWM的MCU,或者将18B20通讯代码放在中断服务程序内部,如果采用后一种方式,PWM计时时间请算上18B20通讯的时间。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-26
这是一定不行的,定时器写的pwm是会破坏18b20的时序的;
如果时间允许序的话,即pwm高(低)电平时间大于读写18b20的时间;我建议你在每个pwm的高(低)电平的时候进行18b20的操作;
若时间不允许的话,那么只能在定时器中加上18b20的读取时间了,这样将会很麻烦;
以上仅供参考。
希望你早日解决问题,谢谢
第2个回答  2012-03-25
那一定是你程序调用的时候出了问题,程序不知道跑哪里执行了。~

我现在写了DS18B20的c程序还有用定时器输出的PWM波程序,用数码管显示...
DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。要解决此问题建议你采用带硬件PWM的MCU,或者将18B20通讯代码放在中断服务程序内部,如果采用后一种方式,PWM计时时间请算上18B20通讯的时间。

DS18B20测温C程序:数码管显示不随温度变化,且不正确,求高手解答,万分感 ...
在mian函数while(reset())的下一行加上DQ=1;(拉高电平)。

用单片机做温度检测系统 论文,
用DS18B20做的电子温度计,非常简单。include <reg51.h> include\\"AscLed.h\\"include <intrins.h> include <stdio.h> \/\/ define Seck (500\/TK) \/\/1秒中的主程序的系数 define OffLed (Seck*5*60) \/\/自动关机的时间5分钟!\/\/ if (FHz==0)define NOP_2uS_nop_()else defin...

51单片机温度传感器ds18b20、lcd1602液晶C程序
int get_temp_1(void);\/\/声明18B20读入温度函数 void delay(unsigned int x);\/\/声明延时函数 void read_ROM(void);\/\/声明18B20读ROM函数 int get_temp_d(void);\/\/声明获取温度函数 void ds_init(void);\/\/声明18B20初始化函数 void ds_getT(void);\/\/声明18B20获得温度显示值函数 \/*定义数码...

求单片机控制水温的C程序
TMOD|=0x01;\/\/定时器设置 TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;\/\/启动定时器 P1=0x00;count=0;while(1){ \/\/ str[2]=0x39;\/\/显示C符号 a=tab[temp\/10]; \/\/十位温度 b=tab[temp%10]; \/\/个位温度 if(flag_get==1) \/\/定时读取当前温度 { temp=ReadTemperature()-1; \/...

大神,我想用基于STC89C52单片机,用到定时器通过L298N调PWM控制一个电机...
我可以给你一个手动PWM程序供参考 STC单片机单\/双键控制LED亮度PWM调光程序 输出口为P3.7(PWM0) S2 S3为亮度调节(可用来调速)按钮 液晶屏LCD1602用来显示1-20亮度或速度级数,可以去掉 \/ include<STC12C54.H> define uchar unsigned char define uint unsigned int uchar vx=10;\/\/vx=10 在上...

谁能教教我怎么学单片机,先学什么,怎么入门?
学习51单片机的IO模块,使用IO点灯(流水灯)、控制数码管、控制8*8点阵模块、按键输入。 学习51单片机的中断模块,先从最简单的外部中断,使用中断的方式识别按键事件。 学习51单片机的定时器模块,实现1s定时,实现简单的数字秒表,实现IO口输出PWM波。 学习51单片机的串口模块,掌握串口电平标准,TTL、RS232、USB电平标准,...

单片机C语言程序设计实训100例:基于8051+Proteus仿真的目录
26 INT0及INT1中断计数633.27 TIMER0控制单只LED闪烁663.28 TIMER0控制流水灯683.29 TIMER0控制4只LED滚动闪烁703.30 T0控制LED实现二进制计数723.31 TIMER0与TIMER1控制条形LED 733.32 10s的秒表753.33 用计数器中断实现100以内的按键计数773.34 10 000s以内的计时程序783.35 定时器控制数码管...

新概念51单片机C语言教程的作品目录
2点亮第一个发光二极管2.3while语句2.4for语句及简单延时语句2.5Keil仿真及延时语句的精确计算2.6不带参数函数的写法及调用2.7带参数函数的写法及调用2.8利用C51库函数实现流水灯第2篇内外部资源操作篇3.1数码管显示原理3.2数码管静态显示3.3数码管动态显示3.4中断概念3.5单片机的定时器中断4....

单片机C语言程序设计实训100例:基于PIC+Proteus仿真的目录
19 用工作于同步计数方式的TMR1实现按键或脉冲计数3.20 用定时器设计的门铃3.21 报警器与旋转灯3.22 用工作于捕获方式的CCP1设计的频率计3.23 用工作于比较模式的CCP1控制音阶播放3.24 CCP1 PWM模式应用3.25 模拟比较器测试3.26 数码管显示两路A\/D转换结果3.27 EEPROM读写与数码管显示3.28...

相似回答