/******************************************************************** 
                            汇诚科技 
 
实现功能:串口控制继电器程序 
使用芯片:AT89S52 
晶振:11.0592MHZ 
波特率:9600 
编译环境:Keil 
作者:zhangxinchunleo 
网站:www.ourhc.cn 
淘宝店:汇诚科技 http://shop36330473.taobao.com 
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!      
 
*********************************************************************/ 
/******************************************************************** 
单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600. 
 
单片机接收PC机发送的ASCII码表如下: 
 
01、全开:PC发送'I';  
02、全关:PC发送'i';  
 
03、第一路开:PC发送'A'; 
04、第二路开:PC发送'B'; 
05、第三路开:PC发送'C'; 
06、第四路开:PC发送'D'; 
07、第五路开:PC发送'E'; 
08、第六路开:PC发送'F'; 
09、第七路开:PC发送'G'; 
10、第八路开:PC发送'H'; 
 
11、第一路关:PC发送'a'; 
12、第二路关:PC发送'b'; 
13、第三路关:PC发送'c'; 
14、第四路关:PC发送'd'; 
15、第五路关:PC发送'e'; 
16、第六路关:PC发送'f'; 
17、第七路关:PC发送'g'; 
18、第八路关:PC发送'h'; 
 
*********************************************************************/ 
#include<reg52.h>                 //库文件 
#define uchar unsigned char//宏定义无符号字符型 
#define uint unsigned int  //宏定义无符号整型 
/******************************************************************** 
                            初始定义 
*********************************************************************/ 
 
unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容 
/*定义八位出为单片机P2口*/ 
sbit K1=P2^0; 
sbit K2=P2^1; 
sbit K3=P2^2; 
sbit K4=P2^3; 
sbit K5=P2^4; 
sbit K6=P2^5; 
sbit K7=P2^6; 
sbit K8=P2^7; 
 
/*定义八位入为单片机P1口*/ 
sbit SB1=P1^0; 
sbit SB2=P1^1; 
sbit SB3=P1^2; 
sbit SB4=P1^3; 
sbit SB5=P1^4; 
sbit SB6=P1^5; 
sbit SB7=P1^6; 
sbit SB8=P1^7; 
 
/******************************************************************** 
                            延时函数 
*********************************************************************/ 
void delay(uchar t) 
{ 
  uchar i,j; 
   for(i=0;i<t;i++) 
   { 
            for(j=13;j>0;j--); 
         { ; 
         } 
   } 
} 
 
/******************************************************************** 
              功能:串口初始化,波特率9600,方式1 
*********************************************************************/ 
void Init_Com(void) 
{ 
TMOD = 0x20; 
PCON = 0x00; 
SCON = 0x50; 
TH1 = 0xFd; 
TL1 = 0xFd; 
TR1 = 1; 
} 
 
/******************************************************************** 
                            主函数 
*********************************************************************/ 
void main() 
{ 
Init_Com();//串口初始化 
while(1) 
{ 
 
if ( RI ) //扫描判断是否接收到数据, 
{ 
dat = SBUF; //接收数据SBUF赋与dat 
RI=0; //RI 清零。 
//SBUF = dat; //在原样把数据发送回去 
}  
/******************************************************************** 
                            接收数据判断函数 
*********************************************************************/ 
switch(dat) //接收数据判断 
{ 
uchar k; 
k=10; 
case 'I': P2=0X00;delay(k);break; //  全开 
case 'i': P2=0XFF;delay(k);break; //  全关 
 
case 'A': K1=0;delay(k);break;           //  第一路开 
case 'B': K2=0;delay(k);break;           //  第二路开 
case 'C': K3=0;delay(k);break;           //  第三路开 
case 'D': K4=0;delay(k);break;           //  第四路开 
case 'E': K5=0;delay(k);break;           //  第五路开 
case 'F': K6=0;delay(k);break;           //  第六路开 
case 'G': K7=0;delay(k);break;           //  第七路开 
case 'H': K8=0;delay(k);break;           //  第八路开 
 
case 'a': K1=1;delay(k);break;           //  第一路关 
case 'b': K2=1;delay(k);break;           //  第二路关 
case 'c': K3=1;delay(k);break;           //  第三路关 
case 'd': K4=1;delay(k);break;           //  第四路关 
case 'e': K5=1;delay(k);break;           //  第五路关 
case 'f': K6=1;delay(k);break;           //  第六路关 
case 'g': K7=1;delay(k);break;           //  第七路关 
case 'h': K8=1;delay(k);break;           //  第八路关 
 
default:break;                                           //  跳出 
} 
 
} 
} 
         
/******************************************************************** 
                              结束 
*********************************************************************/ 
 
 
 
 
 
 
 |