当前位置:文档之家› 51单片机DS18B20温度设定控制继电器程序

51单片机DS18B20温度设定控制继电器程序

51单片机DS18B20温度设定控制继电器程序
51单片机DS18B20温度设定控制继电器程序

#include //按键是P0.1、P0.2-P0.3

#define uint unsigned int

#define uchar unsigned char

sbit JDQ=P3^7;//继电器

sbit LED=P3^6;//LED

sbit DQ=P3^5;//DS18B20

sbit wx1=P2^0;

sbit wx2=P2^1;

sbit wx3=P2^2;

sbit wx4=P2^3;

bit BZ1,BZ2,BZ0;

static uchar key;

uchar MS;

uchar shuju,wendu;//温度设定上限下限

uchar disdata[4];//1820温度分配内存

uchar DispBuf[4];//设定温度分配内存下限

uchar Disp[4];//设定温度上限

static uint tvalue;//温度值

uchar tflag;//温度正负标志

uchar code weixuan[]={0xfe,0xfd,0xf7,0xfb};//0xfe,0xfd,0xfb,0xf7

uchar code duanxuan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0 x8e};

void delay1(uint ms)

{ uint x,y;

for(x=ms;x>0;x--)

for(y=120;y>0;y--);

}

void delayms(uint ms)

{ uint x,y;

for(x=ms;x>0;x--)

for(y=120;y>0;y--);

}

//**********ds1820程序*****1820延时程序

void delay_18B20(unsigned int i)//延时1微秒

{

while(i--);

}

//*********************************1820复位程序//

void ds1820rst()//

{unsigned char x=0;

DQ = 1; //DQ复位

delay_18B20(4); //延时

DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us

DQ = 1; //拉高

delay_18B20(40);

}

//********************************1820读数据程序

uchar ds1820rd()/*读数据*/

{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_18B20(10);

}

return(dat);

}

//*********************************************1820写数据程序void ds1820wr(uchar wdata)/*写数据*/

{unsigned char i=0;

for (i=8; i>0; i--)

{DQ = 0;

DQ = wdata&0x01;

delay_18B20(10);

DQ = 1;

wdata>>=1;

}

}

//********************************************1820访问

void read_temp()/*读取温度值并转换*/

{uchar a,b;

ds1820rst(); //复位就是访问的开始

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0x44);//*启动温度转换*/

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();//读数据

b=ds1820rd();//

tvalue=b;

tvalue<<=8;

tvalue=tvalue|a;

if(tvalue<0x0fff)

tflag=0;

else

{tvalue=~tvalue+1;

tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数

disdata[2]=tvalue/1000;//百位数

disdata[3]=tvalue%1000/100;//十位数

disdata[1]=tvalue%100/10;//个位数

disdata[0]=tvalue%10;//小数位

}

//***************************************************1820温度显示程序void xianshi()

{ uchar BC;

wx1=0;

P1=duanxuan[disdata[0]]; //小数

delay1(5);

wx1=1;

wx2=0;

P1=duanxuan[disdata[1]]+0x80; //各位

delay1(5);

wx2=1;

wx4=0;

P1=duanxuan[disdata[3]]; //十位

delay1(5);

wx4=1;

BC=disdata[2];

if(BC==1)// 假如为0就不显示

{ wx3=0;

P1=duanxuan[disdata[2]]; //百位

delay1(5);

wx3=1;}

if (tflag==1)//显示符号

{ wx3=0;

P1=0x40;

delay1(5);

wx3=1;}

}

//*******************************************// void Init()

{TMOD=0x11;

TH0=(65535-3000)/256;

TL0=(65535-3000)%256;

TH1=(65535-3000)/256;

TL1=(65535-3000)%256;

EA=1;

ET0=1;

ET1=1;

}

//**********************************//

uchar Ajcx()//按键处理程序

{static uchar Key,tmp;//

Key=P0;

if((Key&0xff)==0xff)//判断否则返回0

return(0);

delayms(5);

Key=P0;

if((Key&0xff)==0xff)

return(0);

for(;;)

{ tmp=P0;//等待按键释放

if(tmp==0xff)

break;//跳出当前循环

}

return(Key); //带回按键数据

}

//****************************************//

void main()

{

Init();

while(1)

{ if(BZ0==0)

{read_temp();

xianshi();

if((shuju*10)>tvalue) {LED=0;JDQ=0;}//下限温度

if((wendu*10)

key=Ajcx();//判断按键并带回数据

if(key)//返回不是0说明有按键按下

{if((key&0x02)==0)//发送代码1

MS=MS+1;}

if(MS==1) {BZ0=1;TR0=1;TR1=0;BZ1=0;BZ2=1;}

if(MS==2) {BZ0=1;TR0=0;TR1=1;BZ1=1;BZ2=0;}

}

}

void temp1() interrupt 1 //下限温度设定

{ uchar tmp;

static uchar cont;

TH0=(65535-3000)/256;

TL0=(65535-3000)%256;

key=Ajcx();//判断按键并带回数据

if(key)//返回不是0说明有按键按下

{if((key&0x02)==0)//发送代码1

MS=MS+1;}

if(MS==2) {BZ1=1;TR0=0;}

if(MS==1)

{DispBuf[3]=0x0a;

if((key&0x04)==0)//

shuju=shuju+1;

if((key&0x08)==0)//

shuju=shuju-1;}

DispBuf[2]=shuju/100;//百位数

DispBuf[1]=shuju%100/10;//十位数

DispBuf[0]=shuju%10;//个位数

tmp=weixuan[cont];

P2=0xff|P2;

P2=tmp;

tmp=DispBuf[cont];

tmp=duanxuan[tmp];

P1=tmp;

cont++;

if(cont==4) cont=0;

if(BZ1==1) TR0=0;

}

void temp2() interrupt 3//上限温度设定{uchar tmp1;

static uchar cont1;

TH1=(65535-3000)/256;

TL1=(65535-3000)%256;

key=Ajcx();//判断按键并带回数据

if(key)//返回不是0说明有按键按下

{if((key&0x02)==0)//发送代码1

MS=MS+1;}

if(MS==2)

{Disp[3]=0x0b;

if((key&0x04)==0)//

wendu=wendu+1;

if((key&0x08)==0)//

wendu=wendu-1;}

else if(MS==3) {BZ2=1;TR1=0;BZ0=0;MS=0;}

Disp[2]=wendu/100;//百位数Disp[1]=wendu%100/10;//十位数Disp[0]=wendu%10;//个位数

tmp1=weixuan[cont1];

P2=0xff|P2;

P2=tmp1;

tmp1=Disp[cont1];

tmp1=duanxuan[tmp1];

P1=tmp1;

cont1++;

if(cont1==4) cont1=0;

if(BZ2==1) TR1=0;

}

单片机控制继电器电路

单片机控制继电器电路 毕业论文 题目:单片机制作控制继电器的电路 目录 毕业论文 引言??????????????????????????????????????????????1 摘要??????????????????????????????????????????????2 第1章、硬件部分结构功能简介:?????????????????????2 1.1单片机介绍????????????????????????????????????3 1.2 AT89S51单片机的主要性能参数和主要引脚????????3 1.3、继电器介绍???????????????????????????????????6 第2章、原理图????????????????????????????????????7 第3章、系统设计预期目标:?????????????????????????9 第4章、工作原理:?????????????????????????????????9 第5章、下面是我总结的制板“八步走”???????????????10 第6章、制板中容易出现的问 题 :????????????????????11 第7章、本设计的C语言程序:???????????????????????11 第8章、总结??????????????????????????????????????13 第9章、答谢词????????????????????????????????????14 参考文献??????????????????????????????????????????14 引言 现代自动控制设备中,都存在一个电子电路一电气电路的互相连接问题,一方面要是电子电路的控制信号能够控制电器电路的执行元件(电动机、电磁铁、电灯

基于51单片机的DS18B20数字温度计的实训报告

电子信息职业技术学院 暨国家示性软件职业技术学院 单片机实训 题目:用MCS-51单片机和 18B20实现数字温度计 姓名: 系别:网络系 专业:计算机控制技术 班级:计控 指导教师: * 伟 时间安排:2013年1月7日至 2013年1月11日

摘要 随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。 在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。 我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度围为-55~125 oC,最高分辨率可达0.0625 oC。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单。 关键词:单片机,数字控制,温度计, DS18B20,AT89S51

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

单片机控制继电器实验

$%&'

驱动原理: 1、当AT89S51单片机的P3.6引脚输出低电平时,三极管T5饱和导通,+5V 电源加到继电器线圈两端,继电器吸合,同时状态指示的发光二极管也点亮,继电器的常开触点闭合,相当于开关闭合。 2、当AT89S51单片机的P3.6引脚输出高电平时,三极管T5截止,继电器线圈两端没有电位差,继电器衔铁释放,同时状态指示的发光二极管也熄灭,继电器的常开触点释放,相当于开关断开。注:在三极管截止的瞬间,由于线圈中的电流不能突变为零,继电器线圈两端会产生一个较高电压的感应电动势,线圈产生的感应电动势则可以通过二极管IN4148释放,从而保护了三极管免被击穿,也消除了感应电动势对其他电路的干扰,这就是二极管D1的保护作用。 二、继电器驱动程序 下面给出了一个简单的继电器控制实验源程序,控制继电器不停地吸合、释放动作,程序很简单。 图 2 注: 上面图中所示,CN2的1、2、3为继电器输出接线端子,其中1接到继电器的常开接点,2接到继电器的动接点,3接到继电器的常闭接点。当继电器吸合的时候,1-2将接通,相当于开关闭合。因此我们就可以在端子1-2上接线来控制其他电路了。 程序流程图 继电器控制ASM 源程序: ORG 0000H AJMP START ;跳转到初始化程序 ORG 0033H START: MOV SP,#50H ;SP 初始化 MOV P3,#0FFH ;端口初始化 MAIN: CLR P3.6 ;P3.6输出低电平,继电器吸合 ACALL DELAY ;延时保持一段时间 SETB P3.6 ;P3.6输出高电平,继电器释放 ACALL DELAY ;延时保持一段时间 AJMP MAIN ;返回重复循环 DELAY: MOV R1,#20 ;延时子程序 Y1: MOV R2,#100 Y2: MOV R3,#228 DJNZ R3,$ DJNZ R2,Y2 DJNZ R1,Y1 RET ;延时子程序返回

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.doczj.com/doc/7f10104982.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

基于51单片机SHT11温湿度传感器检测程序.doc

基于51单片机SHT11温湿度传感器检测程序(含电路图) ? 下面是原理图: 下面是SHT11与MCU连接的典型电路:

下面是源代码: #include #include /******************************************************** 宏定义 ********************************************************/ #define uint unsigned int #define uchar unsigned char #define noACK 0 #define ACK 1 #define STATUS_REG_W 0x06 #define STATUS_REG_R 0x07 #define MEASURE_TEMP 0x03 #define MEASURE_HUMI 0x05 #define RESET 0x1e enum {TEMP,HUMI}; typedef union //定义共用同类型 { unsigned int i; float f; } value; /******************************************************** 位定义 ********************************************************/ sbit lcdrs=P2^0; sbit lcdrw=P2^1; sbit lcden=P2^2; sbit SCK = P1^0; sbit DATA = P1^1; /******************************************************** 变量定义 ********************************************************/ uchar table2[]="SHT11 温湿度检测"; uchar table3[]="温度为:℃"; uchar table4[]="湿度为:"; uchar table5[]="."; uchar wendu[6]; uchar shidu[6]; /******************************************************** 1ms延时函数 ********************************************************/ void delay(int z) {

51单片机控制继电器

(51单片机系列)用单片机控制继电器 2008-01-13 22:10 首先看看继电器的驱动 这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图 为什么要明白这个图的原理? 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA 级以下.而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动".继电器驱动就是一个典型的、简单的功率驱动环节.在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接口.这个很重要,因为,一直让我们的电气工程师(我指的是那些没有学习过相应的电子技术的)感到迷惑不解的是:一个小小的芯片,怎么会有如此强大的威力来控制像电动机这样强大的东西? 怎么样理解这个电路图? 要理解这个电路,其实也比较容易.那么请您按照我的思路来,应该没有问题: 首先的,里面的三极管很重要.三极管是电子电路里很重要的一个元件.怎么样理解三极管呢? 简单的来说三极管有两个作用一个是放大作用,一个是开关作用.(严格来讲开关作用是放大作用的极限情况,不过没关系,把两者分开,更便于理解它的工作原理).在这里,我们只了解它跟本电路有关的开关作用. 首先把三极管想成一个水龙头.

上面的Vcc就是水池,继电器是一个水轮机,下面的GND是比水池低的任何一点.刚才说过,三极管就是水龙头,它的把手就是那个带有电阻的引脚. 现在,单片机的某一个需要控制这个继电器电路的输出引脚就是一只"手",当单片机的这个引脚输出低电平的时候,就像"手"在打开三极管"水龙头",水就从上往下流,继电器"水轮机"就开始转起来了.反之,如果是输出高电平,"手"就开始关"水龙头",继电器"水轮机"因为没有水流下来,就会停止. 这就是三极管的开关作用. 简单的理解和记忆就是:三极管是一个开关器件,其实你真的可以将它看成是一个开关,只不过它不是用手来控制,而是用电压(电流)来控制的,因此,三极管有些时候也被称做电子开关(与机械开关相区别). 图上还有一个东西,是保护二极管,如果不需要深入理解的话,你大可不必追就为什么有它存在,但是一定得记住,只要是用三极管驱动继电器的场合,一般都有它的存在.需要特别注意的是它的接法:并联在继电器两端阴极一定是接Vcc 【电子制作实验室--转】 https://www.doczj.com/doc/7f10104982.html,/DJS.htm 这里我们先要安装好51试验板上的两个轻触按钮开关,我们采用的是 独立式按钮开关,也就是说将开关直接连接到电源的地和单片机的对应 引脚之间,这里K1接到单片机的P3.6引脚,K2接到P3.7。正常情况 下单片机的P3.6、P3.7都被程序初始化时置“1” 当有按键按下时对 应的单片机引脚被按钮开关下拉为“0”,这种方法比较直观,而且比

51单片机热敏电阻测温程序

//本程序是通过热敏电阻测温度(30c-50c),采用六位串行数码管显示,前三位显示ds18b20测得数据,后三位是热敏电阻测得数据 #include #include #include #define uchar unsigned char #define uint unsigned int uchar smg[]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09}; uchar b,d; uint shuju; int a,temp; sbit start=P2^7; sbit ale=P2^7; sbit addc=P2^6; sbit addb=P2^5; sbit adda=P2^4; sbit eoc=P2^3; sbit oe=P2^2; sbit clk=P3^2;//0809时钟脚 sbit dat=P3^0; //串行数码管数据端 sbit clock=P3^1; //串行数码管时钟端 sbit DQ=P2^0; /******************delay**************************/ void delay(uint x) { while(x--); } void delay1(uint x) { uint i,j; for(i=0;i

用单片机驱动电磁式继电器的方法

在各种自动控制设备中,都存在一个低压的自动控制电路与高压电气电路的互相连接问题,一方面要使低压的电子电路的控制信号能够控制高压电气电路的执行元件,如电动机、电磁铁、电灯等;另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全,电磁式继电器便能完成这一桥梁作用。 电磁继电器是在在输入电路电流的作用下,由机械部件的相对运动产生预定响应的一种继电器。 它包括直流电磁继电器、交流电磁继电器、磁保持继电器、极化继电器、舌簧继电器,节能功率继电器。 (1)直流电磁继电器:输入电路中的控制电流为直流的电磁继电器。 (2)交流电磁继电器:输入电路中的控制电流为交流的电磁继电器。 (3)磁保持继电器:将磁钢引入磁回路,继电器线圈断电后,继电器的衔铁仍能保持在线圈通电时的状态,具有两个稳定状态。 (4)极化继电器:状态改变取决于输入激励量极性的一种直流继电器。 (5)舌簧继电器:利用密封在管,具有触点簧片和衔铁磁路双重作用的舌簧的动作来开、闭或转换线路的继电器。 (6)节能功率继电器:输入电路中的控制电流为交流的电磁继电器,但它的电流大(一般30-100A),体积小, 节电功能. 电磁式继电器一般由控制线圈、铁芯、衔铁、触点簧片等组成,控制线圈和接点组之间是相互绝缘的,因此,能够为控制电路起到良好的电气隔离作用。当我们在继电器的线圈两头加上其线圈的额定的电压时,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的接通、切断的开关目的。 下面是一个小型信号继电器HK4100F-DC5V-SH的实物照片和主要技术参数。。。 HK4100F电磁继电器主要技术参数: 触点参数: 触点形式:1C(SPDT) 触点负载: 3A 220V AC/30V DC 阻抗:≤100mΩ 额定电流: 3A 电气寿命:≥10万次 机械寿命:≥1000万次 线圈参数: 阻值(士10%):120Ω 线圈功耗:0.2W

基于单片机的继电器控制..

目录 0 前言 (1) 1 总体方案设计 (1) 2 硬件电路设计 (2) 2.1单片机系统 (2) 2.1.1 晶振时钟电路 (2) 2.1.2 复位电路 (3) 2.2电流驱动系统 (3) 2.3发光二极管演示系统 (5) 2.4独立键盘系统 (5) 3 软件设计 (6) 3.1软件执行过程 (6) 3.2子程序模块 (6) 4 调试分析 (8) 5 结论及进一步设想 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理图 (11) 附录2 程序清单 (12)

基于单片机的继电器控制系统设计 胡启洋沈阳航空航天大学自动化学院 摘要:本文设计了一种基于单片机的继电器控制系统,由单片机、继电器、驱动电路、发光二极管、独立键盘等部分组成,主要使用了单片机开发板上STC公司生产的89C54RD+型号单片机及其最小系统、ULN2003A达林顿管驱动芯片、JQC-3F-05VDC-1ZS 型号继电器、四个发光二极管,运用定时器精准定时对继电器开关进行控制,并在继电器输出端使用发光二极管显示。在以上基础上,实现了8路继电器的循环控制功能。 关键词:单片机;继电器;驱动电路。 0 前言 继电器是当输入量(如电压、电流、温度等)达到规定值时,使被控制的输出电路导通或断开的电器。它可分为电气量(如电流、电压、频率、功率等)继电器及非电气量(如温度、压力、速度等)继电器两大类。继电器具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。 继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等。 电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸合的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用下返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,可以这样来区分:继电器线圈为通电时处于断开状态的静触点,成为“常开触点”;处于接通状态的静触点称为“常闭触点”。 1 总体方案设计 针对本课题的设计任务,进行分析得到:本次设计通过单片机I/O口输出高低电平控制继电器的输入端,采用ULN2003A型号的达林顿管驱动芯片加大输入电流,使用内部定时器中断进行精准计时,实现继电器通断时间分别为1秒、2秒的精准控制,并实现通过继电器进行八路发光二级管循环1秒的控制。 该继电器控制系统的设计,在总体上大致可分为以下几个部分组成:1.单片机及其最小系统电路,为了使单片机正常工作,需要加入晶振电路,为了使单片机方便使用,需要

基于单片机的数字温度计设计开题报告

****大学综合性设计实验 开题报告 ?实验题目:数字温度计的设计 ?学生专业10电气工程与自动化 ?同组人:———————— ?指导老师: 2013年4月

1.国内外现状及研究意义 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: ①传统的分立式温度传感器 ②模拟集成温度传感器 ③智能集成温度传感器。 目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,AT89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用ATMEL公司的AT89S51单片机,测温传感器使用DALLAS公司DS18B20,用液晶来实现温度显示。 2.方案设计及内容 (一)、方案一 采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,

基于51单片机的数字温度计设计

基于51单片机的数字温度计设计 一.课题选择 随着时代的发展,控制智能化,仪器小型化,功耗微量化得到广泛关注。单片机控制系统无疑在这方面起到了举足轻重的作用。单片机的应用系统设计业已成为新的技术热点,其中数字温度计就是一个典型的例子,它可广泛应用与生产生活的各个方面,具有巨大的市场前景。 二.设计目的 1.理解掌握51单片机的功能和实际应用。 2.掌握仿真开发软件的使用。 3.掌握数字式温度计电路的设计、组装与调试方法。 三.实验要求 1.以51系列单片机为核心器件,组成一个数字式温度计。 2.采用数字式温度传感器为检测器件,进行单点温度检测。 3.温度显示采用4位LED数码管显示,三位整数,一位小数。 四.设计思路 1.根据设计要求,选择STC89C51RC单片机为核心器件。 2.温度检测采用DS18B20数字式温度传感器。与单片机的接口为P 3.6引脚。 3.采用usb数据线连接充电宝供电,接电后由按钮开关控制电路供电。 硬件电路设计总体框图为图1: 五.系统的硬件构成及功能 1.主控制器 单片机STC89C51RC具有低电压供电和体积小等特点,有40个引脚,其仿真图像如下图所示:

2.显示电路 显示电路采用4位共阳LED数码管,从P3口RXD,TXD串口输出段码。LED数码管在仿真软件中如下图所示: 3.温度传感器 DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下: 1.独特的单线接口仅需一个端口引脚进行通讯。 2.简单的多点分布应用。 3.无需外部器件。 4.可通过数据线供电。 5.零待机功耗。 6.测温范围-55~+125摄氏度。 其电路图如下图所示:

单片机控制继电器实现开关状态显示

桂林电子科技大学单片机最小应用系统 设 计 报 告 指导老师:吴兆华 学生:王竣民

机电工程学院 单片机最小应用系统设计报告 目录 一、设计题目 (3) 二、设计容与要求 (3) 三、设计目的意义 (3) 四、系统硬件电路图 (3) 五、程序流程图与源程序 (5) 5.1流程图 (5) 5.2源程序 (5) 5.2.1程序设计思想 (5) 5.2.2源程序清单 (5) 六、系统功能分析与说明 (7) 6.1系统主要组成部分 (7) 6.1.1 单片机最小系统部分 (7) 6.1.2 可编程的并行接口芯片8255A (8) 6.1.3 输入输出部分 (8) 6.2 可编程的并行接口8255A接口电路部分 (9) 6.2.1 8255A的引脚 (9) 6.2.2 8255A的部结构 (10) 6.2.3 8255A的工作方式 (11) 6.2.4 8255A的控制字 (13) 6.3 开关状态的读入与显示部分 (15) 6.4 指示灯显示部分 (15) 6.5 电路板的制作 (16) 6.5.1 PCB图的制作 (16) 6.5.2 电路板的腐蚀、钻孔和元器件的焊接 (17) 6.6 系统连线说明分析 (17) 七、设计体会 (18) 八、参考文献 (19)

一、设计题目 可编程的并行接口芯片8255A控制继电器实现开关状态显示控制。采用AT89S51单片机读取外部(8255的A口)的开关信号并将相应的信号通过8255的B口用LED 显示出来端口。 二、设计容与要求 用8051单片机和8255读取开关状态并显示开关状态。用8255的A口接8个开关,B口接8个发光二极管,读取开关状态后,将状态通过8个发光二极管显示出来。 三、设计目的意义 1、掌握单片机扩展外部数据存储器的方法。 2、掌握可编程的并行接口芯片8255A与单片机的硬件接口电路、8255A部结构及其编程方法。 3、掌握单片机的最小系统的设计。 4、掌握电路板的设计与制作。。 5、了解程序编写与调试的方法和技巧。 6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。 四、系统硬件电路图 系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外部扩展芯片8255A部分、外电路接通显示部分、及电源显示部分。 设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。

单片机课程设计—数字温度计

第1章概述 1.1 数字温度计简介 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 此次课程设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用3位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 1.2 设计内容及要求 本次单片机课程设计将以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。测温范围为0~100℃,精度误差在0.5℃以内。

第2章系统总体方案设计 2.1数字温度计设计的方案 在做数字温度计的单片机电路中,对信号的采集电路大多都是使用传感器,这是非常容易实现的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。 2.2系统设计框图 温度计电路设计总体设计方框图如图 2.1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用6位LED数码管以串口传送数据实现温度显示。此外,还添加了报警系统,对温度实施监控。 图2.1 数字温度计框图

单片机控制继电器设计报告

单片机课程设计报告——单片机控制继电器 摘要: 本实验是基于AT89S51单片机所设计的。通过单片机的P3.6引脚输出低(高)电平时,三极管T5饱和导通(截止),+5V电源加到继电器线圈两端,继电器吸合(释放),同时状态指示的发光二极管也点亮(熄灭),继电器的常开触点闭合(释放),相当于开关闭合(断开)。 关键词:AT89S51 HK4100F电磁继电器 一、目的、用途、功能 1.1目的: 设计一种投资少,简单易行,仅仅只是在现在的设备的基础之上稍加改造,又能从根本上解决对继电器的控制问题。 1.2用途与功能: 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。电子继电器便能完成这一桥梁作用。 二、硬件设计 2.1硬件设计思想 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的"功率驱动".继电器驱动就是一个典型的、简单的功率驱动环节.在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接 2.2部分硬件方案论述 方案一: 8550位于继电器下方,此种的连接方法8550没有工作在饱和状态,即VCE未达到手册所说明的典型值0.2V,使得继电器线圈两端电压未达到理想值,一般达到4.4V。改变电阻R,测试结果如下: 1)R=2K,VCC=5V,此时VCE=0.96V,线圈电压4.04V。

(完整版)基于51单片机的数字温度计

硬件课程设计实验报告课题:数字温度计 班级: 作者: 学号: 指导老师: 课设评价: 课设成绩:

目录 一.需求分析 (1) 二.概要设计 (1) 三.硬件电路设计 (3) 四.系统软件设计 (5) 五.软件仿真 (8) 六.实际连接与调试 (9) 七.本次课设的收获与感受 (11) 附录(程序源代码) (12)

一.需求分析 功能要求: 测量环境温度,采用接触式温度传感器测量,用数码管显示温度值。 设计要求: (一)功能要求 (1) 由4位数码管显示当前温度。 (2) 具备报警,报警门限通过键盘设置。 (3) 精度为0.5℃。 (二)画出参考的电路原理图 (三)画出主程序及子程序流程图、画出MCS51内部RAM分配图,并进行适当地解释。 (四)写出实现的程序及实现过程。并进行适当地解释说明。 二.概要设计 (一)方案选择 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 (二)系统框图 该系统可分为以下七个模块: (1)控制器:采用单片机STC89C52对采集的温度数据进行处理; (2)温度采集:采用DS18B20直接向控制器传输12位二进制数据; (3)温度显示:采用了4个LED共阴极七段数码管显示实际温度值; (4)门限设置:主要实现模式切换及上下门限温度的调节; (5)报警装置:采用发光二极管进行报警,低于低门限或高于高门限均使其发光; (6)复位电路:对整个系统进行复位; (7)时钟振荡模块:为整个系统提供统一的时钟周期。

单片机控制继电器

题目是通过单片机来控制继电器从而达到通断电的效果,通过DC12V电压或者DC5V电压来控制AC220V的通断。然后达到的效果是类似5s通5s断,之后每1s累加一次,即下一次6s通5s断,再下一次7s通,5s断...... 直至40s通,5s断,持续循环这样的 附有我画的一部分原理图,因为刚接触,想知道一个继电器能实现吗?然后就是通过c语言编程实现功能呢还是需要怎么搞原理图 bit flag_one=0; //第一次工作标记 uchar num1s=0; //1s计数器 uchar n=5; //总秒数计数器 void mast() //主控 { if(flag_one==0) //如果第一次工作标记为0 这里是你要求的第一次5s开5s关 { jk=1; //继电器吸合 num1s=0; //延时5s while(num1s

jk=0; //继电器关闭 num1s=0; //延时5s 你要求开时间每次+1S 关时间不变while(n<5); //刚才没看见你最后一句话没写这段 if(n==40) //判断总次数如果总次数是40 { flag_one=0; //第一次工作标记清零 n=5; //总秒数计数器置5 } } void Server_Time0() interrupt 1 //定时器服务程序 { TH0 = xx; //重装定时初值1s TL0 = xx; //重装定时初值1s num1s++; //1s计数器自加 } void main() { Init_Time(); //定时器初始化没给你写基础程序了 while(1) { mast(); //调用主控程序 } }

51单片机数字温度计汇编程序

ORG 0000H LJMP MAIN ORG 0100H ;********************************************* DAT BIT P1.0 TEMPER_L EQU 40H TEMPER_H EQU 41H A_BIT EQU 60H B_BIT EQU 61H C_BIT EQU 62H D_BIT EQU 63H ;***主程序**************************************** MAIN: MOV A,#7FH LCALL WRITE_1820 LCALL INIT_1820 LCALL GET_TEMPER LCALL CONVER LCALL DISPLAY LJMP MAIN ;***初始化db18b20**************************************************** INIT_1820: CLR EA INI10: SETB DAT MOV R2,#200 INI11: CLR DAT DJNZ R2,INI11 SETB DAT MOV R2,#30 INT12: DJNZ R2,INT12 CLR C ORL C,DAT JC INI10 MOV R6,#80 INI13: ORL C,DAT JC INI14 DJNZ R6,INI13 SJMP INI10

INI14: MOV R2,#240 INT15: DJNZ R2,INT15 RET ;**读温度子程序********************************************************* GET_TEMPER: MOV A,#0CCH LCALL WRITE_1820 MOV A,#44H LCALL WRITE_1820 SETB DAT LCALL DISPLAY LCALL INIT_1820 MOV A,#0CCH LCALL WRITE_1820 MOV A,#0BEH LCALL WRITE_1820 LCALL READ_1820 MOV TEMPER_L,A LCALL READ_1820 MOV TEMPER_H,A RET ;***写ds18b20的程序*********************************************************** WRITE_1820: CLR EA MOV R3,#8 WR11: SETB DAT MOV R4,#8 RRC A CLR DAT WR12: DJNZ R4,WR12 MOV DAT,C MOV R4,#30 WR13: DJNZ R4,WR13 DJNZ R3,WR11 SETB DAT RET ;***读ds18b20的程序********************************************************************* READ_1820:

相关主题
文本预览
相关文档 最新文档