萬用電路板

--Do It Yourself

« LED3216测试版电子钟重要更新!(一处严重Bug)有关晶振不起振问题的讨论 »

DS18B20温度测量、报警系统的设计【图】

        最近帮别人设计了一下毕业设计,就是温度检测、报警系统,具体的题目就不贴出来了。公开这个设计的原因也在于最近有很多人都在问我类似的课题,说明这个课题之普遍。其实以前就给朋友做过一个DS18B20温度计,大同小异,这个是升级版而已。当然,加上了报警系统就更加实用了。现在又重新制作了硬件。

        功能简介:温度测量范围0~99.9摄氏度,可设置上限报警温度、下限报警温度(即高于上限值或者低于下限值时蜂鸣器报警),默认上限报警温度为38℃、默认下限报警温度为5℃。报警值可设置范围:最低上限报警值等于当前下限报警值,最高下限报警值等于当前上限报警值。将下限报警值调为0时为关闭下限报警功能。他的毕业设计比较简单,以上这些功能就已经超额完成基本要求了。

视频演示:

硬件设计:

        电源电压VCC为5V,可以焊一只USB座到板上,然后用相应的USB线连接至电脑,通过电脑USB口供电;DS18B20也可以根据需要用屏蔽电缆引出来。K1为进入/退出设置键;K2为增加键;K3为减少键。电路原理图点击放大。

Hex文件供下载:DS18B20.txt(右键目标另存为,需要将扩展名txt改为hex)

软件设计:

        有两个文件,DS18B20.cDS18B20.h,将这两个文件添加到工程里即可。

DS18B20.c:

/******************************************************************
程序名称:DS18B20温度测量、报警系统
简要说明:DS18B20温度计,温度测量范围0~99.9摄氏度
    可设置上限报警温度、下限报警温度
    即高于上限值或者低于下限值时蜂鸣器报警
    默认上限报警温度为38℃、默认下限报警温度为5℃
    报警值可设置范围:最低上限报警值等于当前下限报警值
    最高下限报警值等于当前上限报警值
    将下限报警值调为0时为关闭下限报警功能   
编    写:JiangX.net
最后更新:09/04/16晚于寝室
******************************************************************/
#include <AT89X52.h>
#include "DS18B20.h"   
#define uint unsigned int
#define uchar unsigned char   //宏定义
#define SET  P3_1    //定义调整键
#define DEC  P3_2    //定义减少键
#define ADD  P3_3    //定义增加键
#define BEEP P3_7    //定义蜂鸣器
bit shanshuo_st;    //闪烁间隔标志
bit beep_st;     //蜂鸣器间隔标志
sbit DIAN = P2^7;        //小数点
uchar x=0;      //计数器
signed char m;     //温度值全局变量
uchar n;      //温度值全局变量
uchar set_st=0;     //状态标志
signed char shangxian=38;  //上限报警温度,默认值为38
signed char xiaxian=5;   //下限报警温度,默认值为38
uchar code  LEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

/*****延时子程序*****/
void Delay(uint num)
{
 while( --num );
}

/*****初始化定时器0*****/
void InitTimer(void)
{
  TMOD=0x1;
  TH0=0x3c;
  TL0=0xb0;     //50ms(晶振12M)
}

/*****定时器0中断服务程序*****/
void timer0(void) interrupt 1
{
 TH0=0x3c;
 TL0=0xb0;
 x++;
}

/*****外部中断0服务程序*****/
void int0(void) interrupt 0
{
 
 EX0=0;      //关外部中断0
 if(DEC==0&&set_st==1)
 {
  shangxian--;
  if(shangxian<xiaxian)shangxian=xiaxian;
 }
 else if(DEC==0&&set_st==2)
 {
  xiaxian--;
  if(xiaxian<0)xiaxian=0;
 }
}

/*****外部中断1服务程序*****/
void int1(void) interrupt 2
{
 EX1=0;      //关外部中断1
 if(ADD==0&&set_st==1)
 {
  shangxian++;
  if(shangxian>99)shangxian=99;
 }
 else if(ADD==0&&set_st==2)
 {
  xiaxian++;
  if(xiaxian>shangxian)xiaxian=shangxian;
 } 
}

/*****读取温度*****/
void check_wendu(void)
{
 uint a,b,c;
 c=ReadTemperature()-5;  //获取温度值并减去DS18B20的温漂误差
 a=c/100;     //计算得到十位数字
 b=c/10-a*10;    //计算得到个位数字
 m=c/10;      //计算得到整数位
 n=c-a*100-b*10;    //计算得到小数位
 if(m<0){m=0;n=0;}   //设置温度显示上限
 if(m>99){m=99;n=9;}   //设置温度显示上限    
}

/*****显示开机初始化等待画面*****/
Disp_init()    
{
 P2 = 0xbf;      //显示-
 P1 = 0xf7;
 Delay(200);
 P1 = 0xfb;
 Delay(200);   
 P1 = 0xfd;
 Delay(200);
 P1 = 0xfe;
 Delay(200);

 P1 = 0xff;         //关闭显示
}

/*****显示温度子程序*****/
Disp_Temperature()     //显示温度
{
 P2 =0xc6;      //显示C
 P1 = 0xf7;
 Delay(300);

 P2 =LEDData[n];    //显示个位
 P1 = 0xfb;
 Delay(300);

 P2 =LEDData[m%10];    //显示十位
 DIAN = 0;         //显示小数点
 P1 = 0xfd;
 Delay(300);

 P2 =LEDData[m/10];    //显示百位
 P1 = 0xfe;
 Delay(300);

 P1 = 0xff;         //关闭显示
}

/*****显示报警温度子程序*****/
Disp_alarm(uchar baojing)
{
 P2 =0xc6;      //显示C
 P1 = 0xf7;
 Delay(200);

 P2 =LEDData[baojing%10]; //显示十位
 P1 = 0xfb;
 Delay(200);

 P2 =LEDData[baojing/10]; //显示百位
 P1 = 0xfd;
 Delay(200);

 if(set_st==1)P2 =0x89;
 else if(set_st==2)P2 =0xc7; //上限H、下限L标示
 P1 = 0xfe;
 Delay(200);

 P1 = 0xff;         //关闭显示
}

/*****报警子程序*****/
void Alarm()
{
 if(x>=10){beep_st=~beep_st;x=0;}
 if((m>=shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1))BEEP=0;
 else BEEP=1;
}

/*****主函数*****/
void main(void)
{
    uint z;
 InitTimer();    //初始化定时器
 EA=1;      //全局中断开关
 TR0=1;
 ET0=1;      //开启定时器0
 IT0=1;        
 IT1=1;
 check_wendu();
 check_wendu();
 for(z=0;z<300;z++)
 {
  Disp_init();        
  }
 while(1)
  {
  if(SET==0)
  {
   Delay(2000);
   do{}while(SET==0);
   set_st++;x=0;shanshuo_st=1;
   if(set_st>2)set_st=0;
  }
  if(set_st==0)
  {
   EX0=0;    //关闭外部中断0
   EX1=0;    //关闭外部中断1
    check_wendu();
      Disp_Temperature();
   Alarm();   //报警检测
  }
  else if(set_st==1)
  {
   BEEP=1;    //关闭蜂鸣器
   EX0=1;    //开启外部中断0
   EX1=1;    //开启外部中断1
   if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
   if(shanshuo_st) {Disp_alarm(shangxian);}
  }
  else if(set_st==2)
  {
   BEEP=1;    //关闭蜂鸣器
   EX0=1;    //开启外部中断0
   EX1=1;    //开启外部中断1
   if(x>=10){shanshuo_st=~shanshuo_st;x=0;}
   if(shanshuo_st) {Disp_alarm(xiaxian);}
  }
    }
}

/*****END*****/

DS18B20.h:

#include <AT89X52.h>
#define  DQ  P3_6     //定义DS18B20总线I/O

/*****延时子程序*****/
void Delay_DS18B20(int num)
{
  while(num--) ;
}

