⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chengxu.c

📁 30路继电器双串口单片机控制板
💻 C
字号:
/********************************************************************
                            汇诚科技

实现功能:串口控制继电器程序
使用芯片:AT89S52
晶振:11.0592MHZ
波特率:9600
编译环境:Keil
作者:zhangxinchunleo
网站:www.ourhc.cn
淘宝店:汇诚科技 http://shop36330473.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     

*********************************************************************/
/********************************************************************
单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.

单片机接收PC机发送的十六进制码表如下:

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<STC12C5A60S2.H>  	       //库文件
#include"jdq30.h"
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int  //宏定义无符号整型
/********************************************************************
                            初始定义
*********************************************************************/

unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容



/********************************************************************
                            延时函数
*********************************************************************/
void delay(uchar t)
{
  uchar i,j;
   for(i=0;i<t;i++)
   {
   	 for(j=13;j>0;j--);
	 { ;
	 }
   }
}

/********************************************************************
              功能:串口初始化,波特率9600,方式1
*********************************************************************/
void init(void)
{

	TMOD = 0x20;	 			 //定时器1产生波特率

	SCON = 0x50;				 //方式2,8位数据,波特率可变

	PCON = 0x00;				 //不倍增波特率

	AUXR = 0x00;				 //1T工作方式,不使用波特率发生器

	IP   = 0x00;				 //优先级默认

	TH1  = TL1 = 0xfd;			 //波特率 9600
	
	TR1  = 1;				 //启动定时器产生波特率
	
	EA   = 1; 
	 ES = 1;			 //开总中断,开串口中断
}


/********************************************************************
                            主函数
*********************************************************************/
void main()
{  
   uchar k=10;
   P4SW|=0x20;		   //配置P4.5为IO口
   P4M0|=0x10;		   //配置P4.4为IO口
   P4M1|=0x10;
   P0=P1=P2=P3=0xff;
   P4|=0x30;
   init();//串口初始化
  
   while(1)
   {
	                      
	
	/********************************************************************
	                            接收数据判断函数
	*********************************************************************/
	switch(dat) //接收数据判断
	{
	
		case 'I': 
		          P1=P0=P2=0;
				  P3&=0x03;
		          P4&=0xcf;
		          delay(200);
				  init();
			      break; //  全开
				  
		case 'i': 
		           P3=P1=P0=P2=0XFF;
		           P4|=0x30;
				   delay(k);	
				   break; //  全关
		
		case 'A': OUT1=0;delay(k);break;	   //  第一路开
		case 'B': OUT2=0;delay(k);break;	   //  第二路开
		case 'C': OUT3=0;delay(k);break;	   //  第三路开
		case 'D': OUT4=0;delay(k);break;	   //  第四路开
		case 'E': OUT5=0;delay(k);break;	   //  第五路开
		case 'F': OUT6=0;delay(k);break;	   //  第六路开
		case 'G': OUT7=0;delay(k);break;	   //  第七路开
		case 'H': OUT8=0;delay(k);break;	   //  第八路开
		case 'J': OUT9=0;delay(k);break;	   //  第一路开
		case 'K': OUT10=0;delay(k);break;	   //  第二路开
		case 'L': OUT11=0;delay(k);break;	   //  第三路开
		case 'M': OUT12=0;delay(k);break;	   //  第四路开
		case 'N': OUT13=0;delay(k);break;	   //  第五路开
		case 'O': OUT14=0;delay(k);break;	   //  第六路开
		case 'P': OUT15=0;delay(k);break;	   //  第七路开
		case 'Q': OUT16=0;delay(k);break;	   //  第八路开
		case 'R': OUT17=0;delay(k);break;	   //  第一路开
		case 'S': OUT18=0;delay(k);break;	   //  第二路开
		case 'T': OUT19=0;delay(k);break;	   //  第三路开
		case 'U': OUT20=0;delay(k);break;	   //  第四路开
		case 'V': OUT21=0;delay(k);break;	   //  第二路开
		case 'W': OUT22=0;delay(k);break;	   //  第三路开
		case 'X': OUT23=0;delay(k);break;	   //  第四路开
		case 'Y': OUT24=0;delay(k);break;	   //  第五路开
		case 'Z': OUT25=0;delay(k);break;	   //  第六路开
		case '1': OUT26=0;delay(k);break;	   //  第七路开
		case '2': OUT27=0;delay(k);break;	   //  第八路开
		case '3': OUT28=0;delay(k);break;	   //  第一路开
		case '4': OUT29=0;delay(k);break;	   //  第二路开
		case '5': OUT30=0;delay(k);break;	   //  第三路开
			
		case 'a': OUT1=1;delay(k);break;	   //  第一路关
		case 'b': OUT2=1;delay(k);break;	   //  第二路关
		case 'c': OUT3=1;delay(k);break;	   //  第三路关
		case 'd': OUT4=1;delay(k);break;	   //  第四路关
		case 'e': OUT5=1;delay(k);break;	   //  第五路关
		case 'f': OUT6=1;delay(k);break;	   //  第六路关
		case 'g': OUT7=1;delay(k);break;	   //  第七路关
		case 'h': OUT8=1;delay(k);break;	   //  第八路关
		case 'j': OUT9=1;delay(k);break;	   //  第一路关
		case 'k': OUT10=1;delay(k);break;	   //  第二路关
		case 'l': OUT11=1;delay(k);break;	   //  第三路关
		case 'm': OUT12=1;delay(k);break;	   //  第四路关
		case 'n': OUT13=1;delay(k);break;	   //  第五路关
		case 'o': OUT14=1;delay(k);break;	   //  第六路关
		case 'p': OUT15=1;delay(k);break;	   //  第七路关
		case 'q': OUT16=1;delay(k);break;	   //  第八路关
		case 'r': OUT17=1;delay(k);break;	   //  第五路关
		case 's': OUT18=1;delay(k);break;	   //  第六路关
		case 't': OUT19=1;delay(k);break;	   //  第七路关
		case 'u': OUT20=1;delay(k);break;	   //  第八路关
		case 'v': OUT21=1;delay(k);break;	   //  第二路关
		case 'w': OUT22=1;delay(k);break;	   //  第三路关
		case 'x': OUT23=1;delay(k);break;	   //  第四路关
		case 'y': OUT24=1;delay(k);break;	   //  第五路关
		case 'z': OUT25=1;delay(k);break;	   //  第六路关
		case '6': OUT26=1;delay(k);break;	   //  第七路关
		case '7': OUT27=1;delay(k);break;	   //  第八路关
		case '8': OUT28=1;delay(k);break;	   //  第五路关
		case '9': OUT29=1;delay(k);break;	   //  第六路关
	    case '0': OUT30=1;delay(k);break;	   //  第七路关
	   default:break;					   //  跳出
   }

}
}


void uart_isr()  interrupt 4 
{
	if( RI ) 
	{ RI = 0;
	 dat = SBUF;
	 }

	// SBUF='K';
	// while(!TI);
	// TI=0;

}

	
/********************************************************************
                              结束
*********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -