|
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
*********************************************************************/
#include "hedder\\STC12C5A60S2.h"
#include"hedder\\DODI.h"
#define uchar unsigned char
#define uint unsigned int
uchar dat;
/********************************************************************
串口初始化
*********************************************************************/
void init ()
{
//串口2波特率
TMOD = 0x20; //定时器1产生波特率
SCON = 0x50; //方式1,8位数据,波特率可变
TH1=0xfd;
TL1 = 0xfd; //波特率 9600
//串口1波特率
S2CON = 0x50; //方式1,八位数据,可变波特率
BRT=0XFD; //设置波特率9600
TR1=1; //启动定时器产生串口2波特率
AUXR=0x10; //启动串口1波特率发生器
IP=0x00; //优先级默认
EA=1; //开总中断
ES=1; //开串口1中断
IE2=0x01; //开串口2中断
}
/*
// 串口一 发送一个字符
void uart1_txd(uchar x)
{
SBUF = x;
}
// 串口二 发送一个字符
void uart2_txd(uchar x)
{
S2BUF = x;
}
*/
/********************************************************************
延时函数
*********************************************************************/
void delay ( uint t )
{
uint i,j;
for( i=0; i<t; i++)
for( j=0; j<250; j++);
}
/********************************************************************
主函数
*********************************************************************/
void main()
{
uchar k=10;
//配置P4.4为IO口
P4SW|=0x70;
P4M0&=0x80;
P4M1&=0x80;
init(); //串口初始化
fxctl=0; //485接收
while(1)
{
/********************************************************************
接收数据判断函数
*********************************************************************/
switch(dat) //接收数据判断
{
case 'I':
P1&=0x0c;
P3&=0x03;
P4&=0x81;
P5=0;
delay(200);
init();
break; // 全开
case 'i':
P3|=0XFF;
P1|=0XFF;
P4|=0xff;
P5=0xff;
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 '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; // ...
default:break; // 跳出
}
}
}
/********************************************************************
串口一 发送接收中断函数
*********************************************************************/
void uart_isr() interrupt 4
{
if( RI ) RI = 0;
dat = SBUF;
if( TI ) TI = 0;
}
/********************************************************************
串口二 发送接收中断函数
*********************************************************************/
void uart2_isr() interrupt 8
{
if( S2CON & 0x01 )
{
S2CON &= ~0x01;
dat= S2BUF;
}
if( S2CON & 0x02 )
{
S2CON &= ~0x02;
}
}
/********************************************************************
结束
*********************************************************************/
|
-
ALIM0036.JPG
(1.9 MB, 下载次数: 78)
-
ALIM0039.JPG
(1.85 MB, 下载次数: 84)
-
51hei.png
(8.38 KB, 下载次数: 80)
-
-
16路入16出可编程场效应管可编程说明书.doc
4.86 MB, 下载次数: 42, 下载积分: 黑币 -5
-
-
16路入16出可编程场效应管控制板原理图及PCB图.pdf
2.23 MB, 下载次数: 48, 下载积分: 黑币 -5
-
-
01、通过485或232接口均可与上位机通讯测试程序.zip
33.29 KB, 下载次数: 53, 下载积分: 黑币 -5
-
-
16路入16出可编程场效应管DXP资料.zip
3.09 MB, 下载次数: 58, 下载积分: 黑币 -5
|