/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
  unsigned char x=0;
  DQ = 1;         //DQ复位
  Delay_DS18B20(8);    //稍做延时
  DQ = 0;         //单片机将DQ拉低
  Delay_DS18B20(80);   //精确延时,大于480us
  DQ = 1;         //拉高总线
  Delay_DS18B20(14);
  x = DQ;           //稍做延时后,如果x=0则初始化成功,x=1则初始化失败
  Delay_DS18B20(20);
}

/*****读一个字节*****/
unsigned char 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_DS18B20(4);
  }
  return(dat);
}

/*****写一个字节*****/
void WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
    DQ = 0;
    DQ = dat&0x01;
    Delay_DS18B20(5);
    DQ = 1;
    dat>>=1;
  }
}

/*****读取温度*****/
unsigned int ReadTemperature(void)
{
  unsigned char a=0;
  unsigned char b=0;
  unsigned int t=0;
  float tt=0;
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳过读序号列号的操作
  WriteOneChar(0x44);  //启动温度转换
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳过读序号列号的操作
  WriteOneChar(0xBE);  //读取温度寄存器
  a=ReadOneChar();     //读低8位
  b=ReadOneChar();    //读高8位
  t=b;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  t= tt*10+0.5;     //放大10倍输出并四舍五入
  return(t);
}

/*****END*****/

