51单片机串口控制继电器

发布者:暗里著迷最新更新时间:2015-01-16 来源: 51hei关键字:51单片机  串口控制  继电器 手机看文章 扫描二维码
随时随地手机看文章

实验室有个项目,用到报警功能。比如当温度或应力过高或者过低的时候启动报警器,通过给串口发送一个命令来控制继电器。不巧去年被我正负极接反烧了,最近开始搞单片机,哥苦心经营,利用实验室单片机学习板给搞定了,程序如下:

 
 
#include
#define uchar unsigned char
sbit JDQ=P3^7;         //继电器接P3.7
sbit FMQ=P3^6;
sbit LED=P0^0;
sbit LEDra=P0^1;
sbit LEDar=P0^2;
uchar dat[4];
int i=0;
 
 
void Delay(unsigned int ii) //1mS
{
unsigned int jj;
for(;ii>0;ii--)
for(jj=0;jj<125;jj++)
{;}
}
 
 
void init_serialcom( void ) //串口通信初始设定
{      
TMOD|=0x20;  //定时器中的方式控制寄存器TMOD,设置T1为工作模式2,当TL1溢出时,TH1的值自动装入TL1,TH1和TL1当然都要赋值.TMOD前四位T1,后四位T0:GATE=0,C/T=0,M1=0,M0=01
TR1=1;       //定时器中的运行控制寄存器TCON,允许T1计数
TH1=0xfd;   //波特率9600
TL1=0xfd;
SCON  = 0x50 ;   //SM0=0;SM1=1;REN=1; UART为模式1,8位数据,允许接收,
PCON |= 0 ;      //SMOD=1;波特率的问题。
IE|=0x90 ;       //中断允许寄存器IE,P97,EA终端总允许标志位,ES串行口中断允许位
}
 
 
void jdq() interrupt 4{  //void 函数名() interrupt 4
EA=0;     
if(RI)
{
RI=0;
if(i<4)
{
dat[i] = SBUF;
i++;
  
if(dat[2]==0x10 && dat[0]==0xE5 && dat[1]==0xA1 && dat[3]==0x4E)   //E5A1 104E
  JDQ=0;//吸合
     LED=0;//P0口LED亮
  LEDra=1;
     LEDar=1;
}
else if(dat[2]==0x11 && dat[0]==0xE5 && dat[1]==0xA1 && dat[3]==0x4D) //E5A1114D
  {
  JDQ=1; //释放
     LED=1; //P0口LED灯灭
  LEDra=1;
     LEDar=1;
  }
    else
    {
    LEDra=0;
       LEDar=0;
    LED=1;
    }
if(i>=4)i=0;else;
}
EA=1;
}
 
 
main()      //串口方式1发送时的定时信号,也就是移位脉冲,由定时器1产生。不是定时器0。
{
init_serialcom();
Delay(10);
while(1);                                                                        
}
 
 
 
第一次独立写的,程序粗糙了点,但是完美运行。
 
发送:E5A1 104E,继电器闭合   
          E5A1 114D,继电器断开  
这里控制用到了四个字节,所以在中断程序里面我定义了一个数组,最后判断这四个字节是否都正确。如果一个字节的话更简单。
关键字:51单片机  串口控制  继电器 引用地址:51单片机串口控制继电器

上一篇:可按照脚本分别控制8路PWM函数波形输出程序
下一篇:基于51单片机的CAN总线技术及其应用

推荐阅读最新更新时间:2024-03-16 13:51

