串口控制继电器程序
#include <reg51.h>
#include <intrins.h>
#include < stdio.h >
//定义继电器的管脚
sbit K0_0 = P0^0; //对应继电器
sbit K0_1 = P0^1; //对应继电器
sbit K0_2 = P0^2; //对应继电器
sbit K0_3 = P0^3; //对应继电器
sbit K0_4 = P0^4; //对应继电器
sbit K0_5 = P0^5; //对应继电器
sbit K0_6 = P0^6; //对应继电器
sbit K0_7 = P0^7; //对应继电器
sbit dp = P2^7; //对应小数点
void delay(unsigned int ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned char idata Comm[20];
unsigned int i,t;
unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x38,0x73,0x3e,0x6e,0x00};
//以上为共阴极数码管代码
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //定时器1为模式2,8-bit 自动装载方式
PCON=0x00; //波特率不倍增
TL1=0xfd;
TH1=0xfd; //波特率9600
TI=1; //TI 置1,以发送第一个字节
TR1=1; //启动定时器 T1
P0=0xff;
P2=0xff;
delay(1);
printf ("欢迎使用 RS232 控制程序\n");
while (1)
{
//先清空数组内容
for(i=0;i<=20;i++)
{
Comm[i]=0;
}
//开始接收数据
i=0 ; //允许串口中断
while (Comm[i-1]!=13)
{
REN=1; //允许串口中断
while(!RI){}; //等待计算机发来消息
RI =0;
Comm[i]=SBUF;
i++;
} //等待计算机发来消息
P2=tab[10];
t=i; //获得命令行的字节数
if (Comm[0]=='W' && Comm[1]=='1' )
//延时1秒
{
P2=tab[13];
delay (1000);
}
if (Comm[0]=='W' && Comm[1]=='2' )
//延时2秒
{
P2=tab[13];
delay (2000);
}
if (Comm[0]=='W' && Comm[1]=='5' )
//延时5秒
{
P2=tab[13];
delay (5000);
}
if (Comm[0]==13 )
{
// 返回版权说明
P2=tab[19];
printf ("RS232 控制程序\n");
printf ("作者:茅建人 (jinesc)\n");
printf ("E-Mail:jinesc@163.com\n");
}
if (Comm[0]==' ' )
{
// 序列号
P2=tab[17];
printf ("S/N:JINESC_EXB_001\n");
}
if (Comm[0]=='K' ) //8路继电器的开关 控制
{
if (Comm[1]=='0' && Comm[2]=='A' && Comm[3]=='1' ) //全开
{
K0_0=1;
K0_1=1;
K0_2=1;
K0_3=1;
K0_4=1;
K0_5=1;
K0_6=1;
K0_7=1;
printf ("K0A1\n");
P2=tab[16];
}
if (Comm[1]=='0' && Comm[2]=='A' && Comm[3]=='0' ) //全关
{
K0_0=0;
K0_1=0;
K0_2=0;
K0_3=0;
K0_4=0;
K0_5=0;
K0_6=0;
K0_7=0;
P2=tab[15];
printf ("K0A0\n");
}
if (Comm[1]=='0' && Comm[2]=='0' && Comm[3]=='1' )
{
K0_0=1;
P2=tab[0];
dp=1;
printf ("K001\n");
}
if (Comm[1]=='0' && Comm[2]=='0' && Comm[3]=='0' )
{
K0_0=0;
P2=tab[0];
dp=0;
printf ("K000\n");
}
if (Comm[1]=='0' && Comm[2]=='1' && Comm[3]=='1' )
{
K0_1=1;
P2=tab[1];
dp=1;
printf ("K011\n");
}
if (Comm[1]=='0' && Comm[2]=='1' && Comm[3]=='0' )
{
K0_1=0;
P2=tab[1];
dp=0;
printf ("K010\n");
}
if (Comm[1]=='0' && Comm[2]=='2' && Comm[3]=='1' )
{
K0_2=1;
P2=tab[2];
dp=1;
printf ("K021\n");
}
if (Comm[1]=='0' && Comm[2]=='2' && Comm[3]=='0' )
{
K0_2=0;
P2=tab[2];
dp=0;
printf ("K020\n");
}
if (Comm[1]=='0' && Comm[2]=='3' && Comm[3]=='1' )
{
K0_3=1;
P2=tab[3];
dp=1;
printf ("K031\n");
}
if (Comm[1]=='0' && Comm[2]=='3' && Comm[3]=='0' )
{
K0_3=0;
P2=tab[3];
dp=0;
printf ("K030\n");
}
if (Comm[1]=='0' && Comm[2]=='4' && Comm[3]=='1' )
{
K0_4=1;
P2=tab[4];
dp=1;
printf ("K041\n");
}
if (Comm[1]=='0' && Comm[2]=='4' && Comm[3]=='0' )
{
K0_4=0;
P2=tab[4];
dp=0;
printf ("K040\n");
}
if (Comm[1]=='0' && Comm[2]=='5' && Comm[3]=='1' )
{
K0_5=1;
P2=tab[5];
dp=1;
printf ("K051\n");
}
if (Comm[1]=='0' && Comm[2]=='5' && Comm[3]=='0' )
{
K0_5=0;
P2=tab[5];
dp=0;
printf ("K050\n");
}
if (Comm[1]=='0' && Comm[2]=='6' && Comm[3]=='1' )
{
K0_6=1;
P2=tab[6];
dp=1;
printf ("K061\n");
}
if (Comm[1]=='0' && Comm[2]=='6' && Comm[3]=='0' )
{
K0_6=0;
P2=tab[6];
dp=0;
printf ("K060\n");
}
if (Comm[1]=='0' && Comm[2]=='7' && Comm[3]=='1' )
{
K0_7=1;
P2=tab[7];
dp=1;
printf ("K071\n");
}
if (Comm[1]=='0' && Comm[2]=='7' && Comm[3]=='0' )
{
K0_7=0;
P2=tab[0];
dp=0;
printf ("K070\n");
}
}
}
}
这个带显示?
http://blog.jinesc.net/post/93.html