原创作品如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]

  • quote 3.我不懂C语言
  • 你好:我不懂C语言,请问若在P3.4 P3.5接两个继电器作为上下限报警输出时,程序应如何修改?
  • 2009-4-22 10:30:23 回复该留言
  • quote 4.ANGEL
  • 楼主 你好
    我想做个温湿度测量的 也就是增加个湿度显示 和 湿度上下限报警
    不知道 程序怎么写
    可以帮忙教导下不?????
  • 2009-4-22 12:34:26 回复该留言
  • quote 7.苏粤兴
  • 你的东西做的不错啊
    希望你能来我这看看有没有你喜欢的电子元器件
    http://shop57914185.taobao.com/
  • 2009-4-23 21:00:25 回复该留言
  • quote 12.hao
  • 楼主,你好!
    请问 4位LED是共阴,还是共阳啊?
  • 2009-5-1 11:03:57 回复该留言
  • quote 15.jiangx
  • 回复初学at89s52:理论上是要加1K上拉电阻的,但是因为I/O口默认为高电平,我又为了图简便就省去了上拉电阻,个人感觉也不成问题。
  • 2009-5-5 14:53:16 回复该留言
  • quote 16.proholy
  • 楼主 能把这两个文件DS18B20.c和DS18B20.h发给我吗 我邮箱proholy@sina.com 谢谢
  • 2009-5-7 10:25:59 回复该留言
  • quote 18.bcswan
  • 楼主 怎么我生成的HEX和你生成的不一样 是不是用的编译器不同 我用的是keil,还是编译器版本或者机器不同 产生的 HEX文件就不一样的
  • 2009-5-10 21:24:36 回复该留言
  • quote 19.初学者
  • 请问楼主,如果将该装置该成红外控制的,程序该如何修改,电路将做怎样的改动呢?
    请速回复,谢谢。
  • 2009-5-11 21:54:54 回复该留言
  • quote 20.jiangx
  • 回复bcswan:编译器版本不同不会影响hex文件的生成吧!如果现象不同说明另有原因。
    bcswan 于 2009-5-14 22:44:17 回复
    会是什么原因 你用的是什么编译器-
  • 2009-5-14 20:27:28 回复该留言
  • quote 21.jx656
  • 我改了一下,想仿制。但这里的P2口作为笔段码锁存器,我给他加了个7407作为笔段码驱动器,不知道行不?
    希望楼主回复一下啦,谢谢,
    单片机爱好者
    jiangx 于 2009-5-17 9:39:08 回复
    不需要搞那么麻烦的。
  • 2009-5-16 22:43:08 回复该留言
  • quote 22.jx656
  • 因为在LED动态显示电路中,为获得足够亮度,限流电阻小,LED瞬态电流打,一般不能省去笔段驱动器呀,那是理论是这么说的,但实际不知道怎样,请教楼主
  • 2009-5-16 22:45:45 回复该留言
  • quote 23.jiangx
  • 回复jx656:本电路中使用共阳数码管,段位由低电平点亮,此时选通三极管即成为驱动器。这也是使用共阳数码管的方便之处。
    实际效果很好。
  • 2009-5-17 9:36:38 回复该留言
  • quote 24.柯南
  • 您好!
    我什么都不懂,我把你上面的程序全部复制到keil中构造目标后显示:
    \TEXT1A.C(2):错误 C129:missing '';'' defore''.''
    目标没有产生
    望能给指点 我想用来学习,做一下这个温度控制实验,谢谢
    我的邮箱:zjz18@126.com
  • 2009-5-18 9:12:47 回复该留言
  • quote 25.jx656
  • 我的名字拼音也是jiangx,不知道是否跟你同名呢,呵呵
  • 2009-5-18 11:03:15 回复该留言
  • quote 26.yjuia
  • 请问楼主
    将ds18b20换成红外温度传感器行吗?
    行的话用会型号的传感器?
    希望楼主给于回复,谢谢!
  • 2009-5-19 6:12:37 回复该留言
  • quote 29.proholy
  • 楼主 麻烦你把毕业论文的电子文档发份给我好吗? 我邮箱 proholy@sina.com 谢谢 我现在没几天时间 就要交论文了很急 你那个题目和我的差不多.
    766 于 2009-5-27 16:43:18 回复
    能给我也发一份么?403026604@qq.com 谢谢了
  • 2009-5-21 11:56:13 回复该留言
  • quote 30.jiangx
  • 回复柯南:这是因为你从我网页上复制程序时漏了字符或者编辑器格式有别。
    建议先将程序复制到电脑的记事本上,再复制到编程软件的编辑框里。
  • 2009-5-21 17:50:12 回复该留言
  • quote 32.jiangx
  • 回复yjuia:你的想法很天真!红外温度计那又是一个完全不同的系统了!
  • 2009-5-21 17:52:34 回复该留言
  • quote 33.jiangx
  • 回复初学者:电路图中的数码管本身就画出了引脚号
  • 2009-5-21 18:04:13 回复该留言
  • quote 34.真棒
  • 楼主你的东西真不错,就是与电子竞赛相关的常用的少了点,比如控制电机,采集啊,一些小信号放大如何处理啊。。。总的来说很不错了 ,顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶!我的QQ452734122,看到加一下啊,可以请教你。。。
  • 2009-5-22 12:58:33 回复该留言
  • quote 35.jiangx
  • 回复真棒:谢谢你的建议,以后会发布一些相关资料
  • 2009-5-22 20:57:56 回复该留言
  • quote 37.chchg6176
  • 谢谢楼主的分享.
    好不容易按你的图纸做好了,
    可是我的怎么总只显示84.5度啊?
    (上午第一次接DS18B20时,把管脚接反过,有关系吗?)
    请指教,谢谢.
  • 2009-5-26 15:14:31 回复该留言
  • quote 39.liu666
  • 楼主。ISP下载口是单排的? 是不是需要要对应的下载线额? 郁闷诶。卡在程序烧录这了。 实验室只有QUARTUS软件的双排下载线。楼主。你怎么烧的程序额? 问题。小白了些。待回复
  • 2009-5-28 11:54:01 回复该留言
  • quote 41.jiangx
  • 回复liu666:实验室既然有下载线那就应该有开发板或编程器啊,你把芯片放在上面烧写好后再插在本装置上就OK了,本装置可以省去ISP下载接口。
  • 2009-5-28 16:02:11 回复该留言
  • quote 42.yatang
  • 我照着做了一下 怎么不行啊 检查很多遍了还不行 郁闷 还有那个100u的电容是接在哪的
  • 2009-5-30 15:05:40 回复该留言
  • quote 44.jiangx
  • 回复yatang:DS18B20不接上拉电阻也可以照常工作。
    你把你的现象说清楚一点,哪里不行?通电否?显示否?
    100uf电容接在电源两端。
    yatang 于 2009-5-31 0:15:42 回复
    100u的电容用来做什么的啊,必须要接吗 谢谢
    yatang 于 2009-5-31 0:54:32 回复
    通电了 数码管全亮 ds18b20很烫 蜂鸣器一直报警
  • 2009-5-30 15:23:01 回复该留言
  • quote 45.liu666
  • LZ :程序检测时。都显示未定义各管脚。还有EX1 EX0之类的都未定义。。能给传下你做好的工程么? Q:335845668
    liu666 于 2009-5-30 15:39:48 回复
    是不是芯片定义问题?开始还显示no wrong 但是hex就是出不来。然后再试时候全是参数管脚未定义额 LZ加下好友吧。QQ上面那个
  • 2009-5-30 15:29:33 回复该留言
  • quote 46.jiangx
  • 回复liu666:工程文件已上传至趣盘空间(http://jiangx.qupan.com/3572250.html),请下载。
    liu666 于 2009-5-30 22:16:33 回复
    谢谢。楼主好热心哈! 支持~ 问题解决了。可能是KEIL安装问题。回去在自己电脑上可以生成哦。郁闷呢。一下午就调出来一次。。剩下的一直是接触不问题。数值乱跳。蜂鸣器乱叫。暂时不搞了。先准备答辩了。悲剧诶。 谢谢楼主。
  • 2009-5-30 15:55:35 回复该留言
  • quote 47.liu666
  • 楼主,我转做proteus仿真了。但是最后LED还是显示不出来。各管脚处的高低电平变化正常,错误信息是CPU处理不过来。是程序数据采集过快么?求教在哪方面修改程序能降低采集效率。
  • 2009-5-31 14:35:02 回复该留言
  • quote 49.jiangx
  • 回复liu666:不存在次问题。我从来不用Proteus,特别是有其他芯片的时候(比如DS18B20),我只用Proteus做流水灯之类的实验。
  • 2009-6-1 9:06:18 回复该留言
  • quote 51.binwe
  • 问下 怎么不换元器件 靠修改程序 怎么加入时钟功能
  • 2009-6-1 20:56:25 回复该留言
  • quote 52.喵喵
  • 请问,电路做好之后数码管居然没亮起来。。。单片机工作在5V左右,DS18B20两端电压也正常,数码管也没坏啊。。。请问是什么原因。。。。。
  • 2009-6-3 21:03:35 回复该留言
  • quote 53.jiangx
  • 回复喵喵:程序下载正常吗?你是怎么判断数码管的好坏的?另外,共阴数码管和共阳数码你有区分吗?
  • 2009-6-3 22:08:08 回复该留言
  • quote 54.jx656
  • 做出来了,显示正确,后来但不稳定。

    一开始还可以,演示了两次都成功。但第三次开始不行了,插上电源只有显示开机初始化等待画面,然后什么都没有,有时又出现乱码,有时又是一瞬间的显示温度出来,很快又没有了,总之是不稳定。不知道怎么会事,也没改动过什么。
    请楼主赐教
  • 2009-6-5 23:23:23 回复该留言
  • quote 55.jiangx
  • 回复jx656:检查晶振是否虚焊,导致接触不良;否则换个晶振试试。
  • 2009-6-6 16:22:55 回复该留言
  • quote 56.lch
  • 按着你的电路图也做了一个,都焊完了,就差一个DS18B20.跑了好几个电子商店都说没卖的,太郁闷了。
  • 2009-6-6 22:21:49 回复该留言
  • quote 57.lch
  • 按着你的电路图也做了一个,就差一个DS18B20.跑了好几个电子商店都说没有。有的都没听说过,卖元件的也太不专业了。郁闷中……
  • 2009-6-6 22:25:55 回复该留言
  • quote 58.我就是我
  • LZ你好,最近设计在做恒温箱,本来是用STC12C5410AD做的,前半部分已经做完,能正常显示18b20测到的温度,但后面的控制温度的部分遇到了不少问题,一时无法解决,正好看到你的作品,于是照着做了一个,已经成功,因为学的不好也没注意,本来以为把蜂鸣器直接换成个继电器去控制加热设备就可以了(我把报警温度设的高一些,就省去了降温系统),后来实验发现出了问题,报警的时候继电器就跟蜂鸣器叫的频率一样在不停的吸合和分离,我知道是程序里面的一点小问题,应该就是把蜂鸣器叫的停顿去掉就可以,但把你的程序研究了好长时间也没找到在哪儿修改(以前没好好学习,惭愧惭愧)。
    方便的话请帮忙指点一下,谢谢!
    我就是我 于 2009-6-7 5:15:52 回复
    我的QQ 83738756 方便的话请加下,谢谢。
    或者邮件告诉我应该在哪儿修改,非常感谢!
  • 2009-6-7 5:14:16 回复该留言
  • quote 59.jx656
  • 换了个晶振,可以显示,但还是不稳定,室温是31.1℃,但它总在88.8℃和31.1℃之间跳变,蜂鸣器不断的响。看来是晶振问题呀
    我就是我 于 2009-6-8 14:11:13 回复
    估计是18B20接触不良造成的
    jx656 于 2009-6-9 0:20:48 回复
    也不是,它还会自动跳到上、下限温度的设置,然后又跳会温度显示,
    拿走了18B20,温度是显示0℃
  • 2009-6-8 11:50:48 回复该留言
  • quote 60.lch
  • 终于买到DS18B20了,趁着中午休息赶快焊上。刚开始显示是28.7C很正常,用手捏住DS18B20温度跟着往上升。于是试着调上、下限温度设置,调到30C。温度到了却不报警,又往下调还不报警,反而显示也不正常了。有时显示99.9C,有时是9.,有时是乱码。不知道是为什么?
  • 2009-6-10 13:51:04 回复该留言
  • quote 63.loly
  • 楼主 怎么提高精度 这个传感器精度可以达到0.01吗
  • 2009-6-10 19:27:45 回复该留言
  • quote 64.xiao
  • LZ你好,我用的芯片是AT89C51,但在Proteus仿真中数码管显示的是乱码,能将你做的keil文件发到我的邮箱么?急用,非常感谢!我的邮箱是xiao2429018@163.com
  • 2009-6-10 22:29:52 回复该留言
  • quote 65.lch
  • 显示正常了,就是不报警。测量P3.7始终是高电位。
  • 2009-6-11 9:45:09 回复该留言
  • quote 66.k
  • 楼主,如果下限改成-10,数码管改成共阴极的,程序怎么改,*****显示开机初始化等待画面*****那段有点看不明白
  • 2009-6-11 11:21:02 回复该留言
  • quote 67.k
  • 按楼主的电路图用Proteus仿真中数码管显示的是乱码,用的是AT89C51,位选电路改用了上啦电阻,按键和蜂鸣器始终是呈高电平
  • 2009-6-11 21:45:49 回复该留言
  • quote 68.
  • 请问楼主,在Proteus仿真是成功了 ,可是在没到报警时,却出现了误报警
    你仿真时是否出现同样的状况?
    swan 于 2009-6-18 22:44:46 回复
    能把仿真文件发给我一份吗 我老是不成功。我邮箱 proholy@sina.com
  • 2009-6-12 22:13:46 回复该留言
  • quote 70.sunny
  • 有问题啊,显示乱码,程序段码是共阳的,但是选通确按着共阴的给的P1,不知道楼主怎么成功的,
  • 2009-6-21 18:30:53 回复该留言
  • quote 71.jiangx
  • 回复sunny:谁说选通是按共阴的给的P1,P1控制的是PNP三极管,PNP三极管是低电平选通,由三极管再选通数码管的位。
  • 2009-6-22 22:46:34 回复该留言
  • quote 72.求救吖
  • 我们用protel画图还要把芯片封装吖。。
    我不知道封装号,可以帮个忙把封装号都告诉我不?
    谢谢啦,谢谢啦~~!
  • 2009-6-25 22:48:14 回复该留言
  • quote 73.Nardo
  • 问一下
    a=c/100; //计算得到十位数字
    b=c/10-a*10; //计算得到个位数字
    m=c/10; //计算得到整数位
    n=c-a*100-b*10; //计算得到小数位
    为什么是这样计算可以得到十位,个位,还有小数点后面的数???
  • 2009-7-2 16:26:54 回复该留言
  • quote 74.aaa
  • 那个输入端接入C4电容起什么作用呀,谁能解答下
  • 2009-9-3 13:24:59 回复该留言
  • quote 75.原理图有问题
  • 高人,你好,我觉得你的原理图上面的ISP下载端口上面的网络标号在单片机管脚上没有相同的网络标号啊,没有连接上啊,怎么回事呢????请教了,回复到邮箱最好啦,谢谢
  • 2009-9-15 20:39:16 回复该留言
  • quote 77.lgwdan
  • 设置上下限温度时有问题,按键按下时数字会跳变,可能按键没去抖。
  • 2009-9-24 18:49:24 回复该留言
  • quote 80.求原理图
  • 感谢楼主共享,但我并不知道七段四位数码管的型号和尺寸。我用的是DXP2004,元件库那没有这个元件、和封装。楼主能不能发份DXP的原理图给我,不胜感激!邮箱:510128042@qq.com
  • 2009-10-17 21:36:21 回复该留言
  • quote 81.shgdd520com
  • 楼主,看了看您的软件代码,按键部分设置的时候好像有跳动的感觉。估计是不是没有按键去抖动的代码,你用的是共阳的数码管吧?刚开始把你的代码写进去的时候,数码管显示根本就看不清数字显示,后面才发现有重影,我在现实数码管的下一位时关闭上一位显示就没有重影了。只是我的数据口用的P0口,没有上拉。是不是和这个上拉又关系啊P0口的。谢谢
  • 2009-10-17 23:37:48 回复该留言
  • quote 82.QQ272402202
  • 写的程序太烂了吧。
    延时去抖动用的是延时,难怪楼上那么多人说有问题。
  • 2009-10-18 15:51:32 回复该留言
  • quote 83.lidaxuan
  • 作者 我吧你的实验自己做出来一个和你一样的,我发现一个问题,不懂是是不是三级管的问题还是什么,一开始数字和功能显示正常,可是慢慢的 4位数码全是显示8了,
    关掉电源一段时间后再接通又正常了。是不是 数码管扫描太快了。我看了你的程序不懂在什么地方修改。我用keil的。
  • 2009-10-23 12:11:54 回复该留言
  • quote 84.SEKAKU
  • 回复.QQ272402202 .去抖可以不用改程式也可以,在那个按键那里加电容即可.不知道你有意见没有?
  • 2009-11-8 18:07:53 回复该留言
  • quote 85.yang710883
  • LZ,怎么我用PROTUES仿真数码管不能正常显示呢?可否发我我邮箱,你所有的文件。谢谢。yang710883@163.com
  • 2009-11-16 23:25:26 回复该留言
  • quote 86.111
  • 楼主,你趣盘上的工程文件我下载不了,可以发我一份吗953434988@QQ.COM
  • 2009-11-28 19:08:24 回复该留言
  • quote 88.沙子
  • 楼主解析一下吧:为何用keil c 仿真不了?
    急啊!!!
  • 2009-11-30 19:44:16 回复该留言
  • quote 89.河沙
  • 感谢楼主的东西,我现在做个课程设计实验,刚好和lz的作品相同。看了你的,但用Proteus仿真不了,显示那块老是跳来跳去的,像是乱码,用的是AT89C52芯片,和AT89S52不同有影响吗,还有lz你的东西下载不了了,能发送到我邮箱吗 webberremember@126.com,如果有仿真最好了,我看看到底是那里出问题了,谢谢了,非常感谢
  • 2009-12-4 11:37:34 回复该留言
  • quote 90.ccj
  • 我搞定了,同时还加了个温度控制部分,如果温度小于设定的范围,就自动加温或者降温
  • 2010-1-3 10:41:12 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

赞助商广告

最近发表

热文排行

最新评论及回复

广告

图标汇集

  • 留言板
  • 订阅本站的 ATOM 1.0 新闻聚合
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-Blog 1.8

Copyright 2008 JiangX.net 萬用電路板 All Rights Reserved.
鄂ICP备08003060号 [login]