51单片机-流水灯
本讲讲解用P0的8个IO端口控制8盏LED实现流水灯。 本教程所用开发板的硬件连接简化如下 1.数字模拟点灯 我们用八位的二进制数表示八盏灯,对应的位为0灯就亮,为1灯就灭。 流水灯的实现如下所示 11111110 //对应十六进制=0xFE,P0.0输出0,其余输出1 11111101 //对应十六进制=0xFD,P0.1输出0,其余输出1 11111011 //对应十六进制=0xFB,P0.2输出0,其余输出1 11110111 //对应十六进制=0xF7,P0.3输出0,其余输出1 11101111 //对应十六进制=0xEF,P0.4输出0,其余输出1 11011111
[单片机]
<font color='red'>51单片机</font>-流水灯
51单片机位逻辑运算指令
位与 指令 ANL C,bit ;CY与指定的位地址的值相与,结果送回CY ANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。 例:ANL C,/P1.0 设执行本指令前,CY=1,P1.0等于1(灯灭),则执行完本指令后CY=0,而P1.0也是等于1。 可用下列程序验证: ORG 0000H AJMP START ORG 30H START: MOV SP,#5FH MOV P1,#0FFH SETB C ANL C,/P1.0 MOV P1.1,C ;将做完的结果送P1.1,结果应当是P1.1上的灯亮,而P1.0上的灯还是
[单片机]
51单片机开发之矩阵键盘
3.6 矩阵键盘 3.6.1 矩阵键盘原理图 要使用矩阵键盘,需要将JP4接到JP8(P1)上面,JP165跳线帽需要断开(否则会导致矩阵键盘最右一排无法正常使用)。 图3-6-1 图3-6-2 3.6.2 矩阵键盘介绍 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),在需要的键数比较多时,采用矩阵法来做键盘是合理的。
[单片机]
<font color='red'>51单片机</font>开发之矩阵键盘
51单片机快速入门指南】7:片上EEPROM
硬知识 摘自《STC89C52系列单片机器件手册》 STC89C5x系列单片机内部集成了的EEPROM是与程序空间是分开的,利用ISP/IAP技术可将内部Data Flash当EEPROM,擦写次数在10万次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。 EEPROM可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。在用户程序中,可以对EEPROM进行字节读/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。 IA
[单片机]
【<font color='red'>51单片机</font>快速入门指南】7:片上EEPROM
8051单片机中断系统结构及中断控制原理
当几个中断源同时向CPU请求中断时,按所发生的实时事件的轻重缓急排队,优先处理最紧急事件的中断请求,于是单片机规定每个中断源的优先级别。 当CPU正在处理一个中断请求,又发生另一个优先级比它高的中断请求,CPU暂时中止对前一中断处理,转而去处理优先级更高的中断请求,待处理完后,再继续执行原来的中断处理程序,这样的过程称为中断嵌套,这样的中断系统称为多级中断系统。 由于外界异步事件中断CPU正在执行的程序时随机的,CPU转向去执行中断服务程序时,除了硬件会自动把断电地址,即16位PC程序计数器的值压入堆栈之外,用户还得注意保护有关工作寄存器,累加器,标志位等信息,这个过程通常称为保护现场 。以便在完成中断服务程序后,恢复原工
[单片机]
PIC单片机控制继电器原理及实现
#include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void delay(uint x); void main() { TRISE1=0; TRISB=0x0f; RE1=0; while(1) { if(RB0==0) { delay(10); if(RB0==0) { while(!RB0); RE1=1; } } if(RB1==0) { delay(10); if(RB1==0) { while(!RB1); RE1=0; } }
[单片机]
51单片机复习001
1、更改keil uvision3的字体以及关键字颜色的设置: 修改顺序入下 1 打开edit 2 打开edit 最下方configuration 3 打开colars 4 选择8051 edit c file 可以修改 C语言的大小 和关键词着色 问题。 源自http://zhidao.baidu.com/question/137561189.html 2、位定义:sbit LED00 = P0^0 ; (放在头文件下面,main()函数上方)。 3、12M晶振,1ms基准延时程序如下: void delay1ms(unsigned int i) { unsigned char j;
[单片机]
<font color='red'>51单片机</font>复习001
8051单片机的历史_8051单片机的应用领域
  目前,有关8051单片机的说法很多:8051单片机是Intel发明的,可与8位系列处理器一起使用。现在,8051单片机已广泛应用于各个行业以及家庭的各种家用电器上。      一、8051单片机的历史   如果我们回顾历史,8051单片机是由微处理器巨头Intel于1980年首次发明的,并且逐渐被全世界所接受,并且随着未来的每一天,8051单片机的重要性正在不断提高。当它由英特尔发明时,它是通过NMOS技术开发的,但作为NMOS技术却不是很有效。   为了提高效率和生产率,英特尔通过实施CMOS技术对它进行了改型,并出现了一个新版本,名称中带有字母“C”,比如:“80C51”。新版8051单片机具有两条总线,一条总线用于程序
[单片机]
80<font color='red'>51单片机</font>的历史_80<font color='red'>51单片机</font>的应用领域
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved