很久以前写的一个应用于51上面的多功能控制采集系统的..学习板内核程序
作者:李金浩
单片机:At89S52
连接类型:232 |485 接口
校验方式:checksum
开发环境:keil C
仅供参考学习,请勿用于商业开发.
/***************************************************************************************
* 作者:李金浩 *
* E-MAIL:LTSoft918@163.com *
* QQ:67260745 *
* 晶振:11.0592M 波特率:19200 At89S52 *
* *
* 模块地址设定:由P0口设定,模块地址用于多机通信
* =================================================================================== *
* 0 1 2 3 4 5 6 *
* |---------------------------------------------------------------------------------| *
* |[操作符] | [port]| [位号] | [数据] | 模块地址 |CheckSUM |固定结束符 | *
* |---------+-------+-----------------+---------+----------+----------+-------------| *
* |错误:0xFF| XX | XX | XX | XX | XX | 0x7e | *
* |---------+-------+-----------------+---------+----------+----------+-------------| *
* |写:0x01 | 0~3 | 0~7|8为完全数据 | 数据 | XX | XX | 0x7e | *
* |---------+-------+-----------------+---------+----------+----------+-------------| *
* |读:0x02 | 0~3 | 0~7|8为完全数据 | XX | XX | XX | 0x7e | *
* |---------+-------+-----------------+---------+----------+----------+-------------| *
* |EA:0x03 | XX |00:写 .. 01读取 | 00(01) | XX | XX | 0x7e | *
* |---------------------------------------------------------------------------------| *
*==========================TLC1549数据采集============================================*
* ADCLK=P2^0 *
* ADOUT=P2^1 *
* ADCS=P2^2 *
* 0 1 2 3 4 5 6 *
* |---------------------------------------------------------------------------------| *
* |[操作符] |采集次数 | 高位 | 低位 | 模块地址 | CheckSUM |固定结束符 | *
* |---------+---------+---------------+---------+-----------+----------+------------| *
* |AD:0x04 | XX | XX | XX | XX | XX | 0x7e | *
* |---------------------------------------------------------------------------------| *
GetAD_With_VOL_Filter:软件滤波采集
* 0 1 2 3 4 5 6 *
* |----------------------------------------------------------------------------------| *
* |[操作符] | 空 | 高位 | 低位 | 模块地址 | CheckSUM | 固定结束符 | *
* |---------+---------+---------------+---------+-----------+----------+-------------| *
* |AD:0x05 | XX | XX | XX | XX | XX | 0x7e | *
* |----------------------------------------------------------------------------------| *
8路切换采集 ---CD4051_PickVol
CD4051---8选1模拟开关芯片
sbit CD4051_A=P1^1;
sbit CD4051_B=P1^2;
sbit CD4051_C=P1^3;
sbit CD4051_INH=P1^4; //CD4051_INH为1时,,所有通导都不导通
* |----------------------------------------------------------------------------------|
* | 0 1 2 3 4 5 6 | *
* |----------------------------------------------------------------------------------| *
* |[操作符] | 选通编号 | 高位 | 低位 | 模块地址 | CheckSUM | 固定结束符| *
* |---------+-----------+---------- ----+---------+-----------+----------+-----------| *
* |AD:0x06 | XX | XX | XX | XX | XX | 0x7e | *
* |----------------------------------------------------------------------------------| *
0x07:8路巡检采集CD4051_LoopPickVol
* |----------------------------------------------------------------------------------|
* | 0 1 2 3 4 5 6 | *
* |----------------------------------------------------------------------------------| *
* |[操作符] | 最大通道数| 高位 | 低位 | 模块地址 | CheckSUM | 固定结束符| *
* |---------+-----------+---------- ----+---------+-----------+----------+-----------| *
* |AD:0x07 | XX | XX | XX | XX | XX | 0x7e | *
* |----------------------------------------------------------------------------------| *
*======================================================================================*
*===============================AT24C04串行EEPROM操作==================================*
* sbit SDA=P2^3;//SDA *
* sbit SCL=P2^4;//SCL *
* sbit WP=P2^5;//WP *
* 0 1 2 3 4 5 6 *
* |----------------------------------------------------------------------------------| *
* |[操作符] | 地址 | 数据 | 片地址 | 模块地址 | CheckSUM | 固定结束符 | *
* |---------+---------+---------------+---------+-----------+----------+-------------| *
* |读:0x08 | XX | XX | XX | XX | XX | 0x7e | *
* |---------+---------+---------------+---------+-----------+----------+-------------| *
* |写:0x09 | XX | XX | XX | XX | XX | 0x7e | *
* |----------------------------------------------------------------------------------| *
*======================================================================================*
*===================================4位数码管理显示====================================*
* SetLedData() *
* P0.0-P0.3==》显示的数据发送至74ls47 *
* P0.4-P0.7==》数码管选择 *
* uchar LED_BIT[4]; //用于显示的每一位数据码的内容 *
* uchar LED_NUM[]={0x00,0x10,0x20,0x40,0x80};//选择显示位 *
* 0 1 2 3 4 5 6 *
* |-----------------------------------------------------------------------------------|*
* |[操作符] | LEDNUM | 显示内容数据 | 开启/关闭 | 模块地址 | CheckSUM | 固定结束符 |*
* |---------+---------+--------------+-----------+-----------+----------+-------------|*
* |读:0x0A | XX | XX | XX | XX | XX | 0x7e |*
* |---------+---------+--------------+-----------+